Ouverture d'un nouveau message avec destinataire intégré

cs_chris_p Messages postés 120 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 27 juillet 2010 - 27 juil. 2010 à 13:50
cs_chris_p Messages postés 120 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 27 juillet 2010 - 30 juil. 2010 à 11:06
Bonjour à tous,

Sur mon programme, je souhaite cliquer sur un bouton, et que celui ci m'ouvre un nouveau message avec le destinataire déjà écrit.

J'y arrive plus ou moins mais le process iexplore.exe reste actif.
Mon code :

Shell("C:\Program Files\Internet Explorer\IEXPLORE.EXE mailto:" & " " & strtxt, vbHide)

Le strtxt correspond à ma variable, soit l'adresse mail.
Le problème, c'est qu'en mettant hide, cela cache le processus mais ne l'arrête pas.

Pour l'arreter, j'ai fais une commande sous DOS qui fonctionne :
taskkill /F /IM iexplore.exe

Seul problème, ilkill tous les process iexplore.exe.

Pouvez-vous m'indiquer la commande pour killer uniquement le process iexplorer.exe fraichement lancé ?

Merci d'avance
Bonne journée

Chris

2 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
27 juil. 2010 à 16:39
Salut

Oui ce n'est pas si simple j'ai quelque chose en
vb6
mais il faut le tester et puis je n'ai pas vu
que tu as besoin en vb.net
il faut fermer le process que tu as crée avec
le shell...
pour cela il faut trouver le handle de la fenetre
que le shell a crée en utilisant l'api function
findwindow comme parametre il faut lui procurer
le nom de la class que le ieexplorer a crée
pour cela je me suis servi du spy++ (du visual studio 98 je ne sais pas où est le spy++
du visual 2008 ) et cherché dans la liste des
windows quelque chose qui correspond à ieexplorer
j'ai trouvé la class name est nommé
Internet Explorer_Hidden enfin c'est comme ça
chez moi j'ai le windows xp
voila le code
 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, ByRef lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "Kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
Private Declare Function CloseHandle Lib "Kernel32" (ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "Kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Const SYNCHRONIZE = &H100000
Private Const PROCESS_TERMINATE As Long = &H1

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_CLOSE As Long = &H10
' Terminate the process.
Private Sub cmdTerminate_Click()
Dim target_hwnd As Long
Dim target_process_id As Long
Dim target_process_handle As Long

    ' Get the target's window handle.
   target_hwnd = FindWindow("Internet Explorer_Hidden", vbNullString)
   
    If target_hwnd = 0 Then
        MsgBox "Error finding target window handle"
        Exit Sub
    End If

    ' Get the process ID.
    GetWindowThreadProcessId target_hwnd, target_process_id
    If target_process_id = 0 Then
        MsgBox "Error finding target process ID"
        Exit Sub
    End If

    ' Open the process.
    target_process_handle = OpenProcess( _
        SYNCHRONIZE Or PROCESS_TERMINATE, _
        ByVal 0&, target_process_id)
    If target_process_handle = 0 Then
        MsgBox "Error finding target process handle"
        Exit Sub
    End If

    ' Terminate the process.
    If TerminateProcess(target_process_handle, 0&) = 0 Then
        MsgBox "Error terminating process"
    Else
        MsgBox "Process terminated"
    End If

    ' Close the process.
    CloseHandle target_process_handle
End Sub



il faut tester avec plusieurs fenetre ieexplorer
ouvert et verifier avec le taskmanager

Bonne prog
0
cs_chris_p Messages postés 120 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 27 juillet 2010
30 juil. 2010 à 11:06
Salut,

Merci pour ta réponse, je vais tester cela.

Chris
0
Rejoignez-nous