Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2010, 17:37   #1
-Flasher-
Пользователь
 
Регистрация: 05.01.2010
Сообщений: 26
Сообщение Передача параметров в DLL

Здраствуйте, такая проблема при передачи параметров в функцию DLL, параметр отображается только для окна вызвовшего функцию.

Программа
Код:
procedure SetHook(sFileName:PChar);stdcall; external 'hook_dll.dll';
procedure UnHook;stdcall; external 'hook_dll.dll';

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
 SetHook(PChar('C:\WINDOWS\system32\notepad.exe'));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 UnHook;
end;
hook_dll.dll
Код:
var
 HookHandle:hHook;
 ProgName:String;

function HookProc(nCode:Integer; wParam:Word; lParam:Longint):Longint;stdcall;
var
 ModuleFileName:array[0..255] of Char;
begin
 GetModuleFileName(0,ModuleFileName,SizeOf(ModuleFileName));
 MessageBox(0,ModuleFileName,PChar(ProgName),MB_OK);

 Result:=CallNextHookEx(HookHandle,nCode,wParam,lParam);
end;

procedure SetHook(sFileName:String);stdcall;
begin
 if HookHandle=0 then
  begin
   ProgName:=sFileName;
   HookHandle:=SetWindowsHookEx(WH_KEYBOARD,@HookProc,HInstance,0);
  end;
end;

procedure UnHook;stdcall;
begin
 if HookHandle<>0 then
  begin
   UnhookWindowsHookEx(HookHandle);
   HookHandle:=0;
  end;
end;

exports SetHook, UnHook;

begin
 HookHandle:=0;
end.
-Flasher- вне форума Ответить с цитированием
Старый 04.06.2010, 17:50   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы про ProgName?
это нормально.

вот случай, ну прям один в один
http://programmersforum.ru/showthread.php?t=99495

и кстати, насчет строк string говорят же, не стоит использовать их для ДЛЛ.
юзайте PChar
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.06.2010, 18:05   #3
-Flasher-
Пользователь
 
Регистрация: 05.01.2010
Сообщений: 26
По умолчанию

Да, про ProgName.
Спасибо, ошибку понял. Про указатели учту.
Не подскажете хорошую книгу или статью про работу с памятью в Delphi?
-Flasher- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача параметров в createprocess Consol Win Api 11 12.05.2010 13:49
Передача параметров aesoem Общие вопросы Delphi 8 15.07.2008 21:51
CDialog передача параметров! mahsus Общие вопросы .NET 4 09.03.2008 17:40
Передача параметров Gudzon Общие вопросы Delphi 12 08.02.2007 08:19
передача объектов как параметров функций в Dll Umen Общие вопросы Delphi 9 12.11.2006 19:31