Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : API EnumWindows et postmessage [ Windows / API ] (Lapin26)

jeudi 21 juin 2007 à 16:37:33 | API EnumWindows et postmessage

Lapin26

Bonjour, je cherche à fermer toutes les fenêtres ouvertes (sans toucher aux process de windows et sans toucher à une fenêtre dont je connais le nom), il faut donc que je fasse appel aux API EnumWindows et PostMessage mais l'utilisation de EnumWindows me pose problème... Je ne sais pas comment utiliser EnumWindows ni comment récupérer les résultats qu'elle doit me renvoyer.

Est-ce que quelqu'un peut m'aider ?


jeudi 21 juin 2007 à 16:44:16 | Re : API EnumWindows et postmessage

Lapin26

Hm, en fait il ne me reste plus qu'à savoir comment on stocke et exploite les handles que nous renvoie EnumWindows...

jeudi 21 juin 2007 à 17:20:21 | Re : API EnumWindows et postmessage

Lapin26

En fait ça marche, mais il me reste juste à empêcher la fermeture de mon programme :s

Voila ce que j'ai fait déja :

Private Sub frm_principal_Load()
    EnumWindows AddressOf EnumWindowsProc, ByVal 0&
End Sub

Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean
    Dim sSave As String, Ret As Long
    Ret = GetWindowTextLength(hwnd)
    sSave = Space(Ret)
    GetWindowText hwnd, sSave, Ret + 1
    Handle_prj = frm_principal.hwnd
    If hwnd <> Handle_prj Then
        PostMessage hwnd, &H10, 0, 0
    End If
    EnumWindowsProc = True
End Function


Le problème c'est que ça me ferme aussi mon programme !

Là je ne comprends plus rien...

jeudi 21 juin 2007 à 17:40:22 | Re : API EnumWindows et postmessage

BruNews

Administrateur CodeS-SourceS
Exemple ici, faudra traduire en VB:
PROG EGOISTE (WIN32,VC++,ASM)
http://www.cppfrance.com/code.aspx?id=10371

ciao...
BruNews, MVP VC++

jeudi 21 juin 2007 à 17:49:20 | Re : API EnumWindows et postmessage

Lapin26

C'est pas que j'ai pas essayé de comprendre, mais déja je ne connais rien en cpp mais en plus faire une traduction...


jeudi 21 juin 2007 à 18:18:13 | Re : API EnumWindows et postmessage

zavier666

Deux sites en français totalement:

API @ la Loupe / VB researrch center

slts!
---------------------------------------------------
Toujours + de VB et d'API => APi @ la Loupe
http://apialaloupe.free.fr


jeudi 21 juin 2007 à 18:44:29 | Re : API EnumWindows et postmessage

Gobillot

Le problème c'est que ça me ferme aussi mon programme !

là tu m'étonnes , j'imagine mal ce qui doit se passer ...
t'es en train de fermer toutes les fenêtres, les visibles, les invisibles, y compris même progman manager, etc ...


pour avoir une idée de ce que tu fermes:
voilà une Liste de toutes les fenêtres en cours dans une ListView (sans subclassing)
la ListView s'appelle LV.
je te laisse faire les déclarations et définitions

Private Sub Form_Load()
    Lv.ColumnHeaders.Add , , "Hwnd", 60
    Lv.ColumnHeaders.Add , , "Classe", 125
    Lv.ColumnHeaders.Add , , "NOM", 200
    Lv.ColumnHeaders.Add , , "Taille", 75
    MHwnd = Me.hwnd
    EnumWindows
End Sub

Function EnumWindows()
    Dim Ligne      As ListItem
    Dim hwnd       As Long
    Dim Lg         As Long
    Dim Rp         As Long
    Dim Rs         As Long
    Dim zRw        As Long
    Dim zRh        As Long
    Dim Nom        As String
    Dim Class      As String
    Dim Tr         As RECT
   
    hwnd = GetDesktopWindow()
    hwnd = GetWindow(hwnd, GW_CHILD)
    Do While hwnd <> 0
       Rp = IsWindowVisible(hwnd)
'      If Rp = 0 Then GoTo 10
       Rp = IsIconic(hwnd)
'      If Rp > 0 Then GoTo 10
'      If hwnd = MHwnd Then GoTo 10
      
       Lg = GetWindowTextLength(hwnd)
'      If Lg = 0 Then GoTo 10
      
       Rp = GetWindowRect(hwnd, Tr)
       zRw = Tr.Right - Tr.Left
'      If zRw = 0 Then GoTo 10
       zRh = Tr.Bottom - Tr.Top
'      If zRh = 0 Then GoTo 10
      
       Nom = Space$(Lg + 1)
       GetWindowText hwnd, Nom, Lg + 1
       Nom = Left$(Nom, Lg)
       Class = Space$(120)
       Lg = GetClassName(hwnd, Class, 120)
       Class = Left$(Class, Lg)
'      If Class = "ThunderRT6PictureBoxDC" Then GoTo 10
'      If Class = "Shell_TrayWnd" Then GoTo 10
'      If Class = "IEFrame" then goto 10
'      if Class = "ThunderRT6FormDC" Then goto 10
      
       Set Ligne = Lv.ListItems.Add
       Ligne.Text = Format$(hwnd, "00000000")
       Ligne.SubItems(1) = Class
       Ligne.SubItems(2) = Nom
       Ligne.SubItems(3) = zRw & "x" & zRh
        
10     hwnd = GetWindow(hwnd, GW_HWNDNEXT)
       Loop

End Function

Daniel



Cette discussion est classé dans : api, enumwindows, postmessage, toucher


Répondre à ce message

Sujets en rapport avec ce message

sendmessage postmessage api [ par marty14 ] Bonsoir tt le monde,J' ai une petite question a vous poser ,  j'utilise les API SENDMESSAGELONG pour envoyer une commande a un programme mais mon peti question erreur [ par marty14 ] Bonjour,Je cale sur un retour d'erreur , si j'envois au programe AA qui n'est pas ouvert:Call PostMessage(AA, WM_KEYDOWN, vbKeyDown, 0&) 'DOWNCall Pos Quelle API pour modifier l'accélération matérielle de la carte son ? [ par jmc70 ] Par défaut, Windows XP ajuste l'accélération matérielle de la carte son au maximum. Or avec certains PC équipés de cartes de début de gamme, des probl l'arobase avec l'api keybd_event [ par itzapalapa ] Salut, Je cherche à automatiser certains de mes surfs quotidiens et je ne parviens pas à générer le signe '@' avec l'aide de l'api  'keybd_event' ; je copier coller en couleur [ par patbl ] bonjour,je suis perdue depuis quelques jours la je bloque, j'ai besoin de votre aide ce que je veux faire j'ai une feuille "ne pas toucher" et une aut Positionnement par Api d'une liste de Directorie [ par Cjvg ] Bonjour,    J'utilise les Apis  - SHBrowseForFolder(Boite) et SHGetPathFromIDList -  pour afficher desdirectories.Question: Peux t'on positionner la b Construire la réplique MenuStrip d'un menu récupéré avec l'API GetMenu() [ par Gammacronosios ] Bonjour amis programmeur.Je suis loin d'être débutant en programmation vb.net, mais je dois dire que là, j'ai comme un problème...Voila, je souhaitera ?API vista - Sons - Obtenir et modifier le volume principale [ par werdDomain ] Bonjours, j'aimerais mettre la main sur les api de vista pour contrôler le volume principale ...J'ai chercher sur le web, peut-être que je n'utilise p Api dans Visual Studio 2008 ? [ par Solher ] Salut !J'ai un problème avec le Api dans Visual Studio 2008.En fait j'ai copié un code pour modifier mon form en rectangle avec les bords arrondis.Dan sendmesage Postmessage [ par POURMONET ] Bonjour,ça coince. Je dois être un peu neuneu, mais ce bout de code ne fonctionne pas.j'ai une application qui tourne, elle s'appelle "Identification"


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 2,714 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.