2011-06-18 101 views
2

我目前在C# 中使用SendKeys.SendWait(text);,但SendKeys發送全局密鑰,我必須激活我的應用程序然後發送它。另一個問題是當我在我的鍵盤上鍵入某些內容(在另一個應用程序中)並且SendKeys函數激活(在我的應用程序中)時,會發生錯誤。如何在我的應用程序中發送鍵盤鍵?

因此,無論我的應用程序處於活動狀態並鍵入了什麼內容,如何向我的應用程序發送消息?

+0

這個應用程序的目的是什麼,你能提供一些你已經擁有的相關代碼嗎? –

+0

它是一個bot程序 - 使用webbrowser控件。我想輸入消息併發送。我無法改變輸入表單的值...所以我必須將鍵發送到應用程序。關於你想要的代碼 - 有註解要顯示。我只是使用上面的函數發送密鑰,就是這樣,但我想改變該函數以符合我的要求。 – TreantBG

回答

2

SendMessage()做你想做的。你需要像這樣使用它:

[DllImport("user32.dll", CharSet = CharSet.Auto)] 
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam); 

const UInt32 WM_CHAR = 0x0102; 
const int VK_Q = 0x51; // taken from http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx 

SendMessage(handleToTheInputForm, WM_CHAR, VK_Q, 1); 
+0

是的,類似這樣的東西 – TreantBG

1

您需要將其他應用程序的窗口上獲得handle,這樣就可以把它集中和可靠地發送你的按鍵給它,

看一看這個教程

http://www.codeproject.com/KB/cs/SendKeys.aspx

+0

是的,我現在這樣做,但即時通訊再次發生錯誤。我不希望我的應用程序依賴於哪個應用程序處於活動狀態...... – TreantBG

相關問題