服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 易语言 - 易语言调用API函数监视目录与文件的代码

易语言调用API函数监视目录与文件的代码

2022-02-22 15:52易语言源码贝贝吧 易语言

今天小编就为大家分享一篇关于易语言调用API函数监视目录与文件的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

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, )

运行结果:

易语言调用API函数监视目录与文件的代码

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接

延伸 · 阅读

精彩推荐
  • 易语言一步一步跟我学易语言之关于变量

    一步一步跟我学易语言之关于变量

    今天小编就为大家分享一篇关于一步一步跟我学易语言之关于变量,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册10822021-06-17
  • 易语言易语言关于程序进程和线程的基础知识

    易语言关于程序进程和线程的基础知识

    今天小编就为大家分享一篇关于易语言关于程序进程和线程的基础知识,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    三叶资源网6662022-02-24
  • 易语言易语言获取指定磁盘的名称

    易语言获取指定磁盘的名称

    今天小编就为大家分享一篇关于易语言获取指定磁盘的名称,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    易语言帮助手册12662022-01-04
  • 易语言易语言生成exe文件的方法

    易语言生成exe文件的方法

    在本篇内容中小编给大家分享的是关于易语言生成exe文件的方法知识点,需要的朋友们参考下。...

    易语言教程网14792022-03-01
  • 易语言实例操作易语言载入窗口

    实例操作易语言载入窗口

    在本文中小编给大家整理的是关于易语言载入窗口的教程和步骤内容,需要的可以跟着学习下...

    易语言教程网19162022-03-02
  • 易语言一步一步跟我学易语言之第二个易程序菜单设计

    一步一步跟我学易语言之第二个易程序菜单设计

    今天小编就为大家分享一篇关于的一步一步跟我学易语言之第二个易程序菜单设计,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要...

    易语言帮助手册7092021-06-17
  • 易语言易语言在画板中写出指定文本当画板中已满会自动滚屏

    易语言在画板中写出指定文本当画板中已满会自动滚屏

    今天小编就为大家分享一篇关于易语言在画板中写出指定文本当画板中已满会自动滚屏,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,...

    易语言帮助手册9092022-01-12
  • 易语言易语言设置进度条边框样式的方法

    易语言设置进度条边框样式的方法

    今天小编就为大家分享一篇关于易语言设置进度条边框样式的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册4422022-01-20