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

问题描述 投票:0回答:1

我需要在后台为Bluestack编写一个自动点击C#应用程序。我尝试使用Autoit api,我可以点击或发送密钥,但它不支持拖放。我在C#上找到了使用“user32.dll”PostMessage的解决方案,但它似乎不再适用于窗口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));
c# autoit
1个回答
2
投票

确保您使用正确的窗口句柄发送点击。它名为BlueStacks Android PluginAndroid {X} {X => android运行实例} enter image description here

我尝试向窗口的句柄发送消息,它在win10上像魅力一样工作。

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

这是我从here挑选的winapi课程

    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
}
© www.soinside.com 2019 - 2024. All rights reserved.