2013-08-27 137 views
2

我需要在連接USB設備時啓動我的應用程序。當連接USB設備時啓動我的應用程序

我在這第一次嘗試是一個後臺應用程序,注重USB設備時是否已插入到。當它注意到我們的設備相連,它調用的ShellExecute(),並開始我們的應用程序。

這工作得很好,除了在Windows 8假設我們在Windows 8的「開始」屏幕在這種情況時,應用程序在後臺啓動,並開始屏幕保持在前面。

我覺得這是因爲什麼,我確實希望做從開始屏幕「偷焦點」一個「焦點」問題。

http://blogs.msdn.com/b/oldnewthing/archive/2009/02/20/9435239.aspx

由於我的後臺應用程序沒有焦點(開始屏幕具有焦點;此外,我的應用程序沒有UI),它不能將焦點離開我的前臺應用程序。

讓我說,在一般情況下,我恨偷焦點。開始應用程序用戶想要使用的是對我們的用戶很大的幫助。

我該如何解決這個問題?也許答案是編程要求開始屏幕開始我的應用程序,但我不明白的方式來做到這一點:

http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/9ed23f32-0708-48a8-9ff7-5fce6dbe123f/windows-8-start-screen-api

也許我在錯誤的方式接近這一點。建議?

回答

8

你正在走錯這條路。雖然你可以編寫一個程序來不斷地監視USB端口來檢測什麼時候連接,這是沒有必要的。無論如何,操作系統已經這樣做了。

註冊爲您的設備類型和類別的自動播放處理程序。這與舊的AutoRun功能截然不同,AutoRun功能可以自動執行在插入的文件系統上找到的程序。

您可以用overview of the feature from the November 2001 issue of MSDN Magazine開始。

您的處理程序將是一個COM DLL。您可以register the DLL as a handler, and register the handler with events you want to handle。您可以執行DLL中的所有內容,也可以將大部分功能放入應用程序中,並將該DLL用作操作系統和程序之間的代理。

+0

你有沒有試過使其中之一?謝謝! –

相關問題