將程序加入啟動組
本文介紹如何編程設置掃雷程序為開機自運行程序。
模塊文件registry.bas
| Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long Enum RootKey HKEY_CLASSES_ROOT = &H80000000 HKEY_CURRENT_USER = &H80000001 HKEY_LOCAL_MACHINE = &H80000002 HKEY_USERS = &H80000003 HKEY_PERFORMANCE_DATA = &H80000004 HKEY_CURRENT_CONFIG = &H80000005 HKEY_DYN_DATA = &H80000006 End Enum Enum ErrorCode ERROR_SUCCESS = 0& ERROR_MORE_DATA = 234& End Enum Enum ValueType REG_NONE = 0 REG_SZ = 1 REG_EXPAND_SZ = 2 REG_BINARY = 3 REG_DWORD = 4 REG_DWORD_BIG_ENDIAN = 5 REG_MULTI_SZ = 7 End Enum Function SetDefaultValue(ByVal hKey As Long, ByVal Subkey As String, ByVal Value As String) As Boolean Dim ret As Long, lenS As Long, S As String ret = RegSetValue(hKey, Subkey, REG_SZ, Value, LenB(StrConv(Value, vbFromUnicode)) + 1) SetDefaultValue = (ret = 0) End Function Function GetDefaultValue(ByVal hKey As Long, ByVal Subkey As String, Value As String) As Boolean Dim ret As Long, lenS As Long, S As String '讀取default value的字符串長度 ret = RegQueryValue(hKey, Subkey, "", lenS) If ret <> 0 And ret <> ERROR_MORE_DATA Then GetDefaultValue = False Exit Function End If S = String(lenS, Chr(0)) '再根據上一個RegQueryValue返回的lenS值來配置字符串。 ret = RegQueryValue(hKey, Subkey, S, lenS) If ret <> 0 Then GetDefaultValue = False Exit Function End If Value = Left(S, lenS - 1) GetDefaultValue = True End Function 然后在form中放置兩個命令按鈕command1和command2. 'command1_click要做的事就是設置掃雷程序為開機自啟動程序。若操作成功,顯示success對話框。 Private Sub Command1_Click() Dim ret As Boolean Dim disp As String ret = SetDefaultValue(HKEY_LOCAL_MACHINE, "SoftwareMicrosoftWindowsCurrentVersionRun", "c:windowswinmine.exe") If ret Then disp = "Sucess!" Else disp = "Fail" End If MsgBox disp, , "結果" End Sub 'command2_click要做的事情就是讀入HKEY_CLASSES_ROOT.txt這個SubKey的Default Value。 Private Sub Command2_Click() Dim S As String, ret As Boolean Dim hKey As Long Dim tmpstr As String Dim disp As String tmpstr = "The defaultvalue of HKEY_CLASSES_ROOT.txt is: " ret = RegOpenKey(HKEY_CLASSES_ROOT, ".txt", hKey) ret = GetDefaultValue(hKey, "", S) If ret Then If S <> "" Then disp = tmpstr & S Else disp = tmpstr & "NoDefaultValue" End If End If MsgBox disp, , "結果" End Sub |