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

时间:2017-12-19 10:22:21

标签: c# autoit

我需要在后台为Bluestack编写一个自动点击C#应用程序。 我尝试使用Autoit api,我可以点击或发送密钥,但它不支持drag&下降。 我找到了一个使用" user32.dll"的解决方案关于C#的PostMessage,但它似乎不再适用于窗口10。

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

Destination Host Unreachable

1 个答案:

答案 0 :(得分: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
}