系统相关功能开发(六)-桌面相关

来源:互联网 发布:知乎一句话个人介绍 编辑:程序博客网 时间:2024/06/10 20:16

1.获取桌面对话框


2.获取任务栏对话框句柄

void CDesktopSampleDlg::OnButtonGetBar()// 获取任务栏对话框句柄{HWND hWinBar = ::FindWindow("Shell_TrayWnd","");// 获取任务栏对话框if(hWinBar != NULL)WriteLog("获取任务栏窗口句柄成功=0x%08X", hWinBar);// 输出信息else WriteLog("获取任务栏窗口句柄失败");// 输出错误信息}

3.获取桌面列表视图句柄

void CDesktopSampleDlg::OnButtonGetDesklist()// 获取桌面列表视图句柄{HWND hDeskWnd = ::FindWindow("Progman",NULL);// 获取桌面程序对象if(hDeskWnd == NULL)// 如果获取失败{WriteLog("获取桌面句柄失败。");return;// 显示错误信息并返回}HWND  hSubDeskWnd=::GetDlgItem(hDeskWnd, 0L);// 获取桌面对象中的第一个对象if(hSubDeskWnd == NULL)// 如果获取失败{WriteLog("获取桌面窗体中的对象失败。");return;// 显示错误信息并返回}  HWND  hDeskList=::GetDlgItem(hSubDeskWnd, 1L);// 获取桌面对象中的第一个对象的第二个对象if(hDeskList == NULL)// 如果获取失败{WriteLog("获取桌面窗体中的对象失败。");return;// 显示错误信息并返回}WriteLog("获取桌面列表视图句柄成功=0x%08X", hDeskList);// 输出获取的信息}



4.获取任务栏属性

void CDesktopSampleDlg::OnButtonGettoolbarpro()// 获取任务栏属性{   if(FAILED(CoInitialize(NULL)))// 初始化COM工作环境{WriteLog("初始化COM工作环境失败");return;// 显示错误信息并返回}IShellDispatch* pShellDispatch=NULL;// 定义IShellDispatch接口变量if(SUCCEEDED(CoCreateInstance(CLSID_Shell,NULL,CLSCTX_INPROC_SERVER, IID_IDispatch,(LPVOID*)&pShellDispatch)))   {// 创建IShellDispatch实例if(SUCCEEDED(pShellDispatch->TrayProperties())) WriteLog("显示任务栏属性窗口成功");// 显示成功信息else WriteLog("显示任务栏属性窗口失败");// 显示错误信息}else WriteLog("创建IShellDispatch接口实例失败");// 显示错误信息CoUninitialize();// 释放COM工作环境}



5.隐藏和显示桌面图标

void CDesktopSampleDlg::OnButtonHideDesktop()// 隐藏桌面文件{HWND hDeskWnd = ::FindWindow("Progman",NULL);// 获取桌面文件句柄if(hDeskWnd!=NULL)::ShowWindow(hDeskWnd, SW_HIDE);// 隐藏桌面文件}void CDesktopSampleDlg::OnButtonShowDesktop()// 显示桌面文件{HWND hDeskWnd = ::FindWindow("Progman",NULL);// 获取桌面文件句柄if(hDeskWnd!=NULL)::ShowWindow(hDeskWnd, SW_SHOW);// 显示桌面}



6.隐藏和显示Windows任务栏

void CDesktopSampleDlg::OnButtonHideBar()// 隐藏任务栏{HWND hWinBar = ::FindWindow("Shell_TrayWnd","");// 获取任务栏句柄if(hWinBar!=NULL)::ShowWindow(hWinBar, SW_HIDE);// 隐藏任务栏}void CDesktopSampleDlg::OnButtonShowBar()// 显示任务栏{HWND hWinBar = ::FindWindow("Shell_TrayWnd","");// 获取任务栏句柄if(hWinBar!=NULL)::ShowWindow(hWinBar, SW_SHOW);// 显示任务栏}



7.隐藏和显示“开始”按钮

void CDesktopSampleDlg::OnButtonShowStart()// 显示开始按钮{    HWND hWinBar = ::FindWindow("Shell_TrayWnd","");// 获取任务栏句柄    if(hWinBar!=NULL)    {        HWND hMenu = ::FindWindowEx(hWinBar, 0, "Button", NULL);// 获取开始按钮句柄        if(hMenu!=NULL)::ShowWindow(hMenu, SW_SHOW);// 显示开始按钮        else WriteLog("获取开始按钮对话框句柄失败");// 输出错误信息    }    else WriteLog("获取Windows任务栏句柄失败");// 输出错误信息}void CDesktopSampleDlg::OnButtonHideStart()// 隐藏开始按钮{    HWND hWinBar = ::FindWindow("Shell_TrayWnd","");// 获取任务栏句柄    if(hWinBar!=NULL)    {        HWND hMenu = ::FindWindowEx(hWinBar, 0, "Button", NULL);// 获取开始按钮句柄        if(hMenu!=NULL)::ShowWindow(hMenu, SW_HIDE);// 隐藏开始按钮        else WriteLog("获取开始按钮对话框句柄失败");// 输出错误信息    }    else WriteLog("获取Windows任务栏句柄失败");// 输出错误信息}



8.隐藏和显示任务栏时钟

void CDesktopSampleDlg::OnButtonHideClock()// 隐藏任务栏时钟{HWND hWinBar = ::FindWindow("Shell_TrayWnd",NULL);// 获取任务栏句柄if (hWinBar != NULL)// 如果成功,则{HWND hNotifyWnd = ::FindWindowEx(hWinBar, 0, "TrayNotifyWnd",NULL);// 获取通知托盘句柄if (hNotifyWnd != NULL)// 如果成功,则{HWND hClockWnd = ::FindWindowEx(hNotifyWnd, 0, "TrayClockWClass", NULL);// 获取时钟句柄if(hClockWnd!=NULL)::ShowWindow(hClockWnd, SW_HIDE);// 如果成功,则隐藏时钟else  WriteLog("获取时钟句柄失败");// 显示错误信息}else WriteLog("获取通知托盘句柄失败");// 显示错误信息}else WriteLog("获取任务栏句柄失败");// 显示错误信息}void CDesktopSampleDlg::OnButtonShowClock()// 显示任务栏时钟{HWND hWinBar = ::FindWindow("Shell_TrayWnd",NULL);// 获取任务栏句柄if (hWinBar != NULL)// 如果成功,则{HWND hNotifyWnd = ::FindWindowEx(hWinBar, 0, "TrayNotifyWnd",NULL);// 获取通知托盘句柄if (hNotifyWnd != NULL)// 如果成功,则{HWND hClockWnd = ::FindWindowEx(hNotifyWnd, 0, "TrayClockWClass", NULL);// 获取时钟句柄if(hClockWnd!=NULL)::ShowWindow(hClockWnd, SW_SHOW);// 如果成功,则显示时钟else  WriteLog("获取时钟句柄失败");// 显示错误信息}else WriteLog("获取通知托盘句柄失败");// 显示错误信息}else WriteLog("获取任务栏句柄失败");// 显示错误信息}



9.判断屏幕保护程序是否在运行

void CDesktopSampleDlg::OnButtonSaverscreenRunning()// 判断屏幕保护程序是否在运行{HDESK hDesktop;// 定义桌面句柄    hDesktop = OpenDesktop(TEXT("screen-saver"), 0, FALSE, MAXIMUM_ALLOWED );// 打开桌面屏保程序    if(hDesktop == NULL)// 如果返回的句柄无效,则{if(GetLastError() == ERROR_ACCESS_DENIED)// 如果返回ERROR_ACCESS_DENIED错误=屏保正在运行WriteLog("屏保正在运行");// 输出信息提示else WriteLog("没有运行屏保");// 否则=屏保没有运行}else// 如果返回的句柄有效=屏保正在运行{WriteLog("屏保正在运行");// 输出信息提示CloseDesktop(hDesktop);// 关闭桌面}}



10.判断是否使用大字体

void CDesktopSampleDlg::OnButtonGetFont()// 判断系统是否使用大字体{HWND hWnd = ::GetDesktopWindow();// 获取桌面句柄if (hWnd != NULL)// 如果成功,则{HDChDC = ::GetWindowDC(hWnd);// 获取桌面上下文if (hDC != NULL)// 如果成功,则{intiOldMode = SetMapMode(hDC, MM_TEXT);// 设置上下文映射模式 TEXTMETRIC   tm;// 定义字体结构变量if (GetTextMetrics(hDC,&tm))// 获取桌面上下文字体信息{SetMapMode(hDC,iOldMode);// 恢复桌面上下文的映射模式::ReleaseDC(hWnd,hDC);// 释放上下文资源if (tm.tmHeight > 16)// 使用大字体WriteLog("系统使用的是大字体,大小=%d", tm.tmHeight);else WriteLog("系统使用的不是大字体,大小=%d", tm.tmHeight);   // 没有使用大字体}else WriteLog("获取字体信息失败");// 输出错误信息}else WriteLog("获取桌面上下文失败");// 输出错误信息}else WriteLog("获取桌面句柄失败");// 输出错误信息}



11.改变桌面背景颜色

void CDesktopSampleDlg::OnButtonSetBackgroud()// 改变桌面背景颜色{if (SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "River Sumida.jpg", 0))// 修改桌面背景WriteLog("设置桌面背景成功");// 输出提示信息else WriteLog("设置桌面背景失败");// 输出错误信息}




原创粉丝点击