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

Вниз

Hook & Delphi7   Найти похожие ветки 

 
StAL   (2002-11-06 20:24) [0]

Если перекомпилировать на D7 ДЛЛ с хуком, хоть пример из статьи "Аспекты реализации хуков", все после его запуска подвисает, и то иногда.
В чем проблема?


 
Набережных С.   (2002-11-06 23:14) [1]

В генетике.


 
StAL   (2002-11-07 18:41) [2]

В правилах форума, насколько мне известно, запрещено наносить личные оскорбления.


 
Набережных С.   (2002-11-07 18:57) [3]

StAL © (07.11.02 18:41)
Любопытно, в чем Вы усматриваете личное оскорбление?


 
StAL   (2002-11-07 21:42) [4]

>> В генетике.
Если я не так понял, извините.
С ув. Алексей


 
Набережных С.   (2002-11-07 22:58) [5]

>StAL © (07.11.02 21:42)
На мой взгляд, оскорбительна формулировка вопроса. Автор не счел нужным привести какую-либо информацию - хотя бы для того, чтобы убедится, что он правильно использует указанные примеры, а в подавляющем большинстве случаев причина именно в этом. Но, видимо, автор уверен в собственной непогрешимости, виноваты же другие - авторы примеров, Borland, Гейтс... Ну а в условиях недостатка информации остается только строить предположения, и, на мой взгляд, мое ничем не хуже любого другого.


 
StAL   (2002-11-08 09:57) [6]

Хорошо, вот библиотека:

library DLL;

uses
Windows, Messages;

const
MapID = "Global Hook Demo";

type
PData = ^TData;
TData = record
AppWnd: HWND;
OldHook: HHOOK
end;

var
HMap: THandle = 0;
Data: PData = nil;

procedure DLLEntryPoint(dwReason: DWORD); stdcall;
begin
case dwReason of
DLL_PROCESS_ATTACH:
begin
HMap := CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, SizeOf(TData), MapID);
Data := MapViewOfFile(HMap, FILE_MAP_ALL_ACCESS, 0, 0, SizeOf(TData))
end;
DLL_PROCESS_DETACH:
begin
UnMapViewOfFile(Data);
CloseHandle(HMap)
end
end
end;

function ShellHook(Code: Integer; ParamW: WPARAM; ParamL: LPARAM): LRESULT; stdcall;
begin
if Code in [HSHELL_WINDOWCREATED, HSHELL_WINDOWDESTROYED, HSHELL_REDRAW] then
SendMessage(Data^.AppWnd, WM_USER, ParamW, Code);
Result := CallNextHookEx(Data^.OldHook, Code, ParamW, ParamL)
end;

function SetShellHook(Wnd: HWND): BOOL; stdcall;
begin
if Data <> nil then
begin
Data^.AppWnd := Wnd;
Data^.OldHook := SetWindowsHookEx(WH_SHELL, @ShellHook, HInstance, 0);
Result := Data^.OldHook <> 0
end
else Result := False
end;

function RemoveShellHook: BOOL; stdcall;
begin
Result := UnhookWindowsHookEx(Data^.OldHook)
end;

exports
SetShellHook,
RemoveShellHook;

begin
DLLProc := @DLLEntryPoint;
DLLEntryPoint(DLL_PROCESS_ATTACH)
end.


Если компилировать ее на Delphi6, то все нормально, а если на Delphi7, то все подвисает.
Помогите пожалуйста.
С ув. Алексей.


 
Набережных С.   (2002-11-08 10:33) [7]

Сравни описание импортированных функций в D6 и в D7. Но это так, на всякий случай. Попробуй заменить SendMessage на PostMessage, или вообще ее закомментировать. Если при этом зависание исчезнет, то проблема в приложении, которому ты отправляешь сообщение. И замени WM_USER на что-нибудь понадежней, типа WM_USER + 471, а еще лучше используй RegisterWindowMessage.


 
StAL   (2002-11-17 14:15) [8]

Попробую, спасибо.
Но по-моему тут с MMF что-то не то.
Это ИМХО.
Спасибо.
С ув. Алексей



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

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

Наверх





Память: 0.46 MB
Время: 0.003 c
1-1804
d_oleg
2002-12-20 13:31
2003.01.02
название языка текущей раскладки клавиатуры


14-1884
Геннадий
2002-12-13 21:17
2003.01.02
Подскажите с Web-сервером


3-1755
LynxSS
2002-12-11 16:39
2003.01.02
Можно ли SQL-м соединить такие 2 таблицы.


3-1762
Николай В.
2002-12-11 11:34
2003.01.02
MidasLib


14-1890
NaPoleOn_IV
2002-12-13 21:49
2003.01.02
Все говорят, но я не могу найти





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