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

Вниз

Не могу разобраться с DLL   Найти похожие ветки 

 
Алексей Гость   (2011-03-17 19:15) [0]

Проблема следующая:
нигде не могу найти описания для работы с dll кодом...
Конкретнее:
Есть dll, его суть - перехватить нажатие клавиши Space и по данному событию закрыть окно моей проги (в лучшем случае в моей проге установить флажок в Checked)

Листинг dll следующий:


library Hook;// имя библиотеки

uses
Windows;

var
MyHookHandle:HHook = 0;
h:hWnd;

function MyCoolHook(Code: integer; wParam: word; lParam: Longint):LongInt;stdCall;
begin
if code<0 then Result := CallNextHookEx(MyHookHandle,Code, wParam, lParam)
else//проверка, какая кнопка нажата
begin
if wParam = VK_Space then
begin
 h:=FindWindow(nil,"Program1"); //здесь название окна
 if h=0 then exit; // если таких окон нет то выход из процедуры
 SendMessage(h,WM_DESTROY,0,0); //приказать окну: СДОХНИ!
end;
CallNextHookEx(MyHookHandle,Code, wParam, lParam)
//вызываю следующую ловушку
end;{if}

end;

procedure SetHook;stdCall;Export;
begin
MyHookHandle := SetWindowsHookEx(WH_Keyboard, @MyCoolHook, hInstance, 0);
//устанавливаю хук
end;

procedure UnHook;stdCall;Export;
begin
UnhookWindowsHookEx(MyHookHandle);//снимаю хук
end;

exports//экспортирую функции
SetHook,
Unhook;

Begin
SetHook;//устанавливаю ловушку
end.



Ругается на WM_DESTROY.

Где можно поискать аналоги WM_DESTROY, BM_CLICK и т.д Применяемые для написания dll.


 
Rouse_ ©   (2011-03-17 20:34) [1]

Не читайте книжки Фленова, тогда вас не озарит откровение что wParam имеет тип word.
Этот код работать не будет.
Ну а во вторых uses Messages


 
Алексей Гость   (2011-03-17 20:54) [2]

Ок. Попробуем иначе.


 
Алексей Гость   (2011-03-17 21:39) [3]

Кому интересно реализовал следующим образом.


...
 private
   procedure F1(var Message:TMessage);message WM_HOTKEY;
...
const
 VK_ESCAPE = $1B;

implementation
...
procedure TForm1.F1(var Message:TMessage);
begin
 Form1.Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 RegisterHotKey(Handle, 0, 0, VK_ESCAPE);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 UnRegisterHotKey(Handle,0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Visible := False;
end;
...
end.



 
Leonid Troyanovsky ©   (2011-03-17 22:43) [4]


> Алексей Гость   (17.03.11 21:39) [3]

> Кому интересно реализовал следующим образом.

Интересна трансформация Space -> Esc.
Умиляет скурпулезность: VK_ESCAPE = $1B.

Впрочем, бодрит сам замысел объявления подобных гор-клавишь.

За Form1. - пожизненный эцих с гвоздями.
Как, впрочем, и за inherited.

Ну, а тема WM_DESTROY, BM_CLICK и т.д Применяемые для -
осталась нераскрытой.

--
Regards, LVT.


 
Сергей М. ©   (2011-03-18 09:49) [5]

> dll, его суть - перехватить нажатие клавиши Space

dll для этого нафих не нужна.
Хук WH_LL_KEYBOARD расчудесно отслеживает нажатия клавиш и при этом не требует чтобы его поселили жить именно в dll.


 
Cobalt ©   (2011-03-18 12:31) [6]

Кстати, я правильно понимаю, что не вызов CallNextHookEx(MyHookHandle,Code, wParam, lParam) пошлет пламенный привет только тем прогам, которые поставили ловушки до запущенной программы?


 
Cobalt ©   (2011-03-18 12:32) [7]

т.е. "которые поставили ловушки после запущенной программы?"



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

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

Наверх





Память: 0.46 MB
Время: 0.004 c
15-1300117961
Сергей К.
2011-03-14 18:52
2011.06.26
Bob Marley - no woman, no cry


15-1299187799
Юрий
2011-03-04 00:29
2011.06.26
С днем рождения ! 4 марта 2011 пятница


2-1300637668
istok
2011-03-20 19:14
2011.06.26
enumerated types...


15-1296165080
Baks
2011-01-28 00:51
2011.06.26
Процедура FillChar и динамические массивы


15-1299302188
И. Павел
2011-03-05 08:16
2011.06.26
С 8 марта!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский