2017-09-18 31 views
1

對話框我有下面的代碼將打開當過用戶點擊一個按鈕,鍵盤屬性對話框:打開鍵盤性能的本地化系統

Process proc = new Process(); 
proc.EnableRaisingEvents = true; 
proc.StartInfo.UseShellExecute = true; 
proc.StartInfo.FileName = "main.cpl"; 
proc.StartInfo.Arguments = "keyboard"; 
proc.StartInfo.CreateNoWindow = true; 
proc.StartInfo.WindowStyle = ProcessWindowStyle.Maximized; 
proc.Start(); 
proc.WaitForExit(); 
int keyBoardWindow; 
while ((keyBoardWindow = FindWindow(null, "Keyboard Properties")) == 0) ; 
int isSet = SetForegroundWindow(keyBoardWindow); 

此代碼工作正常時,你的系統默認語言是英語,在其他語言如中文的情況下,FindWindow方法不會退出。可能是因爲對話窗口沒有名稱「鍵盤屬性」了。你有什麼建議?我應該如何處理,以便能夠打開鍵盤屬性對話框,無論系統的語言如何。

+1

爲什麼要手動搜索窗口?您只需調用'control.exe鍵盤'鍵盤屬性窗口即可自動顯示爲前景窗口。 – dymanoid

+0

@dymanoid,如果我評論最後三行,我可以在英語系統中顯示屬性窗口,但是同樣的東西不適用於中文,窗口不顯示,您認爲可能是什麼問題。 – Sameed

+1

剛剛在日文Win 7上測試過,'control.exe鍵盤'工作得很好。使用它而不是'main.cpl'。 – dymanoid

回答

1

如上所述in MSDN,您應該使用這個命令打開控制面板中的鍵盤屬性窗口:

control.exe keyboard 

你可以找到另一個命令出現,如鼠標字體設置。