Salut, j'ai cherché (et cherché) beaucoup pour se code
Il permet d'avoir le handle d'une application que vous lancé
Merci de me laissé vos commentaires et vos suggestions
Source / Exemple :
Public Declare Function NextWindow Lib "user32" Alias "GetWindow" (ByVal hWND As Long, ByVal wCmd As Long) As Long
Public Declare Function TxtWindow Lib "user32" Alias "GetWindowTextA" (ByVal hWND As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function idPapa Lib "user32" Alias "GetParent" (ByVal hWND As Long) As Long
Public Declare Function MoveWindow Lib "user32" (ByVal hWND As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Public Declare Function SetPapa Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Type APPBLOCK
hWND(1 To 1024) As Long
Count As Integer
End Type
Public Function csProcessList() As APPBLOCK
Dim OAPP As APPBLOCK
Dim hWND As Long
Dim TitreFenetre As String * 255
Dim Titre As String
Dim papa, i As Integer
i = 1
hWND = NextWindow(RecupHandleBureau(), 5)
Do While hWND <> 0
TitreFenetre = String(255, 0)
R = TxtWindow(hWND, TitreFenetre, 255)
papa = idPapa(hWND)
If TitreFenetre <> String(255, 0) Then
Titre = TitreFenetre
Titre = Left(Titre, R)
OAPP.hWND(i) = hWND
i = i + 1
End If
hWND = NextWindow(hWND, 2)
Loop
OAPP.Count = i - 1
csProcessList = OAPP
End Function
Public Function GetLastHwnd(OAPP As APPBLOCK) As Long
Dim i As Integer, temp As APPBLOCK
temp = OAPP
DoEvents
OAPP = csProcessList
DoEvents
i = 1
While i < OAPP.Count + 1
If HwndExist(OAPP.hWND(i), temp) = True Then
Else
GetLastHwnd = OAPP.hWND(i)
Exit Function
End If
i = i + 1
Wend
GetLastHwnd = -1
End Function
Public Function HwndExist(sHwnd As Long, OldData As APPBLOCK) As Boolean
Dim i As Integer
i = 1
While i < OldData.Count + 1
If OldData.hWND(i) = sHwnd Then: HwndExist = True
i = i + 1
Wend
HwndExist = False
End Function
Public Function CygCRun(Program As String) As Long
Dim fa As APPBLOCK
fa = csProcessList()
DoEvents
On Error GoTo ReportError
Shell Program, vbNormalFocus
DoEvents
CygCRun = GetLastHwnd(fa)
Exit Function
ReportError:
CygCRun = -1
End Function
Conclusion :
Pour utiliser le code:
Mettez tout le code dans un module
ensuite vous le lancer comme suit
dim a as long
a=CygCRun("C:\Windows\Notepad.exe")
a contiendra le # d'handle de notepad.exe ( a moin q'une autre application soit lancé au meme moment )
je sais pas trop quel niveau est cette source, donc je la mets niv.2
Encore une foix laissé vos commentaires et vos suggestions, svp.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.