更改屏幕显示数据的作弊程序
2006-07-20 11:41:40 来源:WEB开发网核心提示: 枚举子窗体至于枚举子窗体,一般采用两种方法:1、EnumChildWindows回调函数 //例子 调用:EnumChildWindows(g_hWndTag, EnumChildWindowsProc,0); 函数://-//枚举子窗体回调函数BOOL CALLBACK EnumChil
枚举子窗体
至于枚举子窗体,一般采用两种方法:
1、EnumChildWindows回调函数 //例子 调用:EnumChildWindows(g_hWndTag, EnumChildWindowsProc,0); 函数:
//-------------------------------------------------------------------------
//枚举子窗体回调函数
BOOL CALLBACK EnumChildWindowsProc( HWND hWnd, LPARAM lParam )
{
char buff[256]={''\0''};
if(::GetWindowLong(hWnd,GWL_STYLE)& WS_VISIBLE)
{
::GetWindowText(hWnd,buff,256);
//注销这些按钮或窗体
if( NULL != strstr(buff,"打印") ||
NULL != strstr(buff,"Excel") ||
NULL != strstr(buff,"导出") )
{
//这种只是屏蔽,界面上仍可看见
//EnableWindow(hWnd,FALSE);
//彻底注销,一劳永逸:-)
DestroyWindow(hWnd);
}
}
return TRUE;
}
2、GetWindow的方法 //例子:百试不爽的while大法,小心while一去不复还
HWND hWndChild=NULL;
hWndChild = ::GetWindow(g_hWnd,GW_CHILD);
while( NULL != hWndChild )
{
//styleXP.CreateClassXP(hWndChild);
hWndChild = ::GetWindow(hWndChild,GW_HWNDNEXT);
}
这里多说一句,一些换肤程序所采用的窗体子类化,大多就是采用的这两种方法之一。不过我始终觉得那是一项庞大费时且容易使人崩溃的工作,我曾经尝试写了一个小小的类,仅仅只是对按钮用GDI重画了一次,就已经接近忍耐极限,最终决定放弃了。
更多精彩
赞助商链接