プログラムの開始時間を取得          <TOP>


GetProcessTimes 指定されたプロセスのタイミング情報を取得

FileTimeToLocalFileTime 世界協定時刻形式ファイル時間をローカルファイル時間に変換

FileTimeToSystemTime ファイルタイムをシステムタイムに変換

GetCurrentProcess 現在のプロセスに対応する疑似ハンドルを取得

 

 

'================================================================
'= プログラムの開始時間を取得
'= WindowsNT3.1以降
'=    (GetProcessTimes.bas)
'================================================================
#include "Windows.bi"

Type FILETIME
    dwLowDateTime  As Long
    dwHighDateTime As Long
End Type

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

' 指定されたプロセスのタイミング情報を取得
Declare Function Api_GetProcessTimes& Lib "kernel32" Alias "GetProcessTimes" (ByVal hProcess&, lpCreationTime As FILETIME, lpExitTime As FILETIME, lpKernelTime As FILETIME, lpUserTime As FILETIME)

' 世界協定時刻形式ファイル時間をローカルファイル時間に変換
Declare Function Api_FileTimeToLocalFileTime& Lib "kernel32" Alias "FileTimeToLocalFileTime" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME)

' ファイルタイムをシステムファイルに変換
Declare Function Api_FileTimeToSystemTime& Lib "kernel32" Alias "FileTimeToSystemTime" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME)

' 現在のプロセスに対応する疑似ハンドルを取得
Declare Function Api_GetCurrentProcess& Lib "Kernel32" Alias "GetCurrentProcess" ()

Var Shared Text1 As Object

Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Var FT0 As FILETIME
    Var FT1 As FILETIME
    Var ST As SYSTEMTIME
    Var txt As String
    Var Ret As Long

    Ret = Api_GetProcessTimes(Api_GetCurrentProcess, FT1, FT0, FT0, FT0)
    Ret = Api_FileTimeToLocalFileTime(FT1, FT1)
    Ret = Api_FileTimeToSystemTime(FT1, ST)

    txt = txt & "このスレッドは、" & Chr$(13, 10)
    txt = txt & Trim$(Str$(ST.wYear)) & "/" & Right$(Str$(100 + ST.wMonth), 2) & "/" & Right$(Str$(100 + ST.wDay), 2) & Chr$(13, 10)
    txt = txt & Right$(Str$(100 + ST.wHour), 2) & ":" & Right$(Str$(100 + ST.wMinute), 2) & ":" & Right$(Str$(100 + ST.wSecond), 2) & Chr$(13, 10)
    txt = txt & "に開始されました!"
    Text1.SetWindowText txt
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End