Иногда приходится сталкиваться с ситуацией, когда нужно что-то сделать, а найти инжект очень сложно. Например - тот же крафт. Никак не получается программно нажать на нужные пункты, что бы при крафте не вышибло клиент. В этом случае помогла бы эмуляция нажатия мышки. Стандартные SendMessage, PostMessage не проходят в свернутое окно. Точнее ПВ на них не реагирует. mouse_event работает только с экраном, там нет привязки к окну и как результат, так же в свернутом окне работать не будет. Может знает кто как средствами ПВ щелкнуть мышкой по заданым координатам?
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Быстрое снятие и загрузка скриншотов на хостинг.
если именно для PW, то вроде работа с GUI всегда заканчивалась хорошо, все нажатия и тд
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо" Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
Добавлено через 8 минут
хм... действительно работает, но не со всем, например на сундук не нажать. Это потому что сундук является контролом и нужен его handle? у ПВшних элементов тоже есть свои handle которые ловят PostMessage?
________________
backup - акт проявления трусости
Последний раз редактировалось pw.assistant; 17.11.2014 в 06:20.
Причина: Добавлено сообщение
Вот. Как нажать на них мышкой? Должен же быть инжект или что-то подобное?
Нет, handle и прочее нужно только если нажимать на элементы управления через инжект.
Нужно просто навести мышку на нужные координаты и послать сообщение в окно с типом левая кнопка нажата.
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Быстрое снятие и загрузка скриншотов на хостинг.
Да, действительно было дело в смещении на заголовок и размер бордюров. Я просто не попадал по координатам. PostMessage работает. Спасибо за помощь! Сам бы еще долго репу чесал - думал бы что не работает.
Добавлено через 50 минут
Может кому пригодится
Получение положения и размера рабочей области открытого окна ПВ
Код:
function GetWorkRect(hWin: HWND): TRect;
var
wr, cr: TRect;
bw: integer;
begin
GetWindowRect(hWin, wr);
GetClientRect(hWindow, cr);
bw := (wr.Width - cr.Width) div 2;
Result := Rect(wr.Left + bw, wr.Bottom - bw - cr.Height, wr.Right - bw, wr.Bottom - bw);
end;
получение координаты относительно открытого окна ПВ
Код:
function WinMousePos(hWin: HWND): TPoint;
var
pt: TPoint;
r: TRect;
begin
getcursorpos(pt);
r := GetWorkRect(hWin);
Result.X := (pt.X - R.Left);
Result.Y := (pt.Y - R.Top);
end;