2

MACROSについて何か知っています。ASSEMBLY言語の種類を意味するのではありません。別のプログラムで繰り返しアクションを実行するために使用できるプログラムについて話しています。私は、マウスの動きやボタンのクリックなど、コンピューター上の一連のイベントを記録して再生できるプログラムについて話しています。それらのいくつかは、あなたが指定した特定のアプリでのみ実行できるほど精巧です。

私はある種の1つを一度書いた。これは、Excelセッションを起動し、ある種の動的データ交換パイプを使用してExcelセッションスクリプトコマンドをフィードするプログラムでした。機能した。

しかし、オペレーティングシステムのレベルでの何かは、まったく別の話だと思います。

誰かがC#で「マクロ」を書くにはどうすればよいですか?

私が採用するアプローチは、開発環境に付属するスパイルーチンを使用して、適切なメッセージとパラメーター(wm_lbuttondownなど)のリストを取得し、動的データ交換を使用してそれらのメッセージをアプリに送信することだと思います。

だから私は3つの質問があります。

  1. これはこれを行うための最良の方法ですか?
  2. すでに実行されているアプリのハンドルを取得するにはどうすればよいですか?
  3. すでに実行されているアプリにユーザーのようなメッセージを送信するにはどうすればよいですか?
4

2 に答える 2

1

次の多くの要因に基づいて、さまざまな答えがあります。

  • それはサードパーティですか、それとも独自のアプリケーションですか?
  • 自動化インターフェースはありますか
  • アプリで使用される GUI ツールキット

サード パーティのアプリの場合は、PInvoke を介して Windows API レベルで作業する必要があります。WinMain proc のサブクラス化、入力メッセージのキャプチャと送信などです。そのタスクにはサード パーティのライブラリがあります。C# は明らかに、このようなタスクには適切な選択ではありません。

アプリケーションに自動化モデル (Excel など) がある場合、このアプリと対話するプログラムを作成するのは非常に簡単です。

マクロ機能で強化したい独自のアプリケーションの場合は、設計状態でこれを考慮する必要があります。最初からコマンドパターンを使えば、マクロ記録のプログラミングは難しくありません。

より良い回答を得るには、より詳細な情報を提供する必要があります。

あ、その3つの質問に答えるのを忘れそうになった

  1. これはこれを行うための最良の方法ですか?

具体的なシナリオによる

  1. 既に実行されているアプリへのハンドルを取得するにはどうすればよいですか?

用途によります。ネイティブの Win アプリの場合は、プロセス ID とウィンドウのハンドルを WinApi 経由で簡単に取得できます。

  1. 既に実行中のアプリにユーザーのようなメッセージを送信するにはどうすればよいですか?

繰り返しますが、アプリケーションの種類によって異なります。ネイティブ Win アプリの場合、WinAPI 経由で WM_XXX メッセージを簡単に送信できます

于 2009-01-19T08:40:56.697 に答える
-1

独自のプログラムに追加する必要があるものでない限り、キーボード/マウスマクロプログラムをダウンロードして、それを使用してこれらの繰り返し可能なアクションを実行できます。

一方、独自のプログラムでマクロを実行するには、クリックされたボタンを記録し、保存可能な一時リストに書き込んでから、ボタンをクリックして(プログラムで)リストを実行する方法を見つけます。

于 2010-06-10T07:56:52.930 に答える