VC Windows API应用之GetDesktopWindow ——获得桌面所有窗口句柄的方法

Windows API


Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源…之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application), 所以便称之为 Application Programming Interface,简称 API 函数。WIN32 API也就是Microsoft Windows 32位平台的应用程序编程接口。

GetDesktopWindow


函数功能:该函数返回桌面窗口的句柄。桌面窗口覆盖整个屏幕。桌面窗口是一个要在其上绘制所有的图标和其他窗口的区域。 
函数原型:HWND GetDesktopWindow(VOID) 
参数:无。 
返回值:函数返回桌面窗口的句柄。 
速查:Windows NT:3.1以上版本;Windows:95以上版本:; 
头文件:Winuser.h;库文件:user32.lib。 
【声明】 
vb 
Public Declare Function GetDesktopWindow Lib “user32” Alias “GetDesktopWindow” () As Long 
vb_net 
Public Declare Function GetDesktopWindow Lib “user32” Alias “GetDesktopWindow” () As Integer 
c# 
[DllImport(“user32.dll”, EntryPoint = “GetDesktopWindow”, CharSet = CharSet.Auto, SetLastError = true)] 
static extern IntPtr GetDesktopWindow();

【说明】 
  获得代表整个屏幕的一个窗口(桌面窗口)句柄 
【返回值】 
  Long,桌面窗口的句柄

获得桌面所有窗口句柄的方法


创建项目

文件->新建->项目…

编写方法

// GetDesktopWindow.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#define _AFXDLL
#include <afxwin.h>
// 何问起 hovertree.com
//错误 1 error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version.
//Please #define _AFXDLL or do not use /MD[d] e:\programfilesx86\microsoftvisualstudio10\vc\atlmfc\include\afx.h 24 1 GetDesktopWindow int _tmain(int argc, _TCHAR* argv[])
{
//1.先获得桌面窗口
CWnd* pDesktopWnd = CWnd::GetDesktopWindow();
//2.获得一个子窗口
CWnd* pWnd = pDesktopWnd->GetWindow(GW_CHILD);
//3.循环取得桌面下的所有子窗口
while(pWnd != NULL)
{
//获得窗口类名
CString strClassName = _T("");
::GetClassName(pWnd->GetSafeHwnd(),strClassName.GetBuffer(),); //获得窗口标题
CString strWindowText = _T("");
::GetWindowText(pWnd->GetSafeHwnd(),strWindowText.GetBuffer(),); //继续下一个子窗口
pWnd = pWnd->GetWindow(GW_HWNDNEXT);
} return ;
}

推荐:http://www.cnblogs.com/roucheng/p/3456005.html

http://www.cnblogs.com/roucheng/p/wendang.html

VC Windows API获得桌面所有窗口句柄的方法的更多相关文章

  1. C#使用Windows API实现桌面上的遮罩层(鼠标穿透)

    C#使用Windows API实现桌面上的遮罩层(鼠标穿透) C#实现实现桌面上的遮罩层(鼠标穿透)主要通过一下几个API函数来实现:GetWindowLong,SetWindowLong,SetLa ...

  2. Windows api实现桌面任务栏隐藏\显示

    //隐藏任务栏 HWND hWnd = ::FindWindow(TEXT("Shell_traywnd"),TEXT("")); ::SetWindowPos ...

  3. VC++ 实现简单的桌面截图

    使用了EasyX图像库,使用方法请参考:VC++ 制作一个简易的控制台时钟应用 简单的桌面截图代码: ///////////////////////////////////////////////// ...

  4. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

  5. Windows API 函数列表 附帮助手册

    所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...

  6. 在VBA中使用Windows API

    VBA是一种强大的编程语言,可用于自定义Microsoft Office解决方案.通过使用VBA处理一个或多个Office应用程序对象模型,可以容易地修改Office应用程序的功能或者能够使两个或多个 ...

  7. c# 判断窗体是否永在最前(TopMost),调用windows API

    许多程序都可以把自身的窗体设为最前显示状态,这个可以参考博客c#让窗体永在最前 调用windows api 将窗体设为topmost.那么如何判断桌面上的一个窗体是否为最前显示状态呢,不光是自己的程序 ...

  8. WinSpy涉及的windows api

    WinSpy涉及的windows api WinSpy是仿造微软Spy++的开源项目,但只涉及Spy++的窗口句柄.窗口的属性.styles.类名子窗口.进程线程信息等查找功能.功能虽然不算强大,但涉 ...

  9. Windows API Finishing

    input { font-size: 14px; height: 26px } td { border-style: none; border-color: inherit; border-width ...

随机推荐

  1. Android 6.0 源代码编译实践

    http://www.judymax.com/archives/1087 Android 6.0 源代码编译实践 https://mirrors.tuna.tsinghua.edu.cn/help/A ...

  2. Mac OS X Terminal 101:终端使用初级教程

    Mac OS X Terminal 101:终端使用初级教程 发表于 2012 年 7 月 29 日 由 Renfei Song | 文章目录 1 为什么要使用命令行/如何开启命令行? 2 初识Com ...

  3. 【网络编程】——linux socket demo

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/socket ...

  4. 301 redirect Domain Name using global.asax

    void Application_BeginRequest(object sender, EventArgs e) { if (HttpContext.Current.Request.Url.ToSt ...

  5. session和jsessionid有什么关系

    首先,并不是说你一打开一个页面就会产生一个session. 所谓session你可以这样理解:当你与服务端进行会话时,比如说登陆成功后,服务端会为你开壁一块内存区间,用以存放你这次会话的一些内容,比如 ...

  6. iOS CoreData 增删改查详解

    最近在学习CoreData, 因为项目开发中需要,特意学习和整理了一下,整理出来方便以后使用和同行借鉴.目前开发使用的Swift语言开发的项目.所以整理出来的是Swift版本,OC我就放弃了. 虽然S ...

  7. jquerymobile标签-属性手册

    Button data-role="button"   data-corners true | false data-icon home | delete | plus | arr ...

  8. C# FTP FtpWebRequest UsePassive 属性

    属性值 类型:System::Boolean如果客户端应用程序的数据传输过程侦听数据端口上的连接,则为 false:如果客户端应在数据端口上启动连接,则为 true. 默认值为 true. UsePa ...

  9. [转]优秀Python学习资源收集汇总

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  10. Java Collection好文章

    Java Collection好文章 http://my.oschina.net/xiaomaoandhong/blog/78394