如果知道一个进程的PID,或者进程的映像名称,如何使用API获得某应用程序窗口的句柄(为简单起见,假定该应用只有一个窗口),在此请高人指点!!!

qlyscf 2009-03-25 01:18:57
如题:
在PB中,如果知道一个进程的PID,或者进程的映像名称,如何使用API获得某应用程序窗口的句柄(为简单起见,假定该应用只有一个窗口),请高人指点!!!谢谢啦!
...全文
378 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qlyscf 2009-04-05
  • 打赏
  • 举报
回复
fogle朋友,你的代码我测试过了,非常感谢!
虽然未能根本解决我的提问,但提供了一个有益的思路! 谢谢!
fogle 2009-03-28
  • 打赏
  • 举报
回复
API 声明

FUNCTION ulong GetWindowText(ulong hwnd,ref string lpString,ulong cch) LIBRARY "user32.dll" ALIAS FOR "GetWindowTextA"
FUNCTION ulong FindWindowEx(ulong hWnd1,ulong hWnd2,ref string lpsz1,ref string lpsz2) LIBRARY "user32.dll" ALIAS FOR "FindWindowExA"

测试代码
string lpsz1,lpsz2,ls_title
long ul_handle

setnull(lpsz1)
setnull(lpsz2)
ls_title=space(50)

ul_handle=FindWindowEx(0,0,lpsz1,lpsz2)
do while ul_handle<>0
GetWindowText(ul_handle,ls_title,49)
mle_1.text = mle_1.text + "~r~n" +ls_title
ul_handle=FindWindowEx(0,ul_handle,lpsz1,lpsz2)
loop

你自己做一下判断
fogle 2009-03-28
  • 打赏
  • 举报
回复
PB9的PBNI提供了C++ 调用的方法
你可以进一步研究一下
qlyscf 2009-03-26
  • 打赏
  • 举报
回复
其实我在网上搜了好久,也只找到类似使用enumWindows的方法,也了解到PB并不支持回调函数,实在是郁闷。当然通过第三方工具作中介来实现的话,又感觉有些不爽。唉。。。
qlyscf 2009-03-26
  • 打赏
  • 举报
回复
谢谢Allan_xd,其实那个应用是自己做的,的确只有一个窗口,所以才有那个假定了! :)
Allan_xd 2009-03-25
  • 打赏
  • 举报
回复
传统方法是使用enumWindows无奈它要用到回调函数,pb是无能为力的了,建议你使用delphi,C++之类的编一个dll调用吧。另外你不能假定应用只有一个窗口,那是你看的见的,其实windows系统中一个PID对应多窗口的现象是太普遍了,比如你打开的输入法小窗口都与你认为的窗口共用一个pid的。

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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