获取其他进程中StatusBar的文本
2024-09-01 00:10:40
(*//
标题:获取其他进程中StatusBar的文本
说明:Window2000+Delphi6调试通过
设计:Zswang
支持:wjhu111@21cn.com
日期: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;
http://blog.csdn.net/zswang/article/details/297038
最新文章
- JS的双等和三等的区别
- JavaWeb三大组件——过滤器的运行机制理解
- CSS3边框图片属性---border-image
- SQL2005中的事务与锁定(八)- 转载
- ASP.NET MVC5 网站开发实践
- WebAPI使用多个xml文件生成帮助文档(转)
- Xcode无法设置视图的 autosizing control原因
- LockSupport理解
- 告别回调,拥抱async await
- Hyper-V安装虚拟机
- LOJ #6285 分块入门9
- Springboot 3.需求携带参数的get请求
- CUDA编程模型——组织并行线程3 (2D grid 1D block)
- 02. pt-archiver
- 不同Mesh技术的比较-总结版
- Codeforces Round #215 (Div. 2) D. Sereja ans Anagrams
- 使用tagName定位报错
- Linux内核同步 - memory barrier
- 【LG3206】[HNOI2010]城市建设
- vue-构建项目相关事项