• 全部
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
  • 问答

ShellExecute 调用一个exe,怎么让他 ontop

episome 2005-07-20 01:55:17
我的from必须设置 ontop属性。
所以ShellExecute调用一个外部exe后,总是看不到那个exe的窗口。
请问有什么办法让他也ontop?
...全文
229 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
syfly739 2005-08-04
帮你UP
回复
g961681 2005-07-21
var
h: Hwnd;
i: Integer;
begin
h := 0;
i := 0;
ShellExecute(handle, 'open', 'English.chm', nil, nil, SW_ShowNormal);
while (h = 0) and (i < 1000) do
begin
Sleep(10);
h := FindWindow('HH Parent', nil); //在Win 2k Pro下,类名是'HH Parent';
Inc(i, 1);
end;
Self.Caption := CurrToStr(h);
SetWindowPos(h, HWND_TopMost, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
end;
根据 loveWife 的方法更改而来,经过测试存在一个问题:
如果打开多个,那么只有一个会置顶!
回复
kkgogo 2005-07-21
同意loveWife(我爱红)。
回复
loveWife 2005-07-21
呵呵,楼主给分吧!
var
h: Hwnd;
begin
ShellExecute(handle,'open','Help.chm',nil,nil,SW_ShowNormal);
h := FindWindow(nil,'帮助手册'); //帮助手册是窗口标题
SetWindowPos(h,HWND_TopMost,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
end;
回复
episome 2005-07-21
不管了,找个槽跳了算了
回复
ztenv 2005-07-20
那就不知道该怎么办好了,我目前是没有办法了,如果是自己写的还好,我去年成功处理了这类问题
回复
episome 2005-07-20
lianshaohua(永远深爱一个叫“...... ”的好女孩儿!) :
Exe 不是偶写的,是自解压缩包,里面ppt和视频等乱七八糟东西。

唉,麻烦
回复
episome 2005-07-20
Jumpi(Delphiing)
那必须有个检查程序调要完毕的过程阿,光ShellExecute好像不行吧。
回复
lovend 2005-07-20
帮你顶啦。
回复
ztenv 2005-07-20
如果那个EXE是你自己写的,调用它时,先把自己的这个form设置不在最顶端,然后发送一个消息或通过两个应用程序共享内存来实现,被你启动的应用程序接到消息后再把自己设置为最顶端,关闭时执行相反的操作,就可以了,
回复
Jumpi 2005-07-20
可能要在执行之前将form的ontop取消,然后再设置吧。
回复
episome 2005-07-20
感谢up
回复
bxh2dai 2005-07-20
UP
回复
发帖
Delphi
创建于2007-08-02

4868

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2005-07-20 01:55
社区公告
暂无公告