線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1945
推到 Plurk!
推到 Facebook!

請問ShellExecuteInfo

尚未結案
karin
一般會員


發表:3
回覆:4
積分:1
註冊:2004-07-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-09 15:29:39 IP:202.39.xxx.xxx 未訂閱
我寫了一隻遠端監控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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-09 15:34:23 IP:202.39.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-11 16:32:22 IP:61.62.xxx.xxx 未訂閱
這是我的猜測,您試試看。
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;
系統時間:2024-09-30 12:47:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!