如何得到指定窗口中状态条第一个PANEL的TEXT?这个PANEL的TEXT中有图标和文字,我只要文字不要图标,如何做?该窗口是外部程序的窗口
解决方案 »
- cxTrackBar怎么修改
- 谁 家庭理财管理系统数据库设计 的代码 用delphi设计的
- 求助C++Builder 翻译成Delphi
- 大家说这样会不会引起别人反感?
- 高手进 合作!!!!最好懂VC+和delphi
- project->options中的output directory和Unit output directory的作用是什么呢?
- 诚购医药公司进销存软件源码
- 如何获得计算机的当前IP地址??
- 访问Excel文件中数据的问题???
- 有另一程序不断更新其日志文件,怎么样去监视它的日志文件为好?难道是不断载入日志文件?
- 请告诉我下面汇编语句的含义!
- delphi 里面有没有类似vc里面的oncopydata消息类型的事件阿?用于应用程序间的通讯
标题:获取其他进程中StatisBar的文本
说明:Window2000+Delphi6调试通过
设计:Zswang
支持:[email protected]
日期:2005-02-22
//*)uses CommCtrl;function GetStatusBarText(mHandle: THandle): string;
var
vBuffer: array[0..$1000] of Char;
vSize: Integer;
I: Integer;
vCount: Integer; vProcessId: DWORD;
vProcess: THandle;
vPointer: Pointer;
vNumberOfBytesRead: Cardinal;
begin
Result := '';
vCount := SendMessage(mHandle, SB_GETPARTS, 0, 0);
if vCount <= 0 then Exit;
GetWindowThreadProcessId(mHandle, @vProcessId);
vProcess := OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or
PROCESS_VM_WRITE, False, vProcessId);
vPointer := VirtualAllocEx(vProcess, nil, $1000, MEM_RESERVE or MEM_COMMIT,
PAGE_READWRITE);
try
for I := 0 to vCount - 1 do
begin
vSize := SendMessage(mHandle, SB_GETTEXT, I, 0) + 1;
SendMessage(mHandle, SB_GETTEXT, I, Integer(vPointer));
ReadProcessMemory(vProcess, vPointer, @vBuffer[0],
vSize, vNumberOfBytesRead);
Result := Result + #9 + vBuffer;
end;
Delete(Result, 1, 1);
finally
VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
CloseHandle(vProcess);
end;
end; { GetStatusBarText }//Example
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Handle, 1, MOD_WIN, VK_F2);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Handle, 1);
end;procedure TForm1.WMHOTKEY(var Msg: TWMHOTKEY);
begin
case Msg.HotKey of
1: Edit1.Text := GetStatusBarText(
WindowFromPoint(Point(Mouse.CursorPos.X, Mouse.CursorPos.Y)));
end;
end;