2

重複の可能性:フックを介してキーストロークを別のプロセスに直接送信する

質問の口調が少し悪い場合はお詫び申し上げます。私は正しいことを知って立ち往生しています。さて、私はWPFアプリケーションからVB6アプリケーションとWebページの両方にデータを転送するプログラムの作成に取り組んでいます。構成に応じて、データを投稿するためのプロシージャが呼び出されます。私はすでにVB6側を終了しましたが、次の理由からWebページに大きな問題があります。

  • この手順は、すべての既知のブラウザで機能する必要があります。
  • Webリクエストとしてデータを送信することは許可されていません。
  • 使用するWebサイトを制御できません。
  • また、サードパーティのソフトウェアを使用することは許可されていません

私はすでに次のことを試しました:

  • タブキーと文字キーのキーアップとキーダウンを含むメッセージを送信します
  • 送信する文字列のpostmessageを含むSendmessage
  • 上記のメッセージ後のバージョン
  • データをHTMLドキュメントとして送信するためのMSHTML
  • SendKeys(まだ詳しく調べていませんが)

これがsendmessageのコードです(私のすべての試みに最も近い)

   IntPtr window = User32_Methods.FindWindow(null, "Test Site");
        if(window!=IntPtr.Zero)
        {
            MessageBox.Show("asdasd");
            User32_Methods.SendMessage(window, Send_Message_Constants.WM_LBUTTONDOWN, IntPtr.Zero, IntPtr.Zero);
            User32_Methods.SendMessage(window, Send_Message_Constants.WM_LBUTTONUP, IntPtr.Zero, IntPtr.Zero);
            for (int count = 0; count < 15;count++)
            {
                User32_Methods.PostMessage(window, Send_Message_Constants.WM_KEYDOWN, (IntPtr) Send_Message_Constants.VK_TAB, IntPtr.Zero);
                User32_Methods.PostMessage(window, Send_Message_Constants.WM_KEYUP, (IntPtr)Send_Message_Constants.VK_TAB, IntPtr.Zero);
                foreach(char a in "adasdasdasd")
                {
                    User32_Methods.PostMessage(window, Send_Message_Constants.WM_KEYDOWN, (IntPtr)Send_Message_Constants.VK_A, IntPtr.Zero);
                    User32_Methods.PostMessage(window, Send_Message_Constants.WM_KEYUP, (IntPtr)Send_Message_Constants.VK_A, IntPtr.Zero);
                }
            }
        }

私がここで問題にしている質問のほとんどをあなたが解決したので、スタックの皆さんにお願いしたいと思います。

4

1 に答える 1

0

これはうまくいかないかもしれませんが、送信キーを使用しようとしているので、ロジックを使用して独自の.jsを追加し、実行することができます。送信キーは、フォームにデータを入力したり、ボタンをクリックしたりする方法のようなものになるため、jsルーチンが役立つ場合があります。

于 2012-10-24T19:29:40.653 に答える