keybd_event

     #include <vcl.h>
    #pragma hdrstop
    #include "main.h"
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    Tmain_ *main_;
    //---------------------------------------------------------------------------
    __fastcall Tmain_::Tmain_(TComponent* Owner)
    : TForm(Owner)
    {
      /*
      Window2000/NT/XP已经不提倡用这个函数了,
      以下方法只是为了让大家开阔一下思路,怎么替代呢,呵呵,看下面,
      所以以下的所有代码都可以用这个来完成
      //2000下用这个代替 ,包含 "winable.h"
      INPUT input[4];
      memset(input, 0, sizeof(input));
      input[0].type = input[1].type = input[2].type = input[3].type = INPUT_KEYBOARD;
      input[0].ki.wVk  = input[3].ki.wVk = VK_LWIN;
      input[1].ki.wVk  = input[2].ki.wVk = 'R';
      //接下来释放它,这一点很重要。
      input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;
      input[0].ki.time = input[1].ki.time = input[2].ki.time = input[3].ki.time = GetTickCount();
      SendInput(4, input, sizeof(INPUT));
      感觉比那个有点罗索,呵呵。
      */
    }
    //---------------------------------------------------------------------------
    void __fastcall Tmain_::Button1Click(TObject *Sender)
    {
      keybd_event(VK_LWIN, 0, 0 ,0);
      keybd_event('M', 0, 0 ,0);
      keybd_event('M', 0, KEYEVENTF_KEYUP ,0);
      keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
      /*
      附WIN键的部分快捷键:
      WIN键+D=快速的切到桌面,再次点击返回
      WIN键+E=快速打开资源管理器
      WIN键+R=“运行”。
      WIN键+M=全部视窗最小化。
      WIN键+Shift+M=取消全部视窗最小化。
      WIN键+F1=Help。
      WIN键+F=“寻找”。
      WIN键+Ctrl+F=显示“查找电脑”。
      WIN键+Tab=切换工作列的程式。
      WIN键+Break=显示系统内容。
      */
    }
    //---------------------------------------------------------------------------
    void __fastcall Tmain_::Button2Click(TObject *Sender)
    {
      keybd_event(VK_LWIN, 0, 0 ,0);
      keybd_event('R', 0, 0 ,0);
      keybd_event('R', 0, KEYEVENTF_KEYUP ,0);
      keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
    }
    //---------------------------------------------------------------------------
    void __fastcall Tmain_::Button3Click(TObject *Sender)
    {
      keybd_event(VK_SNAPSHOT, 0, 0 ,0);
      keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP,0);
    }
    //---------------------------------------------------------------------------
    void __fastcall Tmain_::Button4Click(TObject *Sender)
    {
      keybd_event(VK_SNAPSHOT,1, 0 ,0);
      keybd_event(VK_SNAPSHOT,1, KEYEVENTF_KEYUP,0);
    }
    //---------------------------------------------------------------------------
    void __fastcall Tmain_::Button5Click(TObject *Sender)
    {
      Edit1->SetFocus();
      Edit1->SelectAll();
      keybd_event(VK_LCONTROL , 0, 0 ,0);
      keybd_event('C',0,0 ,0);
      keybd_event('C',0,KEYEVENTF_KEYUP,0);
      keybd_event(VK_LCONTROL ,0,KEYEVENTF_KEYUP,0);
    }
    //---------------------------------------------------------------------------
    void __fastcall Tmain_::Button6Click(TObject *Sender)
    {
      bool bState=true;   //true为按下NumLock,false反之
      BYTE keyState[256];
      GetKeyboardState((LPBYTE)&keyState);
      if(
      (bState &&!(keyState[VK_NUMLOCK] & 1))||
      (!bState &&(keyState[VK_NUMLOCK] & 1))
      )
      {
      // 按下
      keybd_event(VK_NUMLOCK,0x45,KEYEVENTF_EXTENDEDKEY|0,0);
      //释放
      keybd_event(VK_NUMLOCK,0x45,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0);
      }
    }
    //---------------------------------------------------------------------------
    void __fastcall Tmain_::Button7Click(TObject *Sender)
    {
      keybd_event(VK_CONTROL, 0, 0 ,0);
      keybd_event(VK_MENU,0, 0 ,0);
      keybd_event(VK_DELETE,0, 0 ,0);

      keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP ,0);
      keybd_event(VK_MENU,0, KEYEVENTF_KEYUP ,0);
      keybd_event(VK_DELETE,0, KEYEVENTF_KEYUP ,0);
      /*
      呵呵,这样不会成功呀,因为这几个键直接是操作系统来截获执行的,
      而模拟键盘只能发向应用程序,所以这种方法不行的(想显示锁定对话框,用    LockWorkStation();)
      */
    }
    //---------------------------------------------------------------------------
    void __fastcall Tmain_::ShiftTab1Click(TObject *Sender)
    {
      keybd_event(VK_SHIFT, 0,KEYEVENTF_EXTENDEDKEY,0);
      keybd_event(VK_TAB, 0, KEYEVENTF_EXTENDEDKEY ,0);
      keybd_event(VK_TAB, 2, KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP ,0);
      keybd_event(VK_SHIFT,2,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0);
    }
    //---------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值