我正在爲觸摸屏顯示器的Winform應用程序工作。 該應用程序由一個網頁瀏覽器和一個屏幕鍵盤組成。 我擁有最需要的一切,但我面臨的問題是 有兩種輸入語言,英語和韓語。 任何熟悉使用兩種語言的人都會告訴您,正確的alt鍵 用於在語言之間來回切換。 我需要模擬這個擊鍵,但我找不到任何東西。Sendkeys.Send()for right alt key?任何替代品?
我已經找到方法來模擬左/右轉變鍵,左/右CTRL鍵。 但是沒有任何的左/右alt鍵。
我有其他的方法嗎?
我正在爲觸摸屏顯示器的Winform應用程序工作。 該應用程序由一個網頁瀏覽器和一個屏幕鍵盤組成。 我擁有最需要的一切,但我面臨的問題是 有兩種輸入語言,英語和韓語。 任何熟悉使用兩種語言的人都會告訴您,正確的alt鍵 用於在語言之間來回切換。 我需要模擬這個擊鍵,但我找不到任何東西。Sendkeys.Send()for right alt key?任何替代品?
我已經找到方法來模擬左/右轉變鍵,左/右CTRL鍵。 但是沒有任何的左/右alt鍵。
我有其他的方法嗎?
您可以使用keybd_event
和RALT
鍵碼VK_RMENU
。鍵碼的完整列表中here
你將不得不P/Invoke這樣的按鍵:
[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
public const int VK_RMENU = 0xA5;
keybd_event(VK_RMENU, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_RMENU, 0, KEYEVENTF_KEYUP, 0);
沒有必要再使用P/Invoke並再次發明輪子! 'Keys.RMenu'相當於'VK_RMENU'。 – 2012-02-17 15:42:39
我使用了你給我的東西,而且擴展鍵工作正常,但它好像沒有釋放。如果我輸入某些內容並按退格鍵,則它更像一個撤消功能。 – 2012-02-17 19:40:45
您不需要模擬Alt + Shift鍵來改變輸入語言。您可以在System.Windows.Forms
命名空間中使用InputLanguage
類:
var currentLang = InputLanguage.CurrentInputLanguage;
var installedLangs = InputLanguage.InstalledInputLanguages;
if (installedLangs.Count > 1)
InputLanguage.CurrentInputLanguage =
installedLangs[1 - installedLangs.IndexOf(currentLang)];
當你安裝了正好2的輸入語言,該代碼段這兩個之間切換。你明白了。對?
這很酷,我設法錯過了那個。雖然它看起來是Winforms框架的一部分。 WPF可能有相當的一個。 – 2012-02-17 16:05:07
我這樣做,因爲網站強制韓文輸入用戶是否有韓文作爲活動輸入 – 2012-02-17 19:41:49
我使用左Alt鍵/左Shift鍵的組合來使用Windows中的內置語言欄切換鍵盤。查看語言欄的設置對話框。也許你可以將鍵盤快捷鍵設置爲更適合你的東西。 – 2012-02-17 15:06:54