用户 密码
太平洋系列网站:太平洋汽车网 | 太平洋游戏网
首  页 | 数码世界 | 手机通讯 | 硬件资讯 | 软件资讯 | 招聘与培训 | 游戏天下 | 下载中心 科技动态 | 今日报价 | 渠道商情 | 产品大全 | 笔 记 本 | 教你买电脑 | 评 测 室 | 短信中心
论  坛 | 影音家电 | 摄影专区 | 玩家E族 | 竞技天地 | Flash 动漫 | 有奖活动 |

-
您现在的位置:软件资讯 > 开发特区 > 开发语言 > C++Builder
C++ Builder 5 模拟键盘按键 自动输入文字

出处:电脑爱好者
责任编辑:zwg

[04-2-14 9:29] 作者:周世攀

  下面又到了给出例程的时间了。例程“刷刷刷”能够在键盘光标所在的文本输入框中自动输入文字(中文、英文、数字),程序使用C++ Builder 5开发。首先运行C++ Builder并新建工程。接着,将窗体Form1的边框样式(BorderStyle)改为对话框(bsDialog),并放置相应控件如图所示,其中SS_Text是一个用于输入文本的TComboBox控件,当然,你可以在设计阶段预先向控件中输入一些常用文本,以便程序运行后可以直接选用; txtTimes和txtDelay为TEdit控件,分别用于控制发送文本的次数和间隔时间;chkAutoWrap和chkAutoNumber为TCheckBox控件,决定是否在每一行发送文本后面自动回车或自动加记数编号; 以上控件包含在Panel1(TPanel控件)中; Timer1用于控制循环发送和时间间隔。

下面是程序清单:

//--------------------------------------------

#include

#pragma hdrstop

#include "Unit1.h"

//--------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"


int nTotalTimes, // 发送本文的总次数

nTimes; // 已经发送的次数

TForm1 *Form1;

//--------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//--------------------------------------------

void __fastcall TForm1::btnStartClick(TObject *Sender) // 开始刷屏

{ if (SS_Text->Text.IsEmpty())

{

// 文本不能为空

ShowMessage("请输入刷刷文本!");

SS_Text->SetFocus();

return;

}

__try

{

// Timer1->Interval取值为n秒(最小为50毫秒)

int Interval = StrToInt(txtDelay->Text);

Timer1->Interval = (Interval > 0) ? Interval * 1000 : 50;

// nTotalTimes取值为n次(最小为0次)

nTotalTimes = StrToInt(txtTimes->Text);

if (nTotalTimes < 0)

nTotalTimes = 0;

nTimes = 0;

Timer1->Enabled = true;

}

__except(EXCEPTION_EXECUTE_HANDLER)

{

ShowMessage("请输入数值类型数据!");

return;

}

btnStart->Enabled = false;

btnStop->Enabled = true;

Panel1->Enabled = false;

Application->Minimize(); // 最小化刷刷窗口

}

//--------------------------------------------
void __fastcall TForm1::btnStopClick(TObject *Sender)// 停止刷屏

{

Timer1->Enabled = false;

btnStart->Enabled = true;

btnStop->Enabled = false;

Panel1->Enabled = true;

}

//--------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

// 现刷屏nTimes次,到nTotalTimes次后完成。

if (nTimes == nTotalTimes)

{

btnStopClick(Sender);

return;

}


HWND hWnd;

hWnd = GetForegroundWindow(); // 得到当前窗口

if (hWnd == Form1->Handle) return; // 不需要程序本身的窗口


DWORD FormThreadID = GetCurrentThreadId();

DWORD CWndThreadID = GetWindowThreadProcessId(hWnd, NULL);


// 附加输入线程

AttachThreadInput(CWndThreadID, FormThreadID, true);

hWnd = GetFocus(); // 得到当前键盘光标所在的窗口

AttachThreadInput(CWndThreadID, FormThreadID, false); // 取消

if (hWnd == NULL) return;


nTimes++;

for (int i = 1; i <= SS_Text->Text.Length(); i++)

{ // 模拟键盘按键输入文本

PostMessage(hWnd, WM_CHAR, (WPARAM)(SS_Text->Text[i] & 0xFF), 0);

}


if (chkAutoNumber->Checked)

{ // 自动编号

AnsiString Lines = IntToStr(nTimes);

for (int j = 1; j <= Lines.Length(); j++)

PostMessage(hWnd, WM_CHAR, (WPARAM)(Lines[j]), 0);

}


if (chkAutoWrap->Checked) // 自动回车

PostMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);

}

//---------------------------------------------


本程序在Windows 2000 + C++ Builder 5下编译通过。源程序下载地址是:http://www.cfan.net.cn/qikan/ cxg/0206mnj.zip。

发给好友 投稿给我们 加入收藏 返回顶部

相关文章:
个性凸现的动画 特技效果
木马是如何编写的(三)
木马是如何编写的(二)
木马是如何编写的(一)
IT培训十大热门文章

内容搜索 
高级搜索
本栏今日焦点