Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2010, 23:30   #1
delfi1979
 
Регистрация: 20.12.2010
Сообщений: 4
По умолчанию postmessage не могу разобраться

Нужна переместить указатель мыши и сделать клик в свернутым окне(программа на делфи)
Использую функцию postmessage
Перепробовал много вариантов, не почему-то не работает
Пример перемещение с координатой 100 100
Код:
h : HWND;
Begin
h:= FindWindow(nil,'Form1');
postmessage (h , WM_MOUSEMOVE , 0, 100 + 100 shl 16);
end;
или например нажатие кнопки
Код:
postmessage(findwindow('TForm1',nil),WM_LBUTTONDOWN,0,(200 shl 16)+ 200); // X= 200, Y= 200
postmessage(findwindow('TForm1',nil),WM_LBUTTONUP,0, (200 shl 16)+ 200)
не работает, что я упустил?
Если можно пример рабочий на делфи перемещение мыши например с координатой 200 200 и сделать клик все при помощи postmessage

Последний раз редактировалось Stilet; 08.01.2011 в 15:47.
delfi1979 вне форума Ответить с цитированием
Старый 21.12.2010, 05:58   #2
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Вот тебе пища для размещения:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  h: HWND;
Begin
  h:= FindWindow(nil, 'Form1');
  if h <> 0 then
  begin
    SetCursorPos(100, 100); // устанавливаем курсор в координаты x =100 y = 100
    // клик будет в том месте где стоит курсор
    PostMessage(h, WM_LBUTTONDOWN, 0, 0);
    PostMessage(h, WM_LBUTTONUP, 0, 0);
  end;
end;
принимаю благодарности в письменном виде( весы слева)...

Последний раз редактировалось MaxNik2009; 21.12.2010 в 06:07.
MaxNik2009 вне форума Ответить с цитированием
Старый 21.12.2010, 10:27   #3
delfi1979
 
Регистрация: 20.12.2010
Сообщений: 4
По умолчанию

Спасибо. Но
SetCursorPos устанавливает позицию в текущим окне, ну да ладно.
А вот клик
PostMessage(h, WM_LBUTTONDOWN, 0, 0);
PostMessage(h, WM_LBUTTONUP, 0, 0);
Не работает, координаты верные, вручную если кликнуть срабатывает.
Окно h есть
delfi1979 вне форума Ответить с цитированием
Старый 08.01.2011, 14:01   #4
DinoAsm
Пользователь
 
Аватар для DinoAsm
 
Регистрация: 29.10.2010
Сообщений: 31
Лампочка

А зачем мышь перемещать? При обработке сообщений WM_LBUTTONDOWN и WM_LBUTTONUP реальное положение курсора во внимание не берётся, если только в обработчике не предусмотрена проверка соответствия lParam с реальным положением курсора. В качестве последнего параметра PostMessage у вас стоит 0. Так что реально обработчик считает, что кликали в точку (0;0) окна.
В гостях - хорошо. Дома – лучше. В пути туда и обратно - терпимо. Стоять в проходе и по пол часа прощаться – ужасно.
DinoAsm вне форума Ответить с цитированием
Старый 08.01.2011, 14:24   #5
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

http://www.transl-gunsmoker.ru/2010/06/postmessage.html
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
НЕ могу разобраться Smagulov85 БД в Delphi 9 29.09.2010 16:13
Не могу разобраться Lokin Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 22.03.2010 22:45
Не могу разобраться semAz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.03.2010 17:43
НЕ МОГУ РАЗОБРАТЬСЯ... GSV84 HTML и CSS 0 03.02.2010 01:38
не могу разобраться Инспектор ГУЛ Свободное общение 7 20.09.2009 09:29