Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

опять dll

519
07 мая 2003 года
VaGon
134 / / 26.03.2003
есть dll`ка
там такой код
extern "C" __declspec(dllexport) void Gethwnd(HWND);

....
//---------------------------------------------------------------------------
void Gethwnd (HWND hParent)
{
Parent=hParent;
}

....
есть прога с таким кодом
proga.h
void (__stdcall *phwnd)(HWND);
proga.cpp
hLib=LoadLibrary("Hook.dll");
if(hLib)
{
(void*)phwnd=GetProcAddress(hLib,"Gethwnd");// ВОТ ТУТ ПРОБЛЕМА. phwnd равно NULL кто нить может сказать почему?
if(phwnd!=NULL)
((void (__stdcall *)(HWND))phwnd)(Application->Handle);
//Gethwnd(Application->Handle);
(void*)pHook=GetProcAddress(hLib,"KeyboardHook");
hHook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)(pHook),hLib,0);// Ставим ловушки
}
358
07 мая 2003 года
moonmike
423 / / 18.10.2002
(void*)phwnd=GetProcAddress(hLib,"[COLOR=red]_Gethwnd[/COLOR]");// ВОТ ТУТ Надо так как выделено красным
3
07 мая 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by moonmike
(void*)phwnd=GetProcAddress(hLib,"[COLOR=red]_Gethwnd[/COLOR]");// ВОТ ТУТ Надо так как выделено красным



Это такая "фича" BCB ?
Дело в том, что в VC все нормально без подчеркивания.

Кстати, а что за запись такая?
(void*)phwnd = .....

Не припоминаю, что бы такое было в стандарте...
Может это и есть причина ошибки. Дело в том, что компилятор может понять это как

void* phwnd = .....

и получиться, что создана переменная типа void* в локальном пространстве имен для

if(hLib)
{
..........
}

Я бы рекомендовал делать так:

typedef void (__stdcall *t_phwnd)(HWND);
t_phwnd phwnd;

hLib=LoadLibrary("Hook.dll");
if(hLib)
{
phwnd = (t_phwnd)GetProcAddress(hLib,"Gethwnd");
........................

519
08 мая 2003 года
VaGon
134 / / 26.03.2003
Цитата:
Originally posted by Green


Это такая "фича" BCB ?
Дело в том, что в VC все нормально без подчеркивания.


видимо фича но без подчепкивания не получается...

теперь все возвращается , но после установки хука при выходе из процедуры где хук ставился вываливается ошибка EAccessViolation типа что то не там читаю, но после этого прога запускается и хук работает :-/

и еще народ поможите пытаюсь что бы прога не реагировала на ALT+F4 и не позволяла винде реагировать CTRL+ESC, на нажатие хук реагирует но приэтом и окно закрывается и менюшка открывается, помогите срочно!!!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог