-
Задача такая. Мы берём мышь, щёлкаем по заголовку окна и перетаскиваем окно в заданное место. Теперь надо это реализовать программно. Надо именно мышью, подобие SetWindowPos и через мув_виндоу не предлагать. Пытался так: устанавливаем курсор над заголовком, щёлкаем, затем устанавливаем новые координаты мыши, отпускаем. Но что то как то не получилось
SetCursorPos(80,15);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
SetCursorPos(700,15);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
-
> Надо именно мышью, подобие SetWindowPos и через мув_виндоу > не предлагать.
Мышь по-твоему с помощью волшебства окна перемещает? Без SetWindowPos или MoveWindow никак не обойтись в любом случае.
-
SetCursorPos(0+33, 0+15);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
MoveWindow(GetForegroundWindow, 477, 0, 491, 365, true);
SetCursorPos(477+33, 0+15);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
так? вроде есть ещё такая штука я не знаю использовать её или нет MOUSEEVENTF_MOVE
-
что за "ручные" оффсеты и позиции курсора?
-
?) не понял) не силён в программировании, для покера надо было помощника написать, вот пришлось кое что вспомнить. если вы про (0+33, 0+15) - то тут у меня изначально окно (которое нужно перетащить) располагается в верхнем углу экрана, чтобы взять его прям за заголовок я добавил отступ по вертикали 15 и горизонтали 33, после того как я установил курсор над заголовком я щёлкаю левой кнопкой мыши только тут сейчас у меня с координатами mouse_event(MOUSEEVENTF_LEFTDOWN,0+40,0+12,0,0);
далее перемещаю само окно устанавливаю туда курсос и затем отпускаю левую клавишу мыши. Ну вроде бы это как то работает (вроде 1 раз из 5 или 6 окно встаёт не туда О_О как так хз), вот хочу понять может здесь надо как то использовать MOUSEEVENTF_MOVE (по логике его надо как то тут использовать) ещё есть
-
ну и всё это выглядит у меня так
SetCursorPos(0+40, 0+12);
mouse_event(MOUSEEVENTF_LEFTDOWN,0+40,0+12,0,0);
SetWindowPos(ActiveWindow, HWND_TOP, sX[1][1], sX[2][1], 491, 365, SWP_NOsize );
SetCursorPos(sX[1][1]+40, sX[2][1]+12);
mouse_event(MOUSEEVENTF_LEFTUP,sX[1][1]+40+40,sX[2][1]+12,0,0);
где sX массив с координатами
|