开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

12
返回列表 发新帖
楼主: aniushu
收起左侧

[求助] 如何监控电脑文件操作

[复制链接]
结帖率:78% (36/46)
 楼主| 发表于 2023-4-11 18:52:15 | 显示全部楼层   广东省梅州市
使用 精易模块 目录_监控文件修改W1这个命令解决
回复

使用道具 举报

结帖率:78% (36/46)
 楼主| 发表于 2023-4-11 18:56:37 | 显示全部楼层   广东省梅州市
qcby 发表于 2023-4-9 10:48
目录_监控文件修改 ("要监视的目录完整路径[文本型]", "监视在指定的目录中的目录树[逻辑型]") ...

大佬,有没有例子?
目录_监控文件修改 (“D:\”, 真)
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 11 天

发表于 2023-4-24 10:03:16 | 显示全部楼层   四川省绵阳市
完美监控全盘。。

监控文件夹.e

966.46 KB, 下载次数: 9

回复

使用道具 举报

结帖率:78% (36/46)
 楼主| 发表于 2023-4-24 23:09:07 | 显示全部楼层   广东省梅州市
钥匙key 发表于 2023-4-24 10:03
完美监控全盘。。

好的,以下是用易语言实现监控整个磁盘新增文件的代码:

```
'==============================

'本代码使用监控消息接口

'监听整个磁盘新增文件

'==============================

'定义常量

Const WM_DEVICECHANGE = 537
Const DBT_DEVICEARRIVAL = 32768
Const DBT_DEVICEQUERYREMOVE = 32769
Const DBT_DEVICEREMOVECOMPLETE = 32772

'定义需要监听的磁盘

Dim diskList As String = ""

'主程序

AutoEventLoop
Procedure AutoEventLoop()
  '获取监听的磁盘列表
  diskList = getDiskList()

  '初始化消息监听
  Dim hWnd = CreateWindow()

  '循环监听消息
  Repeat
    Dim msg As MSG = PeekMessage(hWnd)
    If msg.hWnd <> 0 Then
      TranslateMessage(msg)
      DispatchMessage(msg)
    EndIf
  Until msg.message = WM_QUIT
EndProc

'获取需要监听的磁盘列表

Function getDiskList() As String
  Dim dl As String = ""
  Dim i As Integer = 0
  Do
    Dim disk$
    disk$ = Str(i) + ":\\"
    If Dir(disk$) <> "" Then dl += disk$ + "|"
    i++
  Until Len(disk$) > 3
  Return dl
EndFunc

'创建消息监听窗口

Function CreateWindow() As HWnd
  '创建窗口类
  Dim wndClass As WndClass
  wndClass.cbSize = SizeOf(WndClass)
  wndClass.style = CS_HREDRAW | CS_VREDRAW
  wndClass.lpfnWndProc = EventProc
  wndClass.hInstance = GetModuleHandle(0)
  wndClass.lpszClassName = "Monitor"

  '注册窗口类
  RegisterClass(wndClass)

  '创建窗口
  Dim hWnd = CreateWindowEx(0, "Monitor", "Monitor", 0, 0, 0, 0, 0, HWND_MESSAGE, 0, GetModuleHandle(0), 0)

  '启用消息监听
  AddClipboardFormatListener(hWnd)
  RegisterDeviceNotification(hWnd, DEV_BROADCAST_VOLUME, DEVICE_NOTIFY_WINDOW_HANDLE)

  Return hWnd
EndFunc

'消息处理函数

Function EventProc(hWnd As HWnd, message As UINT, wParam As WPARAM, lParam As LPARAM) As LRESULT
  Select message
    '设备变化消息
    Case WM_DEVICECHANGE
      Select wParam
        '设备已连接
        Case DBT_DEVICEARRIVAL
          Dim pDevBroadcastHdr = lParam
          If pDevBroadcastHdr <> NULL Then
            Dim dbcv = *pDevBroadcastHdr
            '判断消息类型,并输出变化信息
            If dbcv.dbch_devicetype = DBT_DEVTYP_VOLUME Then
              Dim pDevBroadcastVolume = lParam
              Dim szDrive As String = GetDiskFromMask(pDevBroadcastVolume.dbcv_unitmask)
              If InStr(diskList, szDrive) > 0 Then Print(szDrive + " has a new file.")
            End If
          EndIf
        '设备即将移除
        Case DBT_DEVICEQUERYREMOVE
          '不处理此消息
        '设备已经被移除
        Case DBT_DEVICEREMOVECOMPLETE
          Dim pDevBroadcastHdr = lParam
          If pDevBroadcastHdr <> NULL Then
            Dim dbcv = *pDevBroadcastHdr
            '判断消息类型,并输出变化信息
            If dbcv.dbch_devicetype = DBT_DEVTYP_VOLUME Then
              Dim pDevBroadcastVolume = lParam
              Dim szDrive As String = GetDi
回复

使用道具 举报

结帖率:78% (36/46)
 楼主| 发表于 2023-4-24 23:11:30 | 显示全部楼层   广东省梅州市
钥匙key 发表于 2023-4-24 10:03
完美监控全盘。。

你这个是监控某个盘的,不是全部同时监控,我发了个英文的是A   写的不是我写的
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 11 天

发表于 2023-4-24 23:17:50 | 显示全部楼层   四川省绵阳市
aniushu 发表于 2023-4-24 23:11
你这个是监控某个盘的,不是全部同时监控,我发了个英文的是A   写的不是我写的 ...

是全部监控了呀。相当于多线程监控。一个盘符一个线程的监控。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表