2012-03-19 32 views
0

私は、その開発者のためにかなり貧弱なサポートを提供している会社で働いている友人がいます(Joel Testの1/12を獲得)。異なるが現在実行中のプロセスで関数を呼び出すことはできますか?

ビルドプロセスは非常に厳しく制限されており、プロジェクトのサイズによっては展開に40+(x2)マウスクリックがかかることがあります。だから、私は、「ちょっと、win32apiを使ってクリックを自動化してみませんか? (特にPythonを使用して)。私は彼に、1つの問題を除いてうまく動作する素敵なツールを手に入れました。彼らが使用するツールには、開いていてもいなくてもよいナビゲーションペインがあります。

ボタンを押して開くと閉じることができますが、どのように開いているか閉じているかを確認する方法がわかりません。ビルドプロセスとは無関係です。唯一の問題は、開いた状態に応じてマウスを画面上でクリックする必要がある場所を変更することです。アプリケーションは.NETで書かれており、アプリケーションがパネルを切り替えるために使用できる関数呼び出しを公開しているので、私は考えを探していましたが、今のところ私は2つを持っています:

  • デバッガを介してプロセスにアタッチし、何らかの形で関数呼び出しを実行します。
  • パネルタイトルバーの場所でスクリーンショットを撮っています(これは、Win32 APIを使用しており、パネルが隠されているかどうかにかかわらず変更されないようです)。

このパネルの状態を簡単に把握する方法はありますか?開発者は普通のアカウントに加えて自分のマシンに管理者アカウントが与えられているので、管理アクセス権が必要なアイデアを楽しむことができますが、それは必要ではないと思いますか?

更新: ペインを閉じることができるボタンがあるようです。 UIAVerifyでは、 "テキスト" "ナビゲーション" "btnClose"と表示されます。それはAutomationIdがbtnCloseだと言いますが、それはControlType.Textです

+1

UIとのやりとりを自動化する「シンプルな」方法は、[Windows UI Automation API](http://msdn.microsoft.com/en-us/library/ms747327.aspx)を使用することです。 –

+0

@JamesMcNellis、ターゲットアプリケーションがdllを実装する必要があるようですね。この場合、私が理解していることから、プロセス全体を書き直す方が簡単になります。 –

+1

必ずしもそうではありません。 WPFやWindows FormsのようなUIフレームワークは、標準の組み込みコントロールのすべて(ほとんどのもの)のオートメーションインターフェイスを実装しています。カスタムUIがたくさんある場合(例:独自の 'Button'タイプはフレームワーク'Button'タイプ)、UIAは始めるのに適しています。私は[UIAVerify](http://uiautomationverify.codeplex.com/)をダウンロードし、プログラムのUIがどのようなものかを見てみることをお勧めします。 –

答えて

0

このパネルはどのような技術から作られていますか?それは標準GDIかWPFですか?そのGDIの場合は、HWNDが必要です。このHWNDは、クラス名またはウィンドウタイトルのいずれかで見つけることができます。 HWNDを取得したら、その幅を取得できます。 WPFでビルドされていれば、私は分かりませんが、スヌープはこのようなことをします。

+0

私はそれがGDIだと思う - それはVBまたはC#.NETで書かれている。 –

関連する問題