Страница: 1 |
Какой у PowerBasica эквивалент AddressOf? (Мне нужно в функцию SetWindowHookEx передать адрес.)
CodePtr() Тогда подскажите, где здесь ошибка? Почему хук не стартует (возвращает 0) #DIM ALL #COMPILE EXE DECLARE FUNCTION GetAsyncKeyState LIB "user32" ALIAS "GetAsyncKeyState" (BYVAL vKey AS LONG) AS INTEGER DECLARE FUNCTION SetWindowsHookEx LIB "user32" ALIAS "SetWindowsHookExA" (BYVAL idHook AS LONG, BYVAL lpfn AS LONG, BYVAL hmod AS LONG, BYVAL dwThreadId AS LONG) AS LONG DECLARE FUNCTION CallNextHookEx LIB "user32" ALIAS "CallNextHookEx" (BYVAL hHook AS LONG, BYVAL ncode AS LONG, BYVAL wParam AS LONG, lParam AS ANY) AS LONG DECLARE FUNCTION UnhookWindowsHookEx LIB "user32" ALIAS "UnhookWindowsHookEx" (BYVAL hHook AS LONG) AS LONG GLOBAL hHook AS LONG GLOBAL Abort AS INTEGER FUNCTION HookProcA (BYVAL idHook AS LONG, BYVAL wParam AS LONG, BYVAL lParam AS LONG) AS LONG IF idHook >= 0 THEN '... END IF HookProcA = CallNextHookEx(hHook, idHook, wParam, BYVAL lParam) END FUNCTION FUNCTION PBMAIN() DIM address AS LONG address = CODEPTR(HookProcA) hHook = SetWindowsHookEx(0, address, 0, 0) DO UNTIL Abort = 1 SLEEP (25) DIALOG DOEVENTS LOOP CALL UnhookWindowsHookEx (hHook) END FUNCTION Я те намылю дллку, правдо я ее не хакончил... уткнулся в проблемму, решить все никак не могу... На VB подобный код я реализовал легко и подозреваю, я нашел где ошибка. надо для SetWindowsHookEx указать hInstance. Но как его узнать из PB? (На VB это было как: App.hInstance) Я же те засылал... Самое простое - это при загрузке дллки в глоб. переменную вносить hInstance и все... Я вообще не собираюсь юзать VB. Я хочу собрать сам DLL-ку на PB ' первый параметр LIBMAIN вроде как и есть твой аналог App.hInstance. FUNCTION LIBMAIN (BYVAL hInstance AS LONG, _ А если надо получить hInstance не в DLL, а в программе, то используй WINMAIN вместо PBMAIN Спасибо за инфу, будем разбиратся... Попробуй так: App_hInstance=GetModuleHandle(ByVal %NULL) Страница: 1 |
Вопрос: Адрес функции...
Добавлено: 01.04.04 17:02
Автор вопроса: Macronix | Web-сайт:
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 01.04.04 17:10
Номер ответа: 2
Автор ответа:
Macronix
ICQ: 170650558
Вопросов: 12
Ответов: 46
Web-сайт:
Профиль | | #2
Добавлено: 02.04.04 14:03
Номер ответа: 3
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #3
Добавлено: 02.04.04 20:08
Номер ответа: 4
Автор ответа:
Macronix
ICQ: 170650558
Вопросов: 12
Ответов: 46
Web-сайт:
Профиль | | #4
Добавлено: 05.04.04 11:39
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 05.04.04 12:11
Номер ответа: 6
Автор ответа:
Macronix
ICQ: 170650558
Вопросов: 12
Ответов: 46
Web-сайт:
Профиль | | #6
Добавлено: 05.04.04 13:37
Номер ответа: 7
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #7
Добавлено: 05.04.04 15:45
а FUNCTION LIBMAIN должна быть в любой уважающей себя DLL
BYVAL fwdReason AS LONG, _
BYVAL lpvReserved AS LONG) AS LONG
END FUNCTION
FUNCTION WINMAIN (BYVAL hInstance AS LONG, _
BYVAL hPrevInstance AS LONG, _
lpCmdLine AS ASCIIZ PTR, _
BYVAL iCmdShow AS LONG) AS LONG
Номер ответа: 8
Автор ответа:
Macronix
ICQ: 170650558
Вопросов: 12
Ответов: 46
Web-сайт:
Профиль | | #8
Добавлено: 05.04.04 17:35
Номер ответа: 9
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #9
Добавлено: 05.04.04 20:40