读书人

C# 调用winio.dll解决办法

发布时间: 2013-03-04 17:22:12 作者: rapoo

C# 调用winio.dll
C# 怎么调用winio.dll?
我在网上看了很多例子
大部分都和下面的差不多


using System;

using System.Collections.Generic;

using System.Text;

using System.Runtime.InteropServices;

namespace lizheAionWG

{

public class WinIo

{

public const int KBC_KEY_CMD = 0x64;

public const int KBC_KEY_DATA = 0x60;

[DllImport("winio.dll")]

public static extern bool InitializeWinIo();

[DllImport("winio.dll")]

public static extern bool GetPortVal(IntPtr wPortAddr, out int pdwPortVal, byte bSize);

[DllImport("winio.dll")]

public static extern bool SetPortVal(uint wPortAddr, IntPtr dwPortVal, byte bSize);

[DllImport("winio.dll")]

public static extern byte MapPhysToLin(byte pbPhysAddr, uint dwPhysSize, IntPtr PhysicalMemoryHandle);

[DllImport("winio.dll")]

public static extern bool UnmapPhysicalMemory(IntPtr PhysicalMemoryHandle, byte pbLinAddr);

[DllImport("winio.dll")]

public static extern bool GetPhysLong(IntPtr pbPhysAddr, byte pdwPhysVal);

[DllImport("winio.dll")]

public static extern bool SetPhysLong(IntPtr pbPhysAddr, byte dwPhysVal);

[DllImport("winio.dll")]

public static extern void ShutdownWinIo();

[DllImport("user32.dll")]

public static extern int MapVirtualKey(uint Ucode, uint uMapType);

public void sendwinio()

{

if (InitializeWinIo())

{

KBCWait4IBE();

}

}

///Wait for Buffer gets empty

private void KBCWait4IBE()

{

int dwVal = 0;

do



{

bool flag = GetPortVal((IntPtr)0x64, out dwVal, 1);

}

while ((dwVal & 0x2) > 0);

}

/// key down

public void MykeyDown(int vKeyCoad)

{

int btScancode = 0;

btScancode = MapVirtualKey((byte)vKeyCoad, 0);

KBCWait4IBE();

SetPortVal(KBC_KEY_CMD, (IntPtr)0xD2, 1);

KBCWait4IBE();

SetPortVal(KBC_KEY_DATA, (IntPtr)0xe2, 1);

KBCWait4IBE();

SetPortVal(KBC_KEY_CMD, (IntPtr)0xD2, 1);

KBCWait4IBE();

SetPortVal(KBC_KEY_DATA, (IntPtr)btScancode, 1);

}

/// Key up

public void MykeyUp(int vKeyCoad)

{

int btScancode = 0;

btScancode = MapVirtualKey((byte)vKeyCoad, 0);

KBCWait4IBE();

SetPortVal(KBC_KEY_CMD, (IntPtr)0xD2, 1);

KBCWait4IBE();

SetPortVal(KBC_KEY_DATA, (IntPtr)0xe0, 1);

KBCWait4IBE();

SetPortVal(KBC_KEY_CMD, (IntPtr)0xD2, 1);

KBCWait4IBE();

SetPortVal(KBC_KEY_DATA, (IntPtr)btScancode, 1);

}

/// Simulate mouse down

public void MyMouseDown(int vKeyCoad)

{

int btScancode = 0;

btScancode = MapVirtualKey((byte)vKeyCoad, 0);



KBCWait4IBE(); // 'wait for buffer gets empty

SetPortVal(KBC_KEY_CMD, (IntPtr)0xD3, 1);// 'send write command

KBCWait4IBE();

SetPortVal(KBC_KEY_DATA, (IntPtr)(btScancode | 0x80), 1);// 'write in io

}

/// Simulate mouse up

public void MyMouseUp(int vKeyCoad)

{

int btScancode = 0;

btScancode = MapVirtualKey((byte)vKeyCoad, 0);

KBCWait4IBE(); // 'wait for buffer gets empty

SetPortVal(KBC_KEY_CMD, (IntPtr)0xD3, 1); //'send write command

KBCWait4IBE();

SetPortVal(KBC_KEY_DATA, (IntPtr)(btScancode | 0x80), 1);// 'write in io

}

//----------------------------------------------

//VK codes

//----------------------------------------------

public enum Key

{

// mouse movements

move = 0x0001,

leftdown = 0x0002,

leftup = 0x0004,

rightdown = 0x0008,

rightup = 0x0010,

middledown = 0x0020,

//keyboard stuff

VK_LBUTTON = 1,

VK_RBUTTON = 2,

VK_CANCEL = 3,

VK_MBUTTON = 4,

VK_BACK = 8,

VK_TAB = 9,

VK_CLEAR = 12,



VK_RETURN = 13,

VK_SHIFT = 16,

VK_CONTROL = 17,

VK_MENU = 18,

VK_PAUSE = 19,

VK_CAPITAL = 20,

VK_ESCAPE = 27,

VK_SPACE = 32,

VK_PRIOR = 33,

VK_NEXT = 34,

VK_END = 35,

VK_HOME = 36,

VK_LEFT = 37,

VK_UP = 38,

VK_RIGHT = 39,

VK_DOWN = 40,

VK_SELECT = 41,

VK_PRINT = 42,

VK_EXECUTE = 43,

VK_SNAPSHOT = 44,

VK_INSERT = 45,

VK_DELETE = 46,

VK_HELP = 47,

VK_NUM0 = 48, //0

VK_NUM1 = 49, //1

VK_NUM2 = 50, //2

VK_NUM3 = 51, //3

VK_NUM4 = 52, //4

VK_NUM5 = 53, //5

VK_NUM6 = 54, //6

VK_NUM7 = 55, //7

VK_NUM8 = 56, //8

VK_NUM9 = 57, //9

VK_A = 65, //A

VK_B = 66, //B

VK_C = 67, //C

VK_D = 68, //D



VK_E = 69, //E

VK_F = 70, //F

VK_G = 71, //G

VK_H = 72, //H

VK_I = 73, //I

VK_J = 74, //J

VK_K = 75, //K

VK_L = 76, //L

VK_M = 77, //M

VK_N = 78, //N

VK_O = 79, //O

VK_P = 80, //P

VK_Q = 81, //Q

VK_R = 82, //R

VK_S = 83, //S

VK_T = 84, //T

VK_U = 85, //U

VK_V = 86, //V

VK_W = 87, //W

VK_X = 88, //X

VK_Y = 89, //Y

VK_Z = 90, //Z

VK_NUMPAD0 = 96, //0

VK_NUMPAD1 = 97, //1

VK_NUMPAD2 = 98, //2

VK_NUMPAD3 = 99, //3

VK_NUMPAD4 = 100, //4

VK_NUMPAD5 = 101, //5

VK_NUMPAD6 = 102, //6

VK_NUMPAD7 = 103, //7

VK_NUMPAD8 = 104, //8

VK_NUMPAD9 = 105, //9

VK_NULTIPLY = 106,

VK_ADD = 107,

VK_SEPARATOR = 108,

VK_SUBTRACT = 109,



VK_DECIMAL = 110,

VK_DIVIDE = 111,

VK_F1 = 112,

VK_F2 = 113,

VK_F3 = 114,

VK_F4 = 115,

VK_F5 = 116,

VK_F6 = 117,

VK_F7 = 118,

VK_F8 = 119,

VK_F9 = 120,

VK_F10 = 121,

VK_F11 = 122,

VK_F12 = 123,

VK_NUMLOCK = 144,

VK_SCROLL = 145,

middleup = 0x0040,

xdown = 0x0080,

xup = 0x0100,

wheel = 0x0800,

virtualdesk = 0x4000,

absolute = 0x8000

}

}

}


但我家在的时候提示我
无法加载 DLL“winio.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
我已经下载了这个文件winio.dll,并且放在了bin\debug下面了
怎么办?
求高手解答。
能留下个联系方式最好,谢谢
[解决办法]
WinIo.dll
WinIo.sys
需要将这两个文件放到debug下
你代码里写的是winio.dll
改成WinIo.dll试试
[解决办法]
引用一下dll

读书人网 >C#

热点推荐