Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> sendmessage 
:(
    Опции темы
Zaoorzko
Дата 20.12.2007, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Как активировать приложение "qwerty" и нажать мышкой на координату(100,101) ? подскажите плз...
Знаю только что использовать надо sendmessage

Вот что есть:

var h: integer;
begin
  h:=FindWindow(nil,'qwerty');
  if h<>0 then
  begin

    SendMessage(h,что тут писать??);
end
PM MAIL   Вверх
SneG0K
Дата 20.12.2007, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 3
Всего: 54



Кароч координаты мыши устанавливать так

Код

SetCursorPos(x, y);


А как нажать я не в курсах smile  так, что звиняй smile 
PM WWW Skype   Вверх
Poseidon
Дата 20.12.2007, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Цитата(Zaoorzko @  20.12.2007,  19:31 Найти цитируемый пост)
Как активировать приложение
SetForegroundWindow(h);

Цитата(Zaoorzko @  20.12.2007,  19:31 Найти цитируемый пост)
и нажать мышкой на координату(100,101)

Посылай wm_LButtonDown с параметрами lParamLo - x-кооpдината куpсоpа мыши, lParamHi: y-кооpдината куpсоpа мыши.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Zaoorzko
Дата 20.12.2007, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Код

var h: integer;
begin
  h:=FindWindow(nil,'qwerty');
  if h<>0 then
  begin

    SendMessage(h,wm_LButtonDown,100,100) ; 

end;


Так? если да то что -то не пашет...
Я активировал Paint и сделал цикл чтоб тыкал от 0 до 1200 
(предварительно в пейне выбрал кисть)
но ничего не появилось в пейне,кнопка не нажалась не разу


или вот так надо??

Код

var
h: integer;
a:integer;
xy:longint;
i,j:integer;
begin
i:=100;
j:=100;
xy:=MakeLong(i,j);

  h:=FindWindow(nil,'Безымянный - Paint');
  if h<>0 then begin

  SetForegroundWindow(h);
SendMessage(h,WM_LBUTTONDOWN, 0,xy);
PostMessage(h,WM_LBUTTONDOWN,0,XY);
end;
end;


но не работает всеравно

Это сообщение отредактировал(а) Zaoorzko - 20.12.2007, 21:53
PM MAIL   Вверх
MetalFan
Дата 21.12.2007, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



а еще можно mouse_event прикрутить


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Poseidon
Дата 21.12.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Цитата(Poseidon @  20.12.2007,  20:17 Найти цитируемый пост)
Посылай wm_LButtonDown с параметрами lParamLo - x-кооpдината куpсоpа мыши, lParamHi: y-кооpдината куpсоpа мыши.
Чот я тут намудрил немного, ну не в том суть.

Вот, держи то, что те нужно
Код
procedure PMouseDown(x,y: integer);
var
OldCursorPos: TPoint;
begin
GetCursorPos(OldCursorPos);
SetCursorPos(x, y);

mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);

SetCursorPos(OldCursorPos.X, OldCursorPos.Y);
end;


Ну и твой пример с циклом и Пэйнтом будет где-то вот такой:
Код
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
h: HWND;
begin
h:=FindWindow(nil,'Безымянный - Paint');
if h <> 0
then
  begin
  SetForegroundWindow(h);
  Randomize;
  for i:= 1 to 1200 do
  PMouseDown(100+Random(300), 100+Random(300));
  end;
end;




--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Zaoorzko
Дата 21.12.2007, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



спасибо, а как сдлеать:

я вставил в таймер чтобы показывать текущую коардинату,но мне не нужны все,мне нужна только одна,она должна сохраниться в переменную после нажатии левой кнопки мыши

Код

var

OldCursorPos: TPoint;
begin
 GetCursorPos(OldCursorPos);
  form1.caption:=' x= '+inttostr(OldCursorPos.x)+' y= '+inttostr(OldCursorPos.y);
end;


как реализовать:
После нажатия левой кнопки мыши,в переменную будет сохраняться текущий
OldCursorPos.x и OldCursorPos.y
PM MAIL   Вверх
Zaoorzko
Дата 21.12.2007, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Удалено...

Это сообщение отредактировал(а) Zaoorzko - 22.12.2007, 19:56
PM MAIL   Вверх
Zaoorzko
Дата 23.12.2007, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Код
procedure PMouseDown(x,y: integer);
var
OldCursorPos: TPoint;
begin
//направляем мышкой и тыкаем кнопку
GetCursorPos(OldCursorPos);
SetCursorPos(x, y);
mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);
SetCursorPos(OldCursorPos.X, OldCursorPos.Y);
end;



Код
procedure TForm1.Timer1Timer(Sender: TObject);
var
OldCursorPos: TPoint;
begin
//сохраняем позиции
  if (GetAsyncKeyState(VK_LBUTTON) <> 0) and (GetAsyncKeyState(vk_Shift) <> 0) then begin
  GetCursorPos(OldCursorPos);
  memo1.lines.add(inttostr(OldCursorPos.X)+':'+inttostr(OldCursorPos.y));
  end;
end;




Код

procedure TForm1.Button3Click(Sender: TObject);
var
i,ckl2,pos1,pos2: integer;
h: HWND;
begin
//начать кликать
for ckl2:= 1 to strtoint(edit2.text)do begin
h:=FindWindow(nil,pchar(form1.edit1.text));
 if h <> 0 then begin
 //ShowWindow(h, SW_MAXIMIZE);


  SetForegroundWindow(h);
    for i:= 0 to memo1.lines.Count-1 do begin

        If Pos('stop', memo1.lines[i]) <> 0 then begin
        pos1:=pos('(',memo1.Lines[i]);
        pos2:=pos(')',memo1.Lines[i]);
        sleep(strtoint(copy(memo1.Lines[i],pos1+1,pos2-pos1-1)));

        end
        else
        begin
        pos1:=pos(':',memo1.Lines[i]);
        PMouseDown(strtoint(copy(memo1.Lines[i],1,pos1-1)),strtoint(copy(memo1.Lines[i],pos1+1,length(memo1.Lines[i])-pos1)));
        end;
    end;
     end;
end;


В Windows ВСе отлично работает,позиция курсора изменяеться и тыкает мышкой...

А в игре не работает,левая кнопка нажимаеться,но курсор не передвигаеться в игре,что можно сделать?и почему в Windows Работает а в игре нет
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0964 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.