5

System.Windows.Automation クラスを使用して別の win32 アプリケーションを自動化する C# Windows フォーム アプリケーションを実行しています。

読み取りまたは対話する必要がある要素がいくつかありますが、UISpy はこれらのフィールドを見つけられず、親コンテナー パネルしか見つかりませんでした。

たとえば、次のコード ブロックは多くのツールストリップ ボタンを返すはずですが、機能しません。

var mainWindow = AutomationElement.RootElement.FindChildByNamePart("Back Office Control");
var mainWindowChildren = mainWindow.FindAll(TreeScope.Children, Condition.TrueCondition);
var toolBarPanel = mainWindowChildren[1];
var toolBarItens = toolBarPanel.FindAll(TreeScope.Children, Condition.TrueCondition);

これを行う別の方法はありますか?

4

2 に答える 2

3

おわかりのように、ツールストリップ ボタンは、実際には Windows メッセージングの世界では別個のコントロールではありません。これは、メニュー項目やその他のコントロールにも当てはまります。

Windows メッセージを使用してクリックを発生させるには、WM をボタンではなく、ツールバーに直接送信する必要があります。 v=vs.85).aspx )。

SendMessageTB_PRESSBUTTON をメッセージ タイプ、コマンド識別子を wParam、1 を lParam として、ツールバーをターゲットとする WinAPI 関数を使用する必要があります (通常どおり hWnd を取得できます)。

于 2014-01-08T15:58:26.690 に答える
0

これを実現するには、Win32 呼び出しを使用する必要があります。GetWindowはそれを行います

ヘルプ情報 - http://msdn.microsoft.com/en-us/library/windows/desktop/ms633515%28v=vs.85%29.aspx

[DllImport("user32.dll")] public static extern int GetWindow(int hwnd,int wCmd); 
于 2014-01-08T15:21:06.767 に答える