Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

передача числовых значений из DLL   Найти похожие ветки 

 
Dio ©   (2004-06-27 21:44) [0]

Подскажите пожалуйста способ передачи числовых значений из DLL в EXEшник (не в фокусе), причем инициатором передачи является DLL.
Подробнее: требуется ловить все нажатия клавиш (Hook). Нашел пример, но там регистрировало только стрелки (4 кнопки), для каждой из которых DLL посылал окну EXEшника определенное сообщение, по которому выполнялась определенная функция. Мне надо все кнопки и прописывать больше сотни сообщений глупо. При посылке сообщения с параметром, в лучшем случае, работает только если окно EXEшника активно.


 
DrPass ©   (2004-06-27 22:14) [1]

передать из exe в dll указатель на какую-нибудь функцию для обработки сообщений, и пусть dll ее вызывает, когда захочет


 
KilkennyCat ©   (2004-06-27 22:16) [2]

Что-то я не понял...
Дллка ловит клавиши екзешника? и для этого шлет ему сообщения? Типа: "Я готова ловить стрелки, жми!" ?


 
VMcL ©   (2004-06-27 22:46) [3]

>>Dio ©  (27.06.04 21:44)

Как посылаешь сообщение?


 
Германн ©   (2004-06-28 03:12) [4]

Лучше всего прочитать статью Алексея Павлова о Hook-ах на этом сайте. Думается мне, что "найденный автором сабжа пример", не удовлетворяет требованиям "гдобального хука".


 
Германн ©   (2004-06-28 03:14) [5]

Следует читать "глобального хука" вместо "гдобального хука". Пардон, промахнулся.


 
Dio ©   (2004-06-29 09:01) [6]

1) >>DrPass ©   (27.06.04 22:14)
Попробую.
2) >>KilkennyCat ©   (27.06.04 22:16)
Дллка ловит все клавиши системы и должна сообщать екзешнику о всех нажатиях, типа «история клавишь».
3) >>VMcL ©   (27.06.04 22:46)
В DLL ->

const
wm_press = wm_User + 100;

H := FindWindow("TForm1", "Dio");
...
SendMessage(H,wm_press,0,0);

В EXE ->
const
wm_press = wm_User + 100;

type

TForm1 = class(TForm)
   Label1: TLabel;
   Edit1: TEdit;

private //Обработчик сообщений

procedure WM_DioMSG (Var M : TMessage);message wm_pass;
end;

procedure TForm1.WM_DioMSG (Var M : TMessage);
begin
Label1.Caption:=inttostr(i);
inc(i);
end;

Так все OK если EXE не в фокусе значение I и метки изменяется. Но при передаче параметра – глухо – значение I изменяется, а параметр …
Пример: хочу так
Var key:integer;

SendMessage(H,wm_press,key,0);
 Заранее спасибо.


 
VMcL ©   (2004-06-29 09:15) [7]

wm_press = wm_User + 100;
procedure WM_DioMSG (Var M : TMessage);message wm_pass;

Это очепятка?

P.S. Почитай всё-таки http://www.delphimaster.ru/articles/hooks/index.html , как советует Германн ©


 
Dio ©   (2004-06-29 21:45) [8]

Да, очепятка, а статью я читал. Много всего полезного но конкретно для себя ... сложно


 
Германн ©   (2004-06-30 03:09) [9]

2 Dio ©   (29.06.04 21:45) [8]
> но конкретно для себя ... сложно

Ну и что, что сложно?
Имхо, есть три варианта:
1. Забить на все и пойти пить пиво. :))
2. Упростить задачу, забыв о Hook"ах.
3. Все-таки, читать статью. И другие источники. И задавать по мере прочтения более конкретные вопросы.


 
Dio ©   (2004-06-30 08:54) [10]

Дело в том, что сам hook (глобальный) работает, могу, как в той статье писать в файл, но мне надо не в файл писать. Надо передать в EXE, а метод - писать в файл, посылать сообщение и exe файл читает - немного замудрен.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.034 c
3-1087288374
Jaxtor
2004-06-15 12:32
2004.07.11
Триггер не выдает сообщения оь ошибке


9-1080296782
<<BEAST>>
2004-03-26 13:26
2004.07.11
GLScene ODE и прикрепление сил к ODE объектам.


3-1087280598
denis24
2004-06-15 10:23
2004.07.11
query


1-1087986043
sergeryM
2004-06-23 14:20
2004.07.11
Глюк в Label


1-1088062295
Heretic
2004-06-24 11:31
2004.07.11
Дочерние окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский