![]() |
Web Development »
Applications & Tools »
Tools with source code
Intermediate
Window UnhidderBy JJimenezShawA utility to list and hide/unhide all application windows. |
VC6, Windows, MFC, Dev
|
|
Advanced Search |
|
|
|
||||||||||||||||

This program allows the user to hide-unhide any window that is running on the system. It also gives interesting information about programs' activities. Many programs use hidden windows, that sometimes may cause problems. With WindowUnhidder, you can hide-unhide, enable/disable any window, and get information about process, title, class, parent window, exec path, etc.
The first aim of this program was to find and unhide some windows. Once done, I saw that it could be useful to show all info I can get.
The program is ready for use. Most part of the code is in the class CWindowUnhidderDlg. I know that some more classes could be implemented, but at the beginning it was a little app, and it was not necessary.
The part of the code where windows are searched for is shown here:
// // search windows: char title[512], titlepadre[512], clase[100]; HWND mWnd = NULL; HWND mWndPad = NULL; HWND mWndSys = NULL; mWnd = ::FindWindowEx(NULL,mWnd,NULL,NULL); int ii=0; while ( mWnd ) { ::GetWindowText(mWnd, title, 256); ::GetClassName(mWnd, clase, 100); CString vis = ::IsWindowVisible(mWnd)?'1':'0'; CString ena = ::IsWindowEnabled(mWnd)?'1':'0'; CString Cadena = ""; mWndPad = mWnd; CString TitPad = ""; memset(titlepadre,0,512); do { mWndPad = ::GetParent(mWndPad); if (mWndPad) if(m_ParentHandler.GetCheck()!=0) sprintf(titlepadre,"#%X",mWndPad); else ::GetWindowText(mWndPad, titlepadre, 256); TitPad = titlepadre; TitPad.TrimRight(); Cadena = CString(mWndPad?CString((TitPad=="")? "[no title]":TitPad):"[Desktop]") + CString(" :: ") + Cadena; } while (mWndPad); CString Tit = title; if(Tit=="")Tit="[no title]"; DWORD wd=0; GetWindowThreadProcessId(mWnd,&wd); stringstream ss,ssw; ss << wd; CString proc; bool full = m_FullPath.GetCheck() != 0; proc = GetProcessName(wd,full); int col=0; ssw << "#" << uppercase << hex << (int)mWnd; m_List.AddItem(ii,col++,ssw.str()); m_List.AddItem(ii,col++,ss.str()); m_List.AddItem(ii,col++,proc); m_List.AddItem(ii,col++,vis); m_List.AddItem(ii,col++,ena); m_List.AddItem(ii,col++,Tit); m_List.AddItem(ii,col++,clase); m_List.AddItem(ii,col++,Cadena); m_List.SetItemData(ii,DWORD(mWnd)); ii++; mWnd = ::GetNextWindow(mWnd,GW_HWNDNEXT); } //
It is interesting to see how some programs use hidden windows. I found a funny trick: try to hide the windows (you can sort the columns) with the class "Progman" or "Shell_TrayWnd"... you will see what happens with the desktop!
Thanks to Hugo Gonzalez Castro for his help.
| You must Sign In to use this message board. | |||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 14 Feb 2006 Editor: Smitha Vijayan |
Copyright 2006 by JJimenezShaw Everything else Copyright © CodeProject, 1999-2009 Web11 | Advertise on the Code Project |