请问如何解决我调用外部的程序的窗体置顶的问题????

bluesnowly 2003-08-24 08:43:03
我希望打开'd:\playcap.exe'外部可执行文件,并让它一直在顶部显示。我如下操作
ShellExecute(Handle,'open',PChar('d:\playcap.exe'),nil,nil,SW_SHOW);
f:=findwindow(nil,'video capture previewer');
if not f=0 then
begin
a:=setwindowpos(f,HWND_TOP,10,10,50,50,SWP_NOZORDER);
if a then
showmessage('set ok')
else showmessage('set false');
end;
但是setwindowpos(f,HWND_TOP,10,10,50,50,SWP_NOZORDER);语句一直不执行,不知道为什么??
我的API函数有用错吗?还有其他的方法吗?SWP_NOZORDER设置是否正确呢???
急!!!
...全文
197 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
码农XP 2003-08-25
  • 打赏
  • 举报
回复
ShellExecute

Sleep()一段时间再
FindWindow()
SetWindowPos()
我用这种方法运行了计算器程序并更改了标题兰和图标
试一试,看是否有效
bluesnowly 2003-08-25
  • 打赏
  • 举报
回复
我现在想更该窗体在Z ORDER上的位置,让它一直在最顶层。不知道SetWindowPos()是否能满足这个要求。
IORILI 2003-08-25
  • 打赏
  • 举报
回复
findwindow(mypro,nil)
前面的参数应该是你的窗体的名称吧
IORILI 2003-08-25
  • 打赏
  • 举报
回复
findwindow(mypro,nil)
前面的参数应该是你的窗体的名称吧
Eastunfail 2003-08-24
  • 打赏
  • 举报
回复
你可以使用IsWindow来查看那个句柄是不是一个有效的窗口句柄。


你可以使用Spy++来查看某个窗体的类的名称。

然后查找的时候,就直接使用FindWindow的第一个参数,第二个参数设为nil。
bluesnowly 2003-08-24
  • 打赏
  • 举报
回复
我等待了5秒,可还是不执行setwindowpos(f,HWND_TOP,10,10,50,50,SWP_NOZORDER);这句话。直接跳过去了。能告诉具体怎么用类来查找窗体吗
Eastunfail 2003-08-24
  • 打赏
  • 举报
回复
你应该先等一下。因为可能你刚刚执行万shellexecute之后playcap的窗体还没有出来。或者修改一下大小写看看。或者不查找标题,查找类

5,388

社区成员

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

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