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

episome 2005-07-20 01:55:17
我的from必须设置 ontop属性。
所以ShellExecute调用一个外部exe后,总是看不到那个exe的窗口。
请问有什么办法让他也ontop?
...全文
278 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 的方法更改而来,经过测试存在一个问题:
如果打开多个,那么只有一个会置顶!
「已注销」 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

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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