在 WaitForSingleObject 等待的情況下,如何顯示桌面 |
缺席
|
wangccw
一般會員 發表:21 回覆:39 積分:17 註冊:2005-01-30 發送簡訊給我 |
一個FORM ,使用WaitForSingleObject 去呼叫並咬住外部程式(例如NOTEPAD),當點選 快速啟動內的"顯示桌面",無法像一般
程式縮小及還原。 請問各位有何其它方法達成 在主程式咬住外部程式時,按下"顯示桌面" 時,主程式及外部程式同時 縮小 或還原 視窗。 [code delphi] unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button2: TButton; procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; hProcess: THandle; {進程句柄} implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); var pInfo: TProcessInformation; sInfo: TStartupInfo; ThreadID: DWORD; begin FillChar(sInfo, SizeOf(sInfo), 0); if CreateProcess(nil, PChar('notepad'), nil, nil, false, CREATE_NEW_PROCESS_GROUP NORMAL_PRIORITY_CLASS, nil, nil, sInfo, pInfo) then begin hProcess := pInfo.hProcess; if WaitForSingleObject(hProcess, INFINITE) = WAIT_OBJECT_0 then begin end; end; end; end. [/code] |
wangccw
一般會員 發表:21 回覆:39 積分:17 註冊:2005-01-30 發送簡訊給我 |
經過多方測試之後,想到了另外一個繞彎的解決。
即 主程式要呼叫咬住外部程式前,先將 主程式FORM 的 Visible 設成 false, 這樣 按下 "顯示桌面" 時,外部程式就可正常縮放。然後當關掉外部程式後,再將 主form 的 visible 設成 true,完成,收工。 另外因為關掉外部程式時,有可能 主form 是縮在工作列,所以要再呼叫 ForceForegroundWindow,來還原視窗。 有達到顯示桌面的效果,但似乎不是正解,希望其它人有比較好的解決的話,也可以討論。 備註: ForceForegroundWindow是參考 P.D 版大的程式 http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=93920 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |