最近在研究模拟按键操作,但无论如何就是模拟不出来。请教过别人也做不效果,经过查看虚拟键值与ascii码的区别,终于做出来了。本人只做了字母与数字的模拟,其他的参照代码也一样可以做出来的。以下是代码部份:

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    mmo1: TMemo;
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
i:Integer;
b:Integer;
const
j='ABCDEFGHIJKLNMOPQRSTUVWXYZabcdefghijklnmopqrstuvwxyz0123456789';
begin
  for I := 1 to Length(j) do
  begin
    b:=ord(j[i]);
    mmo1.SetFocus;
    mmo1.Lines.Add(IntToStr(i)+':'+intToStr(ord(j[i])));
    if (b>=65) and (b<=90) then
      begin
        keybd_event(VK_SHIFT,0,0,0);
        keybd_event(Ord(j[i]),0,0,0);
        keybd_event(Ord(j[i]),0,2,0);
        keybd_event(VK_SHIFT,0,2,0);
      end
      else
      if (b>=48) and (b<=57) then
        begin
          keybd_event(ord(j[i]),0,0,0);
          keybd_event(Ord(j[i]),0,2,0);
        end
        else
         if (b>=97) and (b<=122) then
      begin
        keybd_event(Ord(j[i])-32,0,0,0);
        keybd_event(Ord(j[i])-32,0,2,0);
      end;
      Sleep(150);
  end;
end;
end.