0

我们正在尝试处理 C# 中的文件下载对话框(来自 IE)。

我们要做的是通过向窗口发送消息(Home、CTRL-A、Backspace)来清除对话框中的文本框。

我在这里粘贴了一些代码,但不是全部,但似乎没有触发 CTRL 键(我没有看到突出显示的实际文本):

// HOME DOWN
NativeMethods.SendMessage(new HandleRef(null, _hwnd), NativeMethods.WM_KEYDOWN, new IntPtr(0x24), IntPtr.Zero);
Thread.Sleep(1000);

// HOME UP
NativeMethods.SendMessage(new HandleRef(null, _hwnd), NativeMethods.WM_KEYUP, new IntPtr(0x24), IntPtr.Zero);
Thread.Sleep(1000);

// CTRL DOWN
NativeMethods.SendMessage(new HandleRef(null, _hwnd), NativeMethods.WM_KEYDOWN, new IntPtr(0x11), IntPtr.Zero);
Thread.Sleep(1000);

// END DOWN
NativeMethods.SendMessage(new HandleRef(null, _hwnd), NativeMethods.WM_KEYDOWN, new IntPtr(0x41), IntPtr.Zero);
Thread.Sleep(1000);

// END UP
NativeMethods.SendMessage(new HandleRef(null, _hwnd), NativeMethods.WM_KEYUP, new IntPtr(0x41), IntPtr.Zero);
Thread.Sleep(1000);

// CTRL UP
NativeMethods.SendMessage(new HandleRef(null, _hwnd), NativeMethods.WM_KEYUP, new IntPtr(0x11), IntPtr.Zero);
 Thread.Sleep(5);

将 SendMessage 函数与 WM_KEYUP 和 WM_KEYDOWN 消息结合使用时,我有什么遗漏吗?

SendMessage 函数声明如下:

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
4

1 回答 1

0

请尝试使用keybd_event API 函数。

于 2013-01-03T16:27:56.677 回答