首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 调用winio.dll解决办法

2013-03-04 
C# 调用winio.dllC# 怎么调用winio.dll?我在网上看了很多例子大部分都和下面的差不多using Systemusing S

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

热点排行