精华内容
下载资源
问答
  • Windows 桌面各个窗口的获取
    千次阅读
    2015-02-16 00:56:44

    /*


     shellwindow.h


     sdragonx 2015-02-12 12:23:16


    */
    #ifndef SHELLWINDOW_H_20150212122316
    #define SHELLWINDOW_H_20150212122316


    #include <windows.h>


    const static PTCHAR CLASS_NAME_TASKMAN = TEXT("Shell_TrayWnd");
    const static PTCHAR CLASS_NAME_PROGMAN = TEXT("Progman");
    const static PTCHAR CLASS_NAME_SHELL   = TEXT("SHELLDLL_DefView");
    const static PTCHAR CLASS_NAME_SYSLIST = TEXT("SysListView32");
    const static PTCHAR CLASS_NAME_WORKERW = TEXT("WorkerW");


    //GetDesktopWindow取得的窗口是绝对的父亲,在spy++中所有窗口都是它的子孙,
    //由Windows环境子系统进程CSRSS.exe创建。窗口类名#32769


    //任务栏
    HWND GetTaskmanWindow()
    {
    return FindWindow(CLASS_NAME_TASKMAN, NULL);
    }


    //GetShellWindow(),取得的窗口是个顶层窗口,由explorer.exe创建。窗口类名Progman。
    //如果没有外壳进程存在,这个函数返回NULL。
    HWND GetProgmanWindow()
    {
    //return FindWindow(CLASS_NAME_PROGMAN, NULL);
    return ::GetShellWindow();
    }


    //菜单层
    HWND GetShellViewWindow()
    {
    HWND hProgmanWindow = GetProgmanWindow();
    HWND hShellWindow = NULL;
    HWND hWorkerW = NULL;


    hShellWindow = FindWindowEx(hProgmanWindow, NULL, CLASS_NAME_SHELL, NULL);
    if(hShellWindow)
    {
    return hShellWindow;
    }


    while(!hShellWindow)
    {
    hWorkerW = FindWindowEx(NULL, hWorkerW, CLASS_NAME_WORKERW, NULL);
    if(!hWorkerW)
    break;
    hShellWindow = FindWindowEx(hWorkerW, NULL, CLASS_NAME_SHELL, NULL);
    }
    return hShellWindow;
    }


    //图标层
    HWND GetSysListWindow()
    {
    return FindWindowEx(GetShellViewWindow(), NULL, CLASS_NAME_SYSLIST, NULL);
    }


    //获得动态壁纸层
    //这个会返回false,因为win8的桌面层次不稳定
    //纯色 xp结构
    //普通  Progman
    //    WorkerW\SHELLDLL_DefView\SysListView32
    //Win8.1在幻灯片模式下,才有这个动态壁纸层
    HWND GetDesktopWallpaperWindow()
    {
        HWND hProgmanWindow = GetProgmanWindow();
        HWND hWorkerW = FindWindow(CLASS_NAME_WORKERW, NULL);
        while(hWorkerW)
        {
            if(GetParent(hWorkerW) == hProgmanWindow)
                break;
            hWorkerW = FindWindowEx(NULL, hWorkerW, CLASS_NAME_WORKERW, NULL);
        }


        return hWorkerW;
    }
    #endif //SHELLWINDOW_H_20150212122316

    更多相关内容
  • 主要介绍了C# Windows API应用之基于GetDesktopWindow获得桌面所有窗口句柄的方法,结合实例形式分析了GetDesktopWindow函数用于获取窗口句柄的具体使用方法与相关注意事项,需要的朋友可以参考下
  • html+css+js仿windows桌面、windows窗口

    热门讨论 2013-04-13 17:11:44
    用html、css、js实现的windows桌面窗口。包括开始菜单、状态蓝、窗口等。和windows系统操作方法一样,如双击图标打开窗口,不用的窗口最小化到状态蓝,右击桌面图标可打开右键菜单。开始菜单中附件---游戏中有常见...
  • Qt 窗口嵌入桌面 窗口 放在桌面

    千次阅读 2020-08-20 12:58:35
    当按下Win+D是,桌面干净了,只剩下了这个贴在桌面的。。。 2.用法 #ifdef Q_OS_WIN #include "CWindows.h" #endif 伪代码{ QLabel *pLabel = new QLabel(); pLabel->setText("hello desktop"); pLabel->...

    1.效果

    当按下Win+D是,桌面干净了,只剩下了这个贴在桌面的。。。
    在这里插入图片描述

    2.用法

    #ifdef Q_OS_WIN
    #include "CWindows.h"
    #endif
    
    伪代码{
    	QLabel *pLabel = new QLabel();
    	pLabel->setText("hello desktop");
    	pLabel->setGeometry(20,20,200,30);
    	
    	setParentDesktop(pLabel);
    }
    
    

    2.代码

    头文件

    #ifndef CWINDOWS_H
    #define CWINDOWS_H
    
    #include <QWidget>
    
    #ifdef Q_OS_WIN
    #include "windows.h"
        bool enumUserWindowsCB(HWND hwnd, LPARAM lParam);
        void setParentDesktop(QWidget *pWidget);
    #endif //Q_OS_WIN
    
    #endif // CWINDOWS_H
    
    

    源文件

    #include "CWindows.h"
    
    #ifdef Q_OS_WIN
    //#include "windows.h"
    bool enumUserWindowsCB(HWND hwnd, LPARAM lParam)
    {
        long wflags = GetWindowLong(hwnd, GWL_STYLE);
        if (!(wflags & WS_VISIBLE)) {
            return TRUE;
        };
    
        HWND sndWnd;
        if (!(sndWnd=FindWindowEx(hwnd, NULL, L"SHELLDLL_DefView", NULL))) {
            return TRUE;
        }
        HWND targetWnd;
        if (!(targetWnd=FindWindowEx(sndWnd, NULL, L"SysListView32", L"FolderView"))) {
            return TRUE;
        }
    
        HWND* resultHwnd = (HWND*)lParam;
        *resultHwnd = targetWnd;
        return FALSE;
    }
    
    void setParentDesktop(QWidget *pWidget)
    {
        HWND resultHwnd = NULL;
        EnumWindows((WNDENUMPROC)enumUserWindowsCB, (LPARAM)&resultHwnd);
    
        // 设置桌面为父窗口
        if (resultHwnd) {
            SetParent((HWND)pWidget->winId(), resultHwnd);
        }
    }
    #endif
    
    
    
    
    展开全文
  • 第 10 课 Windows 桌面窗口Windows 桌面 桌面对象操作 桌面对象操作 双击快捷方式 单击快速启动区图标 单击输入法按钮 结果 打开对应的程序窗口 打开对应的程序窗口 打开输入法菜单 鼠标指向时间 / 日期指示...
  • windows7中,桌面指的是什么

    千次阅读 2021-06-16 09:19:42
    桌面(英文:Desktop),是计算机用语。桌面是打开计算机并登录到系统之后...扩展资料:桌面的定义广泛,它包括任务栏和Windows边栏。其中Windows边栏只存在Windows Viata系统中。任务栏位于屏幕的底部,显示程序,...

    桌面(英文:Desktop),是计算机用语。桌面是打开计算机并登录到系统之后看到的显示器主屏幕区域。就像实际的桌面一样,它是用户工作的平面。打开程序或文件夹时,它们便会出现在桌面上。还可以将一些项目(如文件和文件夹)放在桌面上,并且随意排列它们。

    efff73acba12f36e920838c05047de06.png

    扩展资料:

    桌面的定义广泛,它包括任务栏和Windows边栏。其中Windows边栏只存在Windows Viata系统中。任务栏位于屏幕的底部,显示程序,并可以在它们之间进行切换。它还包含“开始”按钮 ,使用该按钮可以访问程序、文件夹和计算机设置。边栏位于屏幕的一侧,包含称为小工具的小程序。

    1、桌面位置

    桌面文件夹一般位于相应的用户文件夹中,假设为XP系统,并且安装在C盘,当前用户为USER,则USER的桌面文件夹位置为“C:\Documents and Settings\USER\桌面”。

    另外,在默认状态下,用户名为USER的桌面还会继承“ALL USERS”和"DEFAULT USERS"两个文件夹中内容。假设为Windows 7系统,并且安装在D盘,当前用户为USER2,则USER2的桌面文件夹位置为“D:\Users\USER2\Desktop”。

    2、移动桌面

    习惯上用户都会把比较常用的重要的文档放在桌面便于操作,但这样也造成了不便,在不清楚状况的时候被重装了系统,特别是用克隆(ghost)就极可能造成数据丢失了,在这种情况下,用户就有必要对桌面文件夹的位置进行一下移动了。

    如果只是剪切桌面的目录,直接粘贴到其他的分区,并不能真正移动桌面文件夹所在位置。因为桌面所在文件夹还受到注册表中多个注册表项影响。强制移动桌面所在文件夹位置可能会造成无法登录Windows、不能创建宽带连接等错误。

    参考资料来源:百度百科-桌面

    展开全文
  • 遍历Windows桌面上所有窗口

    千次阅读 2016-04-21 00:53:48
    # 遍历Windows桌面上所有窗口 ## 引言 昨日lexli在工作中遇到这样一个问题:一款性能测试软件需要知道桌面上窗口的Title,同时需要知道软件启动后Title分别被设置了几次,设置的title分别对应什么。通常我们可以...

    引言

    昨日lexli在工作中遇到这样一个问题:一款性能测试软件需要知道桌面上窗口的Title,同时需要知道软件启动后Title分别被设置了几次,设置的title分别对应什么。通常我们可以直接查看窗口的缩略图,得到对应的标题。但是,对于软件启动后设置了多少次title以及每次title分别被设置为什么,这个问题突然感到无从下手。不过幸好公司有熟悉windows编程的高手,稍微一点拨知道原来可以通过windows API获得这些相关信息。下面,将自己经过点拨后的思路记录下来,方便以后不定期回顾。

    需求分析

    这里,通过对原来问题进行分解,可以将这个问题抽象为这样两个步骤:
    * 遍历当前桌面上的所有窗口,得到每一个窗口的HWND
    * 根据遍历到的窗口HWND,获取窗口的Title以及ClassName
    而这两个步骤正好对应了相关的windows API.他们分别是:
    EnumWindows
    EnumChildWindows
    GetWindowText
    GetClassName
    这里分别介绍下上面四个API:EnumWindows可以遍历当前屏幕上所有的父窗口(带有WS_CHILD属性风格);EnumChildWindows配合EnumWindows,可以遍历父窗口下所有的子窗口(以及子窗口的子窗口,会进行递归查找);GetWindowText可以通过遍历到的HWND得到对应window的Title;GetClassName则通过遍历得到的HWND获取对应Window的Class属性。了解了上述API属性后,我们就可以编写相关代码来进行验证了。

    代码验证

    按照上文提出的需求分解,我们将首先实现第一个步骤:得到每一个窗口的HWND。

    #include <iostream>
    #include <Windows.h>
    
    using namespace std;
    
    BOOL CALLBACK EnumChildProc(_In_ HWND   hwnd, _In_ LPARAM lParam)
    {
        cout << "[Child window] window handle: " << hwnd << endl;
    
        return TRUE;
    }
    
    
    BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
    {
    
        /*
         * Remarks
            The EnumWindows function does not enumerate child windows, 
            with the exception of a few top-level windows owned by the 
            system that have the WS_CHILD style.
         */
        cout << "[Parent window] window handle: " << hwnd << endl;
        EnumChildWindows(hwnd, EnumChildProc, lParam);
    
        return TRUE;
    }
    
    
    int main(int argc, char *argv[])
    {
        EnumWindows(EnumWindowsProc, 0);
        return 0;
    }
    

    注意 回调函数的返回值必须为TRUE才能保证系统会依次遍历每一个窗口。如果返回值非TRUE,则在当前窗口后不会进行后续的遍历动作。

    在得到了所有窗口的HWND后,获取Title和ClassName就太简单了,直接用窗口的HWND + API去获取。这样,整个需求的完整实现如下:

    #include <iostream>
    #include <Windows.h>
    
    using namespace std;
    
    BOOL CALLBACK EnumChildProc(_In_ HWND   hwnd, _In_ LPARAM lParam)
    {
        char szTitle[MAX_PATH] = {0};
        char szClass[MAX_PATH] = {0};
        int nMaxCount = MAX_PATH;
    
        LPSTR lpClassName = szClass;
        LPSTR lpWindowName = szTitle;
    
        GetWindowTextA(hwnd, lpWindowName, nMaxCount);
        GetClassNameA(hwnd, lpClassName, nMaxCount);
        cout << "[Child window] window handle: " << hwnd << " window name: " 
            << lpWindowName << " class name " << lpClassName << endl; 
    
        return TRUE;
    }
    
    
    BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
    {
    
        /*
         * Remarks
            The EnumWindows function does not enumerate child windows, 
            with the exception of a few top-level windows owned by the 
            system that have the WS_CHILD style.
         */
        char szTitle[MAX_PATH] = {0};
        char szClass[MAX_PATH] = {0};
        int nMaxCount = MAX_PATH;
    
        LPSTR lpClassName = szClass;
        LPSTR lpWindowName = szTitle;
    
        GetWindowTextA(hwnd, lpWindowName, nMaxCount);
        GetClassNameA(hwnd, lpClassName, nMaxCount);
        cout << "[Parent window] window handle: " << hwnd << " window name: " 
            << lpWindowName << " class name " << lpClassName << endl; 
    
        EnumChildWindows(hwnd, EnumChildProc, lParam);
    
        return TRUE;
    }
    
    
    int main(int argc, char *argv[])
    {
        EnumWindows(EnumWindowsProc, 0);
        return 0;
    } 
    

    结论

    1. EnumWindows API是实现该需求的核心,需要了解其含义
    2. GetWindowText以及GetClassName都是可以查MSDN得到了
    3. 最重要的一点:对于自己不熟悉的领域,多交流,别人的一句点拨可以是你少走太多的弯路。
    展开全文
  • 按下后,会立马隐藏电脑桌面上的所有窗口。再按依次Win+D,又可以全部恢复。 2、win+L 用于切换到锁屏界面。如果电脑设置了密码,可以保护电脑内容,离开电脑时,可使用这个快捷键。 3、https://www.fakeupdate.net/...
  • 桌面窗口管理器和csrss导致Windows的GPU和内存占用过高而卡顿 前言 若有使用桌面动态壁纸软件(如wallpaper) wallpaper卡顿优化 更换显卡设置,不使用集显 NVDIA控制面板 window电源设置 前言 csrss(Client Server ...
  • 文章目录前言窗口采集源和桌面采集源的注册窗口采集选择桌面采集方式 DXGI or WGC总结技术参考 前言 obs系列文章入口:https://blog.csdn.net/qq_33844311/article/details/121479224 微软的窗口采集分主要是有以下...
  • 仿windows web桌面

    热门讨论 2011-12-16 12:51:27
    web桌面 js桌面 仿windows桌面 仿windows web桌面 jsp桌面 一款与windows一样操作效果的js web桌面程序.
  • 显然,WindowsWindows的核心。他们是如此重要,他们命名操作系统。但是,窗户是什么?当你想到一个窗口,你可能会想到这样的事情: 应用程序窗口的屏幕截图 这种类型的窗口被称为应用程序窗口或主窗口。它通常有一个...
  • Windows Vista之前,Windows程序会直接画到屏幕上。换句话说,程序会直接写入显卡所显示的内存缓冲区。如果窗口没有正确重绘,这种方法会导致视觉失真。例如,如果用户在另一个窗口上拖动了一个窗口,并且下面的窗口...
  • Windows术语中,这被称为绘画窗口。混合隐喻,一个窗口是一张空白的画布,等着你来填充它。 有时你的程序会启动绘画来更新窗口的外观。在其他时候,操作系统会通知您必须重新绘制一部分窗口。发生这种情况时,操作系统...
  • Windows APIWindows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源…之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘...
  • 如何将windows桌面变成类似mac样式

    千次阅读 热门讨论 2021-08-07 19:17:58
    文章目录背景效果实现步骤便捷的终端终端的选择快速跳转文件夹power shell颜色更改安装vim更改桌面下载MyDockFinder进行配置 背景 最近实习快结束了,用惯了公司的mac电脑,然后用...让windows具有mac一样方便的终端
  • 演练:创建传统的 Windows 桌面应用程序 (c + +)05/28/2020本文内容本演练演示如何在 Visual Studio 中创建传统的 Windows 桌面应用程序。 要创建的示例应用程序使用 Windows API 显示 "Hello,Windows desktop!" ...
  • windows服务启动应用程序,windows服务默认在Session 0,不在当前桌面,启动的程序默认也在那个Session 0,所以你看不到程序界面, 用CreateProcessAsUser启动应用程序才可以看到界面
  • If you often use virtual desktops in Windows 10 to manage your workspaces, you might find that keeping track of windows between them can sometimes be a hassle. Luckily, Windows makes it easy to move w...
  • 桌面窗口管理器(dwm.exe)是一个合成窗口管理器,可在Windows中呈现所有这些漂亮的效果:透明窗口,实时任务栏缩略图,Flip3D甚至高分辨率监视器支持。 Instead of applications drawing their displays directly to...
  • 用WinForm实现基本Windows桌面应用框架和简单的向导式窗口 Windows Form是用于创建传统Windows应用程序的基本工具,本工程使用C# Windows Form框架并以网上可免费下载到的优化UI组件库为基础创建。(控件原文地址...
  • //定义窗口类 wcex 这时候窗口类相当于模板窗口类WNDCLASSEXW的一个对象 (对象化模板窗口类) wcex . cbSize = sizeof ( WNDCLASSEX ) ; wcex . style = CS_HREDRAW | CS_VREDRAW ; wcex . ...
  • Windows 10桌面的组成,Win10桌面介绍

    千次阅读 2021-06-23 05:33:14
    进入Windows 10操作系统后,用户首先看到的是桌面,接下来我们介绍Windows 10桌面桌面的组成元素主要包括桌面背景、桌面图标和任务栏等。桌面背景桌面背景可以是个人收集的数字图片、Windows 提供的图片、纯色或带...
  • windows桌面文件夹是哪个?

    万次阅读 2021-06-19 06:48:02
    该楼层疑似违规已被系统折叠隐藏此楼查看此楼Windows7 的用户文件夹默认所在位置是系统盘(通常是C盘)下的“\Users”目录之内。该文件夹中储存着所有的用户生成文件,比如你保存在“桌面”上的文件(实际上是保存在C:\...
  • Windows10可以在电脑的查看设置中去除桌面图标左上角的勾选框。1、双击桌面的“这台电脑”图抄标打开电脑的文件管理器界袭面:zhidao大图" class="ikqb_img_alink">2、进入文件管理器界面后,点击窗口顶部的...
  • 桌面窗口管理器占用过高解决办法

    万次阅读 多人点赞 2021-03-24 09:06:40
    在任务管理器中,您会看到桌面窗口管理器(Windows 7上的DWM.exe或以前的Windows版本)的COU使用率很高。 此线程将删除您在Win10系统上关于此CPU问题的所有混淆。 什么是Win10系统上的桌面窗口管理器(DWM.exe)?...
  • mac远程桌面windows

    千次阅读 2021-12-14 10:25:50
    mac与windows通信
  • windows桌面程序开发 大多数在Windows上工作的软件开发人员都有相当标准的工具集:代码编辑器或IDE; Git或其他版本控制系统; 消息传递客户端(Slack或其克隆之一),等等。 由于大多数开发人员工作流程都在线,...
  • Windows API Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源…之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、...
  • windows server 2012 进程 出现 桌面窗口管理器 打开运行 打Cmd ,执行 taskkill /f /im winlogon.exe /t 记住 这个命令会让远程桌面黑屏, 不要着急, 远程按下Ctrl+Alt+End键,打开远程的任务管理器,结束掉 桌面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 147,645
精华内容 59,058
关键字:

windows的桌面是窗口吗