WinApi SendMessage
В какой конкретно момент происходит проблема? Тебе удается получить нужный хэндл?
Окно не реагирует на SendMessage. Никак не реагирует.
ХЗ. Я однажды столкнулся с тем, что ОЛЕ2 приложения иногда используют стандартные виндовые мессэджи в своих грязных целях, и проги, эмулирующие клаву, не работают. Может, та же хрень?
А?
Лезть в Тред проги нужно только если ты ей что-то по ссылке(адресу) передаешь.
все должно работать убедись что у SendMessage правильные параметры (координаты относительные в клиентской области (! MK_LBUTTON не забуть в wParam)
хотя чтобы выполнить SBM_GETRANGE тебе придется в память другого процесса лезть
Что означает параметр, что передается после "WM_MOUSEMOVE"? Относительный сдвиг или координаты той точки, куда мышь сдвинулась?
msgresult1 = SendMessage(tebook2_hwnd, WM_LBUTTONDOWN, MK_LBUTTON, &H1010)
Sleep (500)
msgresult2 = SendMessage(tebook2_hwnd, WM_MOUSEMOVE, MK_LBUTTON, &H2020)
Sleep (500)
msgresult3 = SendMessage(tebook2_hwnd, WM_LBUTTONUP, MK_LBUTTON, &H2020)
Sleep (500)
поставь мсдн там есть про параметры сообщений, или win32.hlp из дистрибутива Borland C
Если я правильно понял, то поможет
VOID mouse_event( DWORD dwFlags,
DWORD dx,
DWORD dy,
DWORD dwData,
ULONG_PTR dwExtraInfo
);
Я так делал, но это не интересно, поскольку эмулируется именно движение мыши. При этом безразлично, какое окно находится под мышью, ибо не указывается handle. Получается куча забавных побочных эффектов.
Тогда можно попробовать dll-injection получишь доступ ко всему.
если программа, кроме обработки сообщений, также еще сама спрашивает положения мышки, то подход с WM_Mouse-ами работать не будет
Выясняй позиции нужных тебе окошек.
Эмулируй движения мыши (но уже не на ощупь, а точно зная, куда ее нужно шевелить).
Потому что окошки, строго говоря, согут игнорировать почти все.
например SBM_* для скролл-бара и т.д.(большинство программ (~99.99%) используют common control.dll)
procedure ClickTo(Handle: HWND; X, Y: integer);
// clicks control defined by Handle to (X, Y) point
begin
SendMessage(Handle, WM_LBUTTONDOWN, MK_LBUTTON, MakeLong(X, Y;
SendMessage(Handle, WM_LBUTTONUP, MK_LBUTTON, MakeLong(X, Y;
end;
G0MjqkzT
pAWjDIXbH1wo
A8rozyHDf
nJ5NC8K4BRtm
EqzOfLUdqgfS
1s9qnNgwb2Q4r
Оставить комментарий
Elina74
См. на рисунок. Здесь изображено окно некоторой не моей программы, которое я изучил с помощью MS Spy++. Показано, какие указатели (handle) имеет каждая часть окна, классы (class type) окон и подписи (caption) к ним.
Как узнать эти handle из другой программы?
Как сэмулировать действие: "нажать левой кнопкой мыши внутри внутреннего окна, протянуть мышь вверх, отпустить левую кнопку"?
Плиз, не пишите RTFM, я честно пытался это сделать так на VB: