开始菜单是什么类型的窗口

来源:百度知道 编辑:UC知道 时间:2024/06/03 01:09:19
在VC中可以使用FindWindow函数来查找窗口,其函数原型是
HWND FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);
我曾经这样写得到过任务栏的窗口句柄:FindWindow("Shell_TrayWnd", NULL);但不能得到开始菜单的窗口句柄,请问要得到开始菜单的窗口句柄应该怎么写?请高手指教,不胜感激。
我自己刚才试出来了,开始菜单的窗口类名是DV2ControlHost,这样写就行了:FindWindow("DV2ControlHost", NULL);
不知道怎么用SKY++,请指点,谢谢。

这样使用Spy++看开始菜单:
一般安装VC时Visual Studio Tools里都会自带Spy++的,从开始菜单Microsoft Visual Studio 6.0中的Microsoft Visual Studio 6.0 Tools里运行Spy++(VS2008在Microsoft Visual Studio 2008\Visual Studio Tools),可以在Spy++界面中看到名为Windows 1(窗口1)的子窗口,里面有个树形控件,可以在里面找到开始菜单,展开开始菜单项目,可以看到开始菜单上用到的控件,右键可以查看它们的属性,里面可以看到控件的ID,句柄,控件样式,父窗口子窗口,类名等等。

PS:没法用拖动Finder Tool到开始菜单上的方法查看,只能拖到到开始菜单的按钮上。

菜单实际上也是窗口,也有句柄
这个必须用钩子来捕获,否则是无法获取的

呃,你怎么不用SKY++先获得它呢,这样你就方便了么。

打开它
然后:
Search->Find Windows
然后看这个窗口上有一个靶一样的东西,左键点着别动,拖到任务栏看看

嘿嘿,确实是我打错了,呵呵

二楼误人子弟,不是sky++,是spy++,间谍不能变成天空!开始-vc菜单-工具-里面有spy++!点击望远镜,然后用鼠标拖拽十字到你想要监视的窗口,我想这样你应该能明白了!

Windows的开始菜单是窗口;普通菜单虽然有句柄,但不是窗口。

菜单都是窗口,不过很多都是临时生成的TOP_LEVEL类型的窗口,且是capture鼠标消息的,鼠标移开就自动收回(销毁了)。有的常用菜单可以不销毁,只是SW_HIDE了,所以使用FindWindow可以搜索到。
而使用 spy++是无法拦截到窗口菜单的。