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

VB 6 et antérieur Discussion :

Detection application ouverte


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 24
    Par défaut Detection application ouverte
    Bonjour
    J'ai utilisé une fonction de detection d'application ouverte dans mon application,
    Et à l'execution elle genere l'erreur suivante:
    "Point d'entrée RegistreServiceProcess d'une DLL introuvable dans kernel32".
    Merci de m'aider à resoudre ce problème.
    Ou si qlq'un à une autre solution, merci de me la poster.

  2. #2
    HPJ
    HPJ est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Par défaut
    Donne nous les lignes de tes intructions Declare.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 24
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
    Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
    Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
    Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, ByVal uExitCode As Long) As Long
    Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, lProcessID As Long) As Long
     
    Declare Function RegisterServiceProcess Lib "kernel32" (ByVal ProcessID As Long, ByVal ServiceFlags As Long) As Long
    Declare Function GetCurrentProcessId Lib "kernel32" () As Long

  4. #4
    HPJ
    HPJ est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Par défaut
    RegisterServiceProcess n'existe que sous Windows 9x

  5. #5
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 24
    Par défaut
    Et que dois-je faire avec win2000 et winxp?

  6. #6
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 163
    Par défaut
    Dans un projet, j'ai mis un formulaire nommé Form1 avec un bouton dessus
    avec comme code dans le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Command1_Click()
        Unload Form1
        End
    End Sub
     
    Private Sub Form_Load()
        If App.PrevInstance Then    ' cherche une instance de programme précédente
            MsgBox "Le programme est déjà lancé, cliquez sur Ok puis utilisez ALT+TAB pour basculer sur le programme", vbOKOnly
            Unload Form1
            End
        End If
    End Sub
    en le compilant, puis en le l'éxécutant, seul la première instance du programme s'éxécute

    voila voila

  7. #7
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 24
    Par défaut
    Mon but moi c'est de tester est ce que outlook est chargé ou non,
    si non, charge le.

  8. #8
    HPJ
    HPJ est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Par défaut
    Pour faire ça, tu n'as pas besoin de la fonction RegisterServiceProcess.

  9. #9
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 163
    Par défaut
    bon, alors pour scruter la liste des appli qui tourne sur mes postes, j'utilise ceci :

    dans un module de déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Public Const max_path = 260
     
    ' structure d'information sur les process
    Public Type PROCESSENTRY32
        dwSize As Long
        cntUsage As Long
        th32ProcessID As Long
        th32DefaultHeapID As Long
        th32ModuleID As Long
        cntThreads As Long
        th32ParentProcessID As Long
        pcPriClassBase As Long
        dwFlags As Long
        szExeFile As String * max_path
    End Type
     
    ' structure d'information sur les threads
    Public Type THREADENTRY32
        dwSize As Long
        cntUsage As Long
        th32ThreadID As Long
        th32OwnerProcessID As Long
        tpBasePri As Long
        tpDeltaPri As Long
        dwFlags As Long
    End Type
     
    ' acces aux process et thread de windows
    Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal handle As Long, ByVal id As Long) As Long
    Public Declare Sub CloseHandle Lib "kernel32" (ByVal hpass As Long)
    'info sur les process
    Public Declare Function Process32First Lib "kernel32" (ByVal handle As Long, pointeur As PROCESSENTRY32) As Long
    Public Declare Function Process32Next Lib "kernel32" (ByVal handle As Long, pointeur As PROCESSENTRY32) As Long
    'info sur les threads
    Public Declare Function Thread32First Lib "kernel32" (ByVal handle As Long, pointeur As THREADENTRY32) As Long
    Public Declare Function Thread32Next Lib "kernel32" (ByVal handle As Long, pointeur As THREADENTRY32) As Long
    'info sur les fenetres
    Public Declare Function GetWindowTextA Lib "user32" (ByVal handle As Long, ByVal lpstring As String, ByVal cch As Long) As Long
    Public Declare Function GetDesktopWindow Lib "user32" () As Long
    Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
    Public Declare Function GetLastError Lib "kernel32" () As Long
     
     
    Public retour As PROCESSENTRY32
    Public monthread As THREADENTRY32
    et dans mon formulaire :
    (avec un textbox en multi-ligne et avec les scrollbars)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Private Sub Command1_Click()
        Dim titre_fenetre As String
        Dim handle As Long
        Dim procid As Long
        Dim nom_exe As String
        Dim explorer_ProcessID As Long
        Dim resul As Long
        Dim lg_titre_fenetre As Long
        Dim desktop_fenetre As Long
     
        Text1.Text = ""
        y = CreateToolhelp32Snapshot(2&, 0&)
        retour.dwSize = Len(retour)
        x = Process32First(y, retour)
        Do While x = 1
            nom_exe = Mid(retour.szExeFile & Chr(0), 1, InStr(1, retour.szExeFile, Chr(0), vbBinaryCompare) - 1)
            nom_exe = Mid(nom_exe, InStrRev(nom_exe, "\", -1, vbBinaryCompare) + 1, Len(nom_exe) - InStrRev(nom_exe, "\", -1, vbBinaryCompare) + 1)
            If (LCase(nom_exe) = "explorer.exe") Then
                ' sauvegarde de l'id du process explorer
                explorer_ProcessID = retour.th32ProcessID
            End If
            Text1.Text = Text1.Text & nom_exe & vbCrLf
            retour.dwSize = Len(retour)
            x = Process32Next(y, retour)
        Loop
        ' fermeture de l'handle snapshot
        CloseHandle (y)
     
        titre_fenetre = Space$(251)
        lg_titre_fenetre = 250
        desktop_fenetre = GetDesktopWindow()
        t = GetWindow(desktop_fenetre, 5)
        Do While t <> 0
            resul = GetWindowTextA(t, titre_fenetre, lg_titre_fenetre)
            If (resul > 11) Then
                If (LCase(Mid(titre_fenetre, 1, 10)) = "navigation") Then
                    liste = liste & Mid(titre_fenetre, 1, resul) & " , "
                End If
            End If
            t = GetWindow(t, 2)
        Loop
    End Sub
    il te reste a trouvé dans la liste l'application que tu cherches ...

  10. #10
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 163
    Par défaut
    avec dans le form, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Private Sub Command1_Click()
        Dim titre_fenetre As String
        Dim handle As Long
        Dim procid As Long
        Dim nom_exe As String
        Dim explorer_ProcessID As Long
        Dim resul As Long
        Dim lg_titre_fenetre As Long
        Dim desktop_fenetre As Long
     
        Text1.Text = ""
        y = CreateToolhelp32Snapshot(2&, 0&)
        retour.dwSize = Len(retour)
        x = Process32First(y, retour)
        Do While x = 1
            nom_exe = Mid(retour.szExeFile & Chr(0), 1, InStr(1, retour.szExeFile, Chr(0), vbBinaryCompare) - 1)
            nom_exe = Mid(nom_exe, InStrRev(nom_exe, "\", -1, vbBinaryCompare) + 1, Len(nom_exe) - InStrRev(nom_exe, "\", -1, vbBinaryCompare) + 1)
            If (LCase(nom_exe) = "explorer.exe") Then
                ' sauvegarde de l'id du process explorer
                explorer_ProcessID = retour.th32ProcessID
            End If
            Text1.Text = Text1.Text & nom_exe & vbCrLf
            retour.dwSize = Len(retour)
            x = Process32Next(y, retour)
        Loop
        ' fermeture de l'handle snapshot
        CloseHandle (y)
     
        titre_fenetre = Space$(251)
        lg_titre_fenetre = 250
        desktop_fenetre = GetDesktopWindow()
        t = GetWindow(desktop_fenetre, 5)
        Do While t <> 0
            resul = GetWindowTextA(t, titre_fenetre, lg_titre_fenetre)
            If (resul > 0) Then
    '            If (LCase(Mid(titre_fenetre, 1, 10)) = "navigation") Then
                    Text1.Text = Text1.Text & Mid(titre_fenetre, 1, resul) & vbCrLf
    '                liste = liste & Mid(titre_fenetre, 1, resul) & " , "
    '            End If
            End If
            t = GetWindow(t, 2)
        Loop
    End Sub
    c'est même carrément mieux ...

  11. #11
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 24
    Par défaut
    Bonjour,
    J'ai fais ça pour ouvrir outlook, mais avant de l'ouvrir je dois tester est ce qu'il n'est pas déjà ouvert pour que je ne l'ouvre une 2ième fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Dim AppliOutlook As Outlook.Application
        Set AppliOutlook = New Outlook.Application
        AppliOutlook.Quit
        AppliOutlook
        Set AppliOutlook = Nothing

Discussions similaires

  1. [VBA-E] Application ouverte ?
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/03/2007, 15h44
  2. [VBA-A] Applications ouvertes
    Par TiT0f dans le forum VBA Access
    Réponses: 18
    Dernier message: 09/06/2006, 09h06
  3. [VB6] fermer application ouverte avec shellexecute
    Par prodi_64 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 24/04/2006, 17h36
  4. Fermer toutes applications ouvertes
    Par kikica dans le forum Langage
    Réponses: 13
    Dernier message: 04/02/2006, 23h34
  5. Accès à une application ouverte (OLE Automation ?)
    Par PascalB dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/06/2002, 14h39

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