精华内容
下载资源
问答
  • 获取桌面窗口句柄

    万次阅读 2011-11-28 09:36:42
    GetDesktopWindow获取的是顶层显示桌面句柄,也...那么如何获取包含桌面图标的窗口句柄呢? 我们可以用Spy++来查看。 可以看出窗口层次为Progman->SHELLDLL_DefView->SysListView32。于是我们可以这样来获取我们

    GetDesktopWindow获取的是顶层显示桌面句柄,也就是说,如果应用程序窗口在桌面上,那么它的窗口也算是所获取的窗口的一部分,如果使用GetDC(NULL)作图,则永远是在最顶层。

    那么如何获取包含桌面图标的窗口句柄呢?

    我们可以用Spy++来查看。


    可以看出窗口层次为Progman->SHELLDLL_DefView->SysListView32。于是我们可以这样来获取我们想要的窗口句柄:

    HWND hProgMan = ::FindWindow(L"ProgMan", NULL);
    HWND hWndDesktop;
    if(hProgMan)
    {
    	HWND hShellDefView = ::FindWindowEx(hProgMan, NULL, L"SHELLDLL_DefView", NULL);
    	if(hShellDefView)
    		hWndDesktop = ::FindWindowEx(hShellDefView, NULL, L"SysListView32", NULL);
    }

    然而在Windows7下还会发生另外一种情况(WindowsXP未测试):


    其窗口层次为WorkerW-> SHELLDLL_DefView->SysListView32。而且WorkerW还不止一个。此时我们可以这样来获取句柄:

    HWND hwndWorkerW=NULL;
    HWND hShellDefView=NULL;
    HWND hwndDesktop=NULL;
    while(hwndDesktop==NULL)//必须存在桌面窗口层次
    {
    	hwndWorkerW=::FindWindowEx(0,hwndWorkerW,L"WorkerW",NULL);//获得WorkerW类的窗口
    	if(hwndWorkerW==NULL)
    		break;//未知错误
    	hShellDefView=::FindWindowEx(hwndWorkerW,NULL,L"SHELLDLL_DefView",NULL);
    	if (hShellDefView==NULL)
    		continue;
    	hwndDesktop=::FindWindowEx(hShellDefView,NULL,L"SysListView32",NULL);
    }

    注意:上述代码中没有用FindWindowW,这是因为我们需要指定从哪一个窗口往下查找。

     

    在用以上方法获得的桌面窗口句柄上绘图,将会和桌面图标处于同一层次(即会被应用程序窗口覆盖),并且覆盖桌面图标。

     

    那么什么时候会出现后一种情况呢?动态桌面(桌面壁纸定时更换)的环境下便会出现。但是当你在现行环境中更改了此设置后,这种现象并不会立即出现,要想让它“现出原形”,可以注销再登录,或者干脆重启。

     

    我曾试过在动态桌面下绘图,情况会比较糟糕——我的桌面很卡。也可能是我的代码不好。

     

    最后说明一点:这里获得的桌面窗口是一个ListView控件,可以用以ListView_开头的宏操作,具体可查看MSDN文档。

    展开全文
  • 一个很经典的桌面窗口句柄获取工具 Spy ++,对windows消息开发的人员很实用。
  • 学会用按键精灵获取窗口句柄 来源:按键学院 【按键精灵】 电脑的桌面是最顶级的...Windows通过句柄(Handle)识别每个窗体、控件、菜单和菜单项,当程序运行时,它所包含的每个部件都有一个惟一确定的句柄同其他的部件...

    学会用按键精灵获取子窗口句柄 来源:按键学院 【按键精灵】 电脑的桌面是最顶级的...

    Windows通过句柄(Handle)识别每个窗体、控件、菜单和菜单项,当程序运行时,它所包含的每个部件都有一个惟一确定的句柄同其他的部件相区别句柄在Windows API中具有举足......

    其实呢,“抓抓”抓句柄的功能,实现起来是很容易的,我们一起来操作看看。 实现功能 点击图片控件之后鼠标不松开, 到了需要获取句柄的窗口松开鼠标, 获取窗口句柄......

    转自: /lihailin560/252689/message.aspx#ID--HANDLE--HWND 三者之 间的互相转换 id->句柄(由 ID 得到句柄)---hWnd = ::GetDlg......

    c# 获取当前系统所有窗口句柄(含任务栏托盘图标等) 完整源码下载_计算机软件及...

    C利用句柄操作窗口_计算机软件及应用_IT/计算机_专业资料。实现过程: C# 过程一:找到当前鼠标位置的句柄 您的使用 2 个 WinAPI(俺喜欢自己封装下来用): View ......

    大漠插件后台找图、自动获取坐标窗口句柄鼠标多点左单击 脚本一、准备工作第一步:下...

    C#利用句柄操作窗口_计算机软件及应用_IT/计算机_专业资料。教你李勇句柄操作窗口,熟悉windows窗口核心机理。 C#写个类操作窗口(句柄操作)实现过程: 过程一:找到当前......

    (IntPtr hWnd, int Msg, IntPtr wParam, string lParam); /// /// 给窗口发送内容 /// /// 句柄 /// 要发送的内容 public static void SetText(In......

    C#查找指定窗口的子窗口的句柄用 axWebBrowser 加载 HTML 网页时,真正显示内容的窗体并不是 axWebBrowser,而是 其子窗口的子窗口一个名为 Internet Explorer_Server ......

    同理,当要操纵某一个窗口时,需要先获 取该窗口的句柄。 获取窗口句柄的函数很多,...

    用于标 志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文 件等.应用程序能够通过句柄访问相应的对象的信息......

    文案大全 实用文档 /// /// 获得窗口内容或标题 /// /// 句柄 /// public static string GetText(IntPtr hWnd) { StringBuilder ......

    try 块存放将可能发生异常的 Java 语言,并管理相关的异常指针;catch 块 紧跟在 try 块后面,用来激发被捕获的异常;finally 块包含清除程序没有释放的 资源,句柄等......

    //定义窗口句柄 HDC hDC ; MoveWindow(hWnd, 100,...

    块存放将可能发生异常的 Java 语言,并管理相关 的异常指针; catch 块紧跟在 try 块后面, 用来激发被捕获的异常; finally 块包含清除程序没有释放的资源,句柄等......

    .参数 窗口句柄1, 整数型, , 在其中查找子的父窗口。如设为零,表示使用桌面...

    追溯法获取句柄 若一个对象的句柄为H_know,那么可用如下格式获取其父或其子对象句柄 H_pa=get(H_know,’parent’) 3.当前对象句柄的获取 Gcf:当前窗口对象的......

    hwndParent, (HMENU)1000, hInstance, NULL); // 子窗口类 // 子窗口风格 // 父窗口的窗口句柄 // 子窗口的标识符,可为NULL 每个子窗口都有一个父窗口。...

    B、E JAVA 的垃圾回收机制是通过一个后台系统级线程对内存分配情况进行跟踪 ...

    展开全文
  • 获取桌面窗口句柄

    千次阅读 2009-12-15 16:57:00
    GetDestopWindow取到的是桌面窗口句柄,但不是我们所看到的那个包含图标的窗口。包含图标的窗口实际上是DesktopWindow的一个字窗口。确切地讲,Desktop Window包含一个无标题的、类名为“SHELLDLL_DefView”的子...

    GetDestopWindow取到的是桌面窗口的句柄,但不是我们所看到的那个包含图标的窗口。包含图标的窗口实际上是DesktopWindow的一 个字窗口。确切地讲,Desktop   Window包含一个无标题的、类名为“SHELLDLL_DefView”的子窗口,这个字窗口又包含一个无标题的、类名为 “SysListView32”的子窗口——这才是那个真正包含桌面图标的窗口。

     

    操作桌面图标,要使用到以下函数,  
      HWND   GetDesktopListViewHandle(void)  
      {  
      HWND   hResult;  
      hResult=::FindWindow("ProgMan",NULL);  
      hResult=::GetWindow(hResult,GW_CHILD);  
      hResult=::GetWindow(hResult,GW_CHILD);  
      return   hResult;  
      }  
       
      void   AlignIcon(int   nRectWidth)//nRectWidth是每个图标占用的区域大小系统为75  
      {  
      HWND   hDesktop;  
      int   h,i,j,nDesktopWidth,   nDesktopHeight;  
      RECT   rc;  
      hDesktop=GetDesktopListViewHandle();  
      ::SystemParametersInfo(SPI_GETWORKAREA,0,&rc,0);  
      nDesktopWidth=rc.right-rc.left;  
      nDesktopHeight=rc.bottom-rc.top;  
      i=0;  
      j=0;  
      //右对齐  
      for(h=0;h<ListView_GetItemCount(hDesktop);h++)  
      {  
      if((i+1)*nRectWidth>nDesktopHeight)  
      {  
      i=0;  
      j++;  
      }  
      SendMessage(hDesktop,  
      LVM_SETITEMPOSITION,  
      h,  
      MAKELPARAM(nDesktopWidth-(j+1)*nRectWidth+21,i*nRectWidth+2));//+21   和 +2是对照系统的位置修改的,  
      i++;  
      }  
       
      想知道更多的话就在MSDN中输入LVM_SETTEXTCOLOR去看一看。有许多好东西。

     

    好贴:http://topic.csdn.net/t/20020122/11/490739.html

    展开全文
  • 获得了桌面句柄后,就可以在桌面上建窗口了,比如使用MessageBox()在桌面上建一个对话框。 桌面也是一个窗口,如何得到它的句柄呢?用下面的过句就可以 HWND hd = GetDesktopWindow(); 窗口句柄一般使用HWND...

    所谓句柄其实是外国话,就是编号的意思。‘

    获得了桌面的句柄后,就可以在桌面上建窗口了,比如使用MessageBox()在桌面上建一个对话框。

    桌面也是一个窗口,如何得到它的句柄呢?用下面的过句就可以

    HWND hd = GetDesktopWindow();

    窗口的句柄一般使用HWND。有了窗口的句柄后,就可以对这个窗口进行操作了,当然能在这个窗口的上面再加一个窗口呢!

    以下的程序在vs2019环境下通过:

    #include "windows.h"
    #include <iostream>
    using namespace std;

    int main()
    {
        HWND hd = GetDesktopWindow();//获取桌面窗口的句柄
        cout << "中华人民共和国";
        MessageBoxW(hd,L"对话框中的内容:中华人民共和国",L"标题",MB_OK);
        MessageBox(hd, L"中国人民解放军", L"biaoti", MB_OK);
        rewind(stdin);
        cin.get();
        return 0;

    }

    MessageBoxW和MessageBox的区别是:前者只对Unicode,后者即对Unicode,也对ANSI编码,因为我使用的是vs2019,它默认的是Unicode,所以可以用MesssageBoxW。

    用MessageBox也可以,只不过要对字符串用L宏命令进行转换。

    在MessageBox和MessageBoxW中都用到了窗口句柄hd,表示我的MessageBox是建在这个窗口之上,与它相关联的。

    金庭波

    2019/8/8号9:00 

    展开全文
  • 如果hwndParent为 0 ,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口。 Windows NT5.0 and later:如果hwndParent是HWND_MESSAGE,函数仅查找所有消息窗口。 (2)hwndChildAfter :子窗口句柄。查找从在Z序...
  • 一个简单的案例C#如何获取鼠标处窗口句柄,程序嵌入桌面开发
  • 首先引用WinRT, using WinRT; ... ...[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] [Guid("EECDBF0E-BAE9-4CB6-A68E-9598E1CB57BB")] ...通过以下方法获取句柄 m_window = new MainWindow
  • 在windows XP时代,我们获取桌面图标窗口句柄往往用一下语句: HWND hwndParent = ::FindWindow( "Progman", "Program Manager" );HWND hwndSHELLDLL_DefView = ::FindWindowEx( hwndParent, NULL, "SHELLDLL_...
  • 举个例子,一些和桌面外壳相关的函数会接收一个窗口句柄用来进行和UI有关的操作。例如:IShellFolder::EnumObjects,如果你使用GetDesktopWindow获取桌面句柄然后传递给它,会发生什么呢?如果UI确实会被显示,则...
  • windows获取桌面句柄

    千次阅读 2012-12-15 15:03:03
    昨晚上一位朋友问我如何获取桌面句柄,当时第一反应就是用GetDesktopWindow()来获取,但是这个函数获取的是覆盖整个屏幕的句柄,如果只获取桌面句柄,则不能使用这个函数。 通过Spy++发现,桌面其实是一个子窗口...
  • 这里用了个“桌面坐标”,是希望区分一下ArcGis的“屏幕坐标”(与之对应的还有一个“地理坐标”)。 什么是“屏幕坐标”呢?使用ITool接口的OnMouseDown方法获取的“x,y”值即是,其原点值在“工作空间”窗体左上...
  • 主要介绍了C# Windows API应用之基于GetDesktopWindow获得桌面所有窗口句柄的方法,结合实例形式分析了GetDesktopWindow函数用于获取窗口句柄的具体使用方法与相关注意事项,需要的朋友可以参考下
  • 金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS...电脑的桌面是最顶级的窗口,在桌面里的其他程序窗口桌面的...
  • 我们知道QT里截图的代码很简单,很多例子都是截取桌面,或截取整个屏幕。...下面就是获取窗口句柄的基本API。 获取Windows下所有窗口的句柄,窗口标题,窗口类型等:#include enum window_search_mode {
  • //获取其子窗口句柄,就是桌面的句柄  SetParent((int)this.Handle, hDesktop);//设置父窗体,第一个为要被设置的窗口,第二个参数为指定其父窗口句柄  }  } }             ...
  • 金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS...电脑的桌面是最顶级的窗口,在桌面里的其他程序窗口桌面的...
  • 一般写脚本需要在窗口内执行某些操作比如点击等,那么第一步就是要获取窗口的数量和窗口句柄有必要的时候也需要记录PID编号,接下来我要为大家讲解的是如何在易语言环境下利用乐玩插件进行一个可操作的多窗口的句柄...
  • 当一个窗口未响应,DWM(桌面窗口管理器)会创建一个窗口(Ghost Window),盖在原来窗口上面,这样用 GetWindowFromPoint 就会获取到 Ghost Window 的句柄。使用 HungWindowFromGhostWindow 可以获取到真正的那个...
  • 这是发现窗口句柄的关键性代码: 两个参数,一个是窗口的类名,一个是caption,窗口的标题,可以修改的 怎么查看类名和caption(标题) ,直接上图,工具下的Spy ++ 拖动那个像靶心一样的图标,往你希望查看的窗口的...
  • WindowTop 是一款窗口自定义设置工具可将任意窗口置顶、修改透明度等等「窗口置顶」将窗口置顶,可以方便我们对比、写作、修改文案等等使用WindowTop【窗口置顶】来将窗口钉在桌面最上方默认情况下,我们打开一个...
  • VC 获取任务栏窗口句柄

    千次阅读 2015-07-18 16:46:54
    这个函数返回拥有任务栏按钮的窗口句柄。在微软的MSDN文档中,对任务栏是这样描述的:"……Windows界面包含一个特殊的应用程序桌面工具栏,叫做任务栏。任务栏可以用于在打开的不同窗口之间进行切换,以及启动新的...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 180
精华内容 72
关键字:

获取桌面窗口句柄