2011-02-07 82 views
0

雖然與一個朋友在雅虎Messenger聊天,我告訴他是真的很酷,使一個機器人與一般消息回答時,有人打開了話匣子。在想到我告訴他的時候,我意識到做這樣的事情會很有趣。問題是我對win32瞭解不多。獲取輸入的過程

所以我的問題是這樣的:你怎麼「鏈接」的過程既另外一個和Windows環境?目標是在後臺運行一個應用程序,該應用程序通過某種查詢來查看打開了哪些窗口,以及何時出現一個新的Yahoo Messenger對話窗口,它應該向該窗口發送一個擊鍵事件列表。

我可以使用C#或VC++爲編程的一部分,我可以使用任何的幫助:無論是具體的答案或提示,可以幫助我 - 例如: - 什麼谷歌。到目前爲止,我的谷歌研究只提供了一些應用程序/ DLL /代碼,爲你和一些腳本的東西,我不完全尋找。我想自己做所有的工作,所以我可以從中學習。

回答

0

http://pinvoke.net/似乎是你正在尋找的網站。該網站介紹瞭如何在高級語言中使用Windows API函數。在pinvoke上搜索我在下面列出的任何函數,併爲您提供必要的代碼,以便能夠在您的應用程序中使用這些函數。

您可能會想使用FindWindow功能在其中找到你感興趣的窗口。
您需要進程ID,所以請使用GetWindowThreadProcessId來抓取它。
接下來,您需要使用OpenProcess來讀取進程的內存。
之後,您需要使用ReadProcessMemory來讀取進程的內存,以查看它發生了什麼。
最後,您需要使用PostMessage函數將按鍵發送到窗口句柄。

歡迎來到Windows API編程的精彩世界。

+0

聽起來沒錯。謝謝你們的提示和熱烈的歡迎。所有的win32 API都應該屬於我。 – cantrem

+0

如果你反覆使用Win32-API,我寧願只用C++/Win32編寫它。 – bjornars

+0

這就是我要去的地方 – cantrem

0

檢出Autohotkey。這是做你想做的事情的最快方式。

+0

我正在尋找最好的方法來做到這一點;以及我可以從中學到的方式;可能它們是一樣的;另外,正如我在問題中提到的那樣,我不是在尋找一個適合我的應用程序;無論如何感謝您的回答! – cantrem

1

好像你基本上要控制其他應用程序。

大致有2種方式來做到這一點在Windows

1 - 使用低等級窗口API在目標應用程序盲目開火鍵盤和鼠標事件。 這個工程的基本方法是使用Win32 SendInput method,但有一噸的你需要做的找窗口句柄,等其他工作等

2 - 使用更高級別的UI自動化API與一個應用程序交互更結構化的方式。 做到這一點的最好方法是使用微軟的用戶界面自動化API,它在windows vista和7(它也可用於XP)上發佈。 Here's the MSDN starter page for it.

我們使用Microsoft UI自動化API在我的工作,爲我們的應用程序的自動化UI測試,這是不是太糟糕了。但要小心,無論你如何選擇解決這個問題,它都充滿了危險,它是否有效取決於目標應用程序。

好運

+0

我會和第一個學習部分一起去。如果我將來會遇到這種類型的任務,顯然我會盡力避免重蹈覆轍,進入第二輪。謝謝! – cantrem

+0

我注意到你有一小部分聲望表明你是StackOverflow的新用戶。歡迎:-)如果您發現這裏的任何答案對您有幫助,那麼在答案旁邊勾上向上的箭頭被認爲是很好的做法,以便在將來向其他人表明您發現它有幫助。如果其中一個答案包含您實際決定實施的解決方案,那麼這就是綠色的「接受」勾號。乾杯! :-) –

+0

@Orieon愛德華茲:看來我仍然一直在反駁你的評論;這也是一件好事,因爲我總是忘記投票系統。 – cantrem