Private Function GetProcessByWindowTitle(ByVal titre As String) As Process 'requete de test fenetre Dim requete As IEnumerable(Of Process) From p As Process In Process.GetProcesses() Where p.MainWindowTitle titre For Each p As Process In requete 'on retourne le premier process venu Return p Next Return Nothing End Function
Dim p As Process = GetProcessByWindowTitle("Calculatrice") If p IsNot Nothing Then MessageBox.Show(p.ProcessName & " (" & p.MainWindowTitle & ") existe") 'arret du process p.Kill() Else MessageBox.Show("Process inexistant") End If
"espionner" en permanence
(en fonction de quoi, pour en être certain ?)
si tu y parviens (et ... sans failles maladroites ...) ce sera à un coût plus que significatif de tes ressources !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question- "espionner" en permanence (avec un timer, donc) l'apparition de toute nouvelle fenêtre
Pour l'instant je detecte bien si ma fenetre existeEt tu la trouves, dis-tu, grâce à MainWindowTitle.
Option Strict On Imports System.Runtime.InteropServices Public Class Form1 <DllImport("user32.dll")> _ Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByRef lParam As IntPtr) As IntPtr End Function <DllImport("user32.dll")> _ Shared Function ChildWindowFromPoint(ByVal hWnd As IntPtr, ByVal pnt As Point) As IntPtr End Function Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'recherche du process calculatrice Dim p() As Process = Process.GetProcessesByName("calc") 's'il existe ... If p.Length > 0 Then 'déterminatrion du handle de la calculatrice Dim handle_calc As IntPtr = p(0).MainWindowHandle 's'il existe ... If handle_calc <> IntPtr.Zero Then 'point (à changer) sur lequel appliquer le clic (ici le bouton 4) Dim point_calc As Point = New Point(70, 120) 'recherche du handle de l'objet sur lequel cliquer selon ses coordonnées Dim handle_objet As IntPtr = ChildWindowFromPoint(handle_calc, point_calc) 's'il existe... If handle_objet <> IntPtr.Zero Then 'on clique dessus SendMessage(handle_objet, &HF5&, 1, IntPtr.Zero) End If End If End If End Sub End Class
<DllImport("user32.dll")> _ Shared Function GetTopWindow(ByVal hWnd As IntPtr) As IntPtr End Function... te permettra de retrouver le handle de la fenêtre de ton fameux message.