2010-07-26 66 views
1

如何檢索當前具有焦點的控件的句柄?我使用WH_KEYBOARD_LL來捕獲所有按鍵,並且我應該能夠確定用戶在哪個文本框中輸入。捕獲事件的代碼無法直接訪問其他應用程序中的 控件。在另一個應用程序中獲取當前集中控件的句柄

我知道win32函數GetFocus()存在獲取當前窗口句柄,但我需要類似的當前控件。

任何想法,將不勝感激。

鼠兔

+0

我應該補充說,當在完整的.NET中運行時,GetFocus函數爲我輸入的每個控件返回一個唯一的Hwnd。但是,當在Visual Foxpro應用程序(通過COM託管此託管dll)中輸入時, Hwnd在每個窗口中都是唯一的。 – 2010-07-26 09:41:35

回答

2

你可以通過GUI線程ID來GetGUIThreadInfo()這將爲您提供一個GUITHREADINFO.hwndFocus

+0

感謝您的建議,但問題仍然與GetFocus()相同。看來我無法獲得Visual Foxpro內控件的句柄。我所能得到的只是應用程序中的窗口和子窗口。 – 2010-07-26 10:39:09

+0

你有沒有偵察到'd it?也許控件不是窗戶,而是繪製而成(如MS窗體) – 2010-07-26 11:30:21

+0

我剛剛做了,但深度也僅限於窗口,工具欄,樹視圖,圖像列表,而不是像在.NET Forms應用程序中看到的那樣深。我發現了以下文章(http://www.mofeel.net/110-microsoft-public-fox-programmer-exchange/10593.aspx):FoxPro不使用GDI繪製其控件,但它將它們繪製爲位圖。似乎我不想做我想做的事。 – 2010-07-26 12:11:28

0

您可以使用更通用的WH_MSGFILTER(它在受監視線程的上下文中調用,因此您必須創建一個DLL)。回調獲得MSG結構,其中包含有關消息的所有信息(也可以處理)。

+0

我看了一下API,回調函數也返回一個Hwnd,但是在Foxpro的情況下,沒有。我會遇到同樣的問題。無論如何謝謝(我不知道那個鉤子) – 2010-07-26 12:33:47

相關問題