2012-04-26 115 views
2

一旦我的嵌入式设备连接到我的PC的USB端口,它应该触发一个exe作为一个事件。我怎样才能做到这一点?触发一次exe我的设备通过USB连接

我应该创建一个服务来监视USB连接器总线,还是在Windows中有可用的任何默认API来实现?

感谢。

+0

EXE在什么情况下运行?当前交互式登录用户?一项服务相当简单,但在预定义帐户下运行。 – MSalters 2012-04-26 07:51:40

+0

[如何在插入USB时触发事件]可能的重复(http://stackoverflow.com/questions/10259805/how-to-trigger-an-event-when-usb-is-plugged) – Deanna 2012-04-26 12:09:42

回答

3

不可能在连接时启动一个简单的exe文件。但是您可以编写一个服务或用户模式应用程序来监听设备到达事件。 WM_DEVICECHANGE通过设备接口guid发送给所有(registered)应用程序,该设备接口guid代表插入了哪个设备。然后,您可以使用setupapi的此ID来查看它是否是您的设备。

在收到该事件后,您可以启动您的可执行文件。

+0

来自此线程的示例完全是这个http://www.dotnet247.com/247reference/msgs/32/164968.aspx – 2012-04-28 09:47:08

2

根据您的Windows版本,使用USB驱动器的根文件夹中的AutoRun.inf文件的workaround可能是可能的。出于安全原因,这是默认关闭的,并且在Windows 7中根本不允许。

为了以更稳健的方式达到相同的效果,您需要创建一项服务来监控您的设备是否连接(例如,监控连接的Apple设备的iTunesHelper)。

+0

感谢您的提示答案。我想知道Windows自动播放如何在插入USB存储设备后立即工作,以及Windows如何在内部没有驱动程序的情况下调用“新硬件向导”,在另一种意义上,操作系统将在操作系统内为插入的USB设备寻找相应的驱动程序。考虑到以上几点,是否可以使用任何其他Windows API(安装程序Api)? – 2vision2 2012-04-26 05:59:42

+0

这超出了我的知识范围我很害怕 – erikxiv 2012-04-26 09:31:12

0

最简单的解决方案可能是一个微不足道的UMDF驱动程序。这基本上是您的设备连接时调用的一个小型COM组件。

相关问题