X-R*_*Ray 2 windows delphi focus focusmanager
当我们的USB设备连接时,我需要启动我的应用程序.
我第一次尝试这是一个后台应用程序,注意插入USB设备时.当它注意到我们的设备连接时,它调用ShellExecute()并启动我们的应用程序.
除了在Windows 8中,这很有效.假设我们在Windows 8的"开始"屏幕上.在这种情况下,应用程序在后台启动,并且开始屏幕保持在前面.
我认为这是一个"焦点"问题,因为我实际上希望做的是从"开始"屏幕"偷取焦点".
http://blogs.msdn.com/b/oldnewthing/archive/2009/02/20/9435239.aspx
由于我的后台应用程序没有焦点("开始"屏幕具有焦点;此外,我的应用程序没有UI),因此无法将焦点放在我的前台应用程序上.
让我说,总的来说,我讨厌集中窃取.启动用户想要使用的应用程序对我们的用户来说是一个很大的帮助.
我该如何解决这个问题?也许答案是以编程方式要求启动屏幕启动我的应用程序,但我没有看到这样做的方法:
也许我正以错误的方式接近这一点.建议?
你这是错误的方式.虽然您可以编写程序来持续监视USB端口以检测何时连接,但是没有必要.无论如何,操作系统已经在做了.
为您的设备类型和类注册一个Autoplay处理程序.这与旧的AutoRun功能不同,后者会自动执行插入的文件系统上的程序.
您可以从2001年11月的MSDN杂志开始概述该功能.
您的处理程序将是一个COM DLL.您可以将DLL注册为处理程序,并使用要处理的事件注册处理程序.您可以执行DLL中的所有操作,也可以将大部分功能放在应用程序中,只需将DLL用作操作系统和程序之间的代理.