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

DLL命令表

.版本 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, 文本型

自定义数据类型表

.版本 2
.数据类型 OVERLAPPED
  .成员 ternal, 整数型
  .成员 ternalHigh, 整数型
  .成员 低32位, 整数型
  .成员 高32位, 整数型
  .成员 事件句柄, 整数型
.数据类型 _FILE_NOTIFY_INFORMATION
  .成员 NextEntryOffset, 整数型
  .成员 Action, 整数型
  .成员 FileNameLength, 整数型
  .成员 FileName, 字节型, , "1024"

常量数据表

.版本 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"

监视目录与文件的代码

.版本 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, )

运行结果:

总结

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

(0)

相关推荐

  • 易语言调用百度文字识别api方法

    现在百度ai特别强大,很多大公司都是调用百度的数据,那么对于习惯易语言的我们改怎么操作呢?今天以百度ai文字识别为例. 首先打开百度ai平台 注册或登录百度账号,进入控制台,选择文字识别 新建应用,获取appid和app key 选择技术文档,api文档 参考第一个调用方式,通过url调用 要获取token请参考相关链接 然后根据参数说明填写相关代码,最后结果如下: .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .子程序 _按钮1_被单击 .局

  • 易语言统计代码行数与API的工具

    DLL命令表 .版本 2 .DLL命令 FindWindowEx, 整数型, "user32", "FindWindowExA", , 在窗口列表中寻找与指定条件相符的第一个子窗口 找到的窗口的句柄.如未找到相符窗口,则返回零.会设置GetLastError .参数 hWnd1, 整数型, , 在其中查找子的父窗口.如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找) .参数 hWnd2, 整数型, , 从这个窗口后开始查找.

  • 易语言API热键监控实例

    在用易语言编写软件或者游戏辅助的时候,经常用到API热键监控这个功能,我们在下面分享给大家实例代码,直接复制可以测试下. AIP热键监控 .版本 2 .支持库 JY .子程序 监视热键2, 整数型, 公开, 成功返回热键ID,失败返回0. .参数 响应子程序, 子程序指针, , 热键被按下时要触发的子程序,该回调函数可有一个参数用来接收热键ID. .参数 键代码, 整数型, , 可以使用易语言中的键代码常量 .参数 功能键码, 整数型, 可空, 键码数值见常量,可多个相加成为组合键,留空或为0则

  • 易语言API高级技巧教学

    首先声明,本文的读者该卖是:具有相当的易言语基础的.能较熟练地把常用的的API从VB/C声明转换到易言语DLL命令的易言语喜欢者. 1,使用指针 易言语中出于安定.方便考虑,没有直接提供指针,这正在进行一些高级 纵时不是很方便,固然有一些第三方支撑库可以取出变量指针(比如我的eLib++ 注:该支撑库系Delphi开发,本人已开放源代 ,你可以到易言语下载区瞧瞧)但是仅仅为了这个 纵就带上一个支撑库不太值得.实在用一个API,加上一些技术就可以欺骗Windows和易言语,让它们报告你一个变量的指

  • 易语言API助手使用方法

    易语言API助手它的唯一功能就是方便查询API函数命令,能够自动在程序中加入指定dll命令声明的向导程序. 1.先了解一下API,Application Programming Interface,应用程序编程接口,编程人员通过这个接口,可以调用系统某些软件或者硬件的功能! 2.易语言的API助手对API进行了分类,可以以英文或中文的形式查看,同时提供了中英文索引查找和一些例程! 3.我们可以通过易语言的工具---执行易向导,来导入需要的API助手中的函数! 4.选中API助手,然后就会自动打开

  • 易语言API取文本长度图文讲解

    windows API 应用之"lstrlen"的应用 用易语言取出文本长度的实例教程 1.新建一个易语言窗口程序 添加一个编辑框 和 按钮组件 2.添加需要取出长度的文本 如图中所示 编辑框中添加 "百度一下你就知道"文字 3.双击DLL命令 进入DLL编辑代码 4.新建DLL命令 写入以下代码 .版本 2 .DLL命令 lstrlen, 整数型, , "lstrlenA" .参数 lpString, 文本型 5.进入程序集 写出以下代码 我们

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

    DLL命令表 .版本 2 .DLL命令 GetPrivateProfileInt, 整数型, , "GetPrivateProfileIntA" .参数 lpAppName, 文本型 .参数 lpKeyName, 文本型 .参数 nDefault, 整数型 .参数 lpFileName, 文本型 .DLL命令 GetPrivateProfileString, 整数型, , "GetPrivateProfileStringA" .参数 lpAppName, 文本型 .

  • 易语言调用api获取网卡信息网络连接名的代码

    DLL命令表 .版本 2 .DLL命令 GetAdaptersInfo, 整数型, "IPHlpApi" .参数 IpAdapterInfo, 字节集 .参数 pOutBufLen, 整数型, 传址 .DLL命令 取变量地址_字节集, 整数型, , "lstrcpynA" .参数 变量, 字节集, 传址 .参数 变量, 字节集, 传址 .参数 保留, 整数型, , 0 .DLL命令 CopyMemory_iai, , "kernel32", &q

  • 易语言调用api枚举网卡名称并且获取信息的代码

    DLL命令表 .版本 2 .DLL命令 GetProcAddress, 整数型, "kernel32", "GetProcAddress", , 返回函数地址 .参数 hModule, 整数型 .参数 lpProcName, 文本型 .DLL命令 GetModuleHandle, 整数型, "kernel32", "GetModuleHandleA", , 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄

  • 易语言调用api实现文件拖放获取路径的代码

    拖放文件支持任意版本Windows系统 此功能需要加载精易模块5.6 .版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .程序集变量 文件拖放类, 文件拖放 .子程序 __启动窗口_创建完毕 .局部变量 拖放处理, 子程序指针 文件拖放类.注册拖放 (_启动窗口.取窗口句柄 (), &拖放处理) proc_FilterMsg () .子程序 拖放处理 .参数 总文件数量, 整数型 .参数 当前是第几个文件, 整数型 .参数 当前的文件名, 文本型 .参数 当前的文件类型, 文本型

  • 易语言调用dll实现条形码本地离线识别的代码

    DLL命令表 需要提前下载用到命令对应的库 .版本 2 .DLL命令 OCR, 文本型, "AspriseVB.dll", "OCR" .参数 file, 文本型 .参数 imageType, 整数型 .DLL命令 OCRBarCodes, 文本型, "VBWrapper.dll", "OCRBarCodes" .参数 file, 文本型 .参数 imageType, 整数型 .DLL命令 OCRpart, 文本型, &quo

  • 易语言CNA算法实现快速加密解密文件的代码

    CNA文件加解密数据算法 .版本 2 .支持库 spec .支持库 iext .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .局部变量 code, 字节集, , , 加密密码 .局部变量 test, 字节集, , , 要加密码的数据字节集 .局部变量 i, 整数型, , , 查看反馈信息 ' 简单例子 test = 到字节集 ("aaaaaaa aaa.*#(中.329}@#¥") code = 到字节集 ("中.有 3a#") CNA数据 (t

  • C++ 编写DLL文件给易语言调用方法

    摸索了两天了,终于解决了所有问题,在此跟大家分享. 需要三个文件,dll_demo.h.dll_demo.cpp.dll_dome.def 直接上代码: 头文件如下: #ifndef _DLL_DEMO_H_ #define _DLL_DEMO_H_ #ifdef DLLDEMO_EXPORTS #define DLL_DEMO extern "C" __declspec(dllexport) #else #define DLL_DEMO extern "C" __

  • 易语言调用易模块的方法

    易模块就是,易语言前辈把一些函数.常用的子程序. 编辑起来,方便新手学习! 1.打开易语言,里面,窗口程序.控制程序.动态连接库.易语言模块. 这里面可以用到模块的有[窗口程序.控制程序.动态连接库.]易语言模块是编写易模块的程序. 2.我们就以窗口程序程序进行操作,点击进入[双击]. 进入设计面板,点击[程序],在点击[模块引用],然后[添加模块] 1.使用方法 添加完毕模块!最好先更新下模快引用信息,让语言兼容! 添加完毕模块!最好先更新下模快引用信息,让语言兼容! 2.在打开易语言模块信息

  • 详解易语言调用js实现md5加密方法

    易语言调用js需要用到拓展组件的脚本组件, 在窗口创建完毕的事件里给脚本组件初始化设置下脚本组件的语言属性,在这里以JScript为例: 脚本组件执行脚本的简单方法是:  脚本组件1.执行 ()  然后根据需要调用的脚本函数   脚本组件1.运行 () 首先看下脚本组件1.执行 () 的参数和返回值: 调用格式: 〈逻辑型〉 对象.执行 (文本型 脚本代码) - 脚本语言支持组件->脚本组件 英文名称:Execute 执行指定的代码文本.返回真为执行正常,返回假为出错,错误信息可以从"错误

  • C# 调用API函数弹出映射网络驱动器对话框问题

    1.基本知识介绍 首先,C#中的.net的常用对话框中没有映射网络驱动映射对话框,所以需要用windows的API函数去实现弹出映射网络驱动器对话框. c#调用API函数的要点可以参考:C#中调用Windows API的技术要点说明 值得注意到是,.net环境下参数类型的声明的不同: a.数值型直接用对应的就可.(DWORD -> int , WORD -> Int16)b.API中字符串指针类型 -> .net中stringc.API中句柄 (dWord)  -> .net中In

随机推荐