Vamsi's Visual Basic Snippets
Determine if a computer is connected to the net
Open Close the CD Rom drive tray
Remove application from CTRL ALT DEL list
VB-World - Tips - Changing Internet Explorer
VB-World - Tips - Control the Panel
VB-World - Tips - Snap the Mouse
Registry Loading the names of all sub keys
Prime Numbers : This code outputs all prime numbers up to the limit of the VB double type to the debug window, a text file, and a text box. In addition, it has the ability to optionally include non-prime numbers, and demonstrates factorizing these into a sequence of prime factors. You can also specify the number to start at, allowing you to stop processing and get on with some work, and resume processing at a later time, starting where you left off.
To use the code, create a form with one button (cmdCancel) with a caption of "Start", one check-box (chkNonPrime) with a caption of "Include non-primes", and one text-box (txtPrime). Paste the code into the form's module, and run. Click the "Start" button to start listing primes, tick the checkbox to include non-primes, or enter a number in the textbox to specify a starting point.
____________________________________________________________________________________
____________________________________________________________________________________
StartUp: This piece of code places creates an entry for the running application in the registry key Software\Microsoft\Windows\CurrentVersion\Run, so the application will run every time the current user logs on.
____________________________________________________________________________________
____________________________________________________________________________________
Version Compatibility: | Visual Basic 6 |
____________________________________________________________________________________
____________________________________________________________________________________
Task: Change the Windows display resolution. |
Declarations
Code |
____________________________________________________________________________________
____________________________________________________________________________________
Task: Determine if a computer is connected to the Internet |
Declarations
Code |
____________________________________________________________________________________
____________________________________________________________________________________
Task: Hide the mouse from the user |
Declarations
Code |
____________________________________________________________________________________
____________________________________________________________________________________
Task: Hide windows taskbar |
Declarations
Code |
____________________________________________________________________________________
____________________________________________________________________________________
Task: Open/Close the CD-Rom drive tray |
Declarations
Code |
____________________________________________________________________________________
____________________________________________________________________________________
Task: Reboot the computer |
Declarations
Code |
____________________________________________________________________________________
____________________________________________________________________________________
Task: Remove application from CTRL-ALT-DEL list |
Declarations
Code |
____________________________________________________________________________________
____________________________________________________________________________________
Task: Send Mail from Visual Basic Using OLE Messaging |
Declarations
Code |
____________________________________________________________________________________
____________________________________________________________________________________
Task: Shut down the computer |
Declarations
Code |
____________________________________________________________________________________
____________________________________________________________________________________
If your users have Internet Explorer, why not show off with a little programmatic tweaking?
To set the user’s start page, run the SetStartPage method, passing the new Web address.
To set the title of Internet Explorer, run SetWindowTitle, passing a new title.
This code works by delving into the registry and changing certain Internet Explorer keys.
Note: If the user has already started Internet Explorer and this code runs, the changes will not take place until the next reboot.
Usage
SetStartPage ("http://vamsionnet.tripod.com") SetWindowTitle ("Vamsi's Homepage")
Code
' Code to be placed in a module! Declare Function RegCreateKey Lib _ "advapi32.dll" Alias "RegCreateKeyA" _ (ByVal HKey As Long, ByVal lpSubKey As _ String, phkResult As Long) As Long Declare Function RegCloseKey Lib _ "advapi32.dll" (ByVal HKey As Long) As Long Declare Function RegSetValueEx Lib _ "advapi32.dll" Alias "RegSetValueExA" _ (ByVal HKey As Long, ByVal _ lpValueName As String, ByVal _ Reserved As Long, ByVal dwType _ As Long, lpData As Any, ByVal _ cbData As Long) As Long Public Const REG_SZ = 1 Public Const HKEY_CURRENT_USER = &H80000001 Public Sub SaveString(HKey As Long, Path As String, _ Name As String, Data As String) Dim KeyHandle As Long Dim r As Long r = RegCreateKey(HKey, Path, KeyHandle) r = RegSetValueEx(KeyHandle, Name, 0, _ REG_SZ, ByVal Data, Len(Data)) r = RegCloseKey(KeyHandle) End Sub Public Sub SetStartPage(URL As String) Call SaveString(HKEY_CURRENT_USER, _ "Software\Microsoft\Internet Explorer\Main", _ "Start Page", URL) End Sub Public Sub SetWindowTitle(Title As String) Call SaveString(HKEY_CURRENT_USER, _ "Software\Microsoft\Internet Explorer\Main", _ "Window Title", Title) End Sub
____________________________________________________________________________________
____________________________________________________________________________________
Need to run items from the Control Panel? This sneaky set of code snippets show you how to do everything, from launching the Display Properties through to starting the Dial-Up Networking Wizard - all in one line of code.
Simply scroll through the below list and copy-and-paste the command you require!
This code works by using the shell command to execute RunDLL32.exe, passing it special arguments pertaining to individual Control Panel items.
Code
' Display the Control Panel Call Shell("rundll32.exe shell32.dll,Control_RunDLL", vbNormalFocus) 'Display the Accessibility Properties Call Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl", vbNormalFocus) 'Display Add/Remove Programs Call Shell("rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl", vbNormalFocus) 'Show the Display Settings (Background) Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0", vbNormalFocus) 'Show the Display Settings (Screensaver) Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1", vbNormalFocus) 'Show the Display Settings (Appearance) Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2", vbNormalFocus) 'Show the Display Settings (Settings) Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3", vbNormalFocus) 'Display Internet Properties Call Shell("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl", vbNormalFocus) 'Display Regional Settings Call Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl", vbNormalFocus) 'Display the Joystick Settings Call Shell("rundll32.exe shell32.dll,Control_RunDLL joy.cpl", vbNormalFocus) 'Display the Mouse Settings Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @0", vbNormalFocus) 'Display the Keyboard Settings Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @1", vbNormalFocus) 'Display Printers Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @2", vbNormalFocus) 'Display Fonts Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @3", vbNormalFocus) 'Display Multimedia Settings Call Shell("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl", vbNormalFocus) 'Display Modem Settings Call Shell("rundll32.exe shell32.dll,Control_RunDLL modem.cpl", vbNormalFocus) 'Display Dial-Up Networking Wizard (on Win9x) Call Shell("rundll32.exe rnaui.dll,RnaWizard", vbNormalFocus) 'Display System Properties Call Shell("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl", vbNormalFocus) 'Run 'Add New Hardware' Wizard (on Win9x) Call Shell("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1", vbNormalFocus) 'Display 'Add New Printer' Wizard (on Win9x) Call Shell("rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter", vbNormalFocus) 'Display Themes Settings Call Shell("rundll32.exe shell32.dll,Control_RunDLL themes.cpl", vbNormalFocus) 'Display Time/Date Settings Call Shell("rundll32.exe shell32.dll,Control_RunDLL timedate.cpl", vbNormalFocus)
____________________________________________________________________________________
____________________________________________________________________________________
Snapping the mouse to a certain position on the screen is a great little trick.
It can help suggest a command button to the user or simply make your program easier to use. And this groovy code snippet shows you how to do just that...
To use, simply call the SnapMouse method, passing the hWnd of the object you want to centre the mouse over. You’ll find that most objects come with a .hWnd property.
Usage
SnapMouse (Command2.hWnd)
Code
Private Declare Function SetCursorPos Lib "user32" _ (ByVal X As Long, ByVal Y As Long) As Long Private Declare Function GetWindowRect Lib "user32" _ (ByVal hWnd As Long, lpRect As RECT) As Long Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Public Sub SnapMouse(ByVal hWnd As Long) Dim lpRect As RECT GetWindowRect hWnd, lpRect SetCursorPos lpRect.Left + (lpRect.Right - lpRect.Left) \ 2, _ lpRect.Top + (lpRect.Bottom - lpRect.Top) \ 2 End Sub
____________________________________________________________________________________
____________________________________________________________________________________
There are two functions. The other one is below Math_GCF.
--------------------------------------------------------------------------------
Public Function Math_GCF(number1 As Double, number2 As Double) As Double
If number1 > number2 Then a = number2
If number2 > number1 Then a = number1
If number1 = number2 Then a = number1
n1 = number1: n2 = number2
h = n2 / n1
h2 = n1 / n2
If n1 > n2 Then
If Math_IsInteger(Val(h2)) Then Math_GCF = n2: Exit Function
End If
If n2 > n1 Then
If Math_IsInteger(Val(h)) Then Math_GCF = n1: Exit Function
End If
y = Math_LCM(number1, number2)
y = Val(y)
x = 1
Do: DoEvents
y = Math_LCM(Val(n1), Val(n2)) / Val(x)
b = n1 / x
c = n2 / x
If Math_IsInteger(Val(y)) Then
If Math_IsInteger(Val(b)) Then
If Math_IsInteger(Val(c)) Then
GCF = x
End If
End If
End If
x = x + 1
Loop Until x = a
Math_GCF = GCF
If n1 > n2 Then
Y1 = Math_LCM(Val(n1), Val(n2))
Y1 = Val(Y1) / Val(n2)
b = n1 / n2
c = n2 / n2
If Math_IsInteger(Val(Y1)) Then
If Math_IsInteger(Val(b)) Then
If Math_IsInteger(Val(c)) Then
GCF = n2
End If
End If
End If
End If
If n1 < n2 Then
Y1 = Math_LCM(Val(n1), Val(n2))
Y1 = Val(Y1) / Val(n1)
b = n1 / n1
c = n2 / n1
If Math_IsInteger(Val(Y1)) Then
If Math_IsInteger(Val(b)) Then
If Math_IsInteger(Val(c)) Then
GCF = n1
End If
End If
End If
End If
Math_GCF = GCF
End Function
--------------------------------------------------------------------------------
Public Function Math_IsInteger(number as double) as double
n1 = Trim(str(number))
n = InStr(1, n1, ".")
If n = 0 Then Math_IsInteger = True
If n > 0 Then Math_IsInteger = False
End Function
____________________________________________________________________________________
____________________________________________________________________________________
//**************************************
//
// Name: Control Panel
// Description:access some control panel
// applets
// By: Vamsi Krishna
//**************************************
//
Attribute VB_Name = "ControlPanel32"
'
'Control Panel( CONTROL.EXE )
'--------------------------------
'Control Panel:
'rundll32.exe shell32.dll,Control_RunDLL
'
'Accessability Options( ACCESS.CPL )
'---------------------------------------
'Accessability Properties (Keyboard):
'rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1
'Accessability Properties (Sound):
'rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2
'Accessability Properties (Display):
'rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3
'Accessability Properties (Mouse):
'rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4
'Accessability Properties (General):
'rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5
'
'Add/Remove Programs( APPWIZ.CPL )
'-------------------------------------
'Add/Remove Programs Properties (Install/Uninstall):
'rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1
'Add/Remove Programs Properties (Windows Setup):
'rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2
'Add/Remove Programs Properties (Startup Disk):
'rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,3
'
'Display Options( DESK.CPL )
'-------------------------------
'Display Properties (Background):
'rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0
'Display Properties (Screen Saver):
'rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1
'Display Properties (Appearance):
'rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2
'Display Properties (Settings):
'rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3
'
'Regional Settings( INTL.CPL )
'---------------------------------
'Regional Settings Properties (Regional Settings):
'rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0
'Regional Settings Properties (Number):
'rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,1
'Regional Settings Properties (Currency):
'rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,2
'Regional Settings Properties (Time):
'rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,3
'Regional Settings Properties (Date):
'rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,4
'
'Joystick Options( JOY.CPL )
'-------------------------------
'Joystick Properties (Joystick):
'rundll32.exe shell32.dll,Control_RunDLL joy.cpl
'
'Mouse/Keyboard/Printers/Fonts Options( MAIN.CPL )
'-----------------------------------------------------
'Mouse Properties:
'rundll32.exe shell32.dll,Control_RunDLL main.cpl @0
'Keyboard Properties:
'rundll32.exe shell32.dll,Control_RunDLL main.cpl @1
'Printers:
'rundll32.exe shell32.dll,Control_RunDLL main.cpl @2
'Fonts:
'rundll32.exe shell32.dll,Control_RunDLL main.cpl @3
'
'Mail and Fax Options( MLCFG32.CPL )
'---------------------------------------
'Microsoft Exchange Profiles (General):
'rundll32.exe shell32.dll,Control_RunDLL mlcfg32.cpl
'
'Multimedia/Sounds Options( MMSYS.CPL )
'------------------------------------------
'Multimedia Properties (Audio):
'rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0
'Multimedia Properties (Viedo):
'rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,1
'Multimedia Properties (MIDI):
'rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2
'Multimedia Properties (CD Music):
'rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,3
'Multimedia Properties (Advanced):
'rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,4
' = = = = = = = = = = = = = = = = = = = = = = = = = = =
'Sounds Properties:
'rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl @1
'
'Modem Options( MODEM.CPL )
'------------------------------
'Modem Properties (General):
'rundll32.exe shell32.dll,Control_RunDLL modem.cpl
'
'Network Options( NETCPL.CPL )
'---------------------------------
'Network (Configuration):
'rundll32.exe shell32.dll,Control_RunDLL netcpl.cpl
'
'Password Options( PASSWORD.CPL )
'------------------------------------
'Password Properties (Change Passwords):
'rundll32.exe shell32.dll,Control_RunDLL password.cpl
'
'System/Add New Hardware Options( SYSDM.CPL )
'------------------------------------------------
'System Properties (General):
'rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,0
'System Properties (Device Manager):
'rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,1
'System Properties (Hardware Profiles):
'rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,2
'System Properties (Performance):
'rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3
' = = = = = = = = = = = = = = = = = = = = = = = = = = =
'Add New Hardware Wizard:
'rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1
'
'Date and Time Options( TIMEDATE.CPL )
'-----------------------------------------
'Date/Time Properties:
'rundll32.exe shell32.dll,Control_RunDLL timedate.cpl
'
'Microsoft Mail Postoffice Options( WGPOCPL.CPL )
'----------------------------------------------------
'Microsoft Workgroup Postoffice Admin:
'rundll32.exe shell32.dll,Control_RunDLL wgpocpl.cpl
'
'
Dim Shared XFS As Integer
Sub ControlPanel(Filename As String)
Dim T As Double
On Error Resume Next
T = Shell(Filename, 5)
End Sub
Fancy adding your Web site to the list of Favourites?
This sneaky commented code snippet shows you how.
To run, simply call AddFavorite, passing your site name and Web address. This code works by grabbing the location of the Favorite folder with the help of a couple of API calls. It then creates an Internet 'link' file in that location, using the passed site name and address.
Usage
AddFavorite "VB-World", "https://vamsionnet.tripod.com/"
Code
Private Declare Function SHGetSpecialFolderLocation _ Lib "shell32.dll" (ByVal hwndOwner As Long, _ ByVal nFolder As SpecialShellFolderIDs, _ pidl As Long) As Long Private Declare Function SHGetPathFromIDList _ Lib "shell32.dll" Alias "SHGetPathFromIDListA" _ (ByVal pidl As Long, _ ByVal pszPath As String) As Long Private Declare Sub CoTaskMemFree Lib "ole32.dll" _ (ByVal pv As Long) Public Enum SpecialShellFolderIDs CSIDL_DESKTOP = &H0 CSIDL_INTERNET = &H1 CSIDL_PROGRAMS = &H2 CSIDL_CONTROLS = &H3 CSIDL_PRINTERS = &H4 CSIDL_PERSONAL = &H5 CSIDL_FAVORITES = &H6 CSIDL_STARTUP = &H7 CSIDL_RECENT = &H8 CSIDL_SENDTO = &H9 CSIDL_BITBUCKET = &HA CSIDL_STARTMENU = &HB CSIDL_DESKTOPDIRECTORY = &H10 CSIDL_DRIVES = &H11 CSIDL_NETWORK = &H12 CSIDL_NETHOOD = &H13 CSIDL_FONTS = &H14 CSIDL_TEMPLATES = &H15 CSIDL_COMMON_STARTMENU = &H16 CSIDL_COMMON_PROGRAMS = &H17 CSIDL_COMMON_STARTUP = &H18 CSIDL_COMMON_DESKTOPDIRECTORY = &H19 CSIDL_APPDATA = &H1A CSIDL_PRINTHOOD = &H1B CSIDL_ALTSTARTUP = &H1D CSIDL_COMMON_ALTSTARTUP = &H1E CSIDL_COMMON_FAVORITES = &H1F CSIDL_INTERNET_CACHE = &H20 CSIDL_COOKIES = &H21 CSIDL_HISTORY = &H22 End Enum Public Sub AddFavorite(SiteName As String, URL As String) Dim pidl As Long Dim intFile As Integer Dim strFullPath As String On Error GoTo Goodbye intFile = FreeFile strFullPath = Space(255) 'Check the API for the folder existence and location If SHGetSpecialFolderLocation(0, CSIDL_FAVORITES, pidl) = 0 Then If pidl Then If SHGetPathFromIDList(pidl, strFullPath) Then ' Trim any null characters If InStr(1, strFullPath, Chr(0)) Then strFullPath = Mid(strFullPath, 1, _ InStr(1, strFullPath, Chr(0)) - 1) End If ' Add back slash, if none exists If Right(strFullPath, 1) <> "\" Then strFullPath = strFullPath & "\" End If ' Create the link strFullPath = strFullPath & SiteName & ".URL" Open strFullPath For Output As #intFile Print #intFile, "[InternetShortcut]" Print #intFile, "URL=" & URL Close #intFile End If CoTaskMemFree pidl End If End If Goodbye: End Sub
Disabling Ctrl-Alt-Delete and Ctrl-Esc
It is often useful in Visual Basic programs to be able to disable the Ctrl-Alt-Delete key sequence. It is easily done by persuading Windows that a screen saver is running. This code also disables Ctrl-Esc, that is used to activate the Start Menu.
Declarations
Copy this code into the declarations section of your project.
Private Declare Function SystemParametersInfo Lib _ "user32" Alias "SystemParametersInfoA" (ByVal uAction _ As Long, ByVal uParam As Long, ByVal lpvParam As Any, _ ByVal fuWinIni As Long) As Long
Code
Sub DisableCtrlAltDelete(bDisabled As Boolean) Dim X As Long X = SystemParametersInfo(97, bDisabled, CStr(1), 0) End Sub
Use
To disable Ctrl-Alt-Delete:
Call DisableCtrlAltDelete(True)
To enable Ctrl-Alt-Delete:
Call DisableCtrlAltDelete(False)
Does your application need to connect to the Internet?
Most code snippets simply show you how to display a typical connection dialog box. This method has three basic flaws; it doesn't force a dial-up, often requires the name of the connection and doesn't let you know when a connection has been made.
Thankfully this code snippet solves all those problems by using Internet Explorer's own automatic dial-up settings.
If you double-click the Internet Options icon in the Control Panel, you'll notice the Connections tab hosts a list of possible dial-up connections.
This snippet utilises a couple of little-known API calls that can automatically dial-up and disconnect from the default connection in that list – just like Internet Explorer does if it needs to connect to the Net.
Note: If the 'Never Dial a Connection' option is selected, this code will not be able to connect. It does as Internet Explorer does, and Internet Explorer simply wouldn't connect if that option was selected.
It's worth noting that this code pauses until the connection is actually made - or not, as the case may be. And that's definitely a good thing.
Code
This code is designed to be placed inside a Form with a Command Button.
Private Declare Function InternetAutodial Lib "wininet.dll" _ (ByVal dwFlags As Long, ByVal dwReserved As Long) As Long Private Const INTERNET_AUTODIAL_FORCE_ONLINE = 1 Private Const INTERNET_AUTODIAL_FORCE_UNATTENDED = 2 Private Declare Function InternetAutodialHangup Lib "wininet.dll" _ (ByVal dwReserved As Long) As Long Private Sub Command1_Click() 'To prompt the user to connect to the Net If InternetAutodial(INTERNET_AUTODIAL_FORCE_ONLINE, 0) Then MsgBox "You're Connected!", vbInformation End If 'To automatically start dialling If InternetAutodial(INTERNET_AUTODIAL_FORCE_UNATTENDED, 0) Then MsgBox "You're Connected!", vbInformation End If 'To disconnect an automatically dialled connection If InternetAutodialHangup(0) Then MsgBox "You're Disconnected!", vbInformation End If End Sub
How can I move the mouse cursor?
You can use the SetCursorPos Api function. It accepts two parameters. These are the x position and the y position in screen pixel coordinates. You can get the size of the screen by calling GetSystemMetrics function with the correct constants. This example puts the mouse cursor in the top left hand corner.
t& = SetCursorPos(0,0)
This will only work if the formula has bee declared in the declarations section:
Declare Function SetCursorPosition& Lib "user32" _ (ByVal x As Long, ByVal y As Long)
Public Function GetAllKeys(hKey As Long, _ strPath As String) As Variant Dim lRegResult As Long Dim lCounter As Long Dim hCurKey As Long Dim strBuffer As String Dim lDataBufferSize As Long Dim strNames() As String Dim intZeroPos As Integer lCounter = 0 lRegResult = RegOpenKey(hKey, strPath, hCurKey) Do 'initialise buffers (longest possible length=255) lDataBufferSize = 255 strBuffer = String(lDataBufferSize, " ") lRegResult = RegEnumKey(hCurKey, _ lCounter, strBuffer, lDataBufferSize) If lRegResult = ERROR_SUCCESS Then 'tidy up string and save it ReDim Preserve strNames(lCounter) As String intZeroPos = InStr(strBuffer, Chr$(0)) If intZeroPos > 0 Then strNames(UBound(strNames)) = Left$(strBuffer, intZeroPos - 1) Else strNames(UBound(strNames)) = strBuffer End If lCounter = lCounter + 1 Else Exit Do End If Loop GetAllKeys = strNames End Function
This function works using the RegEnumKey function. You pass a number to the
function and it returns the name of the sub key holding that position. These are
numbered from 0, starting with the oldest, so you can get some idea of the age
of keys using this API call. It initialises the buffer, and then makes the call.
If the call returns ERROR_SUCCESS, there was a key at that number, but if it
returns something else, there was either a problem, or all the keys have been
retrieved. It adds the retrieved name to an array, and continues. If there
was an error, it exits the loop, otherwise it just keeps going.
The function returns an array of names in a variant. You would use it as
follows:
Dim SubKeys As Variant Dim KeyLoop As Integer SubKeys = GetAllKeys(HKEY_CURRENT_USER, vbNullString) If VarType(SubKeys) = vbArray + vbString Then For KeyLoop = 0 To UBound(SubKeys) Debug.Print SubKeys(KeyLoop) Next End If
Sub Dump_String_To_File (ByVal strString As String, ByVal strFile As String)
Dim fileFile As Integer
fileFile = FreeFile
Open strFile For Output As fileFile
Write #fileFile, strString
Close fileFile
Dim intReturn
On Error Resume Next
intReturn = Shell("c:\apps\utility\textpad\txtpad16.exe " & strFile, 1)
On Error Goto 0
End Sub
So you want to grab an Internet file, but think the Inet control is buggier than an ant's nest? Need to start an online download but want to skip those annoying user dialog boxes? This slice of code uses a sneaky API call to solve all your worries. Just call the DownloadFile function, passing it your URL and local filename. The function will then use the API to download the file and return a True if successful. Usage MsgBox DownloadFile("http://vamsionnet.tripod.com", "c:\webpage.htm") Code Private Declare Function URLDownloadToFile Lib "urlmon" Alias _ "URLDownloadToFileA" (ByVal pCaller As Long, _ ByVal szURL As String, _ ByVal szFileName As String, _ ByVal dwReserved As Long, _ ByVal lpfnCB As Long) As Long Public Function DownloadFile(URL As String, _ LocalFilename As String) As Boolean Dim lngRetVal As Long lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0) If lngRetVal = 0 Then DownloadFile = True End Function
|
This page was created by Vamsi Krishna.