2009-09-01 29 views
4

我在寫程序來自動化win32表單。我正在使用Microsoft UI自動化庫。我不知道如何在窗體上獲取並調用預先定義的快捷鍵。現在我只需獲取MenuItem的AutomationElement並調用該元素的單擊即可。 任何解決方案?有人這樣做嗎?如何在UI自動化中調用快捷鍵?/.NET

回答

3

據我所知AutomationElementInformation有一個AcceleratorKeyAccessKey屬性。
從MSDN一些提取:

AutomationElement :: AutomationElementInformation :: AcceleratorKey
該調用與元件相關聯的動作鍵組合的序列。

和:

AutomationElement :: AutomationElementInformation :: ACCESSKEY
的字符,與元素關聯,即用於激活該元素。

然後您可以使用SendKeys來模擬按鍵。

另一種方法是使用keybd___event,但AFAIK已棄用,Microsoft建議改用SendInput。可能會幫助你。

+0

感謝AcceleratorKey和AccessKey。這很有幫助。 但我無法使用SendKeys,因爲使用UI Automation Library是使用Win32 Form時的另一種方法。 我有AutomationElemnt並可以獲取它的模式來與控件類型屬性進行交互。 在我的情況下,我有MainWindow AutomationElement,它有兩種模式:WindowPattern和TransformPattern。並且使用此模式無法模擬SendKeys。 所以,我仍然不明白我如何使用快捷鍵。 – Loki 2009-09-01 19:28:54

+0

你可以使用* SendInput *嗎? – 2009-09-02 08:11:55

2

您應該激活主窗口,並調用SendKeys :: Send將密鑰發送到活動窗口。 這是SendKeys類中的一個靜態方法,所以將密鑰發送到窗口,不需要主窗口的AutomationElement。