用FindWindowEx找不到开始按钮

likexin 2008-01-08 04:59:07
我的代码是这样
HWND hwnd = ::FindWindow("Shell_TrayWnd" , "");
hwnd = ::FindWindowEx(hwnd , 0 , "Button" , "");

::ShowWindow(hwnd , SW_HIDE);

VB上就可以 为什么VC就不行 第一个FindWindow能够返回 但第二个查找开始按钮的HWND返回是0
...全文
535 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
iceriver_1980 2008-01-09
  • 打赏
  • 举报
回复
晕……csdn上面高手有好多,只是平时都忙着潜水,瞎蹦跶的都是俺们这些裤衩级别的,只好谦虚点了……
Gavin001 2008-01-09
  • 打赏
  • 举报
回复
问题当然应该尽量自己解决
awperpvip 2008-01-09
  • 打赏
  • 举报
回复
我测试通过,你没有试试?
菜牛 2008-01-09
  • 打赏
  • 举报
回复
同意5楼,是楼主自己参数用错了,""不等于NULL,意义不同。
heroboy2000 2008-01-08
  • 打赏
  • 举报
回复
hwnd = ::FindWindowEx(hwnd , 0 , "Button" , NULL);
likexin 2008-01-08
  • 打赏
  • 举报
回复
哎 CSDN没有高手吗 为什么什么问题都还是自己解决了
还是谢谢你们
iceriver_1980 2008-01-08
  • 打赏
  • 举报
回复
用vc的时候比vb更繁琐一些,尽量不要省略参数
awperpvip 2008-01-08
  • 打赏
  • 举报
回复
这样呢?
HWND   hwnd   = ::FindWindow("Shell_TrayWnd"   ,   ""); 
hwnd = ::FindWindowEx(hwnd , 0 , "Button" , "开始");
::ShowWindow(hwnd , SW_HIDE);
iceriver_1980 2008-01-08
  • 打赏
  • 举报
回复
你确定::FindWindow("Shell_TrayWnd" , ""); 这句可以找到句柄?第一个参数是class名,第二个参数是该window的caption,不赋值的话,找到句柄的可能性很小。
如果window的句柄没找到的话,下一个寻找控件的语句一定找不到控件的句柄的。
建议:
step1:调试一下头一句,看看window的句柄是否找到。
step2:第二句不必如此。可以把window看成一个dialog,用getdlgitem,这个api效果会比较好。
HWND GetDlgItem(
HWND hDlg, // handle of dialog box
int nIDDlgItem // identifier of control
);
第一个参数就是上一句找到的window句柄。
第二个参数是该按钮在window上面的控件id(controller id),用spy++可以很方便的找到这个id,可以用变量赋值,也可以直接把spy++提供的16进制数字转换成10进制的直接赋常量值。
Spy++ Lite是一款强有力的编程辅助工具,对分析窗体结构有独到之处。可以以十六进制和十进制两种不同方式显示窗口句柄等所有数值。本软件还可以简单调节窗口的状态和形为,如是否可见,是否可用,最大化,激活等。除此以外,您还可以把它当作一个截图的小工具来用。:) 下面举两个例子来小试牛刀: 1、激活灰色按钮: 打开任一文件的属性窗口,它的右下角处“应用”按钮都是不可用的(灰色的)。拖动本软件的探测器指针选中该按钮。切换至“消息”标签页,勾选“窗口可用”。看到了吧?“应用”按钮被我们激活了。 2、监视IE上网记录: 用本软件的探测器指针选中IE的地址栏。看到它的窗口类名为Edit;切换至“窗口”标签页,点击“父窗口”标签,使父窗口成为当前窗口;切换到“类”标签页,看到其类名为ComboBox;再依照上步点击,将得到父窗口类名依次是ComboBoxEx32、ReBarWindow32、WorkerW,直到最外层的IEFrame。此时再点击“子窗口列表”按钮,依次双击子窗口,看看能否到地址栏Edit。窗体结构清楚了,我们就不难用FindWindowEx、SendMessage、GetClassName、GetWindowText等几个API函数来监视上网记录了。 升级日志: 2.2-2.4 增加功能: 1、更换内部控件,引用主题风格; 2、修正细节问题; 3、提供不同编程语言的开源版本。 2.1-2.2 增加功能: 1、去除对对话框控件的依赖; 2、修正进程ID的显示BUG。 2.0-2.1 增加功能: 1、可以直接选中不可用的窗口; 2、子窗口列表; 3、进入多级子窗口并可导出。 1.1-2.0 增加功能: 1、显示窗口ID、进程ID、程序文件路径; 2、窗口样式、扩展样式、类样式并列表给出; 3、消息功能,改变窗口的最大化、最小化、是否可见、是否可用等状态; 4、窗口截图。
Spy++ Lite 2.4 Build 20080512 Spy++ Lite是一款强有力的编程辅助工具,对分析窗体结构有独到之处。可以以十六进制和十进制两种不同方式显示窗口句柄等所有数值。本软件还可以简单调节窗口的状态和形为,如是否可见,是否可用,最大化,激活等。除此以外,您还可以把它当作一个截图的小工具来用。:) 下面举两个例子来小试牛刀: 1、激活灰色按钮: 打开任一文件的属性窗口,它的右下角处“应用”按钮都是不可用的(灰色的)。拖动本软件的探测器指针选中该按钮。切换至“消息”标签页,勾选“窗口可用”。看到了吧?“应用”按钮被我们激活了。 2、监视IE上网记录: 用本软件的探测器指针选中IE的地址栏。看到它的窗口类名为Edit;切换至“窗口”标签页,点击“父窗口”标签,使父窗口成为当前窗口;切换到“类”标签页,看到其类名为ComboBox;再依照上步点击,将得到父窗口类名依次是ComboBoxEx32、ReBarWindow32、WorkerW,直到最外层的IEFrame。此时再点击“子窗口列表”按钮,依次双击子窗口,看看能否到地址栏Edit。窗体结构清楚了,我们就不难用FindWindowEx、SendMessage、GetClassName、GetWindowText等几个API函数来监视上网记录了。 升级日志: 2.2-2.4 增加功能: 1、更换内部控件,引用主题风格; 2、修正细节问题; 3、提供不同编程语言的开源版本。 2.1-2.2 增加功能: 1、去除对对话框控件的依赖; 2、修正进程ID的显示BUG。 2.0-2.1 增加功能: 1、可以直接选中不可用的窗口; 2、子窗口列表; 3、进入多级子窗口并可导出。 1.1-2.0 增加功能: 1、显示窗口ID、进程ID、程序文件路径; 2、窗口样式、扩展样式、类样式并列表给出; 3、消息功能,改变窗口的最大化、最小化、是否可见、是否可用等状态; 4、窗口截图。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧