Hide et unhide a programme+ system tray aux choix!!!!

Soyez le premier à donner votre avis sur cette source.

Vue 8 191 fois - Téléchargée 592 fois

Description

c'est un programme qui cherche a cacher et a décacher un programme comme le nom du titre l'indique. il permet également de récuperer le chemin du module selectionner ("ex: c:\windows\prog.exe").

Je suis toujours a perfectionner ce programme car, j'aimerai m'en servir pour un autres programme.

ce petit programme permet de voir, coimment gérer un cursor

les fenetres=> EnumWindows, EnumWindowsChild

Source / Exemple :


quand un élement est selectionner, j'aimerai voir si cet element est une windows , ou un objet avec un style WS_CHILD

je fais  donc
[green]
while (iResult)
	{
		
		if(GetAsyncKeyState(VK_LBUTTON) && GetAsyncKeyState(VK_LBUTTON)) //<<permet de recuple click gauche de la sourie
		{
			GetCursorPos(&pCursor);
			iResult = 0;
			hWindow = WindowFromPoint(pCursor);
			GetWindowText(hWindow, sTitle, 400);
			GetClassName(hWindow, sClass, 400);
			
		}
		
		
	}
	
	strcpy(MainsClass,sClass); //<<<<en global
	HwndDest=FindWindow(sClass,sTitle);
                HwndCatchFromPoint=hWindow;
/green
maintenant que j'ai mon HWND d'un element selectionner, je verif si c une windows en fonction du titre et du nom de la class

if (IsWindow(HwndDest)==0)
	{....}
si c égale a 0 c ke cela n'en est pas une donc 

c'est un objet, button, listview,etc.... il appartient donc a une fenetre parente GetParent ne suffit pas toujours, j'ai testé

pour cela je fais un EnumWindows dans le but , k'il enumere toutes les fenetres, et j'enumere les enfants en meme temps:
ca donne ca:
[green]
EnumWindows(EnumWindowsProc,0);
....
....

BOOL CALLBACK EnumWindowsProcChild(HWND hwnd,LPARAM lParam)
{
	char szClass[128];
	GetClassName(hwnd, szClass, 128);
	
	if (strcmp(MainsClass,szClass)==0){ 
		if(HwndCatchFromPoint==hwnd) 
		{
			HwndTest=hwnd ;
			
		}
		
	}
	
	return true;
} 
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
	
char szClass[128];
	GetClassName(hwnd, szClass, 128);
	EnumChildWindows(hwnd,EnumWindowsProcChild,0);
	if(IsChild(hwnd,HwndTest)!=0){ 
		if (IsWindow(hwnd)!=0)
		{
			if (IsWindowVisible(hwnd)!=0)
			{
				
				HwndDest=hwnd;
				ShowWindow(HwndDest,SW_HIDE);
				 
			}
		}
	}

return true;
} 
/green

voila c tout

Conclusion :


merci de me prevenir pour les erreurs, car je suis dessus encore et c pas totalement fini, merci

pour le moment je cherche a ce que l'on recuper le parent quand on click sur un menu,ou une barre d'outil, etc....
/////////////////////////////UPDATE du 22/07/04//////////////////////////////////////////////////

voila c fais rajout juste de if (IsWindow(HwndDest)==0 || (GetWindowLong(HwndCatchFromPoint,GWL_STYLE) & WS_CHILDWINDOW) ) pour le enumwindow etc ca marche pour n'importe kel élement d'une fenetre

ce qu'il me reste a faire, pour ceux que cela intéresse c mettre dans le system tray les élements selectionner

/////////////////////////////UPDATE du 22/07/04//////////////////////////////////////////////////

Option de mettre dans le system tray

reste a faire c verif s'il a deja une icone dans le system tray si oui le virer, mais ca a mon avis c galere, je le ferai plus tard

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

vecchio56
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7 -
Un truc interessant et pas compliqué à faire serait de dessiner le contour de la fenêtre sur laquelle on est, comme le fait Spy++.
Tu pourrais aussi ajouter des options, par exemple au lieu de cacher, on pourait désactiver ou fermer
youpiyoyo
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
-
po con, je vais voir, en faite c pour un autre programme ke j'ai coder celui la, c'est un prog intermédiare on dira
Gendal67
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011
-
Interressant tout ça, file file ! ^^

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.