如何隐式调用外部程序?(50分)

  • 主题发起人 主题发起人 jma
  • 开始时间 开始时间
J

jma

Unregistered / Unconfirmed
GUEST, unregistred user!
如何隐式调用外部程序?<br>就象WINZIP中调用ARJ,RAR等外部程序一样,没有窗口.<br>
 
其实Winzip调用arj也是有个最小化窗口的!<br>不妨用shellexec也弄个最小化窗来试试……
 
WinExec('arj',SW_HIDE);<br><br>ok?<br>我试着没问题。
 
向这样的小程序是没问题的!<br>
 
怎么又是一个?<br>如果不用会长的方法,可以用SHELLEXECUTE
 
如果是控制台程序(DOS或Win32 Console),应该用CreateProcess(),<br>将标准输入/输出重定向之后就可以了.<br><br>如果是GUI的,也应该用CreateProcess(),取得其进程的句柄和ID,然后隐藏<br>其主窗口,再将其进程登记为服务进程,可以在任务管理器中的任务列表中消<br>失.但进程列表中还是有的.
 
我知道一个方法, 连在任务管理器的任务列表中都没有. 只是该函数太长,<br>这里放不下.<br>
 
就是这个吧:<br>DWORD RegisterServiceProcess(<br>&nbsp; DWORD dwProcessId, &nbsp;<br>&nbsp; DWORD dwType &nbsp; &nbsp; &nbsp; &nbsp;<br>);<br>&nbsp;<br>Parameters<br>dwProcessId <br>Specifies the identifier of the process to register as a service process. Specifies NULL to register the current process. <br>dwType <br>Specifies whether the service is to be registered or unregistered. This parameter can be one of the following values. Value Meaning <br>0 Unregisters the process as a service process. <br>1 Registers the process as a service process. <br><br>Return Value<br>The return value is 1 if successful or 0 if an error occurs.
 
用API函数WINEXEC执行该程序, 然后用ShowWindow函数使其最小化,最小化后仍可用SendMessage函数向其窗口发消息.
 
多人接受答案了。
 
后退
顶部