我希望打开'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设置是否正确呢???
急!!!

解决方案 »

  1.   

    你应该先等一下。因为可能你刚刚执行万shellexecute之后playcap的窗体还没有出来。或者修改一下大小写看看。或者不查找标题,查找类
      

  2.   

    我等待了5秒,可还是不执行setwindowpos(f,HWND_TOP,10,10,50,50,SWP_NOZORDER);这句话。直接跳过去了。能告诉具体怎么用类来查找窗体吗
      

  3.   

    你可以使用IsWindow来查看那个句柄是不是一个有效的窗口句柄。
    你可以使用Spy++来查看某个窗体的类的名称。然后查找的时候,就直接使用FindWindow的第一个参数,第二个参数设为nil。
      

  4.   

    ShellExecute

    Sleep()一段时间再
    FindWindow()
    SetWindowPos()
    我用这种方法运行了计算器程序并更改了标题兰和图标
    试一试,看是否有效
      

  5.   

    findwindow(mypro,nil)
    前面的参数应该是你的窗体的名称吧
      

  6.   

    findwindow(mypro,nil)
    前面的参数应该是你的窗体的名称吧
      

  7.   

    我现在想更该窗体在Z ORDER上的位置,让它一直在最顶层。不知道SetWindowPos()是否能满足这个要求。