con findwindow posso ottenere il processo sapendo il titolo esatto della finestra
Con FindWindow semmai ottieni l'handle della finestra in questione.
ho trovato "enumwindows" ma non riesco a capirne l'utilizzo.....
EnumWindows chiama la funzione di callback di cui passi l'indirizzo come primo parametro per ogni finestra top-level (quindi senza genitore) aperta nel sistema; in sostanza devi inserire in un modulo il seguente codice:
codice:
'Collezione in cui verranno memorizzati tutti i nomi delle finestre che iniziano con "autocad 2004 - "
Public WndCollection As Collection
'Dichiarazioni delle API
Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long)
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
'Dimensione dei buffer (all'occorrenza ampliabile senza problemi)
Public Const MAX_BUFSIZE=511
'Funzione accessoria
Public Function StringFromBuffer(Buffer As String) As String
'Carica una stringa dal buffer (utilizzata per recuperare le stringhe fornite dalle API di Windows)
Dim nPos As Long
nPos = InStr(Buffer, vbNullChar)
If nPos > 0 Then
StringFromBuffer = Left$(Buffer, nPos - 1)
Else
StringFromBuffer = Buffer
End If
End Function
'Funzione di callback di EnumWindows
Public Function EnumWindowsProc (ByVal hwnd As Long, ByVal lParam As Long) As Long
Const stringToSearch="autocad 2004 - "
Dim strbuf As String, windowTitle As String
EnumWindowsProc=True
strbuf = Space$(MAX_BUFSIZE)
If GetWindowText(hwnd, strbuf, MAX_BUFSIZE) Then
windowTitle= StringFromBuffer(strbuf)
Else
Exit Function
End If
If LCase$(Left$(windowTitle,Len(stringToSearch)))=LCase$(stringToSearch) Then
'Ha trovato una finestra il cui titolo inizia con "autocad 2004 - "; la aggiunge alla collezione
WndCollection.Add(windowTitle)
End if
End Function
'Restituisce False se l'operazione non va a buon termine
Public Function SearchForAutocadWindows() As Boolean
Set WndCollection=New Collection
SearchForAutocadWindows=EnumWindows(AddressOf EnumWindowsProc, 0)<>0
End Sub
A questo punto ti basterà lanciare SearchForAutocadWindows; non appena ritornerà nella collection WndCollection saranno contenuti tutti i titoli delle finestre di Autocad.
P.S.: non ho collaudato questo codice (VB6...
), quindi... a tuo rischio e pericolo