IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Comment récupérer les handles des fenêtres d'un processus ?


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut Comment récupérer les handles des fenêtres d'un processus ?
    Bonjour à tous

    Dans la FAQ j'ai bêtement fais un copier coller du code que j'ai trouvé dans la rubrique
    Comment récupérer les handles des fenêtres d'un processus ?
    http://www.developpez.com/delphi/faq...dlefenetreproc

    mais ce code ne compile pas

    Dans la fonction :
    EnumWindows(@EnumWindowsProc, Integer(@findWindowsStruct));

    j'ai le message : "Variable requise". N'étant pas un spécialiste je ne comprends pas ce message.

    J'utilise Delphi 6 sous Windows XP SP2

    Pouvez-vous m'aider?

    Merci de votre réponse.

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 968
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 968
    Points : 15 432
    Points
    15 432
    Par défaut
    Ça compile et ça fonctionne, D7 - w2k.
    --
    jp

  3. #3
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    esaye ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Var i : Integer;
    i :=  Integer(@findWindowsStruct);
    EnumWindows(@EnumWindowsProc,i);
    l'erreur "variable requise" c'est quand ce que tu transmet n'est pas une variable mais uen valeur.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Je suis désolé Chlorish mais j'ai le même message.

    Je pense que cela vient de la version de Delphi 6.

    Quelqu'un peut il essayer.

  5. #5
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Essaie d'enlever le @ devant EnumWindowsProc

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    J'ai déjà essayé mais ça ne marche pas

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 968
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 968
    Points : 15 432
    Points
    15 432
    Par défaut
    Essaie d'enlever le @ devant EnumWindowsProc
    Moi j'ai testé et ça ne compile pas...

    Par ailleurs, voici comment est défini EnumWindows dans Windows.pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function EnumWindows(lpEnumFunc: TFNWndEnumProc; lParam: LPARAM): BOOL; stdcall;
    et le "lParam" est défini comme une valeur sur 32 bits (un integer, quoi) dans le sdk.

    Enfin, voici un exemple d'utilisation extrait de Forms.pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnumWindows(@GetTopMostWindows, Longint(@Info));
    Ces 2 extraits de code viennent des sources D3 !

    Et l'exemple de la FAQ fonctionne également avec Longint (on s'en serait douté, c'est le même genre d'oiseau, sauf que l'un est classé chez les génériques quand l'autre est chez les fondamentaux, mais bah, 32 bits signés chacun )

    T'aurais pas merdé ton copier/coller ?
    --
    jp

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Merci JPété
    tes solutions n'étaient pas bonnes mais grace à toi j'ai compris mon erreur.
    Je suis allé voir dans form.pas

    En fait j'avais mis mon code dans ma form1
    et il fallait que j'écrive

    EnumWindows(@TForm1.EnumWindowsProc, Integer(@findWindowsStruct));

    Merci à tous

  9. #9
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 968
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 968
    Points : 15 432
    Points
    15 432
    Par défaut
    Yep !
    tes solutions n'étaient pas bonnes
    Bah, ça n'était pas des solutions, juste des idées/pistes de recherche...
    Ceci étant, j'aimerais bien voir ton code complet parce que je n'arrive pas à reproduire ton problème et ta solution,

    --
    jp

  10. #10
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Pour l'enumération des fenêtres (celà comprend non seulement les fiches mais tous les contrôles fenétrés bien sur, on est pas sous "windows" pour rien...) via l'API EnumWindows, je ne saurais trop vous conseiller l'étude des codes sources du 1er défi (celui ou on prend le contrôle du jeu de démineur).

    Je suis certain que vous y trouverez votre bonheur

  11. #11
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 691
    Points : 25 548
    Points
    25 548
    Par défaut
    Citation Envoyé par pivil Voir le message
    EnumWindows(@TForm1.EnumWindowsProc, Integer(@findWindowsStruct));
    Depuis quand EnumWindows accepte une méthode de classe ?

  12. #12
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 444
    Points : 5 864
    Points
    5 864
    Par défaut
    salut

    effectivement a la compile ca doit passer mais je suis pas certain du resulta

    parceque passer l'adresse d'une methode de classe ne me semble
    pas equivalent au passage d'adresse d'une methode stastique
    a verifier tout de meme

    @+ Phil

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupérer les icones des URL?
    Par Blo0d4x3 dans le forum Windows
    Réponses: 3
    Dernier message: 26/05/2006, 16h29
  2. ShellListView : comment récupérer les noms des fichiers?
    Par Lolo1988 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 12/12/2005, 00h19
  3. Réponses: 27
    Dernier message: 07/10/2005, 11h19
  4. Comment obtenir les Handles des boutons systèmes de Windows ?
    Par Desraux dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 22/12/2004, 23h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo