句柄可以隐藏自己不被枚举吗?QQ自由幻想的窗口句柄为什么SPY++和任务管理器可以看到,却无法使用enumwindows获取,findwindow也无法获取!!!先前1.12版本之前都可以获取到的,升级到1.12就消失了
代码如下。function EnumWindowsProc(Hwnd: THandle; Param: LPARAM): Boolean; stdcall;
var chars:PAnsichar;
begin
chars := strAlloc(100) ;
try
GetWindowText(hwnd, chars, 100); //别的都可以获取!就QQ自由幻想的句柄未看到!
if AnsiContainsText(chars, 'QQ自由幻想') then //'QQ自由幻想'
begin
//无法执行到这!!!
end;
finally
StrDispose(chars);
end; Result:= true;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc, 0); //调用枚举
end;
代码如下。function EnumWindowsProc(Hwnd: THandle; Param: LPARAM): Boolean; stdcall;
var chars:PAnsichar;
begin
chars := strAlloc(100) ;
try
GetWindowText(hwnd, chars, 100); //别的都可以获取!就QQ自由幻想的句柄未看到!
if AnsiContainsText(chars, 'QQ自由幻想') then //'QQ自由幻想'
begin
//无法执行到这!!!
end;
finally
StrDispose(chars);
end; Result:= true;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc, 0); //调用枚举
end;
大哥,SPY++的等级我还是可以分清楚的。我可以确认它确实是一级窗口,#32769 (Desktop)是顶级窗口,它和“DV2ControlHost「开始」菜单” 是同级窗口。
这句是通过消息获得的,GetWindowText(hwnd, chars, 100); //别的都可以获取!就QQ自由幻想的句柄未看到! 以前的版本能获得是没有处理这类消息的拦截,现在好多软件都都做了类似的处理,以防非法.........