2012-12-12 62 views
1

我不得不面對一個令人討厭的MS Windows應用程序,一旦它失去焦點就退出工作。我的問題是,我怎麼能欺騙這個應用程序來相信它仍然是焦點,但它確實不是?讓一個窗口相信它仍然是焦點,儘管它不是

我的想法是:

  1. 是否有可能從眼前這個應用抑制相應的「WM」的消息?
  2. 我可以向這個窗口發送一條假消息嗎?
+2

我想你可以嘗試發送一個'WM_SETFOCUS'消息來獲得快速和骯髒的解決方案 - 如果它甚至可以工作。否則,可能是一個處理髮送給它的WM_KILLFOCUS消息的鉤子。無論哪種方式,如果你這樣做,你不能指望窗口的行爲。我當然希望這是爲了個人使用,如果你想嘗試這樣的事情。更有希望的解決方案是與任何製作其他軟件的人談話,並要求在窗口失去焦點時繼續選擇。 – chris

+1

根據應用程序的工作方式,您可能還需要僞裝像「GetFocus」這樣的函數。這樣做的最可靠的方法就是在虛擬機中運行應用程序,並讓它在可視機器中保持焦點,只要它喜歡即可。 –

回答

0

發送WM_ACTIVATE消息適用於某些應用:

SendMessage(hWnd, WM_ACTIVATE, WA_CLICKACTIVE, hWnd); 

離開最後一個參數爲NULL,可能工作了。

相關問題