如何做一个应用软件的容器?(200分)

  • 主题发起人 主题发起人 Unicorn
  • 开始时间 开始时间
U

Unicorn

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个应用程序的容器,首先找到我的机器上安装了那些应用<br>软件(如何实现?),在列表框里列出来,然后双击列表框里的软件名后,在我的容器里激活相应的应用程序(如何实现?)<br>各位高手,有没有什么思路?有源程序当然最好了!
 
激活太简单了, 用shellexec就可以.<br>找到可是不容易:-(<br>原来在WIN31下可以找(凡是EXE都列出来让你选).<br>WIN95/98/NT这种方法就不行了(太多).<br>还是允许自己选好一些(OPENDIALOG.OPEN), 添加到列表中去.<br>再有, 从PROGRAM Menu中找.<br>
 
就算你找到了安装的应用程序,但它也不一定支持"在你的程序里激活"呀?<br><br>你说的"激活"仅仅指调用(winexec)吧?
 
我再说清楚一些,我想做一个容器,当我点击一个应用程序后,相应的应用程序<br>在我所作的容器窗口内运行,并不是要它在window中运行。
 
有意思,我也想知道,<br>刚巧,今天找到一个老游戏DIGGER,有一个WINDIG的外包,<br>还没研究,但DIGGER确实在它的窗口中运行。
 
有新意,值得关注。
 
不可能,除非该程序支持.<br>
 
cakk, 应该是可能的, 但相当相当麻烦. <br>加载还可以用shellexecute, 把某个容器(比如Panel)作为被调用程序的parent window即<br>可实现在我的form的client中执行其他程序. <br>但是要真正能用还有大量工作要做的. 比如被运行的程序无法得到键盘输入焦点. 最近正在考虑<br>这个问题, 还没找到解决办法.
 
试试下面代码。<br><br>procedure TForm1.FormClick(Sender: TObject);<br>var t1,t2:Integer;<br>&nbsp; &nbsp; wnd:HWND;<br>begin<br>&nbsp;WinExec('NotePad.exe',SW_NORMAL);<br>&nbsp;t1:=GetTickCount;<br>&nbsp;t2:=t1;<br>&nbsp;while t2-t1&lt;2000 do begin<br>&nbsp; &nbsp;t2:=GetTickCount;<br>&nbsp; &nbsp;wnd:=GetForegroundWindow;<br>&nbsp; &nbsp;if wnd&lt;&gt;Handle then begin<br>&nbsp; &nbsp; &nbsp;Windows.SetParent(wnd,Handle);<br>&nbsp; &nbsp; &nbsp;Break;<br>&nbsp; &nbsp;end;<br>&nbsp;end;<br>end;<br><br>被运行的程序可以得到键盘输入焦点呀。
 
我按照o*o的办法能在我自己的form内运行应用程序了,但是又出现<br>了另外一个问题:此应用程序最大化时没法隐藏掉上面的蓝色标题栏,<br>有没有什么办法解决?<br>另外,如何找到机器上已安装的应用程序有哪些?
 
是不是可以给他发消息,使他无边框?<br>eyes应该知道.
 
附加功能 &nbsp; 将问题提前 &nbsp; &nbsp;
 
这个问题居然都有一年了
 
Unicorn:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。<br>
 
接受答案了.
 
后退
顶部