首页
社区
课程
招聘
软件hook了EnumWindows函数让我找不到他的主窗口,怎么解决这个问题
发表于: 2010-1-27 14:31 8573

软件hook了EnumWindows函数让我找不到他的主窗口,怎么解决这个问题

2010-1-27 14:31
8573
我想实现隐藏进程窗口功能, 大多数查看都隐藏了, 但是有个游戏窗口用EnumWindows遍历找不到, 请问怎么解决???
用vc的spy++可以找到窗口, 请问spy的实现原理. 微软自带的spy源码不行也找不到那个窗口.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
lz的逻辑有的问题   您到底是问 软件hook了EnumWindows函数让我找不到他的主窗口,怎么解决这个问题
还是问 我想实现隐藏进程窗口功能
还是问 spy的实现原理 呢?
2010-1-27 20:45
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
3个问题回答哪个都可以呀 这3个问题都是有联系的呀
因为在单位不想让别人看见任务栏的游戏名称, 我的本意是想实现用热键隐藏这个游戏的主窗口功能, , 但是由于我用EnumWindows函数遍历不到他的主窗口,所以也就没法隐藏, 而spy++可以找到这个窗口, 所以主要问题就是: 怎么才能让我找到这个游戏主窗口的句柄?
2010-1-28 08:57
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
	HWND hAll = ::GetDesktopWindow();
	HWND hCurrent = ::GetNextWindow(hAll, GW_CHILD);
	char szTittleDbg[256] = {0};
	char *p = NULL;
	while (hCurrent != NULL)
	{
		::GetWindowText(hCurrent, szTittleDbg, 256);
		int iStrLength = strlen(szTittleDbg);
		if (iStrLength == 0)
		{
			hCurrent = ::GetNextWindow(hCurrent, GW_HWNDNEXT);
			continue;
		}
		if (strcmp("Warcraft III" /*"WarIII"*/, szTittleDbg) == 0)
		{
			//是否隐藏:IsWindowVisible  
			//是否最小化:IsIconic  
			//是否最大化:IsZoomed   
			g_bActive = !(::IsIconic(hCurrent));
			break;
		}		
		hCurrent = ::GetNextWindow(hCurrent, GW_HWNDNEXT);
	}

       
摘自以前写的一个工具里面的遍历窗口的方法,仅供参考!
2010-1-28 09:07
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你隐藏任务栏不就可以了
2010-1-28 09:19
0
雪    币: 107
活跃值: (36)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
blueapplez 的方法一定可以,呵呵,大部分游戏 没有Hook GetNextWindow
2010-1-28 09:30
0
雪    币: 247
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
确实ok了 感谢lueapplez了
2010-1-28 11:51
0
游客
登录 | 注册 方可回帖
返回
//