ToolbarWindow32如何获得工具条上面类似按钮的句柄

问题描述

ToolbarWindow32句柄//inthWnd1=FindWindow(null,"测温仪器软件");//主窗体句柄inthWnd2=FindWindowEx(hWnd1,0,"ReBarWindow32",null);//主窗体下的inthWnd3=FindWindowEx(hWnd2,0,"ToolbarWindow32",null);已经获取ToolbarWindow32句柄,如何获得ToolbarWindow32上类似按钮的句柄从而发送后台鼠标点击,窗口最小化或不是当前都可以点击的那种,用SPY++工具只能看到ToolbarWindow32的句柄,找不到工具棒上面按钮的句柄。ToolbarWindow32上有好多可以点击的按钮,我想SendMessage其中的一个,我用intvCount=SendMessage(hWnd3,TB_BUTTONCOUNT,0,0);SendMessage(hWnd3,WM_LBUTTONDOWN,0,(vCount-6));SendMessage(hWnd3,WM_LBUTTONUP,0,(vCount-6));后面的参数无论是第几个总是点击ToolbarWindow32上的第一个按钮。我用SendMessage(hWnd3,WM_LBUTTONDOWN,0,0);SendMessage(hWnd3,WM_LBUTTONUP,0,0);也是按第一个按钮,比如我想点击上面的第2或第3个怎么获得这个按钮的方法,我用RECTrect=newRECT();GetWindowRect(hWnd3,refrect);intwidth=rect.Right-rect.Left;//窗口的宽度intheight=rect.Bottom-rect.Top;//窗口的高度intx=rect.Left;//zuointy=rect.Top;//shanginta=x+617;intb=y+1;SendMessage(hWnd3,WM_LBUTTONDOWN,0,(b<<16)+a);SendMessage(hWnd3,WM_LBUTTONUP,0,(b<<16)+a);这样倒可以点,但是好像是前台点,如果窗口最大或最小化就点不了,我要后台的。谁知道怎么做,给个方法!感谢了!

解决方案

解决方案二:
toolbar上的按钮本来就没有handler应该发送nm_click通知消息http://msdn.microsoft.com/en-us/library/windows/desktop/bb760490(v=vs.85).aspx
解决方案三:
朋友能给个思路么,没用过你说的这个!有简单代码没
解决方案四:

解决方案五:
引用楼主u011288834的回复:

ToolbarWindow32句柄//inthWnd1=FindWindow(null,"测温仪器软件");//主窗体句柄inthWnd2=FindWindowEx(hWnd1,0,"ReBarWindow32",null);//主窗体下的inthWnd3=FindWindowEx(hWnd2,0,"ToolbarWindow32",null);已经获取ToolbarWindow32句柄,如何获得ToolbarWindow32上类似按钮的句柄从而发送后台鼠标点击,窗口最小化或不是当前都可以点击的那种,用SPY++工具只能看到ToolbarWindow32的句柄,找不到工具棒上面按钮的句柄。ToolbarWindow32上有好多可以点击的按钮,我想SendMessage其中的一个,我用intvCount=SendMessage(hWnd3,TB_BUTTONCOUNT,0,0);SendMessage(hWnd3,WM_LBUTTONDOWN,0,(vCount-6));SendMessage(hWnd3,WM_LBUTTONUP,0,(vCount-6));后面的参数无论是第几个总是点击ToolbarWindow32上的第一个按钮。我用SendMessage(hWnd3,WM_LBUTTONDOWN,0,0);SendMessage(hWnd3,WM_LBUTTONUP,0,0);也是按第一个按钮,比如我想点击上面的第2或第3个怎么获得这个按钮的方法,我用RECTrect=newRECT();GetWindowRect(hWnd3,refrect);intwidth=rect.Right-rect.Left;//窗口的宽度intheight=rect.Bottom-rect.Top;//窗口的高度intx=rect.Left;//zuointy=rect.Top;//shanginta=x+617;intb=y+1;SendMessage(hWnd3,WM_LBUTTONDOWN,0,(b<<16)+a);SendMessage(hWnd3,WM_LBUTTONUP,0,(b<<16)+a);这样倒可以点,但是好像是前台点,如果窗口最大或最小化就点不了,我要后台的。谁知道怎么做,给个方法!感谢了!

api有个激活某个句柄对应的窗体的可以试一下先激活后处理
解决方案六:
引用1楼devmiao的回复:

toolbar上的按钮本来就没有handler应该发送nm_click通知消息http://msdn.microsoft.com/en-us/library/windows/desktop/bb760490(v=vs.85).aspx

www.google.com
解决方案七:
引用4楼amu0528的回复:

Quote: 引用楼主u011288834的回复:
ToolbarWindow32句柄//inthWnd1=FindWindow(null,"测温仪器软件");//主窗体句柄inthWnd2=FindWindowEx(hWnd1,0,"ReBarWindow32",null);//主窗体下的inthWnd3=FindWindowEx(hWnd2,0,"ToolbarWindow32",null);已经获取ToolbarWindow32句柄,如何获得ToolbarWindow32上类似按钮的句柄从而发送后台鼠标点击,窗口最小化或不是当前都可以点击的那种,用SPY++工具只能看到ToolbarWindow32的句柄,找不到工具棒上面按钮的句柄。ToolbarWindow32上有好多可以点击的按钮,我想SendMessage其中的一个,我用intvCount=SendMessage(hWnd3,TB_BUTTONCOUNT,0,0);SendMessage(hWnd3,WM_LBUTTONDOWN,0,(vCount-6));SendMessage(hWnd3,WM_LBUTTONUP,0,(vCount-6));后面的参数无论是第几个总是点击ToolbarWindow32上的第一个按钮。我用SendMessage(hWnd3,WM_LBUTTONDOWN,0,0);SendMessage(hWnd3,WM_LBUTTONUP,0,0);也是按第一个按钮,比如我想点击上面的第2或第3个怎么获得这个按钮的方法,我用RECTrect=newRECT();GetWindowRect(hWnd3,refrect);intwidth=rect.Right-rect.Left;//窗口的宽度intheight=rect.Bottom-rect.Top;//窗口的高度intx=rect.Left;//zuointy=rect.Top;//shanginta=x+617;intb=y+1;SendMessage(hWnd3,WM_LBUTTONDOWN,0,(b<<16)+a);SendMessage(hWnd3,WM_LBUTTONUP,0,(b<<16)+a);这样倒可以点,但是好像是前台点,如果窗口最大或最小化就点不了,我要后台的。谁知道怎么做,给个方法!感谢了!

api有个激活某个句柄对应的窗体的可以试一下先激活后处理

激活句柄后,没有点击上面按钮的方法啊,关键toolbar上的按钮没有handler如何后台点击上面按钮。
解决方案八:
引用1楼devmiao的回复:

toolbar上的按钮本来就没有handler应该发送nm_click通知消息http://msdn.microsoft.com/en-us/library/windows/desktop/bb760490(v=vs.85).aspx

nm_click发送消息,关键如何找我需要点的那个按钮。是用坐标找么?如果是坐标,鼠标点击会不会是前台点击?
解决方案九:
引用6楼u011288834的回复:

Quote: 引用4楼amu0528的回复:
Quote: 引用楼主u011288834的回复:
ToolbarWindow32句柄//inthWnd1=FindWindow(null,"测温仪器软件");//主窗体句柄inthWnd2=FindWindowEx(hWnd1,0,"ReBarWindow32",null);//主窗体下的inthWnd3=FindWindowEx(hWnd2,0,"ToolbarWindow32",null);已经获取ToolbarWindow32句柄,如何获得ToolbarWindow32上类似按钮的句柄从而发送后台鼠标点击,窗口最小化或不是当前都可以点击的那种,用SPY++工具只能看到ToolbarWindow32的句柄,找不到工具棒上面按钮的句柄。ToolbarWindow32上有好多可以点击的按钮,我想SendMessage其中的一个,我用intvCount=SendMessage(hWnd3,TB_BUTTONCOUNT,0,0);SendMessage(hWnd3,WM_LBUTTONDOWN,0,(vCount-6));SendMessage(hWnd3,WM_LBUTTONUP,0,(vCount-6));后面的参数无论是第几个总是点击ToolbarWindow32上的第一个按钮。我用SendMessage(hWnd3,WM_LBUTTONDOWN,0,0);SendMessage(hWnd3,WM_LBUTTONUP,0,0);也是按第一个按钮,比如我想点击上面的第2或第3个怎么获得这个按钮的方法,我用RECTrect=newRECT();GetWindowRect(hWnd3,refrect);intwidth=rect.Right-rect.Left;//窗口的宽度intheight=rect.Bottom-rect.Top;//窗口的高度intx=rect.Left;//zuointy=rect.Top;//shanginta=x+617;intb=y+1;SendMessage(hWnd3,WM_LBUTTONDOWN,0,(b<<16)+a);SendMessage(hWnd3,WM_LBUTTONUP,0,(b<<16)+a);这样倒可以点,但是好像是前台点,如果窗口最大或最小化就点不了,我要后台的。谁知道怎么做,给个方法!感谢了!

api有个激活某个句柄对应的窗体的可以试一下先激活后处理

激活句柄后,没有点击上面按钮的方法啊,关键toolbar上的按钮没有handler如何后台点击上面按钮。

遍历句柄的子对象
解决方案十:
引用7楼u011288834的回复:

Quote: 引用1楼devmiao的回复:
toolbar上的按钮本来就没有handler应该发送nm_click通知消息http://msdn.microsoft.com/en-us/library/windows/desktop/bb760490(v=vs.85).aspx

nm_click发送消息,关键如何找我需要点的那个按钮。是用坐标找么?如果是坐标,鼠标点击会不会是前台点击?

按钮的id啊。
解决方案十一:
无头绪!
解决方案十二:
引用9楼devmiao的回复:

Quote: 引用7楼u011288834的回复:
Quote: 引用1楼devmiao的回复:
toolbar上的按钮本来就没有handler应该发送nm_click通知消息http://msdn.microsoft.com/en-us/library/windows/desktop/bb760490(v=vs.85).aspx

nm_click发送消息,关键如何找我需要点的那个按钮。是用坐标找么?如果是坐标,鼠标点击会不会是前台点击?

按钮的id啊。

按钮没有句柄,至于id……去哪找啊?
解决方案十三:
囧我也遇到了这个问题。。。toolbar上的按钮没有句柄
解决方案十四:
这个问题解决了没有啊,怎么解决的?

时间: 2024-10-25 00:51:30

ToolbarWindow32如何获得工具条上面类似按钮的句柄的相关文章

VC++删除浮动工具条中“关闭”按钮

在Visual C++自动生成的MFC框架应用程序中,当浮动工具条被拖离主框架窗口后,一般都会在工具条的右上角有一个"关闭"按钮,应该说这个按钮完全是按照Windows应用程序的用户界面(UI)设计规范而设计的,也就是说所有的窗口都应该有一个地方让用户可以关闭这个窗口.但是有的开发人员偏偏提出来不想要这个"关闭"按钮.本实例通过自定一个扩展的工具条类,实现了删除工具条中"关闭"按钮的目的.程序编译运行后的界面效果如图一所示: 图一.没有"

浮动的工具条,工具条上的按钮能不能动态生成?

问题描述 浮动的工具条,工具条上的按钮能不能动态生成? 浮动的工具条,工具条上的按钮能不能动态生成?用什么方法可以用代码添加按钮到工具条上呢? 解决方案 http://www.cnblogs.com/lidabo/p/3701774.htmlhttp://www.itnose.net/detail/104833.html

Google toolbar 工具条介绍

中介交易 SEO诊断 淘宝客 云主机 技术大厅 互联网信息搜索是仅次于电子邮件的第二大网络应用,几乎所有上网的人都会用到搜索引擎来查找信息,因此对网民们来说,搜索引擎已成为大家网上冲浪不可或缺的得力助手. 在众多搜索引擎中,Google以它查询精确,功能强大,速度快而日益受到用户欢迎.以纯搜索应用而言,Google是目前使用频率最高的搜索引擎.如果你平时用过搜索引擎却没听说过Google的话,那只能说你太孤陋寡闻了! 图1 Google一贯的目标的是成为最好的搜索引擎,为满足用户需求可谓不遗余力

MFC教程(13)-MFC工具条和状态栏(1)

Windows控制窗口 Windows (Windows95或者以上版本) 提供了系列通用控制窗口,其中包括工具条(ToolBar).状态栏(StatusBar).工具条提示窗口(ToolTip). Windows在一个DLL加载时注册个控制窗口的"窗口类".例如,工具条的"窗口类"是"ToolbarWindow32",状态栏的"窗口类"是"msctls_statusbar32",工具条提示窗口的"

积累的VC编程小技巧之工具条和状态条

1.工具条和状态条中控件的添加: 方法⑴.只能在ToolBar里创建控件:首先,在ToolBar中创建一个Button,其ID为ID_TOOL_COMBO(我们要将创建的控件放在该Button的位置上). 其次,新创建一个类CMainToolBar,要从CToolBar继承(创建过程大概如下:选择工程/增加到工程/新的类:也可以选择工程的根,然后点击右键,选择新的类:或者CTL+W,选择增加类/新的类 --- 然后在class type里选择Generic Class,在Name栏里输入新类的名

VB外接程序的制做-在VB中创建您自己工具条和菜单

菜单|程序|创建|工具条 VB外接程序的制做二,在VB中创建您自己工具条和菜单 创建工具条依然需要使用到VBI,只要和VB打交道,必须有它,同时在上篇文章所阐述的菜单项的制做方法是对你现在即将做的工作有用的.有一点你必须知道,无论是创建按钮,还是创建菜单项,他们之间是没有区别的.只是有一些地方有一点点不同而已. 怎样创建工具条呢?非常简单. VBI.CommandBars.Add cbsToolsBarName 此方法后面当然有其它可选参数,但是有些东西对于现在我要阐述的问题是无关的. Func

MFC程序员WTL指南(4)工具条与状态条

对第三部分的介绍 自从作为Windows 95的通用控件出现以来,工具条和状态条就变成了很普遍的事物.由于MFC支持浮动的工具条从而使它们更受欢迎.随着通用控件的更新,Rebars(最初被称为Coollbar)使得工具条有了另一种展示方式.在第三部分,我将介绍WTL对这些控制条的支持和如何在你的程序中使用它们. 主窗口的工具条和状态条 CFrameWindowImpl有三个HWND类型的成员变量在窗口创建时被初始化,我们已经见过m_hWndClient,它是填充主窗口客户区的"视图"窗

如何往IE工具条添加按钮

问题提出: 金山词霸.网络蚂蚁等软件安装后会向IE的工具条添加自己的按钮.按下按钮后还会作出相应的动作,这种功能是如何实现的呢?读完本文,您也可以将自己应用程序的按钮添加到IE的工具条中. 基本原理: 从IE5开始便允许我们向工具栏添加自己的按钮,其本质就是修改注册表,添加创建此按钮所需的信息. 实现步骤: 1.创建此按钮的GUID(globally unique identifier) 你可以通过Visual Studio中的Guidgen.exe来产生GUID. 例如我生成的GUID是{1F

[iOS] 新手求助~xcode工具条运行按钮后面 有一行选择项 为什么不见了呢?

问题描述 [iOS] 新手求助-xcode工具条运行按钮后面 有一行选择项 为什么不见了呢? 小弟最近刚学ios开发 ,看了老师的视频,在学xcode的时候 发现工具条运行按钮后面 有一行选择程序运行平台 >My Mac 字样的选择项,可是自己的xcode 工具栏上却没这个选择项,请问是为什么呢?求xdjm们解答,万分感谢了! 解决方案 查看view等这是否取消了 解决方案二: view具体哪一项呢?