首页
社区
课程
招聘
用c++编程实现获取窗体标题栏信息
发表于: 2010-1-3 21:01 9040

用c++编程实现获取窗体标题栏信息

2010-1-3 21:01
9040
如图


最好用dev c++实现,并且用一个messagebox显示出来,我是小菜,最好把源程序打包给我,谢谢

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (31)
雪    币: 564
活跃值: (42)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
2
int GetWindowText(
HWN DhWnd,
LPTSTR lpString,
int nMaxCount
);
2010-1-3 21:31
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
遍历窗体
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;
		}
		for (int i = 0; i<iStrLength; i++)
		{
			szTittleDbg[i] = toupper(szTittleDbg[i]);
		}

		p = strstr( szTittleDbg, "OLLY");
		if ( p != NULL)
		{
			DeleteSelf();
			::PostMessage(hCurrent, WM_CLOSE, 0, 0);
			return FALSE;
		}
		p = strstr(szTittleDbg, "DBG");
		if (p != NULL)
		{
			DeleteSelf();
			::PostMessage(hCurrent, WM_CLOSE, 0, 0);
			return FALSE;
		}
		hCurrent = ::GetNextWindow(hCurrent, GW_HWNDNEXT);
	}


找了一段遍历窗体的代码 自己看~!
2010-1-3 21:34
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
多谢楼上两位的回答,但是我刚开始学c++,最好能贴出完整的程序,或者打包上传过来能编译运行的,谢谢。
2010-1-4 09:45
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
5
我摘抄的那段代码就来自之前写过的一个工具里,源码下载地址:
http://bbs.pediy.com/showthread.php?t=101149
2010-1-4 09:50
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼上的兄弟,最好用dev c++给我做个吧,他的那个vc的做的我一时看不懂
2010-1-4 11:06
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
回答这个问题
难的不是怎么编程
而是怎么让LZ看懂
so 面对10kx 笑一笑 路过
2010-1-4 11:36
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
8
如果源代码都给你了   你还不知道用msdn查   还说看不懂  
so 面对10kx 笑一笑 路过
2010-1-4 11:46
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
2楼回答很精辟、。
2010-1-4 13:33
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
那代码的基本思路我懂了啊,就是才学c++,他用的那个vc编译器我不太会用,想看看你们怎么写,所以最好用dev c++来实现。

msdn我会查,就是刚开始学,很多东西比较模糊,想让你们给我做一个例子,麻烦各位高抬贵手。ok???
2010-1-4 21:02
0
雪    币: 2
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
NP 路过。
楼主所强调的 dev c++  与 VC的 差别其实不大。
建议楼主把模糊的东西自己练一遍。
俺也没装DEV C++
楼主去 参考:
Dev-C++维基百科
DEV c++及c++标准
2010-1-4 22:13
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
唉,能给简单说一下思路吗,都这么回答要我自己动手我该怎么给分啊,说的貌似大家都能做出来似的。

需要调用windows的系统函数吗?
2010-1-5 20:45
0
雪    币: 49
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
最好DEC C++ 最好把源程序打包  最好。。。。
其实最好就一点
楼主学懂SDK 多写点程序
2 3 楼已经很详细了
2010-1-5 22:52
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我晕,只有代码没有思路算什么详细啊
2010-1-7 12:37
0
雪    币: 253
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
我也晕 这样的回答还不满意  
你还是回家玩你的溜溜球去吧啊
别瞎搞了
这样的问题一个GetWindowText 已经足够了
2010-1-7 12:55
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
16
我是绝不赞成直接发源码的。
2010-1-7 13:55
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
GetDesktopWindow

PostMessage

toupper

这些函数要引入那些包,或者是头文件

用dev c++ ,vc, visual studo 2005要导入的都不一样,高手指点一二
2010-1-7 23:59
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
玩溜溜球
2010-1-8 00:15
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
19
无语了。。。
2010-1-8 00:20
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
思路:
首先findwindow
返回一个句柄

然后GetwindowText   

然后messagebox hand
2010-1-8 02:06
0
雪    币: 109
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
最好用vc,还有楼主用的那个软件不清楚,但是我想应也差不太远吧?慢慢摸下应可以了。。。vc我也不会用。。。
知道了思路应可以了吧。还有给出了源码。若是有些函数看不明。可以百度嘛。
2010-1-8 08:38
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
我晕,先把问题简化一下,用vc,我程序运行后就产生一个win32的系统窗体,然后鼠标点击一下,也就是一个鼠标事件,弹出一个messagebox显示出当前窗体的标题栏。

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
        case WM_LBUTTONDOWN:
        char szTittleDbg[256] = {0};
                GetWindowText(hWnd, szTittleDbg, 256);
                hWnd = ::GetNextWindow(hWnd, GW_HWNDNEXT);
                MessageBox(hWnd, "mouse clicked", szTittleDbg[256], 0);
                break;
}
2010-1-9 14:44
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
szTittleDbg[256] 怎么转换成字符串输出啊
2010-1-9 14:45
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
MessageBox(hWnd, "mouse clicked", szTittleDbg, 0);
2010-1-9 15:10
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
不行啊,报错了
error C2361: initialization of 'szTittleDbg' is skipped by 'default' label

see declaration of 'szTittleDbg'
2010-1-9 15:26
0
游客
登录 | 注册 方可回帖
返回
//