2012-08-14 50 views
1

我必須檢測何時來自應用程序的組合框沒有源代碼已更改。我們的想法是將一個事件掛接到這個控件上,當事件觸發時,獲取控件的選定值。我已經用Google搜索了,但是我剛剛發現瞭如何在窗口(How to hook on a window)上掛鉤,當標題文本更改時。我可以獲得控件的句柄(FindWindowEx),但是,我不知道如何將事件掛接到控件,請大家如果有任何可以幫助我。如何將事件掛接到其他應用程序中的Windows控件

+0

不知道這個鏈接會幫助,但這裏是一個起點,你可以看看 http://easyhook.codeplex.com/ 升 – MethodMan 2012-08-14 21:57:01

+0

此外,此谷歌搜索:在其他應用程序掛鉤API調用(HTTPS ://www.google.com/search?q= how%20to%20hook%20an%20event%20of%20external%20application) – MethodMan 2012-08-14 21:58:58

+0

@DJKRAZE我爲您解決了這個問題。 – 2012-08-14 22:00:54

回答

0

您可以查看SendMessage API。 DDE是IPC的一種老方法,但它仍然適用於.net。

作爲一種便宜的方法,只需使用guid +'|'創建一個表單+作爲Text屬性的文本框的句柄。當你的應用程序運行時只是加載表單,但不顯示它(也從任務欄中隱藏它)。

您的其他應用程序可以在頭文件中使用預定義的guid在第一個應用程序表單上找到Windows窗體並獲取表單上的文本框的句柄(使用管道字符或其他東西將其與guid分開)。

現在只需將SendMessage(WM_SETTEXT)添加到文本框hwnd(賦予用戶在組合框中選擇的值)。如果你在text_changed事件上放置一個事件處理程序,它將在你的第一個應用程序中觸發。

+0

謝謝大家。但似乎有一點小姐理解我的問題。組合框在應用程序中,我沒有源代碼。我試圖做的是創建一個委託事件掛鉤到組合框,所以當它已被更改觸發事件處理程序在我的應用程序,並在此方法中捕獲組合框選定的值。看來這需要Global System Hooks,如果我沒有錯,這可能很難實現。 ;-) – user1599230 2012-08-15 14:36:58

+0

[GlobalSystemHooks](http://www.codeproject.com/Articles/18638/Using-Window-Messages-to-Implement-Global-System-H)似乎做到這一點的獨特方式是使用Global System Hooks ,並且實現這個需要一個C++包裝的C++ dll,所以對我的問題沒有一個簡單的答案......所以,感謝你的每一個機構給你的建議。 – user1599230 2012-08-15 21:54:32

相關問題