2012-05-02 73 views
1

我有一個C#.NET應用程序,我可以使用FromPoint函數在特定點找到AutomationElement。如何將UI自動化元素移動到其他位置?

現在我想以操縱AutomationElement,這樣我可以將它移動到不同的位置,調整其大小等

用於移動和調整,我認爲我可以使用SetWindowPos窗口API函數,但需要手柄(IntPtr)的目標窗口。使用AutomationElement的「Current」屬性,我可以讀取它的NativeWindowHandle(一個int)。 由於Control也是一個窗口,我將這個int值作爲窗口句柄傳遞給SetWindowPost函數,希望它能完成我的工作。

但代碼無法正常工作。

請告訴我一種方法來做到這一點。

回答

0

什麼是您想要移動的元素的類型 - 頂層窗口或窗口內的項目?此外,這是一種用戶可以使用鼠標或鍵盤移動的項目嗎?例如,UIAutomation只能讓您操作與常規用戶可以執行的操作相同的用戶界面 - 例如,您無法將其用於在對話框中移動控件。

在UIAutomation中移動事物的官方方式是查看元素是否支持Transform Pattern,然後使用Move或Resize方法適當地移動它。我認爲這大部分只在頂層窗口中實現,並不確定它在其他控件上的實現程度 - 您可以使用UISpy/Inspect來檢查目標UI。

如果元素是HWND,您還可以獲得NativeWindowHandle屬性 - 這是底層的HWND,但您需要首先將其轉換爲IntPtr - 然後在Win32 API中使用它。這隻適用於實際的HWND項目,但不適用於列表視圖中的項目。

相關問題