【发布时间】:2011-01-15 07:19:36
【问题描述】:
我有一些带有简化 Windows 的计算机,其中添加/删除的存储设备不会自动获得驱动器号。 所以我必须找到一种方法来检测添加/删除的内容。 一种方法(我知道)是使用 WM_DEVICECHANGE 消息。 在这些计算机上,消息仅使用 WParam 7 和 LParam 0 发送到 Windows。 因此,当我的应用程序收到此消息时,我可以运行我的检测代码。 问题是设备需要一些时间才能被完全识别;同时,我的应用程序被 WM_DEVICECHANGE 消息的“齐射”“轰炸”,检测代码甚至启动了 6..7 次。 为了解决这个问题,我可以添加一个由新消息重新初始化的计时器;如果在一段时间(1..2 秒)后,应用程序没有收到消息,则启动检测代码。 但我不是 100% 喜欢这种方法,因为它没有考虑其他因素,例如:计算机的速度、其他减慢 Windows 的程序、不同的存储设备类型等。以及检测代码在之后完成的事实延迟有点烦人。
有没有人知道更专业的解决方案...?
感谢您的帮助。
【问题讨论】:
-
我还没有做过类似的事情,但是看看 shell 事件,当文件被删除、更改、修改等时,使用 shell 还可以通知您(仅一次/操作)。我如果您不熟悉语法 (VC) 或从 C# 到 Delphi 的等价物,请确保您可以在 msdn 上找到有用的东西,然后请人们将代码转换为 Delphi。
-
@Dorin,好的,我知道我可以查看和搜索,但我已经这样做了,但一无所获,我来这里寻求帮助...
标签: windows delphi storage device