Windows未公开函数揭密——之三

Windows未公开函数揭密——之三,第1张

Windows未公开函数揭密——之三,第2张

揭开窗户无法解释的功能——第三部分

本次介绍如何利用Windows未公开函数实现系统文件操作监控功能。该功能可以用来操作Windows下的任何文件,包括创建文件和文件夹;删除文件;可以记录更改文件大小等操作。

先来介绍两个未公开的实现上述操作的函数:shchangenotifyreg和shchangenotifyreg,shchangnotifyreg函数的定义如下:
声明函数shchangnotifyregist LIB " shell32 " alias " # 2 " _
(Byval HWND AS LONG,_
Byval uFlags AS SHCN _ item flags,_
Byval dwEventID AS SHCN _ EventIDs,_
ByVal uMsg As Long

参数hWnd指定接受系统公告的窗口句柄,参数uMsg指定消息值。如果函数调用成功,系统会将hWnd指定的窗口添加到系统公告链中,并返回系统公告句柄。当发生创建文件等系统操作时,系统会向hWnd指定的窗口发送uMsg消息。其他参数将在下面的程序中解释。函数shchangenotifydegistrer的定义如下:
将函数shchangenotifydegistrer LIB " shell 32 " alias " # 4 " _
(byval hNotify as long)声明为boolean
其中参数hNotify指定系统通知的句柄。
下面是具体的VB操作示例:
首先新建一个项目,在Form1中添加一个TextBox控件。在Form1的代码窗口中添加以下代码:
Option Explicit

Private Sub Form_Load()
If子类(hWnd)Then & acute;更改Form1
的消息处理函数if is dethen
text 1 . text = vbcrlf & _
“一个Windows文件目录操作实时监控程序”& vbCrLf &“可以在Explore中监控重命名、创建和删除文本”&_
vbcrlf更改文件关联;插入和删除光盘,添加“& vbCrLf &”和删除网络共享可以记录这个程序。"
end if
call sh notify _ register(hwnd)
else
text 1 = "系统不支持操作监视器:-)"
end if
move screen . width-width,screen.height

私有函数IsIDE()为Boolean
On Error GoTo Out
Debug。print 1/0
Out:
IsIDE = Err
End函数

private Sub Form _ Unload(Cancel As Integer)
Call SHNotify _ Unregister
Call UnSubClass(hWnd)
End Sub

public Sub notification receipt(wParam As Long,lParam As Long)
Dim sout As String
Dim shns As SHNotify struct
Dim sdisplayname 1 As String
Dim sdisplayname 2 As String

move memory shns,ByVal wParam,Len(shns)

If shns . dwitem 1 Then
sdisplayname 1 = GetDisplayNameFromPIDLbas:
& acute;MDef。Bas包含Shell操作
Option Explicit的函数和数据类型的定义

声明Sub move memory Lib " kernel 32 " Alias " RtlMoveMemory "(pDest As Any,_
pSource As Any,ByVal dwLength As Long)
声明Sub CoTaskMemFree Lib " ole32 . dll "(ByVal PV As Long)

公共常数MAX _ PATH = 260
公共常数NOERROR = 0

&急性;SHGetSpecialFolderLocation获取特殊目录的位置,返回no error
& acute;如果函数调用成功。或者OLE错误
声明函数shgetspecialfolderlocation lib " shell32 . dll " _
(byval hwnd owner为long,_
byval n folders为shspecialfolders,_
pidl为long)。

public Enum SHSpecialFolderIDs & acute;列出ID
CSIDL _办公桌=&H0
CSIDL _互联网=&H1
CSIDL _程序=&H2
CSIDL _控制=&H3
CSIDL _打印机H4
CSIDL _个人= & H5
CSIDL _收藏夹= & H6
CSIDL _启动= & H7
CSIDL _最近= &H8
CSIDL_SENDTO CSIDL _ APPDATA = & H1A
CSIDL _ print hood = & H1B
CSIDL _ alt startup = & H1D
CSIDL _ COMMON _ alt startup = & H1E
CSIDL _ COMMON _ FAVORITES = & H1F
CSIDL _ INTERNET _ CACHE = & H20
CSIDL _ COOKIES = & H21
CSIDL _ HISTORY = & H22
End Enum

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Windows未公开函数揭密——之三

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情