请问在98系统下,如何在调用winexec之后,关闭ms-dos窗口?(50分)

  • 主题发起人 主题发起人 NUAA的jiujiu
  • 开始时间 开始时间
N

NUAA的jiujiu

Unregistered / Unconfirmed
GUEST, unregistred user!
我在98系统下,使用winexec函数 WinExec(pchar('net use //'+LvComputer.Items[LvComputer.ItemIndex].SubItems[0]+' '+'""'+' /user:guest'),SW_HIDE);来建立和客户端机器的连接,但是这样会有一个问题,就是98系统不会自动关闭msdos窗口,在任务管理器中可以看到一个winoldap的进程随着WinExec的执行而不断增加,请问如何解决这个问题?
 
var<br>&nbsp;HWndCalculator : HWnd;<br>begin<br>&nbsp;HWndCalculator := FindWindow(nil, '扫雷'); // close the exist Calculator<br>&nbsp;if HWndCalculator&lt;&gt;0 then<br>&nbsp;PostMessage(HWndCalculator, WM_CLOSE, 0, 0);<br>end; &nbsp; <br><br>把"扫雷"换成"MS-DOS"试试<br><br>
 
var<br>&nbsp;HWndCalculator : HWnd;<br>begin<br>&nbsp;HWndCalculator := FindWindow(nil, '扫雷'); // close the exist Calculator<br>&nbsp;if HWndCalculator&lt;&gt;0 then<br>&nbsp;sendMessage(HWndCalculator, WM_CLOSE, 0, 0);<br>end; &nbsp; <br><br>把"扫雷"换成"MS-DOS"试试吧<br>记住,这是通过标题关闭程序的,标题要确定啊,如果不确定也可以的,就用模糊的方法也可以的,那有点复杂了
 
楼上的老大,好像不行啊
 
我在2000下面可以用下面的程序如果98的话可能把CMD改为COMMAND就行了你可以看一下进程表.<br>var<br>hCurrentWindow: HWnd;<br>szText: array[0..254] of char;<br>fsnapshothandle:Thandle;<br>fprocessentry32:Tprocessentry32;<br>processid:integer;<br>processhndle:Thandle;<br>s:string ;<br>&nbsp;ret:bool;<br>begin<br>&nbsp; fsnapshothandle:=createtoolhelp32snapshot(th32cs_snapprocess,0);<br>&nbsp;fprocessentry32.dwSize:=sizeof(fprocessentry32);<br>&nbsp;ret:=process32first(fsnapshothandle,fprocessentry32);<br>while ret do<br>&nbsp; begin<br>&nbsp; s:=extractfilename(fprocessentry32.szExeFile );<br>&nbsp; if s='cmd.exe' then &nbsp;//这边注意大小写,你可以用ANSIUPPERCASE<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; processid:=fprocessentry32.th32ProcessID;<br>&nbsp; &nbsp; &nbsp; s:='';<br>&nbsp; &nbsp; &nbsp; break;<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; &nbsp; ret:=process32next(fsnapshothandle,fprocessentry32);<br>end;<br>processhndle:=openprocess(PROCESS_TERMINATE,false,processid);<br>ret:=TerminateProcess(processhndle,0);
 
后退
顶部