請問ShellExecuteInfo |
尚未結案
|
karin
一般會員 發表:3 回覆:4 積分:1 註冊:2004-07-30 發送簡訊給我 |
我寫了一隻遠端監控Service有沒有正常運作的程式,用了一個Timer,用ShellExecuteInfo去Shell netsvc.exe這個元件,然後把結果導到一個txt檔,再去讀這個txt檔看service的狀況。
可是現在遇到一個問題,程式每次跑了一陣子後就會出現系統資源不足然後就整台電腦當掉,我大概測了一下,發現每次Timer去用ShellExecuteInfo時都會吃掉記憶體,然後Timer一直掃,記憶體就越吃越重,請各位前輩指導我一下,是否哪裡可以調整一下?
以下是我Timer裡的source var
ExitCode: cardinal;
ExecInfo: TShellExecuteInfo;
begin ZeroMemory(@ExecInfo,SizeOf(ExecInfo));
with ExecInfo do begin
cbSize := SizeOf(ExecInfo);
fMask := SEE_MASK_NOCLOSEPROCESS;
lpVerb := 'open';
lpFile :=Pchar('netsvc.exe');
lpParameters := 'netsvc \\Server1 /query Service1 > test.txt';
Wnd := self.Handle;
nShow := SW_HIDE;
end;
ShellExecuteEx(@ExecInfo);
GetExitCodeProcess(ExecInfo.hProcess,ExitCode);
while ExitCode=STILL_ACTIVE do begin
GetExitCodeProcess(ExecInfo.hProcess,ExitCode);
sleep(10);
Application.ProcessMessages;
end; end;
|
karin
一般會員 發表:3 回覆:4 積分:1 註冊:2004-07-30 發送簡訊給我 |
sorry各位,上一面Post的source我沒有段落好,有點難閱讀,以下是我整理好的:
var
ExitCode: cardinal;
ExecInfo: TShellExecuteInfo;
begin ZeroMemory(@ExecInfo,SizeOf(ExecInfo)); with ExecInfo do begin
cbSize := SizeOf(ExecInfo);
fMask := SEE_MASK_NOCLOSEPROCESS;
lpVerb := 'open';
lpFile :=Pchar('netsvc.exe');
lpParameters := 'netsvc \\Server1 /query Service1 > test.txt';
Wnd := self.Handle;
nShow := SW_HIDE;
end; ShellExecuteEx(@ExecInfo);
GetExitCodeProcess(ExecInfo.hProcess,ExitCode);
while ExitCode=STILL_ACTIVE do begin
GetExitCodeProcess(ExecInfo.hProcess,ExitCode);
sleep(10);
Application.ProcessMessages;
end; end;
|
allenchan
資深會員 發表:10 回覆:306 積分:283 註冊:2004-01-06 發送簡訊給我 |
這是我的猜測,您試試看。
var ExitCode: cardinal; ExecInfo: TShellExecuteInfo; begin ZeroMemory(@ExecInfo,SizeOf(ExecInfo)); with ExecInfo do begin cbSize := SizeOf(ExecInfo); fMask := SEE_MASK_NOCLOSEPROCESS; lpVerb := 'open'; lpFile :=Pchar('netsvc.exe'); lpParameters := 'netsvc \\Server1 /query Service1 > test.txt'; Wnd := self.Handle; nShow := SW_HIDE; end; ShellExecuteEx(@ExecInfo); GetExitCodeProcess(ExecInfo.hProcess,ExitCode); while ExitCode=STILL_ACTIVE do begin GetExitCodeProcess(ExecInfo.hProcess,ExitCode); sleep(10); Application.ProcessMessages; end; CloseHandle(ExecInfo.hProcess); end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |