c # SendMessage для кнопки без ручки - PullRequest
0 голосов
/ 08 ноября 2018

Это похожая тема, но не могу заставить ее работать.

https://social.msdn.microsoft.com/Forums/es-ES/21cc58c5-fc34-45b0-9407-952aae80fc1c/how-do-i-simulate-a-mouse-click-in-an-inactive-window?forum=vbinterop

Я хочу отправить клик на кнопку без ручки. Spy ++ показывает, что у него нет ручки. Я могу заставить его работать с этим кодом, но оно должно быть активным окном и только с использованием положения экрана вместо положения ручки управления. Я хочу отправить его в неактивное окно с дочерним элементом управления без дескриптора окна. как свернутое окно в позиции в TPanel.

    public static void ClickLeftMouseButton(int x, int y)
    {
        var oldPos = Cursor.Position;

        INPUT mouseInput = new INPUT();
        mouseInput.type = SendInputEventType.InputMouse;
        mouseInput.mkhi.mi.dx = CalculateAbsoluteCoordinateX(x);
        mouseInput.mkhi.mi.dy = CalculateAbsoluteCoordinateY(y);
        mouseInput.mkhi.mi.mouseData = 0;


        mouseInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_MOVE | MouseEventFlags.MOUSEEVENTF_ABSOLUTE;
        SendInput(1, ref mouseInput, Marshal.SizeOf(new INPUT()));

        mouseInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTDOWN;
        SendInput(1, ref mouseInput, Marshal.SizeOf(new INPUT()));

        mouseInput.mkhi.mi.dwFlags = MouseEventFlags.MOUSEEVENTF_LEFTUP;
        SendInput(1, ref mouseInput, Marshal.SizeOf(new INPUT()));

        /// return mouse 
        Cursor.Position = oldPos;
    }

У меня проблемы с SendMessage () или PostMessage.

Первый вопрос связан с SendMessage или PostMessage.

статическое внешнее bool PostMessage (IntPtr hwnd, uint Msg, IntPtr wParam, IntPtr lParam);

Положение мыши для IParam, относительно экрана или элемента управления дескриптора.

Допустим, кнопка не имеет дескриптора, но я хочу использовать родительский дескриптор и получить относительную позицию для родителя (TPanel) и инициализировать этот щелчок. Он щелкает?

Ссылка сверху показала дескриптор, но откуда этот дескриптор? это весь дескриптор окна графического интерфейса или родитель этой кнопки без дескриптора. Как TPanel?

позиция это другой вопрос. Если PostMessage основано на дескрипторе. Находится ли это положение от верхнего левого положения ручки или верхнего левого края экрана?

Допустим, экран находится в диапазоне от 0,0 до 100 100. Дескриптор из PostMessage - от 10,10 до 20, 20. Можно ли инициализировать щелчок за пределами области действия ручки?

Спасибо

...