2012-10-09 52 views
1
Declare Function MapPhysToLin Lib "WinIo32.dll" (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As Long 
Declare Function UnmapPhysicalMemory Lib "WinIo32.dll" (ByVal PhysMemHandle, ByVal LinAddr) As Boolean 
Declare Function GetPhysLong Lib "WinIo32.dll" (ByVal PhysAddr As Long, ByRef PhysVal As Long) As Boolean 
Declare Function SetPhysLong Lib "WinIo32.dll" (ByVal PhysAddr As Long, ByVal PhysVal As Long) As Boolean 
Declare Function GetPortVal Lib "WinIo32.dll" (ByVal PortAddr As Integer, ByRef PortVal As Byte, ByVal bSize As Byte) As Boolean 
Declare Function SetPortVal Lib "WinIo32.dll" (ByVal PortAddr As Integer, ByVal PortVal As Byte, ByVal bSize As Byte) As Boolean 
Declare Function InitializeWinIo Lib "WinIo32.dll"() As Boolean 
Declare Function ShutdownWinIo Lib "WinIo32.dll"() As Boolean 
Declare Function InstallWinIoDriver Lib "WinIo32.dll" (ByVal DriverPath As String, ByVal Mode As Integer) As Boolean 
Declare Function RemoveWinIoDriver Lib "WinIo32.dll"() As Boolean 

InitializeWinIoInstallWinIoDriver全部總是返回False,無論何時在Win XP或Win 7(以管理員身份運行)。如何加載WinIo 3.0?

但winio 2.0在初始化/安裝時運行正常。

does anyboby也遇到了這個問題?謝謝!

回答

0

下面是WINIO示例代碼,可遇到錯誤

在形式上,增加檢查1,文本1,COMBO1,定時器1

Private Sub Check1_Click() 
    Text1.Text = 100 
    If Check1.Value = 1 Then 
     Timer1.Interval = (Text1.Text) 
     Timer1.Enabled = True 
    Else 
     Timer1.Enabled = False 
    End If 
End Sub 

Private Sub Form_Load() 
    Combo1.AddItem "0" 
    Combo1.AddItem "1" 
    Combo1.AddItem "2" 
    Combo1.AddItem "3" 
    Combo1.AddItem "4" 
    Combo1.AddItem "5" 
    Combo1.AddItem "6" 
    Combo1.AddItem "7" 
    Combo1.AddItem "8" 
    Combo1.AddItem "9" 
    Combo1.AddItem "F1" 
    Combo1.AddItem "F2" 
    Combo1.AddItem "F3" 
    Combo1.AddItem "F4" 
    Combo1.AddItem "F5" 
    Combo1.AddItem "F6" 
    Combo1.AddItem "F7" 
    Combo1.AddItem "F8" 
    Combo1.AddItem "F9" 
    Combo1.AddItem "F10" 

    If InitializeWinIo = False Then 
     MsgBox "Driver Loading Failed" 
     Unload Me 
    End If 
End Sub 

Private Sub Form_Unload(Cancel As Integer) 
    ShutdownWinIo                
End Sub 

Private Sub Timer1_Timer() 
    If Check1.Value = 1 Then 
     Set Button = Form1.Combo1 
     Mafan 
    End If 
End Sub 

模塊:

Public Declare Function MapPhysToLin Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As Long 
Public Declare Function UnmapPhysicalMemory Lib "WinIo.dll" (ByVal PhysMemHandle, ByVal LinAddr) As Boolean 
Public Declare Function GetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByRef PhysVal As Long) As Boolean 
Public Declare Function SetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysVal As Long) As Boolean 
Public Declare Function GetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByRef PortVal As Long, ByVal bSize As Byte) As Boolean 
Public Declare Function SetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByVal PortVal As Long, ByVal bSize As Byte) As Boolean 
Public Declare Function InitializeWinIo Lib "WinIo.dll"() As Boolean 
Public Declare Function ShutdownWinIo Lib "WinIo.dll"() As Boolean 
Public Declare Function InstallWinIoDriver Lib "WinIo.dll" (ByVal DriverPath As String, ByVal Mode As Integer) As Boolean 
Public Declare Function RemoveWinIoDriver Lib "WinIo.dll"() As Boolean 
Public Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long 
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Public Const KBC_KEY_CMD = &H64 
Public Const KBC_KEY_DATA = &H60 
Public Const VK_LBUTTON = &H1 
Public Const VK_RBUTTON = &H2 
Public Const VK_CANCEL = &H3 
Public Const VK_MBUTTON = &H4 
Public Const VK_BACK = &H8 
Public Const VK_TAB = &H9 
Public Const VK_CLEAR = &HC 
Public Const VK_RETURN = &HD 
Public Const VK_SHIFT = &H10 
Public Const VK_CONTROL = &H11 
Public Const VK_MENU = &H12 
Public Const VK_PAUSE = &H13 
Public Const VK_CAPITAL = &H14 
Public Const VK_ESCAPE = &H1B 
Public Const VK_SPACE = &H20 
Public Const VK_PRIOR = &H21 
Public Const VK_NEXT = &H22 
Public Const VK_END = &H23 
Public Const VK_HOME = &H24 
Public Const VK_LEFT = &H25 
Public Const VK_UP = &H26 
Public Const VK_RIGHT = &H27 
Public Const VK_DOWN = &H28 
Public Const VK_Select = &H29 
Public Const VK_PRINT = &H2A 
Public Const VK_EXECUTE = &H2B 
Public Const VK_SNAPSHOT = &H2C 
Public Const VK_Insert = &H2D 
Public Const VK_Delete = &H2E 
Public Const VK_HELP = &H2F 
Public Const VK_0 = &H30 
Public Const VK_1 = &H31 
Public Const VK_2 = &H32 
Public Const VK_3 = &H33 
Public Const VK_4 = &H34 
Public Const VK_5 = &H35 
Public Const VK_6 = &H36 
Public Const VK_7 = &H37 
Public Const VK_8 = &H38 
Public Const VK_9 = &H39 
Public Const VK_A = &H41 
Public Const VK_B = &H42 
Public Const VK_C = &H43 
Public Const VK_D = &H44 
Public Const VK_E = &H45 
Public Const VK_F = &H46 
Public Const VK_G = &H47 
Public Const VK_H = &H48 
Public Const VK_I = &H49 
Public Const VK_J = &H4A 
Public Const VK_K = &H4B 
Public Const VK_L = &H4C 
Public Const VK_M = &H4D 
Public Const VK_N = &H4E 
Public Const VK_O = &H4F 
Public Const VK_P = &H50 
Public Const VK_Q = &H51 
Public Const VK_R = &H52 
Public Const VK_S = &H53 
Public Const VK_T = &H54 
Public Const VK_U = &H55 
Public Const VK_V = &H56 
Public Const VK_W = &H57 
Public Const VK_X = &H58 
Public Const VK_Y = &H59 
Public Const VK_Z = &H5A 
Public Const VK_STARTKEY = &H5B 
Public Const VK_CONTEXTKEY = &H5D 
Public Const VK_NUMPAD0 = &H60 
Public Const VK_NUMPAD1 = &H61 
Public Const VK_NUMPAD2 = &H62 
Public Const VK_NUMPAD3 = &H63 
Public Const VK_NUMPAD4 = &H64 
Public Const VK_NUMPAD5 = &H65 
Public Const VK_NUMPAD6 = &H66 
Public Const VK_NUMPAD7 = &H67 
Public Const VK_NUMPAD8 = &H68 
Public Const VK_NUMPAD9 = &H69 
Public Const VK_MULTIPLY = &H6A 
Public Const VK_ADD = &H6B 
Public Const VK_SEPARATOR = &H6C 
Public Const VK_SUBTRACT = &H6D 
Public Const VK_DECIMAL = &H6E 
Public Const VK_DIVIDE = &H6F 
Public Const VK_F1 = &H70 
Public Const VK_F2 = &H71 
Public Const VK_F3 = &H72 
Public Const VK_F4 = &H73 
Public Const VK_F5 = &H74 
Public Const VK_F6 = &H75 
Public Const VK_F7 = &H76 
Public Const VK_F8 = &H77 
Public Const VK_F9 = &H78 
Public Const VK_F10 = &H79 
Public Const VK_F11 = &H7A 
Public Const VK_F12 = &H7B 
Public Const VK_F13 = &H7C 
Public Const VK_F14 = &H7D 
Public Const VK_F15 = &H7E 
Public Const VK_F16 = &H7F 
Public Const VK_F17 = &H80 
Public Const VK_F18 = &H81 
Public Const VK_F19 = &H82 
Public Const VK_F20 = &H83 
Public Const VK_F21 = &H84 
Public Const VK_F22 = &H85 
Public Const VK_F23 = &H86 
Public Const VK_F24 = &H87 
Public Const VK_NUMLOCK = &H90 
Public Const VK_OEM_SCROLL = &H91 
Public Const VK_OEM_1 = &HBA 
Public Const VK_OEM_PLUS = &HBB 
Public Const VK_OEM_COMMA = &HBC 
Public Const VK_OEM_MINUS = &HBD 
Public Const VK_OEM_PERIOD = &HBE 
Public Const VK_OEM_2 = &HBF 
Public Const VK_OEM_3 = &HC0 
Public Const VK_OEM_4 = &HDB 
Public Const VK_OEM_5 = &HDC 
Public Const VK_OEM_6 = &HDD 
Public Const VK_OEM_7 = &HDE 
Public Const VK_OEM_8 = &HDF 
Public Const VK_ICO_F17 = &HE0 
Public Const VK_ICO_F18 = &HE1 
Public Const VK_OEM102 = &HE2 
Public Const VK_ICO_HELP = &HE3 
Public Const VK_ICO_00 = &HE4 
Public Const VK_ICO_CLEAR = &HE6 
Public Const VK_OEM_RESET = &HE9 
Public Const VK_OEM_JUMP = &HEA 
Public Const VK_OEM_PA1 = &HEB 
Public Const VK_OEM_PA2 = &HEC 
Public Const VK_OEM_PA3 = &HED 
Public Const VK_OEM_WSCTRL = &HEE 
Public Const VK_OEM_CUSEL = &HEF 
Public Const VK_OEM_ATTN = &HF0 
Public Const VK_OEM_FINNISH = &HF1 
Public Const VK_OEM_COPY = &HF2 
Public Const VK_OEM_AUTO = &HF3 
Public Const VK_OEM_ENLW = &HF4 
Public Const VK_OEM_BACKTAB = &HF5 
Public Const VK_ATTN = &HF6 
Public Const VK_CRSEL = &HF7 
Public Const VK_EXSEL = &HF8 
Public Const VK_EREOF = &HF9 
Public Const VK_PLAY = &HFA 
Public Const VK_ZOOM = &HFB 
Public Const VK_NONAME = &HFC 
Public Const VK_PA1 = &HFD 
Public Const VK_OEM_CLEAR = &HFE 
Public Button As ComboBox 

Public Sub KBCWait4IBE() 
    Dim dwVal As Long 
    Do 
     GetPortVal &H64, dwVal, 1 
    Loop While (dwVal And &H2) 
End Sub 

Public Sub MyKeyDown(ByVal vKeyCoad As Long) 
    KBCWait4IBE 
    SetPortVal KBC_KEY_CMD, &HD2, 1 
    KBCWait4IBE 
    SetPortVal KBC_KEY_DATA, MapVirtualKey(vKeyCoad, 0), 1 
    Sleep 100 
    KBCWait4IBE 
    SetPortVal KBC_KEY_CMD, &HD2, 1 
    KBCWait4IBE 
    SetPortVal KBC_KEY_DATA, (MapVirtualKey(vKeyCoad, 0) Or &H80), 1 
End Sub 

Public Sub Mafan() 
    Select Case Button.Text 
    Case "F1" 
     MyKeyDown VK_F1 
    Case "F2" 
     MyKeyDown VK_F2 
    Case "F3" 
     MyKeyDown VK_F3 
    Case "F4" 
     MyKeyDown VK_F4 
    Case "F5" 
     MyKeyDown VK_F5 
    Case "F6" 
     MyKeyDown VK_F6 
    Case "F7" 
     MyKeyDown VK_F7 
    Case "F8" 
     MyKeyDown VK_F8 
    Case "F9" 
     MyKeyDown VK_F9 
    Case "F10" 
     MyKeyDown VK_F10 
    Case "0" 
     MyKeyDown VK_0 
    Case "1" 
     MyKeyDown VK_1 
    Case "2" 
     MyKeyDown VK_2 
    Case "3" 
     MyKeyDown VK_3 
    Case "4" 
     MyKeyDown VK_4 
    Case "5" 
     MyKeyDown VK_5 
    Case "6" 
     MyKeyDown VK_6 
    Case "7" 
     MyKeyDown VK_7 
    Case "8" 
     MyKeyDown VK_7 
    Case "9" 
     MyKeyDown VK_9 
    End Select 
End Sub 
+0

感謝您的回覆,實際上你的方法適用於WinIo 2.0,但我的請求想知道如何加載WinIo 3.0 ... – codewg