我在Timer1中(Timer1的Interval = 5000)
procedure TForm1.Timer1Timer(Sender: TObject);
var
hwndCalc: Integer;
ForegroundWindowHwnd: HWnd;
szText:array[0..255] of char;
l:Integer;
y:integer;
sLeft: string;
begin
ForegroundWindowHwnd := GetForegroundWindow;
y:=GetWindowTextLength(ForegroundWindowHwnd);
l := GetWindowText(ForegroundWindowHwnd, @szText, y+1);
sLeft:=trim(pchar((@szText)));
If sLeft = '金山词霸 2002' Then
EnumChildWindows(ForegroundWindowHwnd,@EnumChildWndProc,0);
end;function EnumChildWndProc(AhWnd:LongInt;AlParam:lParam):boolean;stdcall;
var
lStyle: HWnd;
lpClassName: array[0..254] of Char;
strName:array[0..254] of char;
ss: String;
nPos:Integer;
RetVal:Integer;begin
nPos:=1001;
lStyle := GetDlgItem(AhWnd,nPos);
RetVal := GetClassName(lStyle, lpClassName, 254);
ss := string(lpClassName);
If ss = 'Edit' Then
begin
SendMessage(lStyle, WM_GETTEXT, 255, LongInt(@strName));
ss:=trim(pchar((@strName)));
Form1.Label1.Caption := Form1.Label1.Caption + Chr(13) + Chr(10) + ss;
end;
result:=true;
end;
我想得到金山词霸输入的字符,现在可以得到,但是为什么每次timer1循环返回很多次同样的字符?
procedure TForm1.Timer1Timer(Sender: TObject);
var
hwndCalc: Integer;
ForegroundWindowHwnd: HWnd;
szText:array[0..255] of char;
l:Integer;
y:integer;
sLeft: string;
begin
ForegroundWindowHwnd := GetForegroundWindow;
y:=GetWindowTextLength(ForegroundWindowHwnd);
l := GetWindowText(ForegroundWindowHwnd, @szText, y+1);
sLeft:=trim(pchar((@szText)));
If sLeft = '金山词霸 2002' Then
EnumChildWindows(ForegroundWindowHwnd,@EnumChildWndProc,0);
end;function EnumChildWndProc(AhWnd:LongInt;AlParam:lParam):boolean;stdcall;
var
lStyle: HWnd;
lpClassName: array[0..254] of Char;
strName:array[0..254] of char;
ss: String;
nPos:Integer;
RetVal:Integer;begin
nPos:=1001;
lStyle := GetDlgItem(AhWnd,nPos);
RetVal := GetClassName(lStyle, lpClassName, 254);
ss := string(lpClassName);
If ss = 'Edit' Then
begin
SendMessage(lStyle, WM_GETTEXT, 255, LongInt(@strName));
ss:=trim(pchar((@strName)));
Form1.Label1.Caption := Form1.Label1.Caption + Chr(13) + Chr(10) + ss;
end;
result:=true;
end;
我想得到金山词霸输入的字符,现在可以得到,但是为什么每次timer1循环返回很多次同样的字符?
解决方案 »
- 运行delphi的时候出现 [Fatal Error] Unit2.pas(7): File not found: 'usertable_unit.dcu'
- MDI窗体设置问题,急!
- 为什么delphi的dbgrid只显示后八个字段呢?
- 我创建的一个.dll里包含TclientSocket通信组件,我在主程序里加载这个.dll时,通信正常,但我将这个.dll注入远程线程时,为什么就不能通
- 诚寻delphi高手或爱好者的QQ!!
- 兄弟我改行了,给点建议!
- 有谁用过VCL Skin 控件?
- 就这样、、、
- 数据库之ODBC的动态绑定!
- 如何获取本机IP地址?
- sql中的语句查询中条件为时间段的语句怎么写
- 请教大家一个简单的问题?关于网上下载的原代码
nPos:=1001;
lStyle := GetDlgItem(AhWnd,nPos);
RetVal := GetClassName(lStyle, lpClassName, 254);
if RetVal>0 then //加这一句
begin
ss := string(lpClassName);
If ss = 'Edit' Then
begin
SendMessage(lStyle, WM_GETTEXT, 255, LongInt(@strName));
ss:=trim(pchar((@strName)));
Form1.Label1.Caption := Form1.Label1.Caption + Chr(13) + Chr(10) + ss;
end;
end;
result:=true;
end;