5

外部プログラムのキーボードクリックをシミュレートしたい。SendMessage、PostMessage、SendKeysを試しましたが、特定の1つのプログラムにキーを送信しません。だから私はSendInputを試してみたかったのですが、SendInputの優れたラッパーをダウンロードしました-http : //inputsimulator.codeplex.com/

プロジェクトにアセンブリを追加しましたが、まだどの関数も使用を開始できません...

私がしなければならないこと?どの「使用」を追加する必要がありますか?

4

4 に答える 4

5

私はあなたが必要だと信じています

Using WindowsInput; 

そうでない場合は、オブジェクトブラウザで表示して名前空間を確認できます。ソリューションエクスプローラーで参照を右クリックし、[参照]をクリックするだけです。

于 2011-07-07T13:37:56.380 に答える
2

次のようなプログラムへのキーボード入力をシミュレートできます。

  • user32.dllからSetForegroundWindowを使用して、キーをフォアグラウンドに送信するプログラムを持ってきます

  • SendKeys.SendWaitメソッドを使用して、実際のキーをプログラムウィンドウに送信します

サンプルコード(テスト前にメモ帳を起動):

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace SendKeyboardInput
{
    public class SendKey
    {
        [DllImport("user32.dll")]
        public static extern bool SetForegroundWindow(IntPtr hWnd);

        public void Send()
        {
            System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("notepad"); //search for process notepad
            if (p.Length > 0) //check if window was found
            {
                SetForegroundWindow(p[0].MainWindowHandle); //bring notepad to foreground
            }

            SendKeys.SendWait("a"); //send key "a" to notepad
        }
    }
}
于 2011-07-07T14:31:01.167 に答える
1

私は同じ問題を抱えていましたが、これらの3つのステップに従うことでなんとかそれを行うことができました

  1. プロジェクトのURLのような適切な場所にInputSimulatorのコンテンツを抽出します

  2. Visual Studioで、[プロジェクト]-> [参照の追加]をクリックし、InputSimulatorDLLファイルを参照します

  3. 「usingWindowsInput;」を追加して、WindowsInput名前空間をプロジェクトに追加します。
于 2013-08-16T15:03:55.610 に答える
0

ディレクティブを使用して何が必要になるかはわかりませんが、このツールで特定のウィンドウに入力を送信できるかどうかはわかりません。リンクしたページの「履歴」セクションには、次のように記載されています。

これは元々、アクティブウィンドウへの実際のキーボード入力をシミュレートするためにWpfKB(WPFタッチスクリーンキーボード)プロジェクトで使用するために作成されました。

私が知っているこの問題の唯一の解決策はSendMessageに関係していますが、問題がどこにあるのかをさらに説明できますか?

于 2011-07-07T13:47:59.597 に答える