日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows虚拟桌面

發布時間:2024/8/1 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows虚拟桌面 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PROCESS_INFORMATION ProcessInfo; STARTUPINFO StartupInfo; HDESK hDesktop; HDESK hOriginalThread; HDESK hOriginalInput;//核心代碼://創建名稱為“Virtual”的虛擬桌面 hDesktop = CreateDesktop("Virtual", NULL, NULL, 0, GENERIC_ALL , NULL);//初始化創建進程必須的結構體 ZeroMemory(&StartupInfo, sizeof(StartupInfo)); ZeroMemory(&ProcessInfo, sizeof(ProcessInfo)); StartupInfo.cb = sizeof(StartupInfo); StartupInfo.lpDesktop = "Virtual";//記錄原始桌面的句柄 hOriginalThread = GetThreadDesktop(GetCurrentThreadId()); hOriginalInput = OpenInputDesktop(0, FALSE, DESKTOP_SWITCHDESKTOP);//創建桌面外殼進程 CreateProcess(NULL, "explorer", NULL, NULL, FALSE, 0, NULL, NULL, &StartupInfo, &ProcessInfo);//下面是桌面切換代碼: SetThreadDesktop(hDesktop); //設置桌面活動焦點是虛擬桌面 SwitchDesktop(hDesktop); //切換到虛擬桌面 SetThreadDesktop(hOriginalThread); SwitchDesktop(hOriginalInput); CloseDesktop(hDesktop); //關閉虛擬桌面//核心代碼就是這些,然后加入熱鍵,設置程序切換時的特效什么的就自由添加好了 附上程序源代碼://stdafx.h//由于用到漸顯漸隱的效果,需要加入AnimateWindow,由于VC6的限制,要在最上面加入#undef WINVER #define WINVER 0X500//VitualDesktopDlg.hpublic:PROCESS_INFORMATION ProcessInfo;STARTUPINFO StartupInfo;HDESK hDesktop;HDESK hOriginalThread;HDESK hOriginalInput;BOOL IsOriginalDesktopActive; //是否在原始桌面rzBOOL IsInitialDesktop; //是否初始化桌面,防止灰色按鈕克星造成不可估計的后果BOOL IsWindowShow; //程序是否可見protected:afx_msg LRESULT OnHotKey(WPARAM wParam, LPARAM lParam);//自定義熱鍵消息//VitualDesktopDlg.cpp #include <WINUSER.H> #pragma comment(lib, "user32.lib")  //這兩個是AnimateWindow要的頭和庫BEGIN_MESSAGE_MAP(CVitualDesktopDlg, CDialog) //{{AFX_MSG_MAP(CVitualDesktopDlg)ON_MESSAGE(WM_HOTKEY, OnHotKey) //鏈接熱鍵消息 //}}AFX_MSG_MAP END_MESSAGE_MAP()BOOL CVitualDesktopDlg::OnInitDialog() {CDialog::OnInitDialog();ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW); //設置窗體樣式為工具樣式,這樣任務欄就沒有圖標了 SetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon IsOriginalDesktopActive = FALSE;IsInitialDesktop = TRUE;IsWindowShow = TRUE;RegisterHotKey(m_hWnd, 521, MOD_WIN, 'X'); //設置顯示程序熱鍵為 Win+Xreturn TRUE; // return TRUE unless you set the focus to a control }void CVitualDesktopDlg::OnOK() {if (IsInitialDesktop) //第一次運行時初始化程序,加上判斷防止灰色按鈕克星   {//創建名稱為“Virtual”的虛擬桌面hDesktop = CreateDesktop("Virtual", NULL, NULL, 0, GENERIC_ALL , NULL);//初始化創建進程必須的結構體ZeroMemory(&StartupInfo, sizeof(StartupInfo));ZeroMemory(&ProcessInfo, sizeof(ProcessInfo));StartupInfo.cb = sizeof(StartupInfo);StartupInfo.lpDesktop = "Virtual";//記錄原始桌面的句柄hOriginalThread = GetThreadDesktop(GetCurrentThreadId()); hOriginalInput = OpenInputDesktop(0, FALSE, DESKTOP_SWITCHDESKTOP);//創建桌面外殼進程CreateProcess(NULL, "explorer", NULL, NULL, FALSE, 0, NULL, NULL, &StartupInfo, &ProcessInfo);//完成初始化,以后不會再次被調用,防止打開虛擬桌面出現資源管理器IsInitialDesktop = !IsInitialDesktop;SetThreadDesktop(hDesktop); //設置桌面活動焦點是虛擬桌面SwitchDesktop(hDesktop); //切換到虛擬桌面 GetDlgItem(IDOK)->EnableWindow(FALSE); //設置初始化按鈕失效,只允許熱鍵操作RegisterHotKey(m_hWnd, 1314, MOD_ALT, 'Z'); //設置熱鍵為 Alt+Z   }return;CDialog::OnOK(); }void CVitualDesktopDlg::OnClose() {//注銷熱鍵UnregisterHotKey(m_hWnd, 1314);UnregisterHotKey(m_hWnd, 521);//關閉創建的explorerif (!IsInitialDesktop){HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessInfo.dwProcessId); //獲取虛擬桌面的explorer句柄if(hProcess) {TerminateProcess(hProcess, 1); //結束虛擬桌面的explorer     }CloseHandle(hProcess);}exit(0);CDialog::OnClose(); }LRESULT CVitualDesktopDlg::OnHotKey(WPARAM wParam, LPARAM lParam) {if (wParam == 1314) //消息為 Alt+Z 時   {if (IsOriginalDesktopActive) //是否在原始桌面     {hDesktop = CreateDesktop("Virtual", NULL, NULL, 0, GENERIC_ALL , NULL); //創建虛擬桌面(與CloseDesktop相對應)       SetThreadDesktop(hDesktop);SwitchDesktop(hDesktop);} else{SetThreadDesktop(hOriginalThread);SwitchDesktop(hOriginalInput);CloseDesktop(hDesktop); //關閉虛擬桌面     }IsOriginalDesktopActive = !IsOriginalDesktopActive;}if (wParam == 521){if (IsWindowShow){AnimateWindow(m_hWnd, 521, AW_BLEND|AW_HIDE);  //隱藏窗口     }else{AnimateWindow(m_hWnd, 521, AW_BLEND);    //顯示窗口     }IsWindowShow = !IsWindowShow;}return TRUE; }

?

轉載于:https://www.cnblogs.com/2018shawn/p/9836620.html

總結

以上是生活随笔為你收集整理的Windows虚拟桌面的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。