2013-07-03 15 views
1

我有一個使用方法CreateProcessAsUser啓動應用程序的系統服務。將焦點集中到使用CreateProcessAsUser從系統服務啓動的窗口

此服務使用模擬在活動會話中啓動應用程序。中的應用正在開展,因爲它應該我設法通過使用以使顯示在前面的窗口:

SetWindowPos(&這 - > wndTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);

但我不知道該怎麼做,所以應用程序可以有鍵盤焦點。即使應用程序位於頂部,只要用戶沒有在窗口上點擊,鍵盤輸入就會轉到我的應用程序下面的應用程序。

+0

您無法將窗戶推入用戶的臉部。當用戶忙於在與他一起工作的窗口中點擊並打字時,也不會經常達到良好的目的。他很有可能會不小心關上窗戶,甚至看不到它。完成此操作的理想方法是使用啓動快捷方式啓動一個單獨的gui應用程序,並使用Shell_NotifyIcon()發出警告。 –

+0

我完全同意你的看法,但我只是試圖表達我客戶的要求! 我設法在用戶的臉上推窗戶,現在我需要把重點放在這個窗口上:-p – darkheir

+0

客戶想要什麼,客戶得到什麼。我會告訴客戶他們需要去購買另一個操作系統。 Windows 95仍然允許這樣做,以防萬一它對它們有吸引力。 –

回答

2

讓你的應用程序通過RegisterHotKey註冊(精心挑選)快捷鍵,然後通過模擬SendInput

關鍵在WM_HOTKEY消息的處理,你應該能夠「偷焦點」。

Remenber:這是不好意思竊取重點,但我完全理解「我的客戶在問什麼!」部分。

+0

工程就像一個魅力!謝謝,這是一個非常聰明的解決方案! – darkheir

+0

我不是那麼聰明,前段時間Raymond Chen在「舊新事物」中給出瞭解決方案。 http://blogs.msdn.com/b/oldnewthing/archive/2009/02/26/9445006.aspx – manuell