已知一个第三方程序的进程句柄hProcess,怎么能把这个进程对应的程序给显示出来
就像如果已经打开了一个msn,当再次执行msn时,之前的msn窗口会自动显示出来那样的效果。
实在不行的话,让那个程序在任务栏上闪动也行。
原因是这样的:
我的程序界面里有个按钮,用户点击的时候会把一个程序给运行起来,那个程序本身是允许运行多个的。
可是我要在我的程序里控制只能运行一个。
如果发现程序已经运行,就把之前运行的程序给显示出来。
否则用户没注意程序已经运行,会不停的点那个按钮。现在我已经可以判断出来那个程序是否已经运行,也能够得到进程句柄。就是不知道怎么把对应的程序给显示出来。
就像如果已经打开了一个msn,当再次执行msn时,之前的msn窗口会自动显示出来那样的效果。
实在不行的话,让那个程序在任务栏上闪动也行。
原因是这样的:
我的程序界面里有个按钮,用户点击的时候会把一个程序给运行起来,那个程序本身是允许运行多个的。
可是我要在我的程序里控制只能运行一个。
如果发现程序已经运行,就把之前运行的程序给显示出来。
否则用户没注意程序已经运行,会不停的点那个按钮。现在我已经可以判断出来那个程序是否已经运行,也能够得到进程句柄。就是不知道怎么把对应的程序给显示出来。
解决方案 »
- 关于BsSkinCheckRadioBox的问题,很简单的!
- 如何在tabsheet的show里面实现翻到其他页面
- 关于TClientDataSet排序问题!
- 怎样获得一个程序的主窗体句柄和DLL实例句柄
- serversocket 没打开, clientsocket 尝试连接时错误如何屏蔽?
- ***********************高手们出手啦,需要你们一个建议**********************
- 简单问题,请帮手,在线等……
- 关闭窗体,显示提示信息方面
- TeeChart pro 6.0安装后的程序编译错误
- 多个edit赋值问题
- 谁有能直接在Delphi的Form上画表格的组件呀????
- 难难难! delphi如何实现 VBScript.Encode 的解密
注册一个自定义消息然后
BroadcastSystemMessage
直接广播你的自定义消息好了,连进程句柄都不需要知道
如果是自己写的程序,要防止多次运行,建个互斥对象就可以了
哪怕用GetWindowThreadProcessId配合EnumWindows也可以啊不要总先入为主的给命题加这样那样的限制,非要认准了所有操作只能围绕进程句柄来.变通的方法很多的.
那个第三方程序不是我写的,要不就不说是“第三方”了,所以你说的方法基本都不行。我不能findwindow,也就是说不能直接去找窗口句柄,是有我的原因的。
除非是通过进程句柄获取窗口句柄到的才可以。
但即使根据进程句柄去获取窗口句柄也有个问题,就是如果那个程序有多个窗口,就比较麻烦。
其实我想实现的效果就是:
如果那个程序在任务栏上不是当前的,就让它是当前的,就好像用鼠标在任务栏上点那个程序一下一样。
或者说
在任务管理器中应用程序列表中选中一个程序,然后点“切换至”这样的效果。to gyk120:
你说的办法我当然想到了,但不友好啊。如果要让那个程序显示出来,就必须想办法知道窗口句柄吗?唯一途径?to 僵哥:
枚举这个办法我也想过了,有点麻烦。所以想跑来这里问,看是不是有更好的办法。
例如:FlashWindow(Application.Handle, True);
hWin:thandle;
begin hwin:=strtoint(edit1.Text) ;
ShowWindow(hwin,SW_SHOW);
SendMessage(hwin, WM_SYSCOMMAND, SC_RESTORE, 0);
setforegroundwindow(hwin);