可能的重复:通过挂钩直接将击键发送到另一个进程
如果我的问题的语气有点糟糕,我想道歉。我被卡住了。好的,我正在编写一个程序,将数据从 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);
}
}
}
我想问你们这些人,因为你们解决了我在这里遇到的大部分问题。