2

可能的重复:通过挂钩直接将击键发送到另一个进程

如果我的问题的语气有点糟糕,我想道歉。我被卡住了。好的,我正在编写一个程序,将数据从 WPF 应用程序传输到 VB 6 应用程序和网页。根据配置,它将调用一个过程来发布数据。我已经完成了 VB 6 方面的工作,但是网页出现了一个大问题,因为:

  • 该过程必须适用于所有已知的浏览器。
  • 我不允许将数据作为 Web 请求发送。
  • 我无法控制要使用的网站。
  • 我也不允许使用任何第三方软件

我已经尝试了以下方法:

  • 用 keyup 和 keydown 发送消息,用于制表符和字符键
  • Sendmessage 与要发送的字符串的 postmessage
  • 上面的postmessage版本
  • 用于将数据作为 HTML 文档发送的 MSHTML
  • SendKeys(虽然还没有深入探索它)

这是发送消息的代码(最接近我所有的尝试)

   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 回答