【问题标题】:USB self disconnectUSB自断开
【发布时间】:2014-11-29 10:18:02
【问题描述】:

我不熟悉 USB,我无法(使用 delphi)通过自断开 USB 功能改进我的软件。

该程序已打开并从 USB 存储驱动器(例如 F:/)运行,当它停止时我尝试做的是自动弹出设备。

我还尝试创建一个运行禁用 USB 设备的程序的 .bat 文件。如果这个 .bat 文件是从本地驱动器 (C:/) 启动的,一切正常,但如果这个 .bat 文件是从 U 盘 (F:/) 启动的,则会失败。

这里是我获取信息的链接:

How can i remove a USB flash disk programmatically using delphi?

delphi 有什么建议吗?

【问题讨论】:

  • 从您的 USB 设备执行时,脚本在什么方面会失败?有什么具体的错误信息吗?

标签: delphi batch-file


【解决方案1】:

您遇到的问题是您正在执行的进程是从您要弹出的驱动器运行的。可执行文件被锁定,这会阻止您的驱动器被弹出。

很清楚你需要做什么。您必须确保驱动器上没有文件被锁定。这意味着您必须终止您的进程。然后,您需要从另一个驱动器运行的另一个进程来执行弹出。执行以下操作:

  1. 从进程 A,将可执行文件写入要弹出的驱动器以外的驱动器。例如写入临时目录。
  2. 调用CreateProcess 启动另一个可执行文件,例如进程B。在命令行上将进程 A 的可继承句柄传递给进程 B。
  3. 进程 A 终止。
  4. 进程 B 一直等到进程 A 的句柄发出信号,然后弹出驱动器。
  5. 进程 B 终止。

【讨论】:

  • 感谢您的回复
猜你喜欢
  • 2017-03-16
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
相关资源
最近更新 更多