Wednesday, April 29, 2009

WinHelp

'WinHelp


Const HELP_COMMAND = &H102&

Const HELP_CONTENTS = &H3&

Const HELP_CONTEXT = &H1

Const HELP_CONTEXTPOPUP = &H8&

Const HELP_FORCEFILE = &H9&

Const HELP_HELPONHELP = &H4

Const HELP_INDEX = &H3

Const HELP_KEY = &H101

Const HELP_MULTIKEY = &H201&

Const HELP_PARTIALKEY = &H105&

Const HELP_QUIT = &H2

Const HELP_SETCONTENTS = &H5&

Const HELP_SETINDEX = &H5

Const HELP_SETWINPOS = &H203&



Private Declare Function WinHelp
Lib "user32.dll"
Alias _

"WinHelpA" (ByVal hWndMain
As Long, ByVal lpHelpFile
As String, _

ByVal uCommand As Long, dwData
As Any) As Long


Private Sub Form_Load()

WinHelp Me.hWnd, "C:\Windows\help\display.hlp", _

HELP_CONTENTS, ByVal 0
End Sub

 

Execute by WinExec

'Execute by WinExec

Private Declare Function WinExec
Lib "kernel32" _

(ByVal lpCmdLine As String,
ByVal nCmdShow As Long)
As Long


Private Sub Form_Load()

'Execute explorer.exe

WinExec "Explorer.exe c:\", 10

End Sub



 

Upper-Lower Case

'UPPER-lower case



Private Declare Function CharLower
Lib "user32" Alias "CharLowerA" (ByVal lpsz
As String) As Long

Private Declare Function CharUpper
Lib "user32" Alias "CharUpperA" (ByVal lpsz
As String) As Long



Private Sub Form_Load()

Dim strSave As String, Upper
As String, Lower As String

'Set the Autoredraw property (set to Persistent Graphic)

Me.AutoRedraw = True

'This is the string we're going to use

strSave = "RockessAlpha.blogspot.com"

'Print it to the form

Me.Print "Original : " + strSave

'Convert all the characters to uppercase (like the UCase$-function from VB)

CharUpper strSave

Me.Print "Upper Case : " +  strSave

'Convert all the characters to lowercase (like the LCase$-function from VB)

CharLower strSave

Me.Print "Lower Case : " +  strSave

End Sub

Turn-Off Win NT

'Turn off Win NT
'Needs 1 module and 3 common button


'In a module


Private Const EWX_LOGOFF = 0

Private Const EWX_SHUTDOWN = 1

Private Const EWX_REBOOT = 2

Private Const EWX_FORCE = 4

Private Const TOKEN_ADJUST_PRIVILEGES = &H20

Private Const TOKEN_QUERY = &H8

Private Const SE_PRIVILEGE_ENABLED = &H2

Private Const ANYSIZE_ARRAY = 1

Private Const VER_PLATFORM_WIN32_NT = 2



Type OSVERSIONINFO

   
dwOSVersionInfoSize As Long

   
dwMajorVersion As Long

   
dwMinorVersion As Long

   
dwBuildNumber As Long

   
dwPlatformId As Long

   
szCSDVersion As String * 128

End Type



Type LUID

   
LowPart As Long

   
HighPart As Long

End Type



Type LUID_AND_ATTRIBUTES

   
pLuid As LUID

   
Attributes As Long

End Type



Type TOKEN_PRIVILEGES

   
PrivilegeCount As Long

   
Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES

End Type



Private Declare Function GetCurrentProcess
Lib "kernel32" ()
As Long

Private Declare Function OpenProcessToken
Lib "advapi32" _

(ByVal ProcessHandle As Long,
ByVal DesiredAccess As Long, _

TokenHandle As Long) As Long

Private Declare Function LookupPrivilegeValue
Lib "advapi32"
Alias _

"LookupPrivilegeValueA" (ByVal lpSystemName
As String, _

ByVal lpName As String, lpLuid
As LUID) As Long

Private Declare Function AdjustTokenPrivileges
Lib "advapi32" _

(ByVal TokenHandle As Long,
ByVal DisableAllPrivileges As Long, _

NewState As TOKEN_PRIVILEGES,
ByVal BufferLength As Long, _

PreviousState As TOKEN_PRIVILEGES, ReturnLength
As Long) As Long

Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags
As Long, _

ByVal dwReserved As Long)
As Long

Private Declare Function GetVersionEx Lib "kernel32"
Alias "GetVersionExA" _

(ByRef lpVersionInformation As
OSVERSIONINFO) As Long



'Detect if the program is running under Windows NT

Public Function IsWinNT()
As Boolean

    Dim myOS As
OSVERSIONINFO

   
myOS.dwOSVersionInfoSize = Len(myOS)

   
GetVersionEx myOS

    IsWinNT = (myOS.dwPlatformId = VER_PLATFORM_WIN32_NT)

End Function



'set the shut down privilege for the current application

Private Sub EnableShutDown()

    Dim hProc, hToken
As Long

    Dim mLUID As
LUID

    Dim mPriv, mNewPriv
As TOKEN_PRIVILEGES

   
hProc = GetCurrentProcess()

   
OpenProcessToken hProc, TOKEN_ADJUST_PRIVILEGES + _

   
TOKEN_QUERY, hToken

   
LookupPrivilegeValue "", "SeShutdownPrivilege", mLUID

   
mPriv.PrivilegeCount = 1

   
mPriv.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED

   
mPriv.Privileges(0).pLuid = mLUID

   
' enable shutdown privilege for the current application


   
AdjustTokenPrivileges hToken, False, mPriv, 4 + (12 * mPriv.PrivilegeCount), _

   
mNewPriv, 4 + (12 * mNewPriv.PrivilegeCount)

End Sub



' Shut Down NT

Public Sub ShutDownNT(Force
As Boolean)

   
Dim
ret , Flags As Long

   
Flags = EWX_SHUTDOWN

   
If
Force Then Flags = Flags + EWX_FORCE

   
If
IsWinNT Then EnableShutDown

   
ExitWindowsEx Flags, 0

End Sub



'Restart NT

Public Sub RebootNT(Force
As Boolean)

    Dim ret , Flags
As Long

   
Flags = EWX_REBOOT

   
If
Force Then Flags = Flags + EWX_FORCE

   
If
IsWinNT Then EnableShutDown

   
ExitWindowsEx Flags, 0

End Sub



'Log off the current user

Public Sub LogOffNT(Force As Boolean)

    Dim ret , Flags
As Long

   
Flags = EWX_LOGOFF

   
If
Force Then Flags = Flags + EWX_FORCE

If IsWinNT Then EnableShutDown

   
ExitWindowsEx Flags, 0

End Sub



'In a form

Private Sub Command1_Click()

   
LogOffNT True

End Sub



Private Sub Command2_Click()

   
RebootNT True

End Sub



Private Sub Command3_Click()

   
ShutDownNT True

End Sub



Private Sub Form_Load()

   
Command1.Caption = "Log Off NT"

   
Command2.Caption = "Reboot NT"

   
Command3.Caption = "Shutdown NT"

End Sub

 

Translate Background Color

'Translate Background Color



Private Declare Function TranslateColor
Lib "olepro32.dll"
Alias _

"OleTranslateColor" (ByVal clr
As OLE_COLOR, ByVal palet
As Long, _

col As Long) As Long



Private Sub Form_Load()

Dim RealColor As Long

'You can change me.backcolor

Me.BackColor = vbGreen

'Convert OLE colors to RGB colors

TranslateColor Me.BackColor, 0, RealColor

'show the result

MsgBox "The backcolor of this form is R=" + _

CStr(RealColor And &HFF&) + " G=" + _

CStr((RealColor And &HFF00&) / 2 ^ 8) + " B=" + _

CStr((RealColor And &HFF0000) / 2 ^ 16), vbOKOnly, "RockessAlpha"

End Sub



 

Thread Time

'Thread Time



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 GetThreadTimes
Lib "kernel32" _

(ByVal hThread As Long, lpCreationTime As FILETIME, _

lpExitTime As FILETIME, lpKernelTime As FILETIME, _

lpUserTime As FILETIME) As Long



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
GetCurrentThread Lib "kernel32" () As Long


Private Sub Form_Load()

Dim FT0 As FILETIME, FT1
As FILETIME, ST As
SYSTEMTIME
GetThreadTimes GetCurrentThread, FT1, FT0, FT0, FT0
FileTimeToLocalFileTime FT1, FT1

FileTimeToSystemTime FT1, ST

MsgBox "This thread was started at " + CStr(ST.wHour) + ":" _

+ CStr(ST.wMinute) + "." +
CStr(ST.wSecond) + " on " + _

CStr(ST.wMonth) + "/" +
CStr(ST.wDay) + "/" +
CStr(ST.wYear)

End Sub



 

Tab Text

'Tab Text

Private Declare Function TabbedTextOut
Lib "user32" Alias _

"TabbedTextOutA" (ByVal hdc
As Long, ByVal x
As Long, _

ByVal y As Long,
ByVal lpString As String,
ByVal nCount As Long, _

ByVal nTabPositions As Long, lpnTabStopPositions
As Long, _

ByVal nTabOrigin As Long)
As Long



Private Sub Form_Paint()

Dim TbSP(0 To 2) As Long, TbO(0
To 2) As Long

Dim mStr As String



'set the form's scalemode to Pixels

Me.ScaleMode = vbPixels



'Set the tabstops

TbSP(0) = 100

TbSP(1) = 200

TbSP(2) = 300

TbO(0) = 0

TbO(1) = 100

TbO(2) = 200



'print first string

mStr = "Rockess" + Chr$(9) + "Alpha" + Chr$(9) + "!"

TabbedTextOut Me.hdc, 0, 0, mStr, Len(mStr), 3, TbSP(0), TbO(0)



'print second string

mStr = "Visit" + Chr$(9) + "My" + Chr$(9) + "Blog"

TabbedTextOut Me.hdc, 0, Me.TextHeight(mStr), mStr, Len(mStr), 3, _

TbSP(0), TbO(0)

End Sub