您的位置:程序门 -> vb ->



vb如何实现外部程序最小化(以qq2007正式版为例)?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vb如何实现外部程序最小化(以qq2007正式版为例)?[已结贴,结贴人:d4s_sunnyboy]
发表于:2007-10-28 12:07:33 楼主
测试使用2007正式版。由于该程序窗口标题为空,所以无法通过窗口标题获得句柄。我的思路是,通过进程名获取pid,再得到句柄。

可是对于qq.exe,如何得到句柄,并实现将其最小化呢?

不清楚该通过哪种方法,向大家请教了!
发表于:2007-10-28 13:14:341楼 得分:4
得到pid和进程列表:xp的外部程序   tasklist

最小化窗口:closewindow

declare   function   closewindow   lib   "user32"   alias   "closewindow"   (byval   hwnd   as   long)   as   long

pid得到句柄:(不太清楚,引用一句话)

一个进程不见得有窗口,or       有可能有很多窗口,所以你问题问的不太明确!      
       
    单纯传入pid而获得hwnd的api据我所知应该是没有,所以还是要用enumwindows来列举所有的窗口,每得到一个hwnd就用getwindowthreadprocessid来得到拥有它的进程的pid,和你的pid比较,是一样的话就是了!
发表于:2007-10-28 13:46:232楼 得分:0
pid我已经获得,主要是在找寻一种方法,实现对如qq2007正式版这样的程序最小化
发表于:2007-10-28 14:09:533楼 得分:4
closewindow需要窗口的句柄,而pid并不能决定窗口句柄。

有2条可能的途径:
1。用findwindow指定标题(没有就是空字符串)和类名(可能是"qq2007"之类)找到窗口
2。enumwindow之类的方法遍历所有窗口,然后调用getwindowthreadprocessid

declare   function   getwindowthreadprocessid   lib   "user32"   alias   "getwindowthreadprocessid"   (byval   hwnd   as   long,   lpdwprocessid   as   long)   as   long

hwnd是窗口的句柄,lpdprocessid是返回的pid,函数返回线程的id

所以建议查找一下enumwindows等函数的用法
发表于:2007-11-27 17:01:504楼 得分:1
http://topic.csdn.net/u/20071127/16/7fe1bbf7-6b9a-4f77-abe6-1c27df99a5c6.html
看看这个!我的回答看可不可以?!
发表于:2007-12-07 15:53:185楼 得分:1
根据窗口名特征,获取窗口句柄,发送最小化消息。


快速检索

最新资讯
热门点击