begin process at 2012 05 28 21:22:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

enumWindows et FindWindow


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

enumWindows et FindWindow

samedi 31 décembre 2005 à 14:28:20 | enumWindows et FindWindow

anonyme_man_in_this_world

salut   !!
malgré mes recherches ,j'ai pas pu bien comprendre le fonctionnement des fonctions  enumwindows et findwindow .ça sera simpa si on m'aide a repondre a ces questions  :
1- d'apres les sources que j'ai trouvé ,je crois que enumwindows associr le procedure passe en 1 parametre au thread passé en 2 parametre .mais comment obtenur le handle d'un controles trouver dans la fenetre principale sans connaitre son id ??
2-comment faire fonctionner FindWindow?
3-  le procedure passe en paratre doit il avoir lui aussi 2 parametre ?
4- comment sont ils identifie ?
5- comment faire parcourir les controles de meme type un par un ?
merçi d'avance
samedi 31 décembre 2005 à 17:06:37 | Re : enumWindows et FindWindow

anonyme_man_in_this_world

voila j'ai essayé de parcourir les controles d'un programme mais ça n'a pas marché :

#include <windows.h>
HWND Hwnd ;
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
 Hwnd = GetNextWindow(hwnd,GW_HWNDNEXT) ;
 for(int a =0 ; a < 5 ; a++)
 {
  SendMessage(Hwnd,MOUSEEVENTF_LEFTDOWN,0,0) ;
 }
 MessageBox(hwnd,"press\n","probleme",MB_OK) ;
 
  return 1; // POUR CONTINUER
}


int WINAPI WinMain(HINSTANCE hInstance,
       HINSTANCE hPrevInstance,
       LPSTR lpCmdLine,
       int nShowCmd)
{
  PROCESS_INFORMATION pi;
     STARTUPINFO si = {sizeof(si)};
     char szbuff[260];
  DWORD pid ;
   
  strcpy(szbuff,"a.exe") ;
     si.dwFlags = STARTF_USESHOWWINDOW;
     si.wShowWindow = SW_SHOWMAXIMIZED;
     CreateProcess(szbuff, 0, 0, 0, 0, 0, 0, 0, &si, &pi);
     pid = pi.dwThreadId; // IMPORTANT !!!
     EnumWindows(EnumWindowsProc, (LPARAM) pid);
     return 1 ;
}

samedi 31 décembre 2005 à 18:14:00 | Re : enumWindows et FindWindow

anonyme_man_in_this_world

j'ai pu obtenir un handle sur la  fenetre ,il ne me reste que savoir comment je peux obtenir un handle la 1 fenetre child situé dans cette fenetre .merçi d'avance

dimanche 1 janvier 2006 à 02:39:05 | Re : enumWindows et FindWindow

julienbj


/**
 *    \fn    BOOL CALLBACK CloseAllEnum(HWND hwnd, LPARAM lparam)
 *    Fonction callback d'une fonction énumérant des fenetres.
 *    Fermeture d'une fenetre enfant
 *    \brief    Fermeture d'une fenetre enfant
 *    \param    hwnd    Handle de la fenetre donné par la fonction EnumChildWindows
 *    \param    lparam    0: Inutilisé; !0:Adresse d'une chaine de caractère décrivant le classname des fenetres à fermer
 */
int CALLBACK CloseAllEnum(HWND hwnd, LPARAM lparam)
{
    if (lparam == 0)
    {
        if (!GetWindow(hwnd, GW_OWNER))
            DestroyWindow(hwnd);
    }
    else
    {
        char buffer[256];

        GetClassName(hwnd, buffer, 255);
        if (stricmp((LPSTR) lparam, buffer) == 0)
            if (!GetWindow(hwnd, GW_OWNER))
                DestroyWindow(hwnd);
    }
    return 1;
}

/**
 *    \fn    void closeAllChild(HWND parent)
 *    Fermeture de toutes les fenetres enfants
 *    \brief    Fermeture des enfants
 *    \param    parent    Handle de la fentre parent
 */
void closeAllChild(HWND parent)
{
    EnumChildWindows(parent, CloseAllEnum, 0L);
}

/**
 *    \fn    void closeAllChildClass(HWND parent, char *classname)
 *    Fermeture de toutes les fenetres enfants d'un type particulier
 *    \brief    Fermeture des enfants
 *    \param    parent    Handle de la fentre parent
 *    \param    *classname    Classname des fenetres à fermer
 */
void closeAllChildClass(HWND parent, char *classname)
{
    EnumChildWindows(parent, CloseAllEnum, (LPARAM) (LPSTR) classname);
}


En gros, ces fonctions ferment tous les controles enfants d'une fenetre en les parcouarnt un par un. En changeant la fonction CloseAllEnum, tu peux faire faire ce que tu veux à chacun des composants de la fenetre parent. Si tu cherches a travailler sur un type de comoosant particulier, utilise le classname de ce composant.

Vive le C
Tchao
Savon
dimanche 1 janvier 2006 à 11:56:38 | Re : enumWindows et FindWindow

anonyme_man_in_this_world

merçi pour l'explication ,cepandant j'ai pas compris l'interret de cette ligne :
  if (!GetWindow(hwnd, GW_OWNER))
merçi d'avance
dimanche 1 janvier 2006 à 14:08:56 | Re : enumWindows et FindWindow

julienbj


Je crois bien qu'elle ne me sert a rien du tout. (Je vois plus pourquoi elle est la), j'ai meme l'impression que c'est une erreur.
Mais l'intéret pour toi n'est pas la.
C'est cette fonction (CloseAllEnum) qu'il faut que tu refasses pour faire ce que tu veux avec tous les controles de ta fenetre..

Vive le C
Tchao
Savon


Cette discussion est classée dans : parametre, passe, procedure, findwindow, enumwindows


Répondre à ce message

Sujets en rapport avec ce message

Handle (enumwindows) [ par Quiske ] Bonjour tlm je voudrais que qqun face un programme disant le code de la fenetre a insere et ou je veux que son preogramme fasse une liste des fenetres pb avec procedure [ par bidules ] bonjour,voila mon code(simplifier) :void affiche(int numero){cout }void main(){affiche(10);}et un message d'erreur apparait lors de la compilation Filtre passe bande [ par ElBlacky ] Salut je suis à la recherche d'une routine qui soitcapable de découper un fichier son en plusieurs frequences, un équalizeur en fait, mais avec plus d fichier tasm32.exe [ par Heero ] Salutj' utilise bcc55 pour compilermais j' ai besoin pour mon prog d' utiliser le parametre de compilation assembleur mais ce parametre necessite le f Pointeur sur methodes avec parametre [ par Kinamstrong ] Salut a toi,Je cherche à savoir comment marche les pointeurs sur les methodes avec parametres.Qu'est ce qui va differencier deux meme methodes en cour comment protéger l'ouverture d'un fichier ? [ par f1cobra ] Bonjour, je voudrais protéger l'ouverture d'un fichier excell par un mot de passe, de manière a ce que seules les personnes ayant le mot de passe puis * Mot de passe [ par shenron ] Slt,vs savez comment on fait pour lorsqu'un user saisit une chaine de caractère, ce k'il tape se met en * comme si c t un mot de passe? vérification du mot de passe [ par biscot19 ] Bonjour,Je cherche comment vérifier un mot de passe NT en C++.J'ai vu que la fonction NetUserChangePassword permettait de le faire mais comme son nom Mot de passe à l'ouverture d'une BDD [ par lyricman ] Bonjourje fais un programme en C++ (Borland C++ Builder 6) avec une base de données.le pb est que chaque fois que j'exécute mon programme, il me deman acces base de donnée DAO protégée par mot de passe [ par Frederyck ] Bonjour,Alors je voudrais savoir comment faire pour acceder à une base de donnée Access 97 via DAO quand celle ci est protégée par mot de passe.J'aime


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales