我在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循环返回很多次同样的字符?
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;