Moodsky 发表于 2007-2-8 11:20:39

获取其他进程中ListBox和ComboBox的内容

(*//
标题:获取其他进程中ListBox和ComboBox的内容
说明:Window2000+Delphi6调试通过
设计:Zswang
支持:[email protected]
日期:2004-03-25
//*)

function GetListBoxText(mHandle: THandle; mStrings: TStrings): Boolean;
var
vItemCount: Integer;
I: Integer;
S: string;
begin
Result := False;
if not Assigned(mStrings) then Exit;
mStrings.BeginUpdate;
try
    mStrings.Clear;
    vItemCount := SendMessage(mHandle, LB_GETCOUNT, 0, 0);
    for I := 0 to vItemCount - 1 do begin
      SetLength(S, SendMessage(mHandle, LB_GETTEXTLEN, I, 0));
      SendMessage(mHandle, LB_GETTEXT, I, Integer(@S));
      mStrings.Add(S);
    end;
    SetLength(S, 0);
finally
    mStrings.EndUpdate;
end;
Result := True;
end; { GetListBoxText }

function GetComboBoxText(mHandle: THandle; mStrings: TStrings): Boolean;
var
vItemCount: Integer;
I: Integer;
S: string;
begin
Result := False;
if not Assigned(mStrings) then Exit;
mStrings.BeginUpdate;
try
    mStrings.Clear;
    vItemCount := SendMessage(mHandle, CB_GETCOUNT, 0, 0);
    for I := 0 to vItemCount - 1 do begin
      SetLength(S, SendMessage(mHandle, CB_GETLBTEXTLEN, I, 0));
      SendMessage(mHandle, CB_GETLBTEXT, I, Integer(@S));
      mStrings.Add(S);
    end;
    SetLength(S, 0);
finally
    mStrings.EndUpdate;
end;
Result := True;
end; { GetComboBoxText }

//Example
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Handle, 1, MOD_WIN, VK_F2);
RegisterHotKey(Handle, 2, MOD_WIN, VK_F3);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Handle, 1);
UnRegisterHotKey(Handle, 2);
end;

procedure TForm1.WMHOTKEY(var Msg: TWMHOTKEY);
begin
case Msg.HotKey of
    1:
      GetListBoxText(
      WindowFromPoint(Point(Mouse.CursorPos.X, Mouse.CursorPos.Y)),
      MemoText.Lines);
    2:
      GetComboBoxText(
      WindowFromPoint(Point(Mouse.CursorPos.X, Mouse.CursorPos.Y)),
      MemoText.Lines);
end;
end;
页: [1]
查看完整版本: 获取其他进程中ListBox和ComboBox的内容