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

CSDN来,难道都是初学者

2012-01-02 
CSDN高手进来,难道都是菜鸟?用winio.dll模拟硬件(底层驱动)的鼠标左键点击动作。遇到问题是,按下动作执行了

CSDN高手进来,难道都是菜鸟?
用winio.dll模拟硬件(底层驱动)的鼠标左键点击动作。
遇到问题是,按下动作执行了,可是释放没执行,即鼠标左键一直处于按下状态,如何解决?

                                        sendKey.MyMouseDown(0x09);   //发送左键按下
                                        sendKey.MyMouseDown(0);
                                        sendKey.MyMouseDown(0);
                                        sendKey.MyMouseDown(0);
                                        sendKey.MyMouseUp(0x08);   //发送左键释放
                                        sendKey.MyMouseUp(0);
                                        sendKey.MyMouseUp(0);
                                        sendKey.MyMouseUp(0);

  private   void   KBCWait4IBEM()       //等待键盘缓冲区为空
                {
                        //int[]   dwVal   =   new   int[]   {   0   };
                        int   dwVal   =   0;
                        do
                        {
                                //这句表示从&H64端口读取一个字节并把读出的数据放到变量dwVal中
                                //GetPortVal函数的用法是GetPortVal   端口号,存放读出数据的变量,读入的长度
                                bool   flag   =   GetPortVal(0x64,   out     dwVal,   1);
                        }
                        while   ((dwVal   &   0x2)   >   0);
                }

                //这个用来模拟按下键,参数vKeyCoad传入按键的虚拟码
                public   void   MyMouseDown(int   vKeyCoad)
                {
                        int   btScancode   =   0;

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


                        KBCWait4IBE();     //   '发送数据前应该先等待键盘缓冲区为空
                        SetPortVal(KBC_KEY_CMD,   0xD3,   1);//           '发送键盘写入命令
                        //SetPortVal函数用于向端口写入数据,它的用法是SetPortVal   端口号,欲写入的数据,写入数据的长度
                        KBCWait4IBE();
                        SetPortVal(KBC_KEY_DATA,   btScancode,   1);//     '写入按键信息,按下键

                }

                //这个用来模拟释放键,参数vKeyCoad传入按键的虚拟码
                public   void   MyMouseUp(int   vKeyCoad)
                {
                        int   btScancode   =   0;
                        btScancode   =   MapVirtualKey(vKeyCoad,   0);
                        btScancode   =   vKeyCoad;

                        KBCWait4IBE();     //   '发送数据前应该先等待键盘缓冲区为空
                        SetPortVal(KBC_KEY_CMD,   0xD3,   1);   // '发送键盘写入命令
                        KBCWait4IBE();
                        SetPortVal(KBC_KEY_DATA,   (btScancode   |   0x80),   1);//   '写入按键信息,释放键
                }



[解决办法]
winio有现成的.net wrapper? h还是楼主自己封装的?

热点排行