当前位置:编程学习 > VB >>

用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 = True

Ext:
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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,