'=========================================================================== ' Subject: DATE AND TIME DISPLAY Date: 02-09-98 (15:55) ' Author: Dave Navarro, Jr. Code: PBDLL ' Origin: dave@powerbasic.com Packet: PBDLL.ABC '=========================================================================== '============================================================================== ' ' Date and Time Display ' Copyright (c) 1997 by PowerBASIC, Inc. ' ' Uses the Windows API to retrieve the current local date and time and ' display them using the preferred formats specified by the user and ' country settings. ' ' Requires MKCON.EXE utility to make it a console application. ' '============================================================================== $DIM ALL $COMPILE EXE '============================================================================== %NULL = 0 %STD_OUTPUT_HANDLE = -11& %LOCALE_SLONGDATE = &H20 ' long date format string %LOCALE_STIMEFORMAT = &H1003 ' time format string %LOCALE_USER_DEFAULT = &H0000 %DATE_SHORTDATE = &H1 ' use short date picture %DATE_LONGDATE = &H2 ' use long date picture %TIME_NOSECONDS = &H2& ' do not use seconds 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 GetStdHandle LIB "KERNEL32.DLL" ALIAS "GetStdHandle" (BYVAL nStdHandle AS LONG) AS LONG DECLARE FUNCTION WriteFile LIB "KERNEL32.DLL" ALIAS "WriteFile" (BYVAL hFile AS LONG, lpBuffer AS ANY, BYVAL nNumberOfBytesToWrite AS LONG, lpNumberOfBytesWritten AS LONG, lpOverlapped AS LONG) AS LONG DECLARE SUB GetLocalTime LIB "KERNEL32.DLL" ALIAS "GetLocalTime" (lpSystemTime AS SYSTEMTIME) DECLARE FUNCTION GetDateFormat LIB "KERNEL32.DLL" ALIAS "GetDateFormatA" (BYVAL Locale AS LONG, BYVAL dwFlags AS LONG, lpDate AS SYSTEMTIME, lpFormat AS ASCIIZ, lpDateStr AS ASCIIZ, BYVAL cchDate AS LONG) AS LONG DECLARE FUNCTION GetTimeFormat LIB "KERNEL32.DLL" ALIAS "GetTimeFormatA" (BYVAL Locale AS LONG, BYVAL dwFlags AS LONG, lpTime AS SYSTEMTIME, lpFormat AS ASCIIZ, lpTimeStr AS ASCIIZ, BYVAL cchTime AS LONG) AS LONG '============================================================================== GLOBAL hOutput AS LONG '============================================================================== SUB StdOut(BYVAL x AS STRING) LOCAL Buffer AS LONG LOCAL Written AS LONG Buffer = STRPTR(x) WriteFile hOutput, BYVAL Buffer, LEN(x), Written, BYVAL %NULL END SUB SUB StdOutLn(BYVAL x AS STRING) StdOut x & CHR$(13,10) END SUB '============================================================================== FUNCTION WinMain (BYVAL CurInst&, _ BYVAL PrvInst&, _ CmdLine AS ASCIIZ PTR, _ BYVAL CmdShow&) EXPORT AS LONG LOCAL st AS SYSTEMTIME LOCAL d AS ASCIIZ * 64 LOCAL t AS ASCIIZ * 64 LOCAL s AS ASCIIZ * 64 hOutput = GetStdHandle(%STD_OUTPUT_HANDLE) GetLocalTime st GetDateFormat %LOCALE_USER_DEFAULT, %DATE_LONGDATE, st, BYVAL %NULL, d, 64 GetDateFormat %LOCALE_USER_DEFAULT, %DATE_SHORTDATE, st, BYVAL %NULL, s, 64 GetTimeFormat %LOCALE_USER_DEFAULT, %TIME_NOSECONDS, st, BYVAL %NULL, t, 64 StdOutLn t & ", " & d & " (" & s & ")" END FUNCTION