C# 调用winio.dll

ailby0709 2013-02-16 05:33:17
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下面了
怎么办?
求高手解答。
能留下个联系方式最好,谢谢
...全文
807 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
女工程师1号 2013-12-01
  • 打赏
  • 举报
回复
引用 6 楼 Mackz 的回复:
引用一下dll
请问怎么引用
ailby0709 2013-02-21
  • 打赏
  • 举报
回复
引用 6 楼 Mackz 的回复:
引用一下dll
我只下载了一个WinIo.dll 在C#中引用的时候提示我是无效的引用
菜牛 2013-02-16
  • 打赏
  • 举报
回复
引用一下dll
ailby0709 2013-02-16
  • 打赏
  • 举报
回复
引用 4 楼 wzn721721 的回复:
WinIo.dll WinIo.sys 需要将这两个文件放到debug下 你代码里写的是winio.dll 改成WinIo.dll试试
我貌似没有WinIo.sys这个
mnxm 2013-02-16
  • 打赏
  • 举报
回复
WinIo.dll WinIo.sys 需要将这两个文件放到debug下 你代码里写的是winio.dll 改成WinIo.dll试试
ailby0709 2013-02-16
  • 打赏
  • 举报
回复
引用 2 楼 wzn721721 的回复:
找到原因了 我的操作系统是64位的 加载winio.dll遇到了你说的问题 把winio.dll换成WinIo64.dll就没这个问题了 请参考 http://www.cnblogs.com/wangqian0realmagic/archive/2012/03/26/2418671.html
我的是32位的 没有啥特殊的
mnxm 2013-02-16
  • 打赏
  • 举报
回复
找到原因了 我的操作系统是64位的 加载winio.dll遇到了你说的问题 把winio.dll换成WinIo64.dll就没这个问题了 请参考 http://www.cnblogs.com/wangqian0realmagic/archive/2012/03/26/2418671.html
ailby0709 2013-02-16
  • 打赏
  • 举报
回复
自己顶一下。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧