DLL命令表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
.版本 2 .DLL命令 GetPrivateProfileInt, 整數型, , "GetPrivateProfileIntA" .參數 lpAppName, 文本型 .參數 lpKeyName, 文本型 .參數 nDefault, 整數型 .參數 lpFileName, 文本型 .DLL命令 GetPrivateProfileString, 整數型, , "GetPrivateProfileStringA" .參數 lpAppName, 文本型 .參數 lpKeyName, 文本型 .參數 lpDefault, 文本型 .參數 lpReturnedString, 文本型, 傳址 .參數 nSize, 整數型 .參數 lpFileName, 文本型 .DLL命令 TerminateThread, 整數型, , "TerminateThread" .參數 hThread, 整數型 .參數 dwExitCode, 整數型 .DLL命令 CloseHandle, 整數型, , "CloseHandle" .參數 Object, 整數型 .DLL命令 PostMessage, 整數型, , "PostMessageA" .參數 hWnd, 整數型 .參數 Msg, 整數型 .參數 wParam, 整數型 .參數 lParam, 整數型 .DLL命令 RegisterHotKey, 整數型, , "RegisterHotKey" .參數 hWnd, 整數型 .參數 id, 整數型 .參數 fsModifiers, 整數型 .參數 vk, 整數型 .DLL命令 CreateThread, 整數型, , "CreateThread" .參數 SecurityAttributes, 整數型 .參數 StackSize, 整數型 .參數 StartFunction, 整數型 .參數 ThreadParameter, 整數型 .參數 CreationFlags, 整數型 .參數 ThreadId, 整數型, 傳址 .DLL命令 WideCharToMultiByte1, 整數型, "kernel32.dll", "WideCharToMultiByte" .參數 CodePage, 整數型, , CodePage .參數 dwFlags, 整數型, , dwFlags .參數 lpWideCharStr, 字節集, , lpWideCharStr .參數 cchWideChar, 整數型, , cchWideChar .參數 lpMultiByteStr, 整數型, , lpMultiByteStr .參數 cchMultiByte, 整數型, , cchMultiByte .參數 lpDefaultChar, 整數型, , lpDefaultChar .參數 lpUsedDefaultChar, 邏輯型, , lpUsedDefaultChar .DLL命令 WideCharToMultiByte, , "kernel32.dll", "WideCharToMultiByte" .參數 CodePage, 整數型, , CodePage .參數 dwFlags, 整數型, , dwFlags .參數 lpWideCharStr, 字節集, , lpWideCharStr .參數 cchWideChar, 整數型, , cchWideChar .參數 lpMultiByteStr, 字節集, , lpMultiByteStr .參數 cchMultiByte, 整數型, , cchMultiByte .參數 lpDefaultChar, 整數型, , lpDefaultChar .參數 lpUsedDefaultChar, 邏輯型, , lpUsedDefaultChar .DLL命令 CreateFile, 整數型, , "CreateFileA" .參數 lpFileName, 文本型 .參數 dwDesiredAccess, 整數型 .參數 dwShareMode, 整數型 .參數 lpSecurityAttributes, 整數型 .參數 dwCreationDisposition, 整數型 .參數 dwFlagsAndAttributes, 整數型 .參數 hTemplateFile, 整數型 .DLL命令 ReadDirectoryChangesW, 邏輯型, , "ReadDirectoryChangesW" .參數 hDirectory, 整數型 .參數 lpbuff, _FILE_NOTIFY_INFORMATION, 傳址 .參數 nBufferLength, 整數型 .參數 bWatchSubtree, 邏輯型 .參數 dwNotifyFilter, 整數型 .參數 lpBytesReturned, 整數型, 傳址 .參數 lpOverlapped, OVERLAPPED, 傳址 .參數 lpCompletionRoutine, 整數型 .DLL命令 WritePrivateProfileString, 整數型, , "WritePrivateProfileStringA" .參數 lpAppName, 文本型 .參數 lpKeyName, 文本型 .參數 lpString, 文本型 .參數 lpFileName, 文本型 |
自定義數據類型表
1
2
3
4
5
6
7
8
9
10
11
12
|
.版本 2 .數據類型 OVERLAPPED .成員 ternal, 整數型 .成員 ternalHigh, 整數型 .成員 低32位, 整數型 .成員 高32位, 整數型 .成員 事件句柄, 整數型 .數據類型 _FILE_NOTIFY_INFORMATION .成員 NextEntryOffset, 整數型 .成員 Action, 整數型 .成員 FileNameLength, 整數型 .成員 FileName, 字節型, , "1024" |
常量數據表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
.版本 2 .常量 WM_SYSCOMMAND, "274" .常量 SC_MINIMIZE, "61472" .常量 MOD_ALT, "1" .常量 GENERIC_READ, "-2147483648" .常量 GENERIC_WRITE, "1073741824" .常量 FILE_SHARE_READ, "1" .常量 FILE_SHARE_WRITE, "2" .常量 FILE_SHARE_DELETE, "4" .常量 FILE_FLAG_BACKUP_SEMANTICS, "33554432" .常量 OPEN_EXISTING, "3" .常量 FILE_NOTIFY_CHANGE_FILE_NAME, "1" .常量 FILE_NOTIFY_CHANGE_DIR_NAME, "2" .常量 FILE_NOTIFY_CHANGE_ATTRIBUTES, "4" .常量 FILE_NOTIFY_CHANGE_SIZE, "8" .常量 FILE_NOTIFY_CHANGE_LAST_WRITE, "16" .常量 FILE_NOTIFY_CHANGE_LAST_ACCESS, "32" .常量 FILE_NOTIFY_CHANGE_CREATION, "64" .常量 FILE_NOTIFY_CHANGE_SECURITY, "256" .常量 FILE_ACTION_ADDED, "1" .常量 FILE_ACTION_REMOVED, "2" .常量 FILE_ACTION_RENAMED_NEW_NAME, "5" .常量 FILE_ACTION_RENAMED_OLD_NAME, "4" .常量 FILE_ACTION_MODIFIED, "3" |
監視目錄與文件的代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
.版本 2 .支持庫 iext .支持庫 shell .程序集 窗口程序集1 .程序集變量 m_bAddNew0, 整數型 .程序集變量 m_bDel0, 整數型 .程序集變量 m_bRename, 整數型 .程序集變量 m_bModify0, 整數型 .程序集變量 m_bOther0, 整數型 .程序集變量 m_strWatchedDir, 文本型 .程序集變量 m_hThread, 整數型 .程序集變量 hDir, 整數型 .程序集變量 m_bAlwaysOnTop, 整數型 .程序集變量 m_bAutoRun, 整數型 .程序集變量 m_bMinimized, 整數型 .程序集變量 m_bAutoStart, 整數型 .程序集變量 m_i, 整數型 .程序集變量 m_OVERLAPPED, OVERLAPPED .子程序 __啟動窗口_創建完畢 m_bAlwaysOnTop = GetPrivateProfileInt (“Settings”, “AlwaysOnTop”, 0, “.\\Settings.ini”) m_bAutoRun = GetPrivateProfileInt (“Settings”, “AutoRun”, 0, “.\\Settings.ini”) m_bMinimized = GetPrivateProfileInt (“Settings”, “Minimized”, 0, “.\\Settings.ini”) m_bAutoStart = GetPrivateProfileInt (“Settings”, “AutoStart”, 0, “.\\Settings.ini”) m_bAddNew0 = GetPrivateProfileInt (“Selections”, “m_bAddNew”, 0, “.\\Settings.ini”) m_bDel0 = GetPrivateProfileInt (“Selections”, “m_bDel”, 0, “.\\Settings.ini”) m_bRename = GetPrivateProfileInt (“Selections”, “m_bRename”, 0, “.\\Settings.ini”) m_bModify0 = GetPrivateProfileInt (“Selections”, “m_bModify”, 0, “.\\Settings.ini”) m_bOther0 = GetPrivateProfileInt (“Selections”, “m_bOther”, 0, “.\\Settings.ini”) m_strWatchedDir = 取空白文本 (260) GetPrivateProfileString (“Settings”, “監視目錄”, “”, m_strWatchedDir, 260, “.\\Settings.ini”) m_hThread = 0 hDir = -1 .如果真 (m_bAlwaysOnTop = 1) OnBtnAlwaysOnTop () .如果真結束 .如果真 (m_bMinimized = 1) PostMessage (取窗口句柄 (), #WM_SYSCOMMAND, #SC_MINIMIZE, 0) .如果真結束 .如果真 (m_bAutoStart = 1) OnStart () .如果真結束 RegisterHotKey (取窗口句柄 (), 199, #MOD_ALT, #Z鍵) IDC_STATE.標題 = “你選擇的監視目錄為:” + m_strWatchedDir .子程序 __啟動窗口_將被銷毀 .如果真 (m_hThread ≠ 0) TerminateThread (m_hThread, 0) m_hThread = 0 .如果真結束 .如果真 (hDir ≠ -1) CloseHandle (hDir) hDir = -1 .如果真結束 .子程序 ThreadProc, 整數型 .參數 lparam, 整數型 .局部變量 pNotify, _FILE_NOTIFY_INFORMATION .局部變量 dwBytesReturned, 整數型 .局部變量 str1, 文本型 .局部變量 temp, 字節集 hDir = CreateFile (m_strWatchedDir, 位或 (#GENERIC_READ, #GENERIC_WRITE), 位或 (#FILE_SHARE_READ, #FILE_SHARE_WRITE, #FILE_SHARE_DELETE), 0, #OPEN_EXISTING, #FILE_FLAG_BACKUP_SEMANTICS, 0) .如果真 (hDir = -1) 返回 (0) .如果真結束 .判斷循環首 (真) .如果 (ReadDirectoryChangesW (hDir, pNotify, 1024, 真, 位或 (#FILE_NOTIFY_CHANGE_FILE_NAME, #FILE_NOTIFY_CHANGE_DIR_NAME, #FILE_NOTIFY_CHANGE_ATTRIBUTES, #FILE_NOTIFY_CHANGE_SIZE, #FILE_NOTIFY_CHANGE_LAST_WRITE, #FILE_NOTIFY_CHANGE_LAST_ACCESS, #FILE_NOTIFY_CHANGE_CREATION, #FILE_NOTIFY_CHANGE_SECURITY), dwBytesReturned, m_OVERLAPPED, 0)) .如果 (pNotify.NextEntryOffset ≠ 0) temp = 字節數組轉字節集 (pNotify.FileName) .否則 temp = 字節數組轉字節集 (pNotify.FileName) .如果結束 str1 = Unicode轉Ansi (取字節集左邊 (temp, pNotify.FileNameLength)) m_list.插入表項 (-1, 到文本 (取小時 (取現行時間 ())) + “:” + 到文本 (取分鐘 (取現行時間 ())) + “:” + 到文本 (取秒 (取現行時間 ())), , , , ) m_list.置標題 (m_list.取表項數 () - 1, 2, m_strWatchedDir + str1) .判斷開始 (pNotify.Action = #FILE_ACTION_ADDED) ' 添加了新文件 m_list.置標題 (m_list.取表項數 () - 1, 1, “添加了文件”) .判斷 (pNotify.Action = #FILE_ACTION_REMOVED) ' 刪除了文件 m_list.置標題 (m_list.取表項數 () - 1, 1, “刪除了文件”) .判斷 (pNotify.Action = #FILE_ACTION_RENAMED_NEW_NAME) ' 重命名了文件 m_list.置標題 (m_list.取表項數 () - 1, 1, “重命名了文件”) .判斷 (pNotify.Action = #FILE_ACTION_RENAMED_OLD_NAME) ' 重命名了文件 m_list.置標題 (m_list.取表項數 () - 1, 1, “重命名了文件”) .判斷 (pNotify.Action = #FILE_ACTION_MODIFIED) ' 修改了文件 m_list.置標題 (m_list.取表項數 () - 1, 1, “修改了文件”) .默認 m_list.置標題 (m_list.取表項數 () - 1, 1, “未知變化”) ' 未知變化 .判斷結束 .否則 跳出循環 () .如果結束 .判斷循環尾 () 返回 (0) .子程序 Unicode轉Ansi, 文本型 .參數 參數_數據, 字節集 .局部變量 局部_計數, 整數型 .局部變量 局部_結果數據, 字節集 .局部變量 局部_結果文本, 文本型 局部_計數 = 取字節集長度 (參數_數據) ÷ 2 ' 字符數目兩個 局部_計數 = WideCharToMultiByte1 (936, 512, 參數_數據, 局部_計數, 0, 0, 0, 假) ' 取轉換后的數目 局部_結果數據 = 取空白字節集 (局部_計數) WideCharToMultiByte (936, 512, 參數_數據, -1, 局部_結果數據, 局部_計數, 0, 假) 局部_結果文本 = 取字節集數據 (局部_結果數據, #文本型, ) 返回 (局部_結果文本) .子程序 字節數組轉字節集, 字節集 .參數 字節數組, 字節型, 數組 .局部變量 字節集, 字節集 .局部變量 N, 整數型 .計次循環首 (取數組成員數 (字節數組), N) 字節集 = 字節集 + 到字節集 (字節數組 [N]) .計次循環尾 () 返回 (字節集) .子程序 OnBtnAlwaysOnTop .子程序 OnStart StartWatch (m_strWatchedDir) IDC_STOP.禁止 = 假 IDC_START.禁止 = 真 IDC_SELECT_DIR.禁止 = 真 IDC_STATE.標題 = “正在監視````” + m_strWatchedDir .子程序 StartWatch, 邏輯型 .參數 path, 文本型 .局部變量 ThreadId, 整數型 m_strWatchedDir = path m_hThread = CreateThread (0, 0, 到整數 (&ThreadProc), 0, 0, ThreadId) .如果 (m_hThread = 0) 返回 (假) .否則 返回 (真) .如果結束 .子程序 _IDC_STOP_被單擊 .如果真 (m_hThread ≠ 0) TerminateThread (m_hThread, 0) m_hThread = 0 .如果真結束 .如果真 (hDir ≠ -1) CloseHandle (hDir) hDir = -1 .如果真結束 IDC_STOP.禁止 = 真 IDC_START.禁止 = 假 IDC_SELECT_DIR.禁止 = 假 .子程序 _IDC_CLEAR_被單擊 m_list.全部刪除 () .子程序 _IDC_SELECT_DIR_被單擊 m_strWatchedDir = 瀏覽文件夾 (“”, 假) .如果真 (m_strWatchedDir = “”) m_strWatchedDir = “c:\” 返回 () .如果真結束 WritePrivateProfileString (“settings”, “監視目錄”, m_strWatchedDir, “.\\Settings.ini”) IDC_STATE.標題 = “你選擇了監視:” + m_strWatchedDir .子程序 _IDC_START_被單擊 OnStart () .子程序 _IDC_ABOUT_被單擊 信息框 (“Hello World”, 0, ) |
運行結果:
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。如果你想了解更多相關內容請查看下面相關鏈接