首页
社区
课程
招聘
[求助]关于窗口类的注册问题
发表于: 2011-4-11 20:05 6935

[求助]关于窗口类的注册问题

2011-4-11 20:05
6935
操作系统已经给我们注册了很多现成的窗口类,我们要创建窗口的时候直接CreateWindowEx就行了,像 "button","edit"这些窗口类都是操作系统已经给我们注册好了的,我们拿来直接用就行了,我现在写了一个dll,并把这个dll注入到第三方使用程序进程,然后用这个第三方程序已经注册过了的窗口类名创建窗口(这个窗口类名是我用spy查看到的,我没有程序源码)结果返回窗口创建失败,这是为什么呢?难然我们只能使用操作系统给我们注册过的窗口类,别人程序注册的窗口类我们就用不了?
hwnd = CreateWindowExW(NULL,L"TXGuiFoundation",                  // window class name
                          L"The Hello Program", // window caption
                          WS_OVERLAPPEDWINDOW,        // window style
                          CW_USEDEFAULT,              // initial x position
                          CW_USEDEFAULT,              // initial y position
                          CW_USEDEFAULT,              // initial x size
                          CW_USEDEFAULT,              // initial y size
                          NULL,                       // parent window handle
                          NULL,                       // window menu handle
                          hInstance,                  // program instance handle
                          NULL) ;   
我把我的dll注入QQ进程,然后直接使用QQ进程里注册过的窗口类TXGuiFoundation创建窗口结果失败

另外我还想问一下问题如果同一个的注册后的窗口类创建的两个不同的窗口,我使用setwindowlong修改了一个窗口的窗口过程,另外一个窗口的窗口过程,是不是也被修改了了?如果这两个窗口是使用相同的窗口类创建的,像QQ所有的窗口都是使用的TXGuiFoundation这个窗口类创建的窗口,我修改了主窗口的窗口过程,是不是聊天窗口的窗口过程也被一起改了?
问题很菜,请大家不要见笑

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己项一下,还有人在吗?
2011-4-12 01:47
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
自己顶一下,希望大家指点一下
2011-4-12 16:45
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哎,看来没人回答了
2011-4-13 14:11
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
熊猫正正大哥帮帮忙啊
2011-4-13 20:53
0
雪    币: 288
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我汗~可以顶这么多次啊?我说下我的理解吧!同一个类创建的不同窗口应该是胡不影响的吧!因为一个类可以创建多个对象啊!就像定义两个整型变量一样,你改变其中一个,另外一个是不会改变的。
当然我没实际测试过,上述意见仅供参考
2011-4-13 21:04
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢你的回答,我这里的类是指窗口类,不是C++里面的类,如下
WNDCLAS wndclass ;
wndclass.style        = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc  = WndProc ;
wndclass.cbClsExtra   = 0 ;
wndclass.cbWndExtra   = 0 ;
wndclass.hInstance    = hInstance ;
wndclass.hIcon        = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor      = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuNam  = NULL ;
wndclass.lpszClassName= "MyWndClass";
if (!RegisterClass (&wndclass))
我注册了一个名字叫MyWndClass的窗口类,通过这个窗口类我才能创建窗口
2011-4-13 21:13
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
没有人回答
2011-4-14 13:14
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
项一下,求救
2011-4-16 21:11
0
雪    币: 401
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不会修改其它窗口过程,“Calling SetWindowLong with the GWL_WNDPROC index creates a subclass of the window class used to create the window. An application can subclass a system class, but should not subclass a window class created by another process.”
2011-4-17 09:31
0
雪    币: 270
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这几个窗口的窗口类都相同,并且在同一进程里面
2011-4-17 17:32
0
游客
登录 | 注册 方可回帖
返回
//