我已经使用鼠标点击一个问题。如果我将WM_MBUTTONDOWN和WM_MBUTTONUP之间的延迟设置为超过5毫秒,那么它将无法正常工作。 为什么?
[DllImport("user32.dll")]
public static extern IntPtr
PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
public void MouseClick(short x, short y)
{
IntPtr lParam = (IntPtr)((x & 0xFFFF) | ((y & 0xFFFF) << 16));
const uint WM_MBUTTONDOWN = 0x0201;
const uint WM_MBUTTONUP = 0x0202;
PostMessage(hwnd, WM_MBUTTONDOWN, IntPtr.Zero, lParam);
//System.Threading.Thread.Sleep(100);
PostMessage(hwnd, WM_MBUTTONUP, IntPtr.Zero, lParam);
}
现在,我的目标是将按键发送到最小化窗口(directx游戏)。我尝试使用类似的方法但没有任何作用。我打赌wParam是问题所在。
const uint WM_KEYDOWN = 0x100;
const uint WM_KEYUP = 0x101;
const uint WM_CHAR = 0x102;
const int VK_W = 0x57;
const int VK_S = 0x53;
PostMessage(hwnd, WM_KEYDOWN, (IntPtr)VK_W, IntPtr.Zero);
PostMessage(hwnd, WM_KEYUP, (IntPtr)VK_W, IntPtr.Zero);
如何让它发挥作用?
请记住,窗口将被最小化,因此我无法使用SendKeys或SendInput。
答案 0 :(得分:0)
<强>更新强>
此代码有效,但仅适用于输入游戏内聊天。
const int VK_G = 0x47;
const uint WM_KEYDOWN = 0x100;
PostMessage(hwnd, WM_KEYDOWN, VK_G, 0);
我不能用它来向前走等。