Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从C使用P/INVOKE发送VK_移位#_C#_.net_Winapi_Interop - Fatal编程技术网

C# 无法从C使用P/INVOKE发送VK_移位#

C# 无法从C使用P/INVOKE发送VK_移位#,c#,.net,winapi,interop,C#,.net,Winapi,Interop,我们正在尝试处理C#(来自IE)中的文件下载对话框 我们要做的是通过向窗口发送消息(Home、CTRL-A、Backspace),清除对话框中的文本框 我在这里粘贴了一些代码(不是全部),但似乎没有触发CTRL键(我看不到实际文本被突出显示): 当使用SendMessage函数与WM_KEYUP和WM_KEYDOWN消息结合使用时,我是否遗漏了什么 SendMessage函数声明如下: [DllImport("user32.dll", CharSet = CharSet.Auto, SetLas

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

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

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

当使用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);

请尝试API函数。

不要使用
SendMessage()
模拟输入。使用带有适当消息的
SendInput()
SendMessage()
来实际清除文本(
WM_SETTEXT
)。我们尝试过使用WM_SETTEXT,但与IE下载对话框结合使用,似乎设置文本实际上并不影响对话框(它将文件保存到与编辑框设置的位置不同的位置)。使用键发送可以很好地工作。发布的代码有很多地方你都做得不对,击键是发布的,而不是发送的,你不能用PostMessage控制另一个进程的修改器键状态。但是要注意,IE下载确认对话框是特殊的。它是一个引人注目的攻击目标,不能被搞乱。你为什么要这样做通过在IE上插入关键消息从internet下载?不用调用beast就可以通过编程方式进行下载。我同意@HansPassant-您可能不应该这样做。“此功能已被取代。请改用SendInput。”@lysergic acid调用
keybd_事件
比调用
SendInput
容易得多。
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern IntPtr SendMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);