⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1753.html

📁 VB技巧问答10000例,是一个教程
💻 HTML
字号:
<html>  <head>    <title>Re: App.Instance 传回 0</title>  </head>  <BODY BACKGROUND="" BGCOLOR="white" TEXT="black" LINK="red" VLINK="#808080" ALINK="">    <center>      <h1>Re: App.Instance 传回 0</h1>    </center><HR><p>Posted by <a href="mailto:cww5@mail.ncku.edu.tw">cww</a> on January 19, 1998 at 22:59:07:<p>In Reply to: <a href="1746.html"><b>App.Instance 传回 0</b></a> posted by 小吴 on January 19, 1998 at 17:31:54:<p>: 解决方式就是主程式要传这个参数进去。你再试看看。<p>我依您的建议修改了一下EnableKBDHook,改传参数进入,  <br>而在另一个启动KBD hook程式的专案中用以下方式呼叫<p>   EnableKBDHook(App.HInstance) <p>  而后将专案制成.exe档<br>结果,在这.exe档中按keyboard, 一切ok, 但切至其他window中<br>按keyboard, 则该程式出现无法预期的错误,而结束掉,但启动hook的.exe之 process 仍活得很好,直到我unhook keyboard后,其他的程式按keyboard时,才不会有错<br>以下是新版程式<br>><br>Private Declare Function SetWindowsHookEx Lib "user32" Alias _ "SetWindowsHookExA" (ByVal idHook As Long,<br>ByVal lpfn As Long, ByVal _ hmod As Any, ByVal dwThreadId As Long) As Long<br>Private Declare Function UnhookWindowsHookEx Lib "user32" _ <br>(ByVal hHook As Long) As Long<br>Const WH_KEYBOARD = 2<p>Public Sub UnHookKBD()<br>If hnexthookproc 0 Then<br>  UnhookWindowsHookEx hnexthookproc<br>  hnexthookproc = 0<br>End If<br>End Sub<p>Public Function EnableKBDHook(Byval hAppHandle as long)<br>'___________________________________^^^^^^^^^^<br>'___________________________________改成由外部传入 <br>'只是纳闷,该值是指向行程中被对映进来的.dll之位址,我觉得<br>'我传App.HInstance,似乎不太对,但如何做实在不知<br>If hnexthookproc =0 Then<br>   Exit Function<br>End If<br>hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf _         KeyboardHookHandler, hAppHandle, 0)<p>If hnexthookproc = 0 Then<br>  EnableKBDHook = hnexthookproc<br>End If<br>End Function<p><br>以下是 hook.bas 为keyboard hook procedure, 与KBhook.cls同一专专案<p>Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As<br>Long, lParam As Any) As Long<br>Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer<br>Const VK_CONTROL = &H11<br>Const KeyPressMask = &H80000000<br>Public hnexthookproc As Long<p>Public Function KeyboardHookHandler(ByVal iCode As Long, _<br>ByVal wParam As Long, ByVal lParam As Long) As Long<p>KeyboardHookHandler = 0<br>If iCode < 0 Then<br>  KeyboardHookHandler = CallNextHookEx(hnexthookproc, iCode, _    wParam, lParam)<br>Exit Function<br>End If<br>'侦测 Ctrl + B 组合键<br>If (lParam And KeyPressMask) = 0 Then<br>  If (GetKeyState(VK_CONTROL) < 0) And (Chr(wParam) = "B") Then<br>     KeyboardHookHandler = 1<br>     Shell "c:\tools\spe3\pe2.exe", vbMaximizedFocus<br>  End If<br>End If<br>End Function<br><br><p><a name="followups">Follow Ups:</a><br><ul><!--insert: 1753--></ul><!--end: 1753--><br><HR><p></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -