本帖最后由 lxcnn 于 2010-01-02 16:37:59 编辑

解决方案 »

  1.   

     kk.MykeyDown(112);   //发送F1键按下 
                  System.Threading.Thread.Sleep(500); 
                kk.MykeyUp(112);     //发送F1键弹起               kk.MyMouse(0x09); //发送左键按下 
                  kk.MyMouse(0); 
                kk.MyMouse(0x08); //发送左键释放 
                  kk.MyMouse(0); 
                kk.MyMouse(0); 
                kk.MyMouse(0); 
    这地方一次怎么发送很几个键啊,应该分情况发送吧
      

  2.   

        public void MyMouse(int vKeyCoad) 
            { 
                int btScancode = 0;             btScancode = MapVirtualKey((byte)vKeyCoad, 0); 
                btScancode = vKeyCoad;             KBCWait4IBE(); // '发送数据前应该先等待键盘缓冲区为空 
                SetPortVal(KBC_KEY_CMD, (IntPtr)0xD3, 1);// '发送键盘写入命令 
                //SetPortVal函数用于向端口写入数据,它的用法是SetPortVal 端口号,欲写入的数据,写入数据的长度 
                KBCWait4IBE(); 
                SetPortVal(KBC_KEY_DATA, (IntPtr)btScancode, 1);// '写入按键信息,按下键         } 
    }
    这里btScancode = vKeyCoad;  是不是要去掉  
      

  3.   

    WINIO不支持USB设备,你用的是不是USB鼠标?换个PS2的试试看。
      

  4.   

    private void KBCWait4IBE()  
            {  
                int dwVal = 0;  
                do  
                {  
                    bool flag = GetPortVal((IntPtr)0x64, out dwVal, 1);  
                }  
                while ((dwVal & 0x2) > 0);  
            }  
    这里只检测了64端口,要分别检测64和60端口缓存区都是否为0
      

  5.   

    10楼说的对,winio不支持USB,连按键精灵也不能支持USB的,我也在找USB鼠标模拟点击的办法。