【发布时间】:2012-10-12 04:10:25
【问题描述】:
可能重复:Directly sending keystrokes to another process via hooking
如果我的问题的语气有点糟糕,我想道歉。我被卡住了。 好的,我正在制作一个程序,将数据从 WPF 应用程序传输到 VB 6 应用程序和网页。根据配置,它将调用一个过程来发布数据。我已经完成了 VB 6 的部分,但是网页出现了一个大问题,因为:
- 该过程必须适用于所有已知的浏览器。
- 我不允许将数据作为 Web 请求发送。
- 我无法控制要使用的网站。
- 我也不允许使用任何第三方软件
我已经尝试了以下方法:
- 使用 tab 键和字符键的 keyup 和 keydown 发送消息
- 为要发送的字符串发送带有 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);
}
}
}
我想在堆栈中问你们,因为你们解决了我在这里遇到的大部分问题。
【问题讨论】:
-
你有所有已知浏览器的列表吗?
-
IE、Firefox、Chrome、Rockmelt 和 Safari。首选 Chrome 和 Firefox。
-
我还能想到更多。歌剧一开始。还有其他的。此信息需要在问题中。
-
感谢您的加入。我会记住这一点的。
标签: c# asp.net wpf vb6 pinvoke