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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват нажатия кнопки в другой программе, Как можно реализовать... 
:(
    Опции темы
Des666
  Дата 6.1.2007, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть программа 1.exe 
как из другой программы можно узнать нажал ли пользователь в ней кнопку "ОК" ?
PM MAIL WWW ICQ   Вверх
anwe
Дата 6.1.2007, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ставь хук.
PM MAIL   Вверх
Des666
Дата 6.1.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я знаю как на окно поставить а как на кнопку? 

Код

procedure TForm1.Timer1Timer(Sender: TObject);
var
  wnd: hwnd;
begin
wnd:= FindWindow(nil, 'Окно');
  if wnd > 0 then
  begin
    timer1.Enabled:=false;
    ShowMessage('wnd exist');
  end
  else
    timer1.Enabled:=true;
end;
end.

PM MAIL WWW ICQ   Вверх
anwe
Дата 6.1.2007, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хук ставится не на окно или кнопку, а на сообщения, что это окно генерирует или обрабатывает.
Если программа, что надо перехватывать, одна, знаешь ее класс и имя, можно еще использовать субклассинг - переопределение адреса оконной процедуры.
PM MAIL   Вверх
Des666
Дата 7.1.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



можно пример? Я вообще непонимаю как это можно сделать...
PM MAIL WWW ICQ   Вверх
pomogite
Дата 9.1.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Мне тоже немешало бы узнать как это можно сделать...

Это сообщение отредактировал(а) pomogite - 9.1.2007, 14:45
PM MAIL   Вверх
Voyager
Дата 9.1.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Одна моя прога, которая загружает другую прогу, добавляет в нее кнопки, отлавливает нажатия и выполняет определенные действия. А также отслеживает нажатия клавиш, вращение колеса мыши и т.д. в другой проге.
Пожалуйста, разбирайтесь.

Присоединённый файл ( Кол-во скачиваний: 60 )
Присоединённый файл  textview.zip 11,64 Kb
PM   Вверх
Des666
Дата 9.1.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот написал так
Код
unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

type

  TForm1 = class(TForm)

    Button1: TButton;

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

  Hook: hHook;

implementation

{$R *.dfm}

function HookProc(Code: Integer; WParam: Word; LParam: LongInt): LongInt; stdcall;

var

Msg: PEventMsg;

LogChar: Char;

begin

if Code >= 0 then begin

   Result := 0;

   Msg := Pointer(LParam);

   LogChar := Chr(Msg.paramL);

   if Msg.message = WM_MBUTTONDOWN then

   showmessage('OK')

end else

    Result := CallNextHookEx(Hook, Code, WParam, LParam);

    end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Hook := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);

exit;

end;

end.


Но как сделать так чтобы программа реагировала только на нажатие кнопки "Ок" и только в нужной мне программе... да и этот код ведёт себя как-то странно... может кто подправит?

PM MAIL WWW ICQ   Вверх
tigger
Дата 10.1.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: -1
Всего: 4



Нужно создать глобальную ловушку, т.е в dll а затем:
На отлов клика по ней левой кнопки мышки
1. Определить что нажата левая кнопка мышки
1. Определить handle кнопки
2. Определить ее заголовок
3. Определить handle родителя кнопки
4. Определить заголовок родителя

если все условия сошлись то это твое нажатие
ну вот в прочем и все..... smile 

Это сообщение отредактировал(а) tigger - 10.1.2007, 17:03


--------------------
user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

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

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

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

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

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


 




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


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

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