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

MultiDesktop1.1

 
lovejingtao
一般會員


發表:10
回覆:33
積分:13
註冊:2003-04-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-30 10:58:36 IP:220.173.xxx.xxx 未訂閱
MultiDesktop1.1 冷静的思考问题 充满激情的工作
附加檔案:52463_MultiDesktop1.1.zip
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-07 13:02:41 IP:211.96.xxx.xxx 未訂閱
這個控件有很大的問題存在,我不知道是不是作業系統的差別還是怎麼,運行demo程序之後,發生taskbar工作列完全無任何回應,所有窗体縮小之後都變成疊層方式縮在工作列上方,另外,我的打印機對列中出現了一堆奇怪的打印工作,由於這個控件無任何源碼可以觀看是哪里有問題,所以請教原作是何問題了。 藏私の禁止
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-07 13:04:21 IP:211.96.xxx.xxx 未訂閱
忘了,我的作業系統是簡体中文XP SP1版本(我用繁体輸入法) 藏私の禁止
lovejingtao
一般會員


發表:10
回覆:33
積分:13
註冊:2003-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-09 16:55:39 IP:220.173.xxx.xxx 未訂閱
Only run at:Windows NT WorkStation,Windows NT Server和Windows2000. code is easy.. unit MultiDesktop; interface uses Windows, Messages, Classes, Variants; type TMultiDesktop = class(TComponent) private { Private declarations } m_hDesktop:HDESK; FStrDesktopName:string; bStartExplorer:Bool; FStrVersion:string; FStrAbout:string; procedure SetVersion(const StrVersion:String); procedure SetAbout(const StrVersion:String); procedure SetDeskTopName(const StrDeskTopName:String); protected { Protected declarations } public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override; function Open:Bool; procedure Close; function Switch:Bool; function DefaultDesktop:Bool; published { Published declarations } property DeskTopName :string read FStrDesktopName write SetDeskTopName; property Version :string read FStrVersion write SetVersion; property About :string read FStrAbout write SetAbout; end; procedure Register; implementation procedure Register; begin RegisterComponents('138soft', [TMultiDesktop]); end; { TMultiDesktop } function _CloseWinDowsProc(hWnd:HWND;lParam:LPARAM):BOOL; stdcall; var dwProcessId:DWORD; begin GetWindowThreadProcessId(hWnd,dwProcessId); if GetCurrentProcessId=dwProcessId then PostMessage(hWnd,WM_CLOSE,0,0) else PostMessage(hWnd,WM_QUIT,0,0); Result:=True; end; procedure TMultiDesktop.Close; begin if m_hDesktop<>NULL then Windows.EnumDesktopWindows(m_hDesktop,@_CloseWinDowsProc,0); Windows.CloseDesktop(m_hDesktop); m_hDesktop:=0; end; constructor TMultiDesktop.Create(AOwner: TComponent); begin inherited; FStrDesktopName:='138soft'; bStartExplorer:=False; FStrVersion:='1.1'; FStrAbout:='http://www.138soft.com.2003,12,3.'; //if not(csDesigning in ComponentState) then Open; end; destructor TMultiDesktop.Destroy; begin //if not(csDesigning in ComponentState) then Close; inherited; end; function TMultiDesktop.Open: Bool; var dwRights:DWORD; begin if FStrDesktopName='' then FStrDesktopName:='138soft'; dwRights:=DESKTOP_READOBJECTS or DESKTOP_CREATEWINDOW or DESKTOP_CREATEMENU or DESKTOP_HOOKCONTROL or DESKTOP_JOURNALRECORD or DESKTOP_JOURNALPLAYBACK or DESKTOP_ENUMERATE or DESKTOP_WRITEOBJECTS or DESKTOP_SWITCHDESKTOP or STANDARD_RIGHTS_REQUIRED or READ_CONTROL or WRITE_DAC or WRITE_OWNER; m_hDesktop:=Windows.CreateDesktop(Pchar(FStrDesktopName),nil,nil,DF_ALLOWOTHERACCOUNTHOOK,dwRights,nil); Result:=m_hDesktop<>NULL; end; procedure TMultiDesktop.SetDeskTopName(const StrDeskTopName: String); function Trim(const S: string): string; var I, L: Integer; begin L := Length(S); I := 1; while (I <= L) and (S[I] <= ' ') do Inc(I); if I > L then Result := '' else begin while S[L] <= ' ' do Dec(L); Result := Copy(S, I, L - I 1); end; end; begin if Trim(StrDeskTopName)='' then MessageBox(0,'The DeskTopName Cann''t be NULL!','TMultiDesktop',MB_ICONINFORMATION MB_TOPMOST) else FStrDesktopName:=StrDeskTopName; end; function TMultiDesktop.Switch: Bool; var pi:TProcessInformation; si:TStartupInfo; begin Result:=Windows.SwitchDesktop(m_hDesktop); if not bStartExplorer then begin bStartExplorer:=True; ZeroMemory(@pi,Sizeof(pi)); ZeroMemory(@si,Sizeof(si)); si.cb:=SizeOf(TSTARTUPINFO); si.lpDesktop:=Pchar(FStrDesktopName); CreateProcess(nil,'explorer.exe',nil,nil,True,CREATE_DEFAULT_ERROR_MODE or CREATE_SEPARATE_WOW_VDM,nil,nil,si,pi); CloseHandle(pi.hProcess); end; end; function TMultiDesktop.DefaultDesktop: Bool; function SwitchTo(lpszName: Pchar): Bool; var hDesktop:HDESK; bReturn:Bool; begin Result:=False; hDesktop:=OpenDesktop(lpszName,DF_ALLOWOTHERACCOUNTHOOK,FALSE,DESKTOP_SWITCHDESKTOP); if hDesktop=NULL then Exit; bReturn:=Windows.SwitchDesktop(hDesktop); CloseDesktop(hDesktop); Result:=bReturn; end; begin Result:=SwitchTo('Default'); end; procedure TMultiDesktop.SetVersion(const StrVersion: String); begin ; end; procedure TMultiDesktop.SetAbout(const StrVersion: String); begin ; end; initialization finalization end. 冷静的思考问题 充满激情的工作
系統時間:2024-07-01 21:35:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!