none
vb6 的 App.hInstance 該怎麼轉成vb2005 RRS feed

  • 一般討論

  • 我猜app大概是application 可是沒有

    我也有用vb6升級程式碼也找不到

    我想問App.hInstance 變成2005是什麼

    還有SetWindowsHookEx(WH_KEYBOARD, AddressOf _
                        MyKBHFunc, App.hInstance, 0)

    api   怎麼知道他後面的函數代表什麼

    要去哪裡查?

    -----------------------------
    App.hInstance 可以代替城ME.handle

    但是 AddressOf  MyKBHFunc  就出錯了

    原始碼  這是 http://www.hosp.ncku.edu.tw/~cww/html/keyhookkeyboard.html

    Code Snippet

    Option Explicit

    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 UnhookWindowsHookEx Lib "user32" _
        (ByVal hHook As Long) As Long
    Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
       ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long

    Public hnexthookproc As Long
    Public Const HC_ACTION = 0
    Public Const WH_KEYBOARD = 2

    Public Sub UnHookKBD()
    If hnexthookproc <> 0 Then
       UnhookWindowsHookEx hnexthookproc
       hnexthookproc = 0
    End If
    End Sub
    Public Function EnableKBDHook()
    If hnexthookproc <> 0 Then
       Exit Function
    End If
    hnexthookproc = SetWindowsHookEx(WH_KEYBOARD, AddressOf _
                MyKBHFunc, me.handle, 0)
    If hnexthookproc <> 0 Then
       EnableKBDHook = hnexthookproc
    End If
    End Function
    Public Function MyKBHFunc(ByVal iCode As Long, _
        ByVal wParam As Long, ByVal lParam As Long) As Long
      '這三個參數是固定的,不能動,而MyKBHFunc這個名稱只要和
      'SetWindowsHookex()中 AddressOf後的名稱一樣便可,不一定叫什麼
      'wParam 是傳入按了哪個key的virtual-key code

      '如果您將以下的兩行unmark則所有鍵盤的輸入皆沒有作用
      'MyKBHFunc = 1  '吃掉訊息
      'Exit Function

      MyKBHFunc = 0 '訊息要處理
      If iCode < 0 Then
        MyKBHFunc = CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
        Exit Function
      End If
      If wParam = vbKeySnapshot Then  '偵測 有沒有按到PrintScreen鍵
        MyKBHFunc = 1 '在這個Hook便吃掉這個訊息
        Debug.Print "haha"
      Else
        Call CallNextHookEx(hnexthookproc, iCode, wParam, lParam)
      End If
    End Function


    會出現 AddressOf 運算是不能轉換為long  因為long 不是委派成員
    要把所有的long 改成 integer
    然後 any 該城 string 嗎

    該怎麼改才能在vb2005中使用



    2007年9月4日 下午 06:42