用VB做一个远程管理软件
BlackFeathers Blog (10月9日更新)
假期甚为单调,回想起以前做的远程文件管理,手又痒痒,打算继续做这个东西。原来的那个代码因为本本被格所以丢了,重新写一个吧,试着放弃WINSOCK控件来写。
先挖个坑,占个地。。。
请多关注!~
7月23日,控制端主界面制作完毕,控制端初始化制作完毕,修改配置部分制作完毕
7月24日,主机上线部分制作完毕。
7月29日,文件管理完成30%。。。(好几天没更新了,这个纯属凑数。。。)
8月5日,好久没有做这个,忙别的去了。晚上断网了,就写了一些,做的还是文件部分,基本已经成型。发个截个图
8月20日,这几天刚跟哥们打DOTA了,也没顾上这个东西。。。修正了WINSOCK控件缓冲区只有8KB的问题,郁闷了一个星期,最后还是用了个自己也不太满意的方案,但是效果还是不错滴。文件管理基本完成了。贴出来一段删除文件夹的代码吧,使用了遍历依次删除,可以删除文件夹中带有 . (一个点)的非法文件夹,别小看这个,我就喜欢把一些东西放到这类文件夹中,文件夹名字改成dir.....(后面一串点),直接打开会报错。
8月26日,文件管理完成了。粗心大意的光出错。还有就是我用使用byte数组来接受数据,然后按需要转换成string类型,接收到的bytesTotal这个变量跟len(string)是不一样滴,一个中文字符时两个字节!做了一些小细节的修改。上张图吧。
10月9日,又这么久没有动。。。开学了,上课忙啊。把文件(文件夹)属性设置那部分重新做了一下。比如给某个文件添加只读属性的时候,不能光用 SetFileAttributes 文件路径,FILE_ATTRIBUTE_READONLY 来设置,这样子目标文件就会是只有只读属性,原来的就覆盖了。后来随手就写上了+来连接,但是这也不对啊。经研究,用or来运算原始属性值和新属性,这样子就是添加,那去掉呢?想都没想就用了xor。。。后来发现纯粹大脑发热,经研究用了这种方式:原始属性值 and (not 新属性值),经过这个运算就是新属性值。下面贴出来代码。
8月5日截图:8月26日截图:
8月20日贴代码,删除文件夹:
Public Function DelDir(ByVal DTarget As String) As Boolean 老早以前写的Function,又被我翻出来了
Dim D_WFD As WIN32_FIND_DATA
Dim hW As Long
Dim TempFPath As String
Dim TempFName As String
Dim DelFLst As New Collection
Dim DelDLst As New Collection
If Right(DTarget, 1) <> "" Then
TempFPath = DTarget & ""
Else
TempFPath = DTarget
End If
hW = FindFirstFile(TempFPath & "*.*", D_WFD)
If hW = INVALID_HANDLE_VALUE Then DelDir = False: GoTo Ext
Do
TempFName = Left(D_WFD.cFileName, InStr(D_WFD.cFileName, vbNullChar) - 1)
If (D_WFD.dwFileAttributes And vbDirectory) Then
If TempFName <> "." And TempFName <> ".." Then
If Right(TempFName, 1) = "." Then TempFName = TempFName & "." 就这一行,就可以删除文件夹中带 . 的非法文件夹
DelDir TempFPath & TempFName
End If
Else
SetFileAttributes TempFPath & TempFName, FILE_ATTRIBUTE_ARCHIVE 为了防止有只读或者系统属性影响
If DeleteFile(TempFPath & TempFName) = 0 Then DelDir = False: GoTo Ext 使用了API
End If
DoEvents
Loop While FindNextFile(hW, D_WFD)
FindClose hW
SetFileAttributes DTarget, FILE_ATTRIBUTE_ARCHIVE
If RemoveDirectory(DTarget) = 0 Then DelDir = False: GoTo Ext 使用了API
DelDir = TrueExt:
Set DelFLst = Nothing
Set DelDLst = Nothing 传说中的能释放内存
End Function----------很早以前写的,感觉这里用了Collection虽然方便,但是影响了速度。。。如果谁看着不顺眼可以改成用string数组。
10月9日贴代码,设置文件/文件夹属性部分的代码:
Public Sub SetFileAttrib(ByVal strPath As String)
Dim fWFD As WIN32_FIND_DATA
Dim hFind As Long
Dim strLen As Integer
Dim strFile As String
Debug.Print strPath
strFile = Left$(strPath, Len(strPath) - 4)
hFind = FindFirstFile(strFile, fWFD)
If hFind <> INVALID_HANDLE_VALUE Then
strLen = Len(strPath)
If Mid$(strPath, strLen - 3, 1) = "Y" Then 存档就是Y,没有存档属性就是N
fWFD.dwFileAttributes = fWFD.dwFileAttributes Or FILE_ATTRIBUTE_ARCHIVE
SetFileAttributes strFile, fWFD.dwFileAttributes
Else
fWFD.dwFileAttributes = fWFD.dwFileAttributes And (Not FILE_ATTRIBUTE_ARCHIVE)
 
补充:软件开发 , Vb ,