我想從我的C#程序發送擊鍵到Java應用程序從C#應用程序發送鍵擊到Java應用程序 - 奇怪的行爲?
代碼爲sendig鍵是:
private void SendKeysToWindow(string WindowName, string KeysToSend)
{
IntPtr hWnd = FindWindow(null, WindowName);
ShowWindowAsync(hWnd, SW_SHOWNORMAL);
SetForegroundWindow(hWnd);
SendKeys.Send(KeysToSend);
}
此代碼工作正常使用的所有程序,除了與Java應用程序,我要控制。
例如,如果我創建一個按鈕與如下因素的代碼:
SendKeysToWindow("Java application window name", "{F2}");
SendKeysToWindow("Popoup window name", "123");
此發送F2到主程序窗口,在這裏另一窗口彈出,並且第二SendKeysToWindow命令發送「123」到那個窗口。 這是預期的工作方式,所有其他程序都是如此。
但是,當我將這些命令發送到Java程序時,會發生以下情況:第一個SendKeysToWindow命令執行正常(彈出窗口出現),但不會將「123」發送到該窗口。
如果再次按下該按鈕,「123」被髮送到彈出窗口,並且它打開另一個popoup窗口。
如果我爲兩個SendKeysToWindow命令創建了兩個單獨的按鈕,並且一個接一個地按下它們,那麼這兩個命令都可以正常執行。
什麼是探針?
感謝advanvce的幫助,這真的讓我發瘋。
P.S .:我是C#的初學者,所以請保持簡單的答案。
我猜,因爲你混合同步和異步調用。嘗試'ShowWindow'而不是'ShowWindowAsync'。 – 2010-01-10 21:42:00
我嘗試使用ShowWindow而不是ShowWindowAsync。它仍然無法按預期運行,但行爲發生了一些變化:第一次點擊時,彈出式窗口出現,但「123」仍未發送給它。但是,如果我再次點擊該按鈕,第二個彈出窗口就會出現,「123」貼在正確的位置! - 至少我們有點接近.. – 2010-01-11 12:32:47