#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);
}
//---------------------------------------------------------------------------