Imports System.Runtime.InteropServices Namespace YourNamespace Public NotInheritable Class Win32Api Public Shared HWND_BROADCAST As IntPtr = IntPtr.op_Explicit(&HFFFF) Public Const WM_CLOSE As Int32 = &H10 Public Const WM_QUIT As Int32 = &H12 Public Const WM_DESTROY As Int32 = &H2 Public Const ERROR_ALREADY_EXISTS As Int32 = 183 Public Const WM_WININICHANGE As Int32 = &H1A Public Const INI_INTL As Int32 = 1 Public Const LPtr As Int32 = &H40 Public Const HKEY_LOCAL_MACHINE As Int32 = -2147483646 '(&H80000002) Public Const EVENT_ALL_ACCESS As Int32 = &H3 Public Const WAIT_OBJECT_0 As Int32 = 0 Public Const WAIT_TIMEOUT As Int32 = &H102 '258 Public Const WAIT_FAILED As Int32 = -1 '&hFFFFFFFF #If FULL_FRAME = True Then Private Const DllName As String = "advapi32.dll" Private Const DllName2 As String = "kernel32.dll" Private Const DllName3 As String = "Version.dll" Private Const DllName4 As String = "user32.dll" #Else Private Const DllName As String = "coredll.dll" Private Const DllName2 As String = "coredll.dll" Private Const DllName3 As String = "coredll.dll" Private Const DllName4 As String = "coredll.dll" _ Public Shared Sub NKDbgPrintfW(ByVal aMsg As String) End Sub _ Public Shared Function SetUserDefaultLCID(ByVal LoCaleID As Int32) As Boolean End Function _ Public Shared Function SetUserDefaultUILanguage(ByVal langid As Int16) As Boolean End Function _ Public Shared Function GetUserDefaultUILanguage() As Int16 End Function _ Public Shared Function KernelIoControl(ByVal dwIoControlCode As Int32, ByVal lpInBuf As IntPtr, ByVal nInBufSize As Int32, ByVal lpOutBuf As IntPtr, ByVal nOutBufSize As Int32, ByVal lpBytesReturned As IntPtr) As Boolean End Function Public Shared Sub ResetUnit() KernelIoControl(16842812, IntPtr.Zero, 0, IntPtr.Zero, 0, IntPtr.Zero) End Sub _ Public Shared Sub TouchCalibrate() End Sub #Region "Host name" Public Shared Function SetTheHostName(ByVal aDeviceName As String) As Boolean Dim byt() As Byte = System.Text.Encoding.ASCII.GetBytes(aDeviceName + Microsoft.VisualBasic.Constants.vbNullChar) Dim ret As Int32 = Win32Api.sethostname(byt, byt.Length) If ret <> 0 Then Return False End If Return True End Function _ Public Shared Function sethostname(ByVal pName As Byte(), ByVal cName As Int32) As Int32 End Function #End Region #Region "mouse_event" _ Public Shared Sub mouse_event(ByVal dwFlags As Int32, ByVal dx As Int32, ByVal dy As Int32, ByVal dwData As Int32, ByVal dwExtraInfo As Int32) End Sub ' Wrapper for mouse_event, performing click action on *SCREEN* coordinates given, on *OUR* device Public Shared Sub PerformMouseClick(ByVal aX As Int32, ByVal aY As Int32) 'Dim m1 As Int32 = (65535 \ Screen.PrimaryScreen.Bounds.Width) 'Dim m2 As Int32 = (65535 \ Screen.PrimaryScreen.Bounds.Height) 'Dim x As Int32 = aX * m1 'Dim y As Int32 = aY * m2 'Win32Api.mouse_event(2 Or &H8000, x, y, 0, 0) 'Win32Api.mouse_event(4 Or &H8000, x, y, 0, 0) Win32Api.mouse_event(2 Or &H8000, aX * 205, aY * 273, 0, 0) Win32Api.mouse_event(4 Or &H8000, aX * 205, aY * 273, 0, 0) End Sub #End Region #End If #Region "kernel32" _ Public Shared Function QueryPerformanceCounter(ByRef lpPerformanceCounter As Long) As Integer End Function _ Public Shared Function QueryPerformanceFrequency(ByRef lpFrequency As Long) As Integer End Function _ Public Shared Function LocalAlloc(ByVal uFlags As Integer, ByVal uBytes As Integer) As IntPtr End Function _ Public Shared Function LocalFree(ByVal hMem As IntPtr) As IntPtr End Function _ Public Shared Function CloseHandle(ByVal hObject As IntPtr) As Boolean End Function _ Public Shared Function GetModuleFileName(ByVal hModule As IntPtr, ByVal lpFileName As System.Text.StringBuilder, ByVal nSize As Int32) As Int32 End Function #Region "ini file reading" _ Public Shared Function GetPrivateProfileString(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As System.Text.StringBuilder, ByVal nSize As Int32, ByVal lpFileName As String) As Int32 End Function _ Public Shared Function WritePrivateProfileString(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Int32 End Function #End Region #Region "SetTime" Public Structure SystemTime Public Year As System.UInt16 Public Month As System.UInt16 Public DayOfWeek As System.UInt16 Public Day As System.UInt16 Public Hour As System.UInt16 Public Minute As System.UInt16 Public Second As System.UInt16 Public MilliSecond As System.UInt16 Public Sub New(ByVal aYear As UInt16, ByVal aMonth As UInt16, ByVal aDay As UInt16, ByVal aHour As UInt16, ByVal aMinute As UInt16, ByVal aSecond As UInt16) Try Year = aYear Month = aMonth DayOfWeek = Convert.ToUInt16(0) Day = aDay Hour = aHour Minute = aMinute Second = aSecond MilliSecond = Convert.ToUInt16(0) Catch ex As Exception TcTrace.Assert(False, "SystemTime: Sub New", ex.ToString()) End Try End Sub Public Sub New(ByVal aByteArr() As Byte, ByVal aOffset As Int32) Year = BitConverter.ToUInt16(aByteArr, aOffset + 0) Month = BitConverter.ToUInt16(aByteArr, aOffset + 2) DayOfWeek = BitConverter.ToUInt16(aByteArr, aOffset + 4) Day = BitConverter.ToUInt16(aByteArr, aOffset + 6) Hour = BitConverter.ToUInt16(aByteArr, aOffset + 8) Minute = BitConverter.ToUInt16(aByteArr, aOffset + 10) Second = BitConverter.ToUInt16(aByteArr, aOffset + 12) MilliSecond = BitConverter.ToUInt16(aByteArr, aOffset + 14) End Sub Public Function ToByteArray() As Byte() Dim retBytes(16 - 1) As Byte Buffer.BlockCopy(BitConverter.GetBytes(Year), 0, retBytes, 0, 2) Buffer.BlockCopy(BitConverter.GetBytes(Month), 0, retBytes, 2, 2) Buffer.BlockCopy(BitConverter.GetBytes(DayOfWeek), 0, retBytes, 4, 2) Buffer.BlockCopy(BitConverter.GetBytes(Day), 0, retBytes, 6, 2) Buffer.BlockCopy(BitConverter.GetBytes(Hour), 0, retBytes, 8, 2) Buffer.BlockCopy(BitConverter.GetBytes(Minute), 0, retBytes, 10, 2) Buffer.BlockCopy(BitConverter.GetBytes(Second), 0, retBytes, 12, 2) Buffer.BlockCopy(BitConverter.GetBytes(MilliSecond), 0, retBytes, 14, 2) Return retBytes End Function End Structure Public Enum TimeZoneState Invalid = &HFFFFFFFF Unknown = 0 Standard = 1 Daylight = 2 End Enum _ Public Shared Function SetLocalTime(ByRef lpSystemTime As SystemTime) As Boolean End Function _ Public Shared Function SetSystemTime(ByRef lpSystemTime As SystemTime) As Boolean End Function _ Public Shared Function GetTimeZoneInformation(ByVal lpTimeZoneInformation() As Byte) As TimeZoneState End Function _ Public Shared Function SetTimeZoneInformation(ByVal lpTimeZoneInformation() As Byte) As Boolean End Function #End Region #Region "GlobalMemoryStatus" Public NotInheritable Class MemoryStatus Public Length As Int32 Public MemoryLoad As Int32 Public TotalPhysical As Int32 Public AvailPhysical As Int32 Public TotalPageFile As Int32 Public AvailPageFile As Int32 Public TotalVirtual As Int32 Public AvailVirtual As Int32 Public Sub New() Length = Marshal.SizeOf(Me) End Sub End Class _ Public Shared Sub GlobalMemoryStatus(ByVal lpBuffer As MemoryStatus) End Sub #End Region #Region "Virtual Alloc/Copy/Free" Public Const MEM_RESERVE As Int32 = &H2000 Public Const MEM_RELEASE As Int32 = &H8000 Public Const PAGE_READWRITE As Int32 = &H4 Public Const PAGE_NOCACHE As Int32 = &H200 _ Public Shared Function VirtualAlloc(ByVal lpAddress As Int32, ByVal dwSize As Int32, ByVal flAllocationType As Int32, ByVal flProtect As Int32) As IntPtr End Function _ Public Shared Function VirtualCopy(ByVal lpvDest As IntPtr, ByVal lpvSrc As Int32, ByVal cbSize As Int32, ByVal fdwProtect As Int32) As Boolean End Function _ Public Shared Function VirtualFree(ByVal lpAddress As IntPtr, ByVal dwSize As Int32, ByVal dwFreeType As Int32) As Boolean End Function #End Region #Region "Processor Type" _ Public Shared Sub GetSystemInfo(ByVal lpSystemInfo As Int32()) End Sub #End Region #Region "Event, Semaphore" _ Public Shared Function OpenEvent(ByVal dwDesiredAccess As Int32, ByVal bInheritHandle As Boolean, ByVal lpName As String) As IntPtr End Function _ Public Shared Function WaitForSingleObject(ByVal hHandle As IntPtr, ByVal dwMilliseconds As Int32) As Int32 End Function _ Public Shared Function CreateEvent(ByVal lpEventAttributes As IntPtr, ByVal bManualReset As Boolean, ByVal bInitialState As Boolean, ByVal lpName As String) As IntPtr End Function _ Public Shared Function CreateSemaphore(ByVal lpSemaphoreAttributes As IntPtr, ByVal lInitialCount As Int32, ByVal lMaximumCount As Int32, ByVal lpName As String) As IntPtr End Function _ Public Shared Function ReleaseSemaphore(ByVal hSemaphore As IntPtr, ByVal lReleaseCount As Int32, ByRef lpPreviousCount As Int32) As Boolean End Function _ Public Shared Function OpenSemaphore(ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Boolean, ByVal lpName As String) As IntPtr End Function Private Enum EventFlags EVENT_PULSE = 1 EVENT_RESET = 2 EVENT_SET = 3 End Enum _ Private Shared Function EventModify(ByVal hEvent As IntPtr, ByVal [function] As Int32) As Int32 End Function _ Private Shared Function PulseEventFullFx(ByVal hEvent As IntPtr) As Boolean End Function _ Private Shared Function SetEventFullFx(ByVal hEvent As IntPtr) As Boolean End Function _ Private Shared Function ResetEventFullFx(ByVal hEvent As IntPtr) As Boolean End Function Public Shared Function SetEvent(ByVal hEvent As IntPtr) As Boolean #If FULL_FRAME Then Return SetEventFullFx(hEvent) #Else Return Convert.ToBoolean(EventModify(hEvent, EventFlags.EVENT_SET)) #End If End Function Public Shared Function ResetEvent(ByVal hEvent As IntPtr) As Boolean #If FULL_FRAME Then Return ResetEventFullFx(hEvent) #Else Return Convert.ToBoolean(EventModify(hEvent, EventFlags.EVENT_RESET)) #End If End Function Public Shared Function PulseEvent(ByVal hEvent As IntPtr) As Boolean #If FULL_FRAME Then Return PulseEventFullFx(hEvent) #Else Return Convert.ToBoolean(EventModify(hEvent, EventFlags.EVENT_PULSE)) #End If End Function #End Region #Region "CreateProcess" _ Public Shared Function CreateProcess(ByVal lpszImageName As String, ByVal lpszCmdLine As String, ByVal lpsaProcess As IntPtr, ByVal lpsaThread As IntPtr, ByVal fInheritHandles As Int32, ByVal fdwCreate As Int32, ByVal lpvEnvironment As IntPtr, ByVal lpszCurDir As IntPtr, ByVal lpsiStartInfo As IntPtr, ByVal lppiProcInfo As ProcessInfo) As Boolean End Function Public NotInheritable Class ProcessInfo Public hProcess As IntPtr = IntPtr.Zero Public hThread As IntPtr = IntPtr.Zero Public dwProcessID As Int32 = 0 Public dwThreadID As Int32 = 0 End Class #End Region #End Region #Region "user32 - Windows User Interface" _ Public Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr End Function _ Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As System.Int32, ByVal wParam As System.Int32, ByVal lParam As System.Int32) As IntPtr End Function _ Public Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As System.Int32, ByVal wParam As System.Int32, ByVal lParam As System.Int32) As IntPtr End Function _ Public Shared Function GetFocus() As IntPtr End Function _ Public Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As Int32, ByVal X As Int32, ByVal Y As Int32, ByVal cx As Int32, ByVal cy As Int32, ByVal uFlags As Int32) As Boolean End Function _ Public Shared Function GetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Int32) As Int32 End Function _ Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Int32, ByVal dwNewLong As Int32) As Int32 End Function #End Region #Region "iphlpapi" _ Public Shared Function GetAdaptersInfo(ByVal pAdapterInfo As IntPtr, ByRef pOutBufLen As Integer) As Integer End Function _ Public Shared Function GetIpStatistics(ByRef pStats As MIB_IPSTATS) As Int32 End Function Public Structure MIB_IPSTATS Public dwForwarding As Int32 Public dwDefaultTTL As Int32 Public dwInReceives As Int32 'Specifies the number of datagrams received. Public dwInHdrErrors As Int32 Public dwInAddrErrors As Int32 Public dwForwDatagrams As Int32 Public dwInUnknownProtos As Int32 Public dwInDiscards As Int32 'Specifies the number of received datagrams discarded. Public dwInDelivers As Int32 Public dwOutRequests As Int32 'Specifies the number of outgoing datagrams that IP is requested to transmit. This number does not include forwarded datagrams. Public dwRoutingDiscards As Int32 Public dwOutDiscards As Int32 'Specifies the number of transmitted datagrams discarded. Public dwOutNoRoutes As Int32 'Specifies the number of datagrams for which this computer did not have a route to the destination IP address. These datagrams were discarded. Public dwReasmTimeout As Int32 Public dwReasmReqds As Int32 Public dwReasmOks As Int32 Public dwReasmFails As Int32 Public dwFragOks As Int32 Public dwFragFails As Int32 Public dwFragCreates As Int32 Public dwNumIf As Int32 Public dwNumAddr As Int32 Public dwNumRoutes As Int32 End Structure #End Region #Region "Version.dll - File Info" _ Public Shared Function GetFileVersionInfo(ByVal lptstrFilename As String, ByVal dwHandle As Int32, ByVal dwLen As Int32, ByVal lpData As IntPtr) As Boolean End Function _ Public Shared Function GetFileVersionInfoSize(ByVal lptstrFilename As String, ByRef lpdwHandle As Int32) As Int32 End Function _ Public Shared Function VerQueryValue(ByVal pBlock As IntPtr, ByVal lpSubblock As String, ByRef lplpBuffer As IntPtr, ByRef puLen As UInt32) As Boolean End Function #End Region #Region "advapi32.dll" _ Public Shared Function RegFlushKey(ByVal hKey As Int32) As Int32 End Function #Region "Crypto functions" #Region "Constants" Public Const PROVIDER As String = "Microsoft Base Cryptographic Provider v1.0" Public Const PROV_RSA_FULL As Int32 = 1 Public Const CRYPT_NEWKEYSET As Int32 = 8 ' dwFlag definitions for CryptGenKey Public Const CRYPT_EXPORTABLE As Int32 = &H1 'Private Const CRYPT_USER_PROTECTED As Int32 = &H2 'Private Const CRYPT_CREATE_SALT As Int32 = &H4 'Private Const CRYPT_UPDATE_KEY As Int32 = &H8 'Private Const CRYPT_NO_SALT As Int32 = &H10 'Private Const CRYPT_PREGEN As Int32 = &H40 ' Hash sub ids Public Const ALG_SID_MD2 As Int32 = 1 'Private Const ALG_SID_MD4 As Int32 = 2 Private Const ALG_SID_MD5 As Int32 = 3 'Private Const ALG_SID_SHA As Int32 = 4 Public Const ALG_SID_SHA1 As Int32 = 4 'Private Const ALG_SID_MAC As Int32 = 5 'Private Const ALG_SID_RIPEMD As Int32 = 6 'Private Const ALG_SID_RIPEMD160 As Int32 = 7 'Private Const ALG_SID_SSL3SHAMD5 As Int32 = 8 'Private Const ALG_SID_HMAC As Int32 = 9 'Private Const ALG_SID_TLS1PRF As Int32 = 10 'Private Const ALG_SID_RC2 As Int32 = 2 'Private Const ALG_SID_RC5 As Int32 = 13 ' Algorithm classes 'Private Const ALG_CLASS_ANY As Int32 = 0 'Private Const ALG_CLASS_SIGNATURE As Int32 = 8192 '(1 << 13) 'Private Const ALG_CLASS_MSG_ENCRYPT As Int32 = 16384 '(2 << 13) Public Const ALG_CLASS_DATA_ENCRYPT As Int32 = 24576 '(3 << 13) Public Const ALG_CLASS_HASH As Int32 = 32768 '(4 << 13) 'Private Const ALG_CLASS_KEY_EXCHANGE As Int32 = 40990 '(5 << 13) = 5 * Math.Pow(2, 13) ' Algorithm types Public Const ALG_TYPE_ANY As Int32 = 0 'Private Const ALG_TYPE_DSS As Int32 = 512 'Private Const ALG_TYPE_RSA As Int32 = 1024 Public Const ALG_TYPE_BLOCK As Int32 = 1536 'Private Const ALG_TYPE_STREAM As Int32 = 2048 ' algorithm identifier definitions Public Const CALG_MD2 As Int32 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD2 'Private Const CALG_MD4 As Int32 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD4 Private Const CALG_MD5 As Int32 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD5 'Private Const CALG_SHA As Int32 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_SHA Public Const CALG_SHA1 As Int32 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_SHA1 'Private Const CALG_MAC As Int32 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MAC Public Const CALG_DES As Int32 = ALG_CLASS_DATA_ENCRYPT Or ALG_TYPE_BLOCK Or ALG_SID_DES 'Private Const CALG_RC2 As Int32 = ALG_CLASS_DATA_ENCRYPT Or ALG_TYPE_BLOCK Or ALG_SID_RC2 'Private Const CALG_RC5 As Int32 = ALG_CLASS_DATA_ENCRYPT Or ALG_TYPE_BLOCK Or ALG_SID_RC5 Public Const HP_HASHVAL As Int32 = 2 Public Const HP_HASHSIZE As Int32 = 4 Public Const ALG_SID_DES As Integer = 1 'Private Const ALG_SID_3DES As Integer = 3 'Private Const ALG_SID_DESX As Integer = 4 #End Region _ Public Shared Function CryptEncrypt(ByVal hKey As IntPtr, ByVal hHash As IntPtr, ByVal Final As Boolean, ByVal dwFlags As Int32, ByVal pbData As Byte(), ByRef pdwDataLen As Int32, ByVal dwBufLen As Int32) As Boolean End Function _ Public Shared Function CryptDecrypt(ByVal hKey As IntPtr, ByVal hHash As IntPtr, ByVal Final As Boolean, ByVal dwFlags As Int32, ByVal pbData As Byte(), ByRef pdwDataLen As Int32) As Boolean End Function _ Public Shared Function CryptDeriveKey(ByVal hProv As IntPtr, ByVal Algid As Int32, ByVal hHash As IntPtr, ByVal dwFlags As Int32, ByRef hKey As IntPtr) As Boolean End Function _ Public Shared Function CryptDestroyKey(ByVal hKey As IntPtr) As Boolean End Function _ Public Shared Function CryptAcquireContext(ByRef hProv As IntPtr, ByVal pszContainer As String, ByVal pszProvider As String, ByVal dwProvType As Int32, ByVal dwFlags As Int32) As Boolean End Function _ Public Shared Function CryptCreateHash(ByVal hProv As IntPtr, ByVal Algid As Int32, ByVal hKey As IntPtr, ByVal dwFlags As Int32, ByRef phHash As IntPtr) As Boolean End Function _ Public Shared Function CryptHashData(ByVal hHash As IntPtr, ByVal pbData As Byte(), ByVal dwDataLen As Int32, ByVal dwFlags As Int32) As Boolean End Function _ Public Shared Function CryptGetHashParam(ByVal hHash As IntPtr, ByVal dwParam As Int32, ByVal pbData As Byte(), ByRef pdwDataLen As Int32, ByVal dwFlags As Int32) As Boolean End Function ' _ 'Public Shared Function CryptGenKey(ByVal hProv As IntPtr, ByVal Algid As Int32, ByVal dwFlags As Int32, ByRef phKey As IntPtr) As Boolean 'End Function _ Public Shared Function CryptDestroyHash(ByVal hHash As IntPtr) As Boolean End Function _ Public Shared Function CryptReleaseContext(ByVal hProv As IntPtr, ByVal dwFlags As Int32) As Boolean End Function #End Region #End Region End Class End Namespace