12

C# または C++ を使用して、別のアプリケーションのテキスト ボックスにテキストを挿入するにはどうすればよいですか? 私はずっと前にこれを行い、アプリケーション HWND の使用について何か覚えているようでした。しかし、アプリケーションのインスタンスごとにその変更が行われるため、完全なストーリーを覚えていない気がします。どういうわけか、実行中のアプリのリストを取得し、必要なものを抽出し、そこから HWND を取得してから...うーん....それから何をしますか? :)

4

4 に答える 4

16

FindWindowEx()を使用してハンドル(HWND)を検索し、SendMessage()を使用してWM_SETTEXTメッセージを送信します。

FindWindowExを使用する場合、最初にクラス名を使用してメインウィンドウハンドルを見つける必要があります。次に、テキストボックスが含まれているコンテナのハンドルを検索し、FindWindowExを呼び出して、親(ウィンドウ)のハンドルとコンテナのクラス名を渡す必要があります。テキストボックスに到達するまで、これを繰り返す必要があります。VisualStudioにデフォルトでインストールされているSpy++というツールを使用して、ターゲットアプリケーションを検査し、コンテナーの階層を見つけることができます(すべてのオブジェクトは、APIでは実際にはウィンドウと呼ばれますが、トップとは対照的にコンテナーと呼んでいます。レベルウィンドウ)とそのクラス名。

于 2010-12-27T14:07:00.117 に答える
3

次に、SendMessage()、WM_SETTEXT

于 2010-12-27T14:01:37.560 に答える
1

特定のアプリをターゲットにする代わりに、キーストロークをテキスト フィールドに送信するだけで済みます。

  private void button1_Click(object sender, EventArgs e)
    {
       System.Threading.Thread.Sleep(5000);
       SendKeys.Send(send_text);

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        send_text = textBox1.Text;            
    }
于 2014-06-21T19:20:48.583 に答える
0

ClipBoardクラスを使用して同じことを達成できます

于 2010-12-27T14:02:58.547 に答える