C# 自动单击并将密钥发送到另一个应用程序 window 10

C# auto click and send key to another application window 10

我需要在后台为 Bluestack 编写一个自动点击 C# 应用程序。 我尝试使用 Autoit api 并且可以单击或发送键,但它不支持拖放。 我找到了一个在 C# 上使用 "user32.dll" PostMessage 的解决方案,但它似乎不再适用于 window 10。

任何人都有其他解决方案。请帮忙。非常感谢!

[DllImport("user32.dll", SetLastError = true)]
static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);

PostMessage(handle, (uint)WMessages.WM_LBUTTONDOWN, 0, MAKELPARAM(400, 400));

确保您使用正确的 window 句柄来发送点击。它的名称是 BlueStacks Android PluginAndroid{X} {X=> android 运行}
的实例

我尝试将消息发送到 window 的句柄,它在 win10 上运行得很好。

Win32.SendMessage(0x00060714, Win32.WM_LBUTTONDOWN, 0x00000001, 0x1E5025B);

这是我从 here

中挑选的 winapi class
    public class Win32
    {
        // The WM_COMMAND message is sent when the user selects a command item from 
        // a menu, when a control sends a notification message to its parent window, 
        // or when an accelerator keystroke is translated.
        public const int WM_KEYDOWN = 0x100;
        public const int WM_KEYUP = 0x101;
        public const int WM_COMMAND = 0x111;
        public const int WM_LBUTTONDOWN = 0x201;
        public const int WM_LBUTTONUP = 0x202;
        public const int WM_LBUTTONDBLCLK = 0x203;
        public const int WM_RBUTTONDOWN = 0x204;
        public const int WM_RBUTTONUP = 0x205;
        public const int WM_RBUTTONDBLCLK = 0x206;

        // The FindWindow function retrieves a handle to the top-level window whose
    // class name and window name match the specified strings.
    // This function does not search child windows.
    // This function does not perform a case-sensitive search.
    [DllImport("User32.dll")]
    public static extern int FindWindow(string strClassName, string strWindowName);

    // The FindWindowEx function retrieves a handle to a window whose class name 
    // and window name match the specified strings.
    // The function searches child windows, beginning with the one following the
    // specified child window.
    // This function does not perform a case-sensitive search.
    [DllImport("User32.dll")]
    public static extern int FindWindowEx(
        int hwndParent,
        int hwndChildAfter,
        string strClassName,
        string strWindowName);


    // The SendMessage function sends the specified message to a window or windows. 
    // It calls the window procedure for the specified window and does not return
    // until the window procedure has processed the message. 
    [DllImport("User32.dll")]
    public static extern Int32 SendMessage(
        int hWnd,               // handle to destination window
        int Msg,                // message
        int wParam,             // first message parameter
        [MarshalAs(UnmanagedType.LPStr)] string lParam); // second message parameter

    [DllImport("User32.dll")]
    public static extern Int32 SendMessage(
        int hWnd,               // handle to destination window
        int Msg,                // message
        int wParam,             // first message parameter
        int lParam);            // second message parameter
}