我用vb编写的记事本不能直接加载
。。
这 个问题我已经回答了两次了。现在是第二次。
首先请您做个实验:
新建一个EXE,写入如下代码:
Pivatet Sub Form_load()
MsgBox Command$
End Sub
这段代码的意思是,返回您双击某一个文本文件时的完整路径名。 请您自己想想,您要打开某个文件, 那您就必须得出这个文件的完整路径名。而这段代码就会返回您双击某一个文本文件时的完整路径名。
之后把这段代码编译为MyExe。exe(大小写不能错),再把这个文件放到您的系统目录下(也就是您的记事本所在目录),那么以后您双击某一个txt文件时,就会调用这个文件来代替记事本文件打开。 这个程序非常危险...全部
。。
这 个问题我已经回答了两次了。现在是第二次。
首先请您做个实验:
新建一个EXE,写入如下代码:
Pivatet Sub Form_load()
MsgBox Command$
End Sub
这段代码的意思是,返回您双击某一个文本文件时的完整路径名。
请您自己想想,您要打开某个文件, 那您就必须得出这个文件的完整路径名。而这段代码就会返回您双击某一个文本文件时的完整路径名。
之后把这段代码编译为MyExe。exe(大小写不能错),再把这个文件放到您的系统目录下(也就是您的记事本所在目录),那么以后您双击某一个txt文件时,就会调用这个文件来代替记事本文件打开。
这个程序非常危险,请您慎重考虑是否要执行。因为以后您双击TXT文件时,将不会再调用记事本来打开。
(帮助您这些人我真是累)
之后就来修改txt文件的默认打开方式。 以下代码不会再写注释,请原谅。
'在窗体中添加一个命令按钮,写入如下代码:
'窗体
Dim mSysPath As String
Private Sub Command1_Click()
Dim hKey As Long
Dim MyReturn As Long
Dim MyData As String
MyReturn = RegOpenKey(HKEY_CLASSES_ROOT, "。
txt", hKey)
MyReturn = RegQueryStringValue(hKey, "", MyData)
MyReturn = RegOpenKey(HKEY_CLASSES_ROOT, MyData + "\shell\open\command", hKey)
MyReturn = RegSetStringValue(hKey, "", mSysPath & "\MyExe。
exe %1", False)
If MyReturn Then
MsgBox "改变文件打开方式成功!", vbInformation, "韵乐飞扬"
Else
MsgBox "改变文件打开方式失败!", vbExclamation, "韵乐飞扬"
End If
MyReturn = RegOpenKey(HKEY_CLASSES_ROOT, MyData + "\DefaultIcon", hKey)
MyReturn = RegSetStringValue(hKey, "", mSysPath & "\shell32。
dll, -151", False)
RegCloseKey (hKey)
End Sub
Private Sub Form_Load()
Dim Length As Integer
mSysPath = Space$(125)
Call GetSystemDirectory(mSysPath, 125)
mSysPath = StripTerminator(mSysPath)
Dim KeyId As Long
Call RegCreateKey(HKEY_CLASSES_ROOT, "。
txt", KeyId)
Call RegSetValueEx(KeyId, "", 0&, REG_SZ, ByVal "txtfile", Len("txtfile") + 1)
Dim KeyId1 As Long
Call RegCreateKey(HKEY_CLASSES_ROOT, "txtfile", KeyId1)
Call RegSetValueEx(KeyId1, "", 0&, REG_SZ, ByVal "569", LenB("539") + 1)
Dim KeyId2 As Long
Call RegCreateKey(KeyId1, "DefaultIcon", KeyId2)
Call RegSetValueEx(KeyId2, "", 0&, REG_SZ, ByVal mSysPath & "\shell32。
dll -5", Len(mSysPath & "\shell32。dll -5") + 1)
Dim KeyId3 As Long
Call RegCreateKey(KeyId1, "Shell", KeyId3)
Dim KeyId4 As Long
Call RegCreateKey(KeyId3, "Open", KeyId4)
Dim KeyId5 As Long
Call RegCreateKey(KeyId4, "command", KeyId5)
Call RegSetValueEx(KeyId5, "", 0&, REG_SZ, ByVal mSysPath & "\MyExe。
exe %1", Len(mSysPath & "\MyExe。exe %1") + 1)
MsgBox "修改文件打开方式成功。", vbInformation, "系统提示"
End Sub
'标准模块
'****************************************
Public Const REG_SZ = 1
Global Const HKEY_CLASSES_ROOT = &H80000000
Public Declare Function RegCreateKey Lib "advapi32。
dll" Alias "RegCreateKeyA" (ByVal hKey As _
Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As _
Long, ByVal lpszValueName As String, ByVal dwReserved As Long, lpdwType As Long, lpbData As _
Any, cbData As Long) As Long
Declare Function RegOpenKey Lib "advapi32" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal _
lpszSubKey As String, phkResult 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
Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal _
lpBuffer As String, ByVal nSize As Long) As Long
Public Function RegSetStringValue(ByVal hKey As Long, ByVal strValueName As String, _
ByVal strData As String, Optional ByVal fLog) As Boolean
Dim lResult As Long
On Error GoTo 0
lResult = RegSetValueEx(hKey, strValueName, 0&, REG_SZ, ByVal strData, _
LenB(StrConv(strData, vbFromUnicode)) + 1)
If lResult = 0 Then
RegSetStringValue = True
Else
RegSetStringValue = False
End If
End Function
Public Function StripTerminator(ByVal strString As String) As String
Dim intZeroPos As Integer
intZeroPos = InStr(strString, Chr$(0))
If intZeroPos > 0 Then
StripTerminator = Left$(strString, intZeroPos - 1)
Else
StripTerminator = strString
End If
End Function
Public Function RegQueryStringValue(ByVal hKey As Long, ByVal strValueName As String, _
strData As String) As Boolean
Dim lResult As Long
Dim lValueType As Long
Dim strBuf As String
Dim lDataBufSize As Long
RegQueryStringValue = False
On Error GoTo 0
lResult = RegQueryValueEx(hKey, strValueName, 0&, lValueType, ByVal 0&, _
lDataBufSize)
If lResult = ERROR_SUCCESS Then
If lValueType = REG_SZ Then
strBuf = String(lDataBufSize, " ")
lResult = RegQueryValueEx(hKey, strValueName, 0&, 0&, ByVal strBuf, _
lDataBufSize)
If lResult = ERROR_SUCCESS Then
RegQueryStringValue = True
strData = StripTerminator(strBuf)
End If
End If
End If
End Function
照着复制就行了。
如果一路都是成功,那么您的计算机的TXT文件默认打开方式就会被修改。
之后,请您双击一个TXT文件,如果此时没有调用MyExe。exe来打开文本文件,那是因为您没有重新启动计算机。那么此时,请您在文件打开方式列表 中,找到您自己生成的MyExe。
exe文件。您就会看到,对话框里已经出现了文件的完整路径名。
之后,您就可以利用command函数来代表双击某一TXT文件的路径了。
比如说,您可以在您的记事本中写入如下代码:
open command for intput as #1 '打开 双击的TXT文件
。
。。。' 这里是读取这个文本文件的代码,您自己写,这里就不多说了。
我就说到这里。如果您仍然不明白,那没办法,小的已无能为力。
。收起