1

可能な最も簡単な方法を使用して、別の .NET アプリケーション (c# で記述) を使用して、非表示の .NET アプリケーションを自動化しようとしています。これはテスト目的ではなく、このアプリケーションのスクリプトの不足を補う方法です。

ホワイトフレームワークは既に試しましたが、大きな問題が 1 つあります。それは、その動作です。遅く、非表示のウィンドウやコントロールでは機能しません (winAPI のように)。さらに、白を「クリック」すると、マウスが移動し、対象のウィンドウが前面に移動します。

また、user32.dll ラッパーを使用することも考えていました。これは、ターゲットを処理する方法が必要なためですが、.NET アプリケーションでは機能しないことがわかりました。また、対象となるアプリケーションには「...」というラベルの付いた 5 つのボタンがあり、必要なボタンを 2 つ見つけるのは非常に難しいため、それを使用することも問題になります。また、コントロールの .NET id (開発者が GUI の設計時にコントロールに付けた名前) も使用したいと考えています。

ところで、私のターゲット アプリケーションはMeGUIです。私たちは多くのビデオ エンコーディングを行っており、このようなツールは大いに役立ちます。MeGUIを非表示にする必要があります。なぜなら、私は唯一のプログラマーであり、私のツールを使用している他のユーザーは、バックグラウンドで何が起こっているかを見てはならず、多くのウィンドウがあちこちに飛び出していることについて話すべきではありません。

4

2 に答える 2

2

プロジェクトから exe への参照を追加してから、AppDomainメイン メソッドを実行する を作成できます。そこから、デリゲートをメイン スレッドのループにキューイングできるはずです。少し反省して、これらのデリゲートにクリック イベントなどを直接呼び出させることができます。

私はこのアプローチを試みたことはありませんが、うまくいくはずです。

于 2010-09-12T13:34:52.200 に答える
1

非表示のアプリをスクリプト化する代わりに、Stephens のアイデアを試す必要があります。.NET Windows Forms App (EXE) は依然として .NET アセンブリであるため、DLL と同じように使用でき、参照を追加してパブリック クラスを使用するだけです。

それでもスクリプトを試してみたい場合は、"Microsoft UI Automation" API と "System.Windows.Automation" 名前空間を調べてください。

素敵な記事: http://msdn.microsoft.com/en-us/magazine/cc163465.aspx

MSDN ドキュメント: http://msdn.microsoft.com/en-us/library/system.windows.automation.aspx

于 2010-09-12T14:04:05.120 に答える