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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
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, _
lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "Kernel32.dll" ( _
ByVal dwDesiredAccessas As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcId As Long) As Long
Private Const PROCESS_QUERY_INFORMATION = 1024
Private Declare Function GetProcessTimes Lib "kernel32" ( _
ByVal hProcess As Long, _
lpCreationTime As FILETIME, _
lpExitTime As FILETIME, _
lpKernelTime As FILETIME, _
lpUserTime As FILETIME) As Long
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Declare Function FileTimeToLocalFileTime Lib "kernel32" ( _
lpFileTime As FILETIME, _
lpLocalFileTime As FILETIME) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" ( _
lpFileTime As FILETIME, _
lpSystemTime As SYSTEMTIME) As Long
Private Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long
'
Private Sub Form_Load()
Dim lHandle As Long, lPiD As Long, lProcessHandle As Long
Dim mDummy0 As FILETIME, mHeure As SYSTEMTIME
Dim mDummy1 As FILETIME, mDummy2 As FILETIME, mDummy3 As FILETIME
Dim Temp As Date
' Récupère le handle dy SysTray (élément obligatoire du système)
lHandle = FindWindow("Shell_traywnd", vbNullString)
If lHandle = 0 Then Debug.Print "1 - Handle": Beep: End
' Récupère le ProcessId de cet objet
Call GetWindowThreadProcessId(lHandle, lPiD)
If lPiD = 0 Then Debug.Print "2 - PiD": Beep: End
' Récupère le handle associé aux paramètres
lProcessHandle = OpenProcess(PROCESS_QUERY_INFORMATION, 0, lPiD)
If lProcessHandle = 0 Then Debug.Print "3 - Process": Beep: End
' Récupère la date de création du cette instance
Call GetProcessTimes(lProcessHandle, mDummy0, mDummy1, mDummy2, mDummy3)
' Referme le process
Call CloseHandle(lProcessHandle)
' Corrige l'heure en fonction des données locales (fuseau horaire)
Call FileTimeToLocalFileTime(mDummy0, mDummy1)
' Transforme le format de cette info en jj/mm/yyyy hh:nn:ss.lll
Call FileTimeToSystemTime(mDummy1, mHeure)
' Mise en forme
With mHeure
Temp = CDate(CStr(.wDay) & "/" & CStr(.wMonth) & "/" & CStr(.wYear) & _
" " & CStr(.wHour) & ":" & CStr(.wMinute) & ":" & CStr(.wSecond))
End With
' Heure de lancement de la session
txtHeureDémarrage.Text = Temp
' Nombre de minutes écoulées depuis le lancement
txtDémarréDepuis.Text = CStr(DateDiff("n", Temp, Now))
End Sub |
Partager