获取pb开发的程序的主窗体的句柄

虎滴小猪猪 2011-06-23 03:56:06
我要在delphi里用findwindow找到pb开发的应用程序的主窗体。
我用FindWindow('w_main',nil);
返回值是0,不知道为什么?谁能帮帮我。
...全文
297 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
虎滴小猪猪 2011-06-24
  • 打赏
  • 举报
回复
结贴了。从开贴去
虎滴小猪猪 2011-06-24
  • 打赏
  • 举报
回复
var
h:thandle;
f:boolean;
lppe:tprocessentry32;
H1: DWORD;
begin
h := CreateToolhelp32Snapshot(TH32cs_SnapProcess, 0);
lppe.dwSize := sizeof(lppe);
f := Process32First(h, lppe);
//lppe.szExeFile是进程的名字,自己挑选你要的
//lppe.th32ProcessID就是你要的进程号
while integer(f) <> 0 do
begin
if lppe.szExeFile = '程序名.exe' then
begin
break;
end;
f := Process32Next(h, lppe);
if integer(f) = 0 then Exit;
end;
H1 := lppe.th32ProcessID;
end;

我现在已经得到进程的ID了。我想让这个进程的应用程序处于当前使用状态。比如,这个程序最小化在任务栏,我想让程序还原。
应该怎么实现?
yyoinge 2011-06-23
  • 打赏
  • 举报
回复
(1)通过进程名“pb开发的程序.exe”获取进程ID : processid(使用CreateToolhelp32Snapshot、Process32First、Process32Next等函数)
(2)通过进程ID : processid ,枚举所有该进程下的窗口(使用EnumWindows)
(3)至于哪个是主窗口,你自己来界定吧
虎滴小猪猪 2011-06-23
  • 打赏
  • 举报
回复
可是在程序里,主窗体的标题会变的
wag_enu 2011-06-23
  • 打赏
  • 举报
回复
findwindow 要查找的是窗口的标题栏显示的名称。
虎滴小猪猪 2011-06-23
  • 打赏
  • 举报
回复
我用classname(w_main)获取到的值就是w_main。这个应该是类名吧?
pcwe2002 2011-06-23
  • 打赏
  • 举报
回复
第一个参数是窗口的类名,不是w_main。具体是什么你可以通过spy++查看下。

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧