Главная страница
    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.004 c
1-1829
Xai
2002-12-14 11:50
2003.01.02
Сохранение данных


14-1861
Silentor
2002-12-10 21:01
2003.01.02
Где хэлп в Fundamental Sockets 3?


14-1879
Anatoly Podgoretsky
2002-12-13 07:17
2003.01.02
Именинники 13 декабря


14-1903
zzet
2002-12-14 21:13
2003.01.02
моус поломался..


1-1775
delta
2002-12-20 10:00
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский