4

別のアプリケーション内で次のアクションを実行できるようにしたいと思います。

  • タブを変更するには
  • TextBox 内からテキストをコピーする
  • ボタンをクリックする
  • TextBox にテキストを入力するには
  • DropDownList要素を選択する

現在、次のような別の方法を使用しています。

  • mouse_event() でマウスの座標を変更してボタンをクリックする
  • TextBox 内のテキストをコピーするための別の mouse_event (LeftMouseClick に続いて RightMouseClick)
  • Clipboard.GetText(System.Windows.Forms.TextDataFormat.Text) を使用して、クリップボードの内容をコピーします
  • SendInput (キーごと) - テキストを TextBox に入力します

このアプローチの欠点は次のとおりです。

  • (重要ではありません) PC が使用できなくなります (スクリプトの実行中は作業できません)。
  • アプリ内のすべての要素の正確なピクセル (読み取り - 位置/座標) を知る必要があります
  • 実行時間が遅い (各キーを個別に入力する必要がある)

これらの要素の正確な座標を必要とせずにTextBox/Button/List をクリックできるアプリケーションを作成することを楽しみにしています。

そのようなタスクは C# WinForms で可能ですか? 私の現在のアプローチは機能しますが、欠点があります。何かアドバイス?

4

3 に答える 3

0

Mutexについて読んでください。スケーラビリティを計画している場合は、ネットワーク通信について読んでください (たとえば、TCP プロトコル、TcpListner、およびTcpClient )。

于 2012-05-26T16:51:48.757 に答える
0

まさにこの種のことを行うための完全なフレームワークがあり、UI オートメーション フレームワークと呼ばれています。

使用方法の例をいくつか示します。また、 UI Spyを使用して自動化要素を決定することで、
この手法を一般的なウィンドウに適用することもできます。

于 2012-05-26T16:52:06.710 に答える
0

これはUI Automationの仕事のように思えます。別のアプリケーションからテキストを取得するためにのみ使用しましたが、名前でコントロールをアクティブにしたり、名前がない場合はコントロール ツリーをナビゲートしたりする機能があります。

パターンを使用したり、コントロール ツリーをナビゲートしたりして見つけたAutomationElementを使用して、テキストを取得し、コントロールを操作できます。

于 2012-05-26T16:53:11.453 に答える