面對這種情況,大家可能首先想到的是上網(wǎng)上找一款 填表軟件。但現(xiàn)有的軟件不是用剪貼板傳遞就是采用拖放技 術(shù),而且使用時必須運行填表軟件,使用起來并不是很方便。 因此我們決定自己編寫一個軟件,將它集成到IE的右鍵菜單 里,使用時只要在要輸入的輸入項上單擊鼠標(biāo)右鍵,然后選 擇相應(yīng)的項即會自動輸入,從而實現(xiàn)“一點即填”。
本程序首先要在IE的右鍵菜單上添加項目,這可通過操作注冊表來實現(xiàn),然后利用一個JavaScript程序判斷所選 的是不是可輸入框,如果是,將我們事先保存的數(shù)據(jù)填上。 下面介紹具體的實現(xiàn)過程。
一、設(shè)計界面
進入 VB,選擇“標(biāo)準(zhǔn) EXE”新建一工程,選擇“工 程”菜單下的“部件”,在彈出的對話框中選擇“Microsoft Windows Common Controls 6.0”,然后按照下表在窗體 上添加控件,設(shè)置完成的界面如圖 1 所示: 控件類型 Name 屬性 標(biāo)簽 label1 Caption:名稱 標(biāo)簽 label2 Caption:內(nèi)容 文本框 txtname 文本框 txtcont 命令按鈕 command1 Caption:添加 命令按鈕 command2 Caption:刪除 列表框 listview1 為它加入兩個列,列標(biāo)題分別為“名稱”和“內(nèi)容”,并 且把 View 屬性修改成 3-lvwReport,把 GridLines 改成 True。
二、程序源代碼
首先在工程中添加一個標(biāo)準(zhǔn)模塊并輸入如下代碼,這 些代碼用于注冊表操作:
’聲明必要的API函數(shù)及常量
Declare Function RegSaveKey Lib "advapi32.dll" Alias
"RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal lpSecurityAttributes As Long) As Long
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 RegCloseKey Lib "advapi32.dll" (ByVal hKey
As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias
"RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As
String, phkResult As Long) As Long
Declare Function RegDeleteKey Lib "advapi32.dll" Alias
"RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As
String) As Long
Declare Function RegDeleteValue Lib "advapi32.dll" Alias
"RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName
As String) 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 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 RegOpenKeyEx Lib "advapi32.dll" Alias
"RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const ERROR_NO_MORE_ITEMS = 259&
Public Const HKEY_CURRENT_CONFIG = &H80000005
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
Global Const KEY_ALL_ACCESS = &H3F Dim lngtype As Long
Dim rtn As Long, lBuffer As Long, sbuffer As String
Dim lBufferSize As Long
’新建主鍵的過程進入討論組討論。
Public Sub savekey(hKey As Long, strPath As String)
On Error GoTo ERR_savekey
Dim keyhand&
r = RegCreateKey(hKey, strPath, keyhand&)
r = RegCloseKey(keyhand&)
Exit Sub
ERR_savekey:
MsgBox Err.Number & "- " & Err.Description
Resume Next
End Sub
’保存字符型鍵值
Public Sub savestring(hKey As Long, strPath As String, strValue
As String, strdata As String)
On Error GoTo ERR_savestring
Dim keyhand As Long
Dim r As Long
r = RegCreateKey(hKey, strPath, keyhand)
r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
r = RegCloseKey(keyhand)
Exit Sub
ERR_savestring:
MsgBox Err.Number & "- " & Err.Description
Resume Next
End Sub
’保存DWORD型鍵值
Function SaveDword(ByVal hKey As Long, ByVal strPath As
String, ByVal strValueName As String, ByVal lData As Long)
Dim lResult As Long
Dim keyhand As Long
Dim r As Long
r = RegCreateKey(hKey, strPath, keyhand)
lResult = RegSetValueEx(keyhand, strValueName, 0&, REG_DWORD, lData, 4)
r = RegCloseKey(keyhand) End Function
’刪除主鍵
Public Function DeleteKey(ByVal hKey As Long, ByVal strKey
As String)
Dim r As Long
r = RegDeleteKey(hKey, strKey) End Function
’保存默認(rèn)鍵值
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
接著編寫窗體部分的代碼:
Dim lcont As Integer
Private Sub Command1_Click()
Dim ret As Boolean
’在列表框中添加項目
lcont = ListView1.ListItems.Count + 1
ListView1.ListItems.Add lcont, , txtname
ListView1.ListItems(lcont).SubItems(1) = txtcont
’生成以項目名稱為文件名的HTML文件
Open App.Path & "\" & txtname & ".htm" For Output As
#1
Print #1, ""
Close #1
’在IE右鍵菜單上添加相應(yīng)項目
savekey HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext\" & txtname.Text
ret = SetDefaultValue(HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext" & "\" & txtname. Text, "file://" & App.Path & "\" & txtname & ".htm")
SaveDword HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext" & "\" & txtname,
"Contexts", 4
savestring HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext" & "\" & txtname,
"iform", txtcont
End Sub
’刪除Private Sub Command2_Click()
DeleteKey HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext" & "\" & ListView1. SelectedItem
ListView1.ListItems.Remove ListView1.SelectedItem.Index
End Sub
Private Sub Form_Load()
savekey HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext" End Sub
三、程序運行
輸入完成代碼后按 F5 運行,添入必要的信息后就 可使用了,圖2 便是演示結(jié) 果。趕快打開你的IE試一試 吧!
本程序首先要在IE的右鍵菜單上添加項目,這可通過操作注冊表來實現(xiàn),然后利用一個JavaScript程序判斷所選 的是不是可輸入框,如果是,將我們事先保存的數(shù)據(jù)填上。 下面介紹具體的實現(xiàn)過程。
一、設(shè)計界面
進入 VB,選擇“標(biāo)準(zhǔn) EXE”新建一工程,選擇“工 程”菜單下的“部件”,在彈出的對話框中選擇“Microsoft Windows Common Controls 6.0”,然后按照下表在窗體 上添加控件,設(shè)置完成的界面如圖 1 所示: 控件類型 Name 屬性 標(biāo)簽 label1 Caption:名稱 標(biāo)簽 label2 Caption:內(nèi)容 文本框 txtname 文本框 txtcont 命令按鈕 command1 Caption:添加 命令按鈕 command2 Caption:刪除 列表框 listview1 為它加入兩個列,列標(biāo)題分別為“名稱”和“內(nèi)容”,并 且把 View 屬性修改成 3-lvwReport,把 GridLines 改成 True。
二、程序源代碼
首先在工程中添加一個標(biāo)準(zhǔn)模塊并輸入如下代碼,這 些代碼用于注冊表操作:
’聲明必要的API函數(shù)及常量
Declare Function RegSaveKey Lib "advapi32.dll" Alias
"RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal lpSecurityAttributes As Long) As Long
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 RegCloseKey Lib "advapi32.dll" (ByVal hKey
As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias
"RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As
String, phkResult As Long) As Long
Declare Function RegDeleteKey Lib "advapi32.dll" Alias
"RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As
String) As Long
Declare Function RegDeleteValue Lib "advapi32.dll" Alias
"RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName
As String) 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 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 RegOpenKeyEx Lib "advapi32.dll" Alias
"RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const ERROR_NO_MORE_ITEMS = 259&
Public Const HKEY_CURRENT_CONFIG = &H80000005
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
Global Const KEY_ALL_ACCESS = &H3F Dim lngtype As Long
Dim rtn As Long, lBuffer As Long, sbuffer As String
Dim lBufferSize As Long
’新建主鍵的過程進入討論組討論。
Public Sub savekey(hKey As Long, strPath As String)
On Error GoTo ERR_savekey
Dim keyhand&
r = RegCreateKey(hKey, strPath, keyhand&)
r = RegCloseKey(keyhand&)
Exit Sub
ERR_savekey:
MsgBox Err.Number & "- " & Err.Description
Resume Next
End Sub
’保存字符型鍵值
Public Sub savestring(hKey As Long, strPath As String, strValue
As String, strdata As String)
On Error GoTo ERR_savestring
Dim keyhand As Long
Dim r As Long
r = RegCreateKey(hKey, strPath, keyhand)
r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
r = RegCloseKey(keyhand)
Exit Sub
ERR_savestring:
MsgBox Err.Number & "- " & Err.Description
Resume Next
End Sub
’保存DWORD型鍵值
Function SaveDword(ByVal hKey As Long, ByVal strPath As
String, ByVal strValueName As String, ByVal lData As Long)
Dim lResult As Long
Dim keyhand As Long
Dim r As Long
r = RegCreateKey(hKey, strPath, keyhand)
lResult = RegSetValueEx(keyhand, strValueName, 0&, REG_DWORD, lData, 4)
r = RegCloseKey(keyhand) End Function
’刪除主鍵
Public Function DeleteKey(ByVal hKey As Long, ByVal strKey
As String)
Dim r As Long
r = RegDeleteKey(hKey, strKey) End Function
’保存默認(rèn)鍵值
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
接著編寫窗體部分的代碼:
Dim lcont As Integer
Private Sub Command1_Click()
Dim ret As Boolean
’在列表框中添加項目
lcont = ListView1.ListItems.Count + 1
ListView1.ListItems.Add lcont, , txtname
ListView1.ListItems(lcont).SubItems(1) = txtcont
’生成以項目名稱為文件名的HTML文件
Open App.Path & "\" & txtname & ".htm" For Output As
#1
Print #1, ""
Close #1
’在IE右鍵菜單上添加相應(yīng)項目
savekey HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext\" & txtname.Text
ret = SetDefaultValue(HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext" & "\" & txtname. Text, "file://" & App.Path & "\" & txtname & ".htm")
SaveDword HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext" & "\" & txtname,
"Contexts", 4
savestring HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext" & "\" & txtname,
"iform", txtcont
End Sub
’刪除Private Sub Command2_Click()
DeleteKey HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext" & "\" & ListView1. SelectedItem
ListView1.ListItems.Remove ListView1.SelectedItem.Index
End Sub
Private Sub Form_Load()
savekey HKEY_CURRENT_USER,
"software\microsoft\internet explorer\menuext" End Sub
三、程序運行
輸入完成代碼后按 F5 運行,添入必要的信息后就 可使用了,圖2 便是演示結(jié) 果。趕快打開你的IE試一試 吧!