比如我要发送2个CTRL击键消息,该如何?
解决方案 »
- listview控件输出显示
- 下午就放假了,提前祝大家新年快乐!
- !从BCB到DELPHI几个不明之处请赐教!
- xiaohuan:刚才给我的程序解压密码是多少啊
- 句柄到底是什么东西呢?
- 有谁知道DELPHI6的序列号???
- 关于Arcobat和Photoshop启动界面的制作?
- 一个sql查询问题,请高手帮助...
- 请问哪里有内容比较详细的d5或d6指南下载???送分了!!!!
- 》》》》紧急援求救。。如何用DELPHI在“WIN2000”下屏蔽系统按键 《〈〈〈
- 为什么在DBGRID中用INSERT命令输入记录后记录会追加到数据集的最后?
- 哪个好心人可以帮我吗?我想用delphi连接.mdb(access文件)。能连接能显示字段内容就可以,可以帮我吗?我不会用delphi的ado
VK_LCONTROL
VK_RCONTROL如:
VK_LBUTTON = 1;
{$EXTERNALSYM VK_RBUTTON}
VK_RBUTTON = 2;
{$EXTERNALSYM VK_CANCEL}
VK_CANCEL = 3;
{$EXTERNALSYM VK_MBUTTON}
VK_MBUTTON = 4; { NOT contiguous with L & RBUTTON }
{$EXTERNALSYM VK_BACK}
VK_BACK = 8;
{$EXTERNALSYM VK_TAB}
VK_TAB = 9;
{$EXTERNALSYM VK_CLEAR}
VK_CLEAR = 12;
{$EXTERNALSYM VK_RETURN}
VK_RETURN = 13;
{$EXTERNALSYM VK_SHIFT}
VK_SHIFT = $10;
{$EXTERNALSYM VK_CONTROL}
VK_CONTROL = 17;
{$EXTERNALSYM VK_MENU}
VK_MENU = 18;
{$EXTERNALSYM VK_PAUSE}
VK_PAUSE = 19;
{$EXTERNALSYM VK_CAPITAL}
VK_CAPITAL = 20;
{$EXTERNALSYM VK_KANA }
VK_KANA = 21;
{$EXTERNALSYM VK_HANGUL }
VK_HANGUL = 21;
{$EXTERNALSYM VK_JUNJA }
VK_JUNJA = 23;
{$EXTERNALSYM VK_FINAL }
VK_FINAL = 24;
{$EXTERNALSYM VK_HANJA }
VK_HANJA = 25;
{$EXTERNALSYM VK_KANJI }
VK_KANJI = 25;
{$EXTERNALSYM VK_CONVERT }
VK_CONVERT = 28;
{$EXTERNALSYM VK_NONCONVERT }
VK_NONCONVERT = 29;
{$EXTERNALSYM VK_ACCEPT }
VK_ACCEPT = 30;
{$EXTERNALSYM VK_MODECHANGE }
VK_MODECHANGE = 31;
{$EXTERNALSYM VK_ESCAPE}
VK_ESCAPE = 27;
{$EXTERNALSYM VK_SPACE}
VK_SPACE = $20;
{$EXTERNALSYM VK_PRIOR}
VK_PRIOR = 33;
{$EXTERNALSYM VK_NEXT}
VK_NEXT = 34;
{$EXTERNALSYM VK_END}
VK_END = 35;
{$EXTERNALSYM VK_HOME}
VK_HOME = 36;
{$EXTERNALSYM VK_LEFT}
VK_LEFT = 37;
{$EXTERNALSYM VK_UP}
VK_UP = 38;
{$EXTERNALSYM VK_RIGHT}
VK_RIGHT = 39;
{$EXTERNALSYM VK_DOWN}
VK_DOWN = 40;
{$EXTERNALSYM VK_SELECT}
VK_SELECT = 41;
{$EXTERNALSYM VK_PRINT}
VK_PRINT = 42;
{$EXTERNALSYM VK_EXECUTE}
VK_EXECUTE = 43;
{$EXTERNALSYM VK_SNAPSHOT}
VK_SNAPSHOT = 44;
{$EXTERNALSYM VK_INSERT}
VK_INSERT = 45;
{$EXTERNALSYM VK_DELETE}
VK_DELETE = 46;
SendMessage(handle,WM_KEYDOWN,VK_CONTROL,0);
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
ListBox1: TListBox;
B1: TButton;
E1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
T1: TTimer;
B2: TButton;
L1: TLabel;
procedure FormCreate(Sender: TObject);
procedure B1Click(Sender: TObject);
procedure T1Timer(Sender: TObject);
procedure B2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
function GetText(Wnd : HWND) : string;
var
textlength : integer;
text : PChar;
begin
textlength:=SendMessage(Wnd,WM_GETTEXTLENGTH,0,0);
if textlength=0 then
Result := ''
else begin
getmem(text,textlength+1);
SendMessage(Wnd,WM_GETTEXT,textlength+1,Integer(text));
Result:=text;
freemem(text);
end;
end;function EnumWindowsProc (Wnd: HWND; LParam: LPARAM): BOOL; stdcall;
var
st:string;
begin
Result := True;
//if (IsWindowVisible(Wnd)) and (GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) and (GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then begin
if (GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) and (GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then begin
st:=GetText(Wnd);
IF not(st='') THEN
Form1.Listbox1.items.add(st);
end;
end;procedure TForm1.FormCreate(Sender: TObject);
var
Param : Longint;
begin
Form1.Listbox1.Clear;
Param := 0 ;
EnumWindows(@EnumWindowsProc , Param);end;
procedure TForm1.B1Click(Sender: TObject);
begin
T1.Interval:=StrToInt(E1.Text)*1000;
T1.Enabled := TRUE;
L1.Caption :='目前状态:激活';
end;procedure TForm1.B2Click(Sender: TObject);
begin
T1.Enabled := FALSE;
L1.Caption :='目前状态:中止';
end;procedure TForm1.T1Timer(Sender: TObject);
var
Handle: Integer;
Param : Longint;
begin
Handle := FindWindow(nil,pchar(Form1.listbox1.Items[listbox1.ItemIndex]));
if Handle<>0 then
begin
SendMessage(Handle,WM_KEYDOWN,VK_RETURN,0);
SendMessage(Handle,WM_KEYUP,VK_RETURN,0);
end;end;end.