Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 1 |

 

  Вопрос: Адрес функции... Добавлено: 01.04.04 17:02  

Автор вопроса:  Macronix | Web-сайт: http://x250.net/ | ICQ: 170650558 

Какой у PowerBasica эквивалент AddressOf?

(Мне нужно в функцию SetWindowHookEx передать адрес.)

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 01.04.04 17:10

CodePtr()

Ответить

Номер ответа: 2
Автор ответа:
 Macronix



ICQ: 170650558 

Вопросов: 12
Ответов: 46
 Web-сайт: http://x250.net/
 Профиль | | #2
Добавлено: 02.04.04 14:03

Тогда подскажите, где здесь ошибка?

Почему хук не стартует (возвращает 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

Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 02.04.04 20:08

Я те намылю дллку, правдо я ее не хакончил... уткнулся в проблемму, решить все никак не могу...

Ответить

Номер ответа: 4
Автор ответа:
 Macronix



ICQ: 170650558 

Вопросов: 12
Ответов: 46
 Web-сайт: http://x250.net/
 Профиль | | #4
Добавлено: 05.04.04 11:39

На VB подобный код я реализовал легко и подозреваю, я нашел где ошибка.

надо для SetWindowsHookEx указать hInstance.

Но как его узнать из PB? (На VB это было как: App.hInstance)

Ответить

Номер ответа: 5
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 05.04.04 12:11

Я же те засылал... Самое простое - это при загрузке дллки в глоб. переменную вносить hInstance и все...

Ответить

Номер ответа: 6
Автор ответа:
 Macronix



ICQ: 170650558 

Вопросов: 12
Ответов: 46
 Web-сайт: http://x250.net/
 Профиль | | #6
Добавлено: 05.04.04 13:37

Я вообще не собираюсь юзать VB. Я хочу собрать сам DLL-ку на PB

Ответить

Номер ответа: 7
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #7 Добавлено: 05.04.04 15:45

' первый параметр LIBMAIN вроде как и есть твой аналог App.hInstance.
а FUNCTION LIBMAIN должна быть в любой уважающей себя DLL :)

FUNCTION LIBMAIN (BYVAL hInstance   AS LONG, _
                  BYVAL fwdReason   AS LONG, _
                  BYVAL lpvReserved AS LONG) AS LONG


END FUNCTION

А если надо получить hInstance не в DLL, а в программе, то используй WINMAIN вместо PBMAIN
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-сайт: http://x250.net/
 Профиль | | #8
Добавлено: 05.04.04 17:35

Спасибо за инфу, будем разбиратся...

Ответить

Номер ответа: 9
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #9
Добавлено: 05.04.04 20:40

Попробуй так:

App_hInstance=GetModuleHandle(ByVal %NULL)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам