快Key:按一下鼠標【滾輪】,幫你自動填寫用戶名密碼,快速登錄,可制作U盤隨身(開源免費-附安裝文件和源代碼)


* 代碼以本文所附下載文件包為准,安裝文件和源文件包均在本文尾部可下載。

* 快Key及本文所有內容僅供交流使用,使用者責任自負,由快Key對使用者及其相關人員或組織造成的任何損失均由使用者自負,與本人無關。開始使用即表示接受此約定。

跳至用戶手冊

跳至最新下載章節

最新版本:V2.6, 2021.3.12 發布。本文代碼可能不是最新版。最新版以下載附件為准。

主要更新:(1)增加U盤隨身版功能;(2)升級加密算法;(3)自動搜索已安裝瀏覽器;(4)更穩定。

 

目 錄

前言

1 基本原理與思路

2 全部文件

3 安裝文件及源代碼下載

4 倡議與致謝

5 出現問題與解決辦法

6 用戶手冊

7 聯絡信息

 

 

前言   [返回頁首]

阿色快瘋了。被一大堆密碼整瘋了。

每天要使用的系統太多,一個系統一個密碼,實在記不住。

近年來,信息安全要求也越來越嚴格,密碼已經成為了我們的沉重負擔。

20年前,阿色就面臨這個問題。那時,阿色和伙伴們指望着統一認證系統的建立來解決問題。

20年過去了,各種認證系統都建立了,問題還是沒有解決。

這也是信息化的一個經驗:不是一集中就什么事都搞定了!

看來,再不解決阿色就退休了,阿色急眼了,阿色自己干!

這段時間,利用中午、晚上、節假日等閑暇時間,阿色做了個小程序,自認為比較好地解決了密碼管理與使用問題。

阿色發揮大系統觀思維,調整解決問題的角度——從“強組織”的認證中心轉到“自組織”的電腦端——用終端程序解決。

阿色就編了個小程序,你把你的登錄系統地址、用戶名、密碼等存到這個小程序里。

使用的時候,你按【鼠標滾輪】呼出這個小程序,點擊相應按鈕,它就自動填寫用戶名、密碼等,然后自動登錄系統。

登錄信息電腦本地加密存儲,不聯網,不上傳,符合安全規定,不必擔心安全問題。

阿色只能幫你這些了,再幫就過界了,信息安全規則就不允許了。

本來跟弟兄們吹牛說3天搞定,結果搞了3個星期,這段時間工作也忙,幾度想放棄了。

系統程序太難編了,細節太多,OS版本太多,差異太大。特別是對新系統阿色也生疏了。

但不管咋樣,吹的牛還算是兌現了。

我先拋出來個初級版本,咱們還是開源吧,有興趣的朋友接着做吧。

 

OK!主角該出場了。她叫——

快Key,英文名叫 QuicKeys。

 

好了!她來了她來了!她邁着優美的步伐走來了!Serve!

記住:

按鼠標【滾輪】!

按鼠標【滾輪】!

按鼠標【滾輪】!

祝你使用愉快!

 

安裝前設置統一密碼,用來給你原來所有密鑰加密

 

 瀏覽器或各種EXE都可以啟動、登錄

 

設置你自己的信息和要求

1基本原理與思路   [返回頁首]

'××××××××××××××××××××××××××××××××××××××××××××××××      快Key(QuicKeys)  源碼    ×××××××××××××××××××××××××××××××××××××××××××××××××××××

'* *
'* 版本:2.5 釋放日期:2020.10.10 作者:王權(阿色) QQ:583389416 微信公眾號:大系統觀開放論壇 開發環境:Visual Basic 6.0 企業版 *
'* 功能:自動啟動瀏覽器或exe文件,自動填寫用戶名、密碼。最多管理30個密鑰。可利用自帶控制板制作U盤隨身版,能夠運行在其他電腦上。 *
'* 運行環境:Windows XP、Windows 7-10。XP需要單獨編譯。需要COMDLG32.OCX。 *
'* 安裝路徑:C:\QuicKeys 數據存儲路徑:與安裝路徑相同。用於啟停、卸載和制作U盤隨身版的控制板快捷方式安裝在電腦桌面。 *
'* 基本原理:安裝Hook,截獲鼠標中鍵(滾輪)消息,按滾輪呼出程序,通過此程序自動填寫用戶名、密碼等登錄信息,這些信息事先已經保存,並加密。 *
'* 為了給各個密鑰加密,需要一個“統一密碼”,由用戶自行設定。用戶只要記住此密碼即可打開各個原有密鑰,並自動填寫登錄。 *
'* 統一密碼也需要加密,給它加密的密碼由開發者和用戶自動聯合設定,即初始密碼。這樣可以保證包括開發者和用戶在內的任何人都無法破解統一密碼。 *
'* 但為安全起見,請開發者嚴格保守己方所設密碼,注意在發布源代碼時刪除此密碼。加解密采用業界通用技術,並使用了加鹽和密文等長等策略。 *
'* 開發者密碼的風險很小,因為它並不登錄真正的信息系統,且快Key是離線運行的,開發者無法獲取用戶端的聯合密碼和其他任何密鑰信息,也就無法解密。 *
'* 特別說明:安裝、更新、版本替換文件與運行時文件均用本文件,但要使用不同的文件名,運行文件為QuicKeys.exe,安裝文件要改名。具體如下: *
'* (1)編譯成QuicKeys.exe。 *
'* (2)按本條模式改名,必須包含setup字樣,用於安裝(安裝和平時運行其實是一個EXE):快Key-登錄助手-安裝-QuicKeys_2-0_Setup_for_Win7-10_20200923.exe。 *
'* 這樣的話,安裝時會以管理員身份運行,平時后台啟動以普通用戶身份,避免安全軟件詢問。 *
'* (3)另有控制板 StartQuicKeys.exe,用於桌面控制快Key的啟停,還可制作U盤隨身版。 *
'* (4)需要COMDLG32.OCX,要一起zip。最后將所有相關文件壓縮為ZIP發布。 *
'* (5)快Key為開源軟件,鼓勵積極共享。本代碼可任意發布,責任與權益由發布者自負。 *

'* *
'×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

 

為什么快Key更安全? 

快Key算法公開,密鑰與算法分離,符合安全技術規范。

破解方法只有暴力一招,這是所有加密技術都要面對的。

快Key模擬手動輸入,本身不聯網,不收集和上傳任何信息。所以,它至少跟手工輸入安全水平相同。

而實際上,快Key比手工更安全。因為:
  (1)為了好記,用戶會趨向於設置更簡單的密碼,甚至所有系統都設成同樣的密碼。一個系統泄露,所有系統都面臨巨大風險。而快Key能幫你記錄密碼,所以用戶可以更容易地使用不同的復雜密碼。

  (2)用戶明文記錄密碼也很普遍,這樣很危險。快Key采用通用算法加密你的密碼,只有暴力破解才能破譯。這讓用戶系統更安全。

  (3)實際上很多瀏覽器等也提供密碼保存功能,它是聯網的,你不知道它是否上傳了你的密碼。而快Key不連網,傳不了密碼,而且快Key提供源碼,用戶可以檢查源碼,並自行編譯。安不安全一目了然。

  (4)與集中式的認證中心相比,快Key不需要在認證的過程中通過網絡傳輸登錄信息,降低了安全風險。

 

為什么用快Key?

有朋友問我:有跟快Key一樣或者更強的軟件,比如keepass、lastpass,你為啥不用?

我的回答是:一是它連網,我不放心;二是它太麻煩,我要傻瓜型的,我想讓它召之即來揮之即去,我設計的是按鼠標滾輪就出來;三是它要錢,我窮。

 

2 全部文件   [返回頁首]

此為V2.5版源代碼,最新代碼以附件(本文尾)為准。

跳至最新下載章節

 

 

2.1 主體程序:QuicKeys.exe

2.1.1 工程文件

(1)QuicKeys.vbw
**********************************************************************************************************************************************
Module_Common = -40, 28, 1167, 802,
FM_Add_Key = 104, 104, 1311, 630, Z, 78, 78, 1285, 604, C
FM_Config_Key = 208, 208, 1389, 797, , 182, 182, 1363, 771, C
FM_Check_UniKey_Setup = 26, 180, 1249, 759, , 52, 122, 1275, 665, C
FM_Help_Key = 260, 260, 953, 803, , 260, 260, 1500, 803, C
FM_Send_Info = 182, 182, 1296, 725, , 0, 0, 1240, 543, C
FM_Start_Note = 208, 208, 1322, 751, , 26, 26, 1266, 569, C
FM_Check_UniKey = 208, 208, 1359, 751, , 52, 52, 1292, 595, C
FM_Main = 156, 156, 1396, 699, , 130, 130, 1370, 673, C
FM_Select_Browser = 182, 182, 1422, 725, , 78, 78, 1318, 621, C
************************************************************************************************************************************************

(2)QuicKeys.vbp
*************************************************************************************************************************************************
Type=Exe
Reference=*\G{56A868B0-0AD4-11CE-B03A-0020AF0BA770}#1.0#0#C:\Windows\System32\quartz.dll#ActiveMovie control type library
Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; COMDLG32.OCX
Module=Module_Common; Module_Common.bas
Form=FM_Add_Key.frm
Form=FM_Config_Key.frm
Form=FM_Check_UniKey_Setup.frm
Form=FM_Help_Key.frm
Form=FM_Send_Info.frm
Form=FM_Start_Note.frm
Form=FM_Check_UniKey.frm
Form=FM_Main.frm
Form=FM_Select_Browser.frm
IconForm="FM_Main"
Startup="FM_Main"
HelpFile=""
Title="QuicKeys"
ExeName32="QuicKeys.exe"
Command32=""
Name="QuicKeys"
HelpContextID="0"
CompatibleMode="0"
MajorVer=2
MinorVer=5
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="大系統觀開放論壇"
VersionLegalCopyright="開源軟件 自由版權 作者:王權"
VersionLegalTrademarks="BSV 大系統觀"
VersionProductName="快Key (QuicKeys)"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1
DebugStartupOption=0
***********************************************************************************************************************************************


2.1.2 各模塊及Form代碼

(1)公共模塊:Module_Common.bas
*******************************************************************************************************************************************************************

Attribute VB_Name = "Module_Common"


'********************************************************** 快Key(QuicKeys) 源碼 ***********************************************************************
'* *
'* 版本:2.5 釋放日期:2020.10.10 作者:王權(阿色) QQ:583389416 微信公眾號:大系統觀開放論壇 開發環境:Visual Basic 6.0 企業版 *
'* *
'* 功能:自動啟動瀏覽器或exe文件,自動填寫用戶名、密碼。最多管理30個密鑰。可利用自帶控制板制作U盤隨身版,能夠運行在其他電腦上。 *
'* 運行環境:Windows XP、Windows 7-10。XP需要單獨編譯。需要COMDLG32.OCX。 *
'* 安裝路徑:C:\QuicKeys 數據存儲路徑:與安裝路徑相同。用於啟停、卸載和制作U盤隨身版的控制板快捷方式安裝在電腦桌面。 *
'* 基本原理:安裝Hook,截獲鼠標中鍵(滾輪)消息,按滾輪呼出程序,通過此程序自動填寫用戶名、密碼等登錄信息,這些信息事先已經保存,並加密。 *
'* 為了給各個密鑰加密,需要一個“統一密碼”,由用戶自行設定。用戶只要記住此密碼即可打開各個原有密鑰,並自動填寫登錄。 *
'* 統一密碼也需要加密,給它加密的密碼由開發者和用戶自動聯合設定,即初始密碼。這樣可以保證包括開發者和用戶在內的任何人都無法破解統一密碼。 *
'* 但為安全起見,請開發者嚴格保守己方所設密碼,注意在發布源代碼時刪除此密碼。加解密采用業界通用技術,並使用了加鹽和密文等長等策略。 *
'* 開發者密碼的風險很小,因為它並不登錄真正的信息系統,且快Key是離線運行的,開發者無法獲取用戶端的聯合密碼和其他任何密鑰信息,也就無法解密。 *
'* 特別說明:安裝、更新、版本替換文件與運行時文件均用本文件,但要使用不同的文件名,運行文件為QuicKeys.exe,安裝文件要改名。具體如下: *
'* (1)編譯成QuicKeys.exe。 *
'* (2)按本條模式改名,必須包含setup字樣,用於安裝(安裝和平時運行其實是一個EXE):快Key-登錄助手-安裝-QuicKeys_2-0_Setup_for_Win7-10_20200923.exe。 *
'* 這樣的話,安裝時會以管理員身份運行,平時后台啟動以普通用戶身份,避免安全軟件詢問。 *
'* (3)另有控制板 StartQuicKeys.exe,用於桌面控制快Key的啟停,還可制作U盤隨身版。 *
'* (4)需要COMDLG32.OCX,要一起zip。最后將所有相關文件壓縮為ZIP發布。 *
'* (5)快Key為開源軟件,鼓勵積極共享。本代碼可任意發布,責任與權益由發布者自負。 *
'* *
'*******************************************************************************************************************************************************************

'******************************************************************* QuicKeys.exe **********************************************************************************


'************************************************************************* 定義常量 ,常量為大寫加下划線 *********************************************************
Option Explicit

Public Const VER_NUM = "V2.5 Win7+" 'Win7-10編譯時使用
'Public Const VER_NUM = "V2.5 WinXP" 'WinXP編譯時使用
Public Const QK_TITLE = "快Key"
Public Const MAX_KEYS_NUM = 30 '可管理密鑰最大數
Public Const AWQK = "ArthurW|QuicKeys_20200925@DQ;-)/ BigSystemsView^I*Love=China!" '用於開發者和用戶共同加密統一密碼,避免開發者和用戶破解。此為示意,非真實值
Public Const MAIN_FORM_MAX_HEIGHT = 6345 'QuicKeys整個窗口的最大高度
Public Const SALTLEN = 4 '鹽的長度
Public Const PWMAXLEN = 128 '密碼最大長度
Public Const WEB_BROWSERS_LIST = "IE |IEXPLORE,Edge |MICROSOFTEDGE,谷歌 |CHROME,火狐 |FIREFOX,360 |360SE,360極速 |360CHROME,搜狗 |SOGOUEXPLORER,歐朋 |OPERA,QQ |QQBROWSER"


'************************************************************************* 定義全局變量 ,全局變量以g 開頭 ********************************************************
Public gOldVerNum As String '已安裝的版本號
Public gInstalled As Boolean '是否已經安裝
Public gKeyIndex, gMaxIndex, gRealNum, gFirstSpaceNum As Integer '密鑰編號, 密鑰最大編號,實際使用個數 ,第一個密鑰空位
Public gSysName As String '系統名稱,具體系統
Public gBrowser As String '瀏覽器或程序
Public gURL As String 'gURL或參數
Public gUserName As String '用戶名,具體系統
Public gPassWord As String '密碼,具體系統
Public gTabNum1, gTabNum2 As Integer '用戶名跳到密碼需要TAB次數,密碼跳到回車需要TAB次數
Public gManConfirm As Integer '填完用戶密碼后是否手動確認提交,1表示手動,0表示程序自動提交
Public gMouseX, gMouseY, gMouseXPre, gMouseYPre, gMouseXPreT, gMouseYPreT As Integer '鼠標坐標,當前和上一次
Public gShowFunc As Boolean '右上角功能鍵是否顯示
Public gDelOrNot As Boolean '刪除鍵是反復的,再按一次退出刪除狀態,標記是否正處於操作狀態
Public gTotalRealKeyNum, gTotalServeTimes As Integer '實際密鑰總數,服務次數總計
Public gUniPassBase As String '用戶輸入的統一密碼,它被分裂為程序實際使用的統一密碼和給統一密碼加密的gFirstEncryptKey
Public gUniPassword, gOldUniPassword As String '快Key的統一密碼
Public gFirstEncryptKey As String '給統一密碼加密
Public gCheckUniPWMode, gCheckUniPWCycle As String '檢查統一密碼的方式、周期
Public gUniPWChecked As Boolean '如果啟動本程序后檢查過統一密碼,此值true
Public gInConfig As Boolean '正在設置中
Public gLockMouseMidButton, gLock_FM_Send_Info As Boolean '鎖死鼠標中鍵,即不響應
Public gDelOrEdit As Integer '因為刪除和編輯修改密鑰使用了同一個按鈕組BT_DEL_Single,所以需要區分。1表示刪除,2表示編輯
Public gQuicKeysDataPath, gQuicKeysRunPath As String 'QuicKeys 運行在我的文檔中
Public gUDiskMode As Boolean 'U盤隨身模式
Public gSysTempPath, gSysDeskTopPath As String 'Windows系統臨時目錄,系統桌面路徑
Public gMyTwipsPerPixelX, gMyTwipsPerPixelY As Integer '窗體坐標與屏幕分辨率比值,因為VB不能正確獲得大分辨率屏幕的 Screen.TwipsPerPixelX,只能采取測試法
Public gIEInstead As Boolean '隨身版用,當臨時電腦沒有啟動成功瀏覽器或程序時,用IE替代
Public gWebBrowsers() As String '瀏覽器名稱、EXE數組,將常用瀏覽器參數存入該數組
'*******************************************************************************************************************************************************************


'************************************************************** 聲明及相關定義 *************************************************************************************

Public Declare Function SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Public Const SWP_NOMOVE = &H2 '不移動窗體
Public Const SWP_NOSIZE = &H1 '不改變bai窗體尺寸
Public Const Flag = SWP_NOMOVE Or SWP_NOSIZE
Public Const HWND_TOPMOST = -1 '窗體總在最du前面
Public Const HWND_NOTOPMOST = -2 '窗體不在最前面

Private Declare Function SetFocus Lib "User32" (ByVal hwnd As Long) As Long
Private Declare Function SetCursorPos Lib "User32" (ByVal x As Long, ByVal y As Long) As Long

Private Declare Sub mouse_event Lib "User32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40

Private Declare Sub keybd_event Lib "User32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SHIFT = &H10
Private Const VBKey8 = 56

Private Declare Function timeGetTime Lib "winmm.dll" () As Long

'******************************************************************* 鼠標滾輪 ****************************************************************************************

Public Declare Function SetWindowsHookEx Lib "User32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, _
ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "User32" (ByVal hHook As Long) As Long
Public Declare Function CallNextHookEx Lib "User32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy As Long)
Public Type MOUSEMSGS
x As Long 'x座標
y As Long 'y座標
a As Long
b As Long
time As Long 'Window運行時間
End Type
Public Const WH_MOUSE_LL = 14

'消息
Public Const HC_ACTION = 0

'鼠標消息
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_MBUTTONDOWN = &H207
Public Const WM_MBUTTONUP = &H208
Public Const WM_MBUTTONDBLCLK = &H209
Public Const WM_MOUSEACTIVATE = &H21
Public Const WM_MOUSEFIRST = &H200
Public Const WM_MOUSELAST = &H209
Public Const WM_MOUSEWHEEL = &H20A

Public MouseMsg As MOUSEMSGS
Public lHook As Long '記錄Hook的值,以便退出程序的時候銷毀Hook
Public lClick As Long, mClick As Long, rClick As Long, tClick As Long '用來統計鼠標各個鍵的按下次數


'獲得Win系統各個目錄
Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Private Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As Long
Const MAX_LEN = 200 '字符串最大長度
Const DESKTOP = &H0& '桌面
Const PROGRAMS = &H2& '程序集
Const MYDOCUMENTS = &H5& '我的文檔
Const MYFAVORITES = &H6& '收藏夾
Const STARTUP = &H7& '啟動
Const RECENT = &H8& '最近打開的文件
Const SENDTO = &H9& '發送
Const STARTMENU = &HB& '開始菜單
Const NETHOOD = &H13& '網上鄰居
Const FONTS = &H14& '字體
Const SHELLNEW = &H15& 'ShellNew
Const APPDATA = &H1A& 'Application Data
Const PRINTHOOD = &H1B& 'PrintHood
Const PAGETMP = &H20& '網頁臨時文件
Const COOKIES = &H21& 'Cookies目錄
Const HISTORY = &H22& '歷史

Public pMC As FilgraphManager '定義pMC為FilgraphManager對像

Public pVW As IVideoWindow '定義pVW為IVideoWindow對像

'MD5加解密聲明
'***************************************************************************************************************************************************************************************

Private Declare Function CryptAcquireContext Lib "advapi32.dll" _
Alias "CryptAcquireContextA" ( _
ByRef phProv As Long, _
ByVal pszContainer As String, _
ByVal pszProvider As String, _
ByVal dwProvType As Long, _
ByVal dwFlags As Long) As Long

Private Declare Function CryptReleaseContext Lib "advapi32.dll" ( _
ByVal hProv As Long, _
ByVal dwFlags As Long) As Long

Private Declare Function CryptCreateHash Lib "advapi32.dll" ( _
ByVal hProv As Long, _
ByVal Algid As Long, _
ByVal hKey As Long, _
ByVal dwFlags As Long, _
ByRef phHash As Long) As Long

Private Declare Function CryptDestroyHash Lib "advapi32.dll" ( _
ByVal hHash As Long) As Long

Private Declare Function CryptHashData Lib "advapi32.dll" ( _
ByVal hHash As Long, _
pbData As Any, _
ByVal dwDataLen As Long, _
ByVal dwFlags As Long) As Long

Private Declare Function CryptDeriveKey Lib "advapi32.dll" ( _
ByVal hProv As Long, _
ByVal Algid As Long, _
ByVal hBaseData As Long, _
ByVal dwFlags As Long, _
ByRef phKey As Long) As Long

Private Declare Function CryptDestroyKey Lib "advapi32.dll" ( _
ByVal hKey As Long) As Long

Private Declare Function CryptEncrypt Lib "advapi32.dll" ( _
ByVal hKey As Long, _
ByVal hHash As Long, _
ByVal Final As Long, _
ByVal dwFlags As Long, _
pbData As Any, _
ByRef pdwDataLen As Long, _
ByVal dwBufLen As Long) As Long

Private Declare Function CryptDecrypt Lib "advapi32.dll" ( _
ByVal hKey As Long, _
ByVal hHash As Long, _
ByVal Final As Long, _
ByVal dwFlags As Long, _
pbData As Any, _
ByRef pdwDataLen As Long) As Long

Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
Dest As Any, _
Src As Any, _
ByVal Ln As Long)

Private Const PROV_RSA_FULL = 1

Private Const CRYPT_NEWKEYSET = &H8

Private Const ALG_CLASS_HASH = 32768
Private Const ALG_CLASS_DATA_ENCRYPT = 24576&

Private Const ALG_TYPE_ANY = 0
Private Const ALG_TYPE_BLOCK = 1536&
Private Const ALG_TYPE_STREAM = 2048&

Private Const ALG_SID_MD2 = 1
Private Const ALG_SID_MD4 = 2
Private Const ALG_SID_MD5 = 3
Private Const ALG_SID_SHA1 = 4

Private Const ALG_SID_DES = 1
Private Const ALG_SID_3DES = 3
Private Const ALG_SID_RC2 = 2
Private Const ALG_SID_RC4 = 1
Enum HASHALGORITHM
MD2 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD2
MD4 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD4
MD5 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_MD5
SHA1 = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_SHA1
End Enum
Enum ENCALGORITHM
DES = ALG_CLASS_DATA_ENCRYPT Or ALG_TYPE_BLOCK Or ALG_SID_DES
[3DES] = ALG_CLASS_DATA_ENCRYPT Or ALG_TYPE_BLOCK Or ALG_SID_3DES
RC2 = ALG_CLASS_DATA_ENCRYPT Or ALG_TYPE_BLOCK Or ALG_SID_RC2
RC4 = ALG_CLASS_DATA_ENCRYPT Or ALG_TYPE_STREAM Or ALG_SID_RC4
End Enum

Dim HexMatrix(15, 15) As Byte

'************************************************************ 聲明與定義結束 *************************************************************************************


'************************************************************* 公共函數、子程序 *********************************************************************************

Public Function CallMouseHookProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long '鼠標鈎子
On Error Resume Next

If code = HC_ACTION Then

CopyMemory MouseMsg, lParam, LenB(MouseMsg)
gMouseX = MouseMsg.x
gMouseY = MouseMsg.y


If gLock_FM_Send_Info = False And FM_Send_Info.Visible = True Then
FM_Send_Info.Left = (gMouseX + 20) * gMyTwipsPerPixelX
If FM_Send_Info.Left + FM_Send_Info.Width > Screen.Width Then FM_Send_Info.Left = (gMouseX - 20) * gMyTwipsPerPixelX - FM_Send_Info.Width
FM_Send_Info.Top = (gMouseY + 20) * gMyTwipsPerPixelY
If FM_Send_Info.Top + FM_Send_Info.Height > Screen.Height Then FM_Send_Info.Top = (gMouseY - 20) * gMyTwipsPerPixelY - FM_Send_Info.Height
End If

Select Case wParam '根據不同鼠標動作進行處理,在這里只處理了鼠標按下的動作

Case WM_LBUTTONDOWN '左鍵按下

If FM_Send_Info.Visible = True Then
gMouseXPre = gMouseXPreT
gMouseXPreT = gMouseX
gMouseYPre = gMouseYPreT
gMouseYPreT = gMouseY
gLock_FM_Send_Info = True
End If
CallMouseHookProc = 0 '這里把返回值設定為0,保證鼠標動作正常完成

Case WM_RBUTTONDOWN '右鍵按下
CallMouseHookProc = 0


Case WM_MBUTTONDOWN '中鍵(滾輪)按下

If gUDiskMode = True Then
If Dir(gQuicKeysDataPath & "\qkconfig.stp") = "" Then QUIT_ALL 'U盤模式下,如果U盤拔出則退出。不要把兩個If合並,因為這樣可以避免每次都去檢查U盤
End If

If gLockMouseMidButton = False And FM_Send_Info.Visible = False Then

'檢查處理統一密碼、時間戳、記錄總次數
FM_Main.SERV_TOTAL.Caption = "已服務" & gTotalServeTimes & "次"
SetWindowPos FM_Main.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag

gShowFunc = False
FM_Main.BT_ADD.Visible = gShowFunc
FM_Main.BT_DEL.Visible = gShowFunc
FM_Main.BT_EDIT.Visible = gShowFunc
FM_Main.BT_ORDER.Visible = gShowFunc
FM_Main.BT_CONFIG.Visible = gShowFunc
FM_Main.BT_UNINSTALL.Visible = gShowFunc
FM_Main.BT_EXIT.Visible = gShowFunc
FM_Main.BT_HELP.Visible = gShowFunc
FM_Main.BT_FOLD.Caption = "<?"

FM_Main.Draw_MainForm
FM_Main.Enabled = False
FM_Main.Left = (gMouseX + 30) * gMyTwipsPerPixelX
If FM_Main.Left + FM_Main.Width > Screen.Width Then FM_Main.Left = (gMouseX - 30) * gMyTwipsPerPixelX - FM_Main.Width
FM_Main.Top = (gMouseY + 30) * gMyTwipsPerPixelY
If FM_Main.Top + FM_Main.Height > Screen.Height Then FM_Main.Top = (gMouseY - 30) * gMyTwipsPerPixelY - FM_Main.Height

FM_Main.Visible = True

Check_Rec_UniPW '其結果是是否FM_Main enabled

End If

If FM_Send_Info.Visible = True Then
FM_Send_Info.Left = (gMouseX + 20) * gMyTwipsPerPixelX
If FM_Send_Info.Left + FM_Send_Info.Width > Screen.Width Then FM_Send_Info.Left = (gMouseX - 20) * gMyTwipsPerPixelX - FM_Send_Info.Width
FM_Send_Info.Top = (gMouseY + 20) * gMyTwipsPerPixelY
If FM_Send_Info.Top + FM_Send_Info.Height > Screen.Height Then FM_Send_Info.Top = (gMouseY - 20) * gMyTwipsPerPixelY - FM_Send_Info.Height
End If

CallMouseHookProc = 0

End Select

End If

If code <> 0 Then
CallMouseHookProc = CallNextHookEx(0, code, wParam, lParam) '使用CallNextHookEx,來保證鼠標鈎子能夠被其它程序使用
End If

End Function

 

Public Sub AddHook() '安裝鼠標鈎子,有時系統不穩定,安裝失敗,嘗試三次

Dim i As Integer
lHook = 0
For i = 1 To 3
lHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf CallMouseHookProc, App.hInstance, 0)
If lHook <> 0 Then Exit For
Next
If lHook = 0 Then
MsgBox "安裝Hook失敗,快Key未啟動。", 0 + 64, " " & QK_TITLE
DelHook
End
End If

End Sub


Public Sub DelHook() '卸除鼠標鈎子
UnhookWindowsHookEx lHook
End Sub


Public Sub QUIT_ALL() '完全退出,不能簡單地End ,因為要解除hook
On Error Resume Next

DelHook
End

End Sub

 

Public Sub Check_Rec_UniPW() '檢查處理統一密碼,時間戳,記錄總次數。返回true表示顯示FM_Check_UniKey窗口
On Error Resume Next

Dim TempStr As String
Dim KeepMins As Integer '時間戳持續時間,分鍾數
Dim LastTime As Date
Dim PWCycle As Integer
Dim QKFileName As String



If gUniPWChecked = False Then
ShowCheckPad '開機后首次呼出必須檢查
Exit Sub
End If

'檢查統一密碼時間戳

QKFileName = gQuicKeysDataPath & "\qkconfig.stp"
Open QKFileName For Input As #1
Line Input #1, TempStr
Line Input #1, TempStr
Line Input #1, TempStr
Line Input #1, TempStr
gCheckUniPWMode = DecryptStr(TempStr, gFirstEncryptKey)
Line Input #1, TempStr
gCheckUniPWCycle = DecryptStr(TempStr, gFirstEncryptKey)
PWCycle = CInt(gCheckUniPWCycle)
Close #1


Select Case gCheckUniPWMode

Case "1"
'每次呼出都 call ShowCheckPad
ShowCheckPad


Case "2"
'本次開機首次呼出,實際上能執行到這里一定是在前面檢查過了
PrintTimeStamp
FM_Main.Draw_MainForm
FM_Main.Enabled = True


Case "3"
'檢查時間戳,超過設定期限 call ShowCheckPad

QKFileName = gQuicKeysDataPath & "\timestamp.ktm"
Open QKFileName For Input As #1
Line Input #1, TempStr '總次數,此處無用
Line Input #1, TempStr '時間戳
Close #1

TempStr = DecryptStr(TempStr, gFirstEncryptKey)
LastTime = CDate(TempStr)
KeepMins = Abs(DateDiff("n", Now, LastTime))
If KeepMins > PWCycle Then
ShowCheckPad
Else
PrintTimeStamp
FM_Main.Draw_MainForm
FM_Main.Enabled = True
End If

End Select

End Sub


Public Sub ShowCheckPad() '顯示統一密碼檢查窗口
On Error Resume Next


FM_Check_UniKey.Show
FM_Check_UniKey.SetFocus
FM_Check_UniKey.TXT_UNI_PASSWORD.SetFocus
FM_Check_UniKey.Draw_FM_Check_UniKey

SetWindowPos FM_Check_UniKey.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
FM_Check_UniKey.Visible = True
SetCursorPos (FM_Check_UniKey.Left + 500) / gMyTwipsPerPixelX, (FM_Check_UniKey.Top + 950) / gMyTwipsPerPixelY

End Sub


Public Sub Create_UniPassword_FirstEncryptKey(UniPassBase As String) '將用戶初始設定的統一密碼分裂為gUniPassword 和 gFirstEncryptKey

Dim l As Integer
l = Len(UniPassBase)
gUniPassword = Your_Function(UniPassBase) 'Your_Function() 是由開發者自行設計的私有算法,此處刪掉了阿色的私有算法,后繼開發者請自行編碼
gFirstEncryptKey = Your_Function(UniPassBase) '給統一密碼加密的密碼由用戶和開發者聯合設定,避免用戶和開發者破解

End Sub

 

Public Function Check_UniKey_Pass() '檢查統一密碼,通過后返回True
On Error Resume Next

Dim SUCCESS As Boolean
Dim TempStr, UniPasswordSaved, UniPasswordInput As String
Dim QKFileName As String
Dim i, l, a, a1, a2 As Integer

SetWindowPos FM_Check_UniKey.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
FM_Check_UniKey.Visible = True

SUCCESS = False

QKFileName = gQuicKeysDataPath & "\qkconfig.stp"
Open QKFileName For Input As #1
Line Input #1, TempStr
Line Input #1, TempStr
Line Input #1, UniPasswordSaved
Close #1

UniPasswordInput = FM_Check_UniKey.TXT_UNI_PASSWORD.Text
TempStr = DecryptStr(UniPasswordSaved, gFirstEncryptKey)
If TempStr = UniPasswordInput Then SUCCESS = True

If SUCCESS = True Then
PrintTimeStamp
FM_Check_UniKey.Hide
Else
MsgBox "統一密碼輸入錯誤,請重新輸入。", 16, " " & QK_TITLE
FM_Check_UniKey.TXT_UNI_PASSWORD.Text = ""
End If


Check_UniKey_Pass = SUCCESS

End Function

 

Public Sub PrintTimeStamp() '記錄最近使用時間,時間戳,使用次數
On Error Resume Next

Dim QKFileName, TempStr As String

QKFileName = gQuicKeysDataPath & "\timestamp.ktm"
TempStr = CStr(Now())
gTotalServeTimes = gTotalServeTimes + 1
Open QKFileName For Output As #1
Print #1, CStr(gTotalServeTimes)
TempStr = EncryptStr(CStr(Now()), gFirstEncryptKey)
Print #1, TempStr
TempStr = DecryptStr(TempStr, gFirstEncryptKey)
Print #1, TempStr
Close #1

End Sub

 


Public Sub Get_QuicKeysPath() '獲得Win系統有關路徑。因Windows7、10等系統權限設定的差別,使用Windows系統的文件夾容易出問題。
'簡單起見,設置在C:\Quickeys
On Error Resume Next

Dim sTmp As String * MAX_LEN '存放結果的固定長度的字符串
Dim pidl As Long '某特殊目錄在特殊目錄列表中的位置

gUDiskMode = False

gQuicKeysRunPath = "C:\QuicKeys"
gQuicKeysDataPath = gQuicKeysRunPath

'如果在U盤運行隨身方式
If UCase(Left(App.Path, 1)) <> "C" And UCase(App.EXEName) = "快KEY隨身版" Then
gUDiskMode = True
gQuicKeysRunPath = Left(App.Path, 2) & "\" '在根目錄下有\,否則無,為統一去掉\,再加上\
gQuicKeysDataPath = gQuicKeysRunPath & "QuicKeys"
End If

'獲得網頁臨時目錄,用於存臨時產生的文件
SHGetSpecialFolderLocation 0, PAGETMP, pidl
SHGetPathFromIDList pidl, sTmp
gSysTempPath = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

'獲得win系統桌面路徑
SHGetSpecialFolderLocation 0, DESKTOP, pidl
SHGetPathFromIDList pidl, sTmp
gSysDeskTopPath = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

End Sub

 

Public Sub Open_Browser(BT_Index As Integer) '打開瀏覽器或程序
On Error Resume Next

Dim KeyFileName As String
Dim TempStr, BrowserName As String
Dim EN_KEY As String
Dim TmpNum As Integer

EN_KEY = gUniPassword

gSysName = ""
gBrowser = ""
gURL = ""
gUserName = ""
gPassWord = ""
gTabNum1 = 1
gTabNum2 = 1
gManConfirm = 0

FM_Main.Visible = False

gKeyIndex = BT_Index + 1

KeyFileName = gQuicKeysDataPath & "\key" & gKeyIndex & ".kir"
Open KeyFileName For Input As #1
If Not EOF(1) Then
Line Input #1, gSysName
Line Input #1, gBrowser
Line Input #1, gURL
If Trim(gURL) = "{-null-}" Then gURL = ""
Line Input #1, gUserName
If Trim(gUserName) = "{-null-}" Then gUserName = ""
Line Input #1, TempStr
gPassWord = DecryptStr(TempStr, EN_KEY)
If gPassWord = "{-null-}" Then gPassWord = ""
Line Input #1, TempStr
gTabNum1 = Val(TempStr)
Line Input #1, TempStr
gTabNum2 = Val(TempStr)
Line Input #1, TempStr
gManConfirm = Val(TempStr)
End If
Close #1

TempStr = UCase(Trim(gBrowser))
If TempStr = "" Then TempStr = "IE |iexplore.exe"
BrowserName = Trim(Left(TempStr, InStr(TempStr, "|") - 1))

TempStr = Mid(TempStr, InStr(TempStr, "|") + 1, Len(gBrowser))
TempStr = Replace(TempStr, """", "")

If UCase(TempStr) <> "IEXPLORE.EXE" And Dir(TempStr) = "" Then '如果路徑不對,一般意味着在U盤隨身模式運行,借用的電腦沒裝該瀏覽器,或者路徑不一樣

If gIEInstead = False Then
TmpNum = MsgBox("自動啟動瀏覽器或程序失敗。" & vbCrLf & "此電腦未安裝您指定的" & BrowserName & "瀏覽器或相應程序,或者安裝路徑不正確。" & vbCrLf & vbCrLf & "您可以:" & vbCrLf _
& " (1)啟動IE代替,且不再詢問;" & vbCrLf _
& " (2)手動打開目標系統的登錄頁面,然后用快Key輔助登錄;" & vbCrLf _
& " (3)按照此電腦修改啟動路徑,然后重新啟動登錄;" & vbCrLf _
& " (4)終止登錄。" & vbCrLf & vbCrLf _
& "請選擇:" & vbCrLf & " 按【是】啟動IE(不再詢問)" & vbCrLf & " 按【否】終止登錄" & vbCrLf & " 按【取消】手動打開登錄頁面", 3 + 32 + 0, " " & QK_TITLE)

Select Case TmpNum
Case vbYes '啟動IE
gIEInstead = True
TempStr = "IEXPLORE.EXE"
Case vbNo '終止本次登錄
FM_Send_Info.Hide
Exit Sub
Case vbCancel
End Select
Else
TempStr = "IEXPLORE.EXE"
End If

End If

If InStr(TempStr, " ") <> 0 Then TempStr = """" & TempStr & """" '空格需要用"",需要處理一下
If UCase(TempStr) = "IEXPLORE.EXE" Then
TempStr = "cmd /c @start " & TempStr & " " & gURL
Else
TempStr = TempStr & " " & gURL
End If

Shell TempStr, 0 ' 使用cmd /c 就不用給iexplore.exe 的路徑,其他瀏覽器不行


If gUserName <> "" Then
SetWindowPos FM_Send_Info.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
FM_Send_Info.Left = (gMouseX + 20) * gMyTwipsPerPixelX
If FM_Send_Info.Left + FM_Send_Info.Width > Screen.Width Then FM_Send_Info.Left = (gMouseX - 20) * gMyTwipsPerPixelX - FM_Send_Info.Width
FM_Send_Info.Top = (gMouseY + 20) * gMyTwipsPerPixelY
If FM_Send_Info.Top + FM_Send_Info.Height > Screen.Height Then FM_Send_Info.Top = (gMouseY - 20) * gMyTwipsPerPixelY - FM_Send_Info.Height
FM_Send_Info.Caption = "快Key: 登錄【" & gSysName & "】"
FM_Send_Info.Show
End If

End Sub

 


Public Sub Submit_Key() '自動填寫用戶名和密碼等。第幾把鑰匙,用戶名,密碼,間隔幾次TAB,都是全局變量
On Error Resume Next

DelHook
SetCursorPos gMouseXPre, gMouseYPre
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 '模擬單擊左鍵帶來的,會與Hook混亂,必須解除hook,然后再加上hook
MySleep 100
AddHook

If gUserName <> "" Then
Send_String (gUserName) '填寫用戶名
Send_TAB (gTabNum1) '發送n個TAB鍵
If gPassWord <> "" Then
Send_String (gPassWord) '填寫密碼
Else
gManConfirm = 1
End If
Send_TAB (gTabNum2) '發送n個TAB鍵

Else
gManConfirm = 1
End If

If gManConfirm = 0 Then Send_Enter '發送回車,0表示自動發送,1表示填寫完用戶密碼后人工按確認鍵

End Sub

 

Public Sub Send_String(UN_PW As String) '發送用戶名或密碼,通過剪貼板實現
On Error Resume Next
'為什么不用sendkeys? 因為sendkeys處理不了中文,會把英文輸入為中文。在交通銀行等頁面所有自動輸入都被禁止。

MySleep 100

Clipboard.Clear '清空剪貼板
Clipboard.SetText UN_PW '將剪貼板內容設置為

keybd_event 17, 0, 0, 0 '按下Ctrl A 全選輸入框
keybd_event 65, 0, 0, 0
MySleep 100 '需要
keybd_event 65, 0, KEYEVENTF_KEYUP, 0
keybd_event 17, 0, KEYEVENTF_KEYUP, 0

MySleep 100

keybd_event 17, 0, 0, 0 '按下Ctrl V 粘貼
keybd_event 86, 0, 0, 0
MySleep 100
keybd_event 86, 0, KEYEVENTF_KEYUP, 0
keybd_event 17, 0, KEYEVENTF_KEYUP, 0

Clipboard.Clear '清空剪貼板

End Sub

 

Public Sub Send_TAB(N As Integer) '發送N個TAB鍵
On Error Resume Next

Dim i As Integer

If N >= 1 Then
For i = 1 To N
keybd_event 9, 0, 0, 0 '按下TAB
MySleep 100 '需要
keybd_event 9, 0, KEYEVENTF_KEYUP, 0
MySleep 100
Next
End If

End Sub

 


Public Sub Send_Enter() '發送N個回車
On Error Resume Next

keybd_event 13, 0, 0, 0 '按下回車
MySleep 100 '需要
keybd_event 13, 0, KEYEVENTF_KEYUP, 0
MySleep 100

End Sub

 


Public Sub Get_Mouse_Form_XY_Ratio() '因為VB的問題,各種獲得屏幕分辨率的方法都有問題。注意:GetCursorPos() 不好用。
'當屏幕分辨率3000多時,獲取值錯誤,使得鼠標坐標與窗體坐標換算出問題(一般是1:15,即15緹),Screen.TwipsPerPixelX 失效。因此采取測試法,。

Dim x, y As Integer

'測試獲得屏幕分辨率,即鼠標最大XY
SetCursorPos 1000000, 1000000
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
x = MouseMsg.x + 1 '防止除數為0
y = MouseMsg.y + 1
gMyTwipsPerPixelX = Int(Screen.Width / x + 0.5)
gMyTwipsPerPixelY = Int(Screen.Height / y + 0.5)

SetCursorPos x / 2, y / 2

End Sub

 

Public Sub MySleep(ms As Long) '原Sleep不交出控制權,改造一個。 ms:毫秒數
Dim BeginTime As Long
BeginTime = timeGetTime '記下開始時的時間
While timeGetTime < BeginTime + ms '循環等待
DoEvents '轉讓控制權,以便讓操作系統處理其它的事件
Wend
End Sub

 

Public Function GetMainboardSerialNumber() As String '獲得電腦主板號,參與給統一密碼加密,可以進一步防止開發者解密
On Error Resume Next
Dim strComputer
Dim objWMIService
Dim objItem
Dim strOption
Dim colItems
GetMainboardSerialNumber = ""
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard")
For Each objItem In colItems
If objItem.SerialNumber <> "" Then
GetMainboardSerialNumber = objItem.SerialNumber
Exit Function
End If
Next
End Function

 

Public Function Check_Password_Rules(ByVal Password As String) '檢查密碼合法性,合格返回True

Dim i, l, a, s As Integer

s = 0
l = Len(Password)

'長度
If l >= 12 Then s = s + 1

'包含大寫字母
For i = 1 To l
a = Asc(Mid(Password, i, 1))
If a >= 65 And a <= 90 Then
s = s + 1
Exit For
End If
Next

'包含小寫字母
For i = 1 To l
a = Asc(Mid(Password, i, 1))
If a >= 97 And a <= 122 Then
s = s + 1
Exit For
End If
Next

'包含數字
For i = 1 To l
a = Asc(Mid(Password, i, 1))
If a >= 48 And a <= 57 Then
s = s + 1
Exit For
End If
Next

'包含特殊字符
For i = 1 To l
a = Asc(Mid(Password, i, 1))
If Not ((a >= 65 And a <= 90) Or (a >= 97 And a <= 122) Or (a >= 48 And a <= 57)) Then
s = s + 1
Exit For
End If
Next

If s >= 5 Then
Check_Password_Rules = True
Else
Check_Password_Rules = False
End If

End Function

 

Public Sub Search_Browsers() '不能為了加快安裝速度而提前搜索,因為此時安裝目錄還不存在,而搜索結果需要保存在該目錄

Dim BrowserExeName, SearchDoneFlagFile As String
Dim i, BrowsersNum, SearchBrowserDoneNum, LoopNum As Integer
Dim SearchDoneFlag() As Boolean

BrowsersNum = UBound(gWebBrowsers) + 1
ReDim SearchDoneFlag(BrowsersNum - 1) As Boolean
For i = 0 To BrowsersNum - 1
SearchDoneFlag(i) = False
Next
SearchBrowserDoneNum = 0
LoopNum = 0

For i = 1 To BrowsersNum - 1 '不搜IE
BrowserExeName = Mid(gWebBrowsers(i), InStr(gWebBrowsers(i), "|") + 1, 50) '不含.exe
Search_A_Browser (BrowserExeName)
MySleep 200
Show_Installing_Progress 15 + 20 * i / BrowsersNum
Next

Do While SearchBrowserDoneNum < BrowsersNum - 1 And LoopNum < 100

For i = 1 To BrowsersNum - 1
If SearchDoneFlag(i) = False Then
BrowserExeName = Mid(gWebBrowsers(i), InStr(gWebBrowsers(i), "|") + 1, 50)
SearchDoneFlagFile = gQuicKeysDataPath & "\browser" & BrowserExeName & ".lst"
If (Dir(SearchDoneFlagFile) <> "") Then SearchDoneFlag(i) = True
End If
Next

SearchBrowserDoneNum = 0
For i = 1 To BrowsersNum - 1
If SearchDoneFlag(i) = True Then SearchBrowserDoneNum = SearchBrowserDoneNum + 1
Next

MySleep 1000
LoopNum = LoopNum + 1
Show_Installing_Progress 35 + 40 * LoopNum / 100
Loop

End Sub

 

Public Sub Search_A_Browser(ByVal BrowserExeName As String)

Dim strFilename As String

strFilename = gQuicKeysDataPath & "\Search" & BrowserExeName & ".bat"

Open strFilename For Output As #1
Print #1, "C:"
Print #1, "cd " & gQuicKeysDataPath
Print #1, "del /q /f browser" & BrowserExeName & ".lst"
Print #1, "dir /s/b C:\" & BrowserExeName & ".exe>browser" & BrowserExeName & ".tmp"
Print #1, "rename browser" & BrowserExeName & ".tmp browser" & BrowserExeName & ".lst"
Print #1, "del /q /f Search" & BrowserExeName & ".bat"
Close #1

Shell strFilename, vbHide

End Sub


Public Sub Show_Installing()

FM_Check_UniKey_Setup.PIC_INSTALLING.Visible = True
Set pMC = New FilgraphManager
pMC.Stop
pMC.RenderFile App.Path & "\installing.gif"
Set pVW = pMC
pVW.WindowStyle = CLng(&H6000000)
pVW.Left = 0
pVW.Top = 0
pVW.Width = 75
pVW.Height = 56
pVW.Owner = FM_Check_UniKey_Setup.PIC_INSTALLING.hwnd
pVW.MessageDrain = FM_Check_UniKey_Setup.PIC_INSTALLING.hwnd
pMC.Run

End Sub


Public Sub Stop_Show_Installing()
Set pVW = Nothing
Set pMC = Nothing
FM_Check_UniKey_Setup.LB_STATUS0.Caption = "已經完成"
End Sub


Public Sub Show_Installing_Progress(Percents As Integer)
Dim EndX As Integer
EndX = FM_Check_UniKey_Setup.LN_PROGRESS_BACK.X1 + (FM_Check_UniKey_Setup.LN_PROGRESS_BACK.X2 - FM_Check_UniKey_Setup.LN_PROGRESS_BACK.X1) * Percents / 100
FM_Check_UniKey_Setup.LN_PROGRESS.X2 = EndX
FM_Check_UniKey_Setup.LN_PROGRESS.Visible = False
MySleep 100
FM_Check_UniKey_Setup.LN_PROGRESS.Visible = True
End Sub

 

 


'____________________________________________________________________________ 加解密 ___________________________________________________________________________________________________


'加密 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Public Function EncryptString(ByVal str As String, Password As String) As String
On Error Resume Next
Dim byt() As Byte
Dim HASHALGORITHM As HASHALGORITHM
Dim ENCALGORITHM As ENCALGORITHM
byt = str
HASHALGORITHM = MD5
ENCALGORITHM = RC4
EncryptString = BytesToHex(Encrypt(byt, Password, HASHALGORITHM, ENCALGORITHM))
End Function


Public Function EncryptByte(byt() As Byte, Password As String) As Byte()
On Error Resume Next
Dim HASHALGORITHM As HASHALGORITHM
Dim ENCALGORITHM As ENCALGORITHM
HASHALGORITHM = MD5
ENCALGORITHM = RC4
EncryptByte = Encrypt(byt, Password, HASHALGORITHM, ENCALGORITHM)
End Function


Private Function Encrypt(data() As Byte, ByVal Password As String, Optional ByVal HASHALGORITHM As HASHALGORITHM = MD5, Optional ByVal ENCALGORITHM As ENCALGORITHM = RC4) As Byte()
On Error Resume Next
Dim lRes As Long
Dim hProv As Long
Dim hHash As Long
Dim hKey As Long
Dim lBufLen As Long
Dim lDataLen As Long
Dim abData() As Byte
lRes = CryptAcquireContext(hProv, vbNullString, vbNullString, PROV_RSA_FULL, 0)
If lRes = 0 And Err.LastDllError = &H80090016 Then lRes = CryptAcquireContext(hProv, vbNullString, vbNullString, PROV_RSA_FULL, CRYPT_NEWKEYSET)
If lRes <> 0 Then
lRes = CryptCreateHash(hProv, HASHALGORITHM, 0, 0, hHash)
If lRes <> 0 Then
lRes = CryptHashData(hHash, ByVal Password, Len(Password), 0)
If lRes <> 0 Then
lRes = CryptDeriveKey(hProv, ENCALGORITHM, hHash, 0, hKey)
If lRes <> 0 Then
lBufLen = UBound(data) - LBound(data) + 1
lDataLen = lBufLen
lRes = CryptEncrypt(hKey, 0&, 1, 0, ByVal 0&, lBufLen, 0)
If lRes <> 0 Then
If lBufLen < lDataLen Then lBufLen = lDataLen
ReDim abData(0 To lBufLen - 1)
MoveMemory abData(0), data(LBound(data)), lDataLen
lRes = CryptEncrypt(hKey, 0&, 1, 0, abData(0), lBufLen, lDataLen)
If lRes <> 0 Then
If lDataLen <> lBufLen Then ReDim Preserve abData(0 To lBufLen - 1)
Encrypt = abData
End If
End If
End If
CryptDestroyKey hKey
End If
CryptDestroyHash hHash
End If
CryptReleaseContext hProv, 0
End If
If lRes = 0 Then Err.Raise Err.LastDllError
End Function



'解密 -------------------------------------------------------------------------------------------------------------------------------------------------

Public Function DecryptString(ByVal str As String, Password As String) As String
On Error Resume Next
Dim byt() As Byte
Dim HASHALGORITHM As HASHALGORITHM
Dim ENCALGORITHM As ENCALGORITHM
byt = HexToBytes(str)
HASHALGORITHM = MD5
ENCALGORITHM = RC4
DecryptString = Decrypt(byt, Password, HASHALGORITHM, ENCALGORITHM)
End Function


Public Function DecryptByte(byt() As Byte, Password As String) As Byte()
On Error Resume Next
Dim HASHALGORITHM As HASHALGORITHM
Dim ENCALGORITHM As ENCALGORITHM
HASHALGORITHM = MD5
ENCALGORITHM = RC4
DecryptByte = Decrypt(byt, Password, HASHALGORITHM, ENCALGORITHM)
End Function


Private Function Decrypt(data() As Byte, ByVal Password As String, Optional ByVal HASHALGORITHM As HASHALGORITHM = MD5, Optional ByVal ENCALGORITHM As ENCALGORITHM = RC4) As Byte()
On Error Resume Next
Dim lRes As Long
Dim hProv As Long
Dim hHash As Long
Dim hKey As Long
Dim lBufLen As Long
Dim abData() As Byte
lRes = CryptAcquireContext(hProv, vbNullString, vbNullString, PROV_RSA_FULL, 0)
If lRes = 0 And Err.LastDllError = &H80090016 Then lRes = CryptAcquireContext(hProv, vbNullString, vbNullString, PROV_RSA_FULL, CRYPT_NEWKEYSET)
If lRes <> 0 Then
lRes = CryptCreateHash(hProv, HASHALGORITHM, 0, 0, hHash)
If lRes <> 0 Then
lRes = CryptHashData(hHash, ByVal Password, Len(Password), 0)
If lRes <> 0 Then
lRes = CryptDeriveKey(hProv, ENCALGORITHM, hHash, 0, hKey)
If lRes <> 0 Then
lBufLen = UBound(data) - LBound(data) + 1
ReDim abData(0 To lBufLen - 1)
MoveMemory abData(0), data(LBound(data)), lBufLen
lRes = CryptDecrypt(hKey, 0&, 1, 0, abData(0), lBufLen)
If lRes <> 0 Then
ReDim Preserve abData(0 To lBufLen - 1)
Decrypt = abData
End If
End If
CryptDestroyKey hKey
End If
CryptDestroyHash hHash
End If
CryptReleaseContext hProv, 0
End If
If lRes = 0 Then Err.Raise Err.LastDllError
End Function

 

'字節與十六進制字符串的轉換 ------------------------------------------------------------------------------------------------------------------------------


Public Function BytesToHex(bits() As Byte) As String
On Error Resume Next
Dim i As Long
Dim b
Dim s As String
For Each b In bits
If b < 16 Then
s = s & "0" & Hex(b)
Else
s = s & Hex(b)
End If
Next
BytesToHex = s
End Function


Public Function HexToBytes(sHex As String) As Byte()
On Error Resume Next
Dim b() As Byte
Dim rst() As Byte
Dim i As Long
Dim N As Long
Dim m1 As Byte
Dim m2 As Byte
If HexMatrix(15, 15) = 0 Then Call MatrixInitialize
b = StrConv(sHex, vbFromUnicode)
i = (UBound(b) + 1) / 2 - 1
ReDim rst(i)
For i = 0 To UBound(b) Step 2
If b(i) > 96 Then
m1 = b(i) - 87
ElseIf b(i) > 64 Then
m1 = b(i) - 55
ElseIf b(i) > 47 Then
m1 = b(i) - 48
End If
If b(i + 1) > 96 Then
m2 = b(i + 1) - 87
ElseIf b(i + 1) > 64 Then
m2 = b(i + 1) - 55
ElseIf b(i + 1) > 47 Then
m2 = b(i + 1) - 48
End If
rst(N) = HexMatrix(m1, m2)
N = N + 1
Next i
HexToBytes = rst
End Function


Private Sub MatrixInitialize()
On Error Resume Next
HexMatrix(0, 0) = &H0: HexMatrix(0, 1) = &H1: HexMatrix(0, 2) = &H2: HexMatrix(0, 3) = &H3: HexMatrix(0, 4) = &H4: HexMatrix(0, 5) = &H5: HexMatrix(0, 6) = &H6: HexMatrix(0, 7) = &H7
HexMatrix(0, 8) = &H8: HexMatrix(0, 9) = &H9: HexMatrix(0, 10) = &HA: HexMatrix(0, 11) = &HB: HexMatrix(0, 12) = &HC: HexMatrix(0, 13) = &HD: HexMatrix(0, 14) = &HE: HexMatrix(0, 15) = &HF
HexMatrix(1, 0) = &H10: HexMatrix(1, 1) = &H11: HexMatrix(1, 2) = &H12: HexMatrix(1, 3) = &H13: HexMatrix(1, 4) = &H14: HexMatrix(1, 5) = &H15: HexMatrix(1, 6) = &H16: HexMatrix(1, 7) = &H17
HexMatrix(1, 8) = &H18: HexMatrix(1, 9) = &H19: HexMatrix(1, 10) = &H1A: HexMatrix(1, 11) = &H1B: HexMatrix(1, 12) = &H1C: HexMatrix(1, 13) = &H1D: HexMatrix(1, 14) = &H1E: HexMatrix(1, 15) = &H1F
HexMatrix(2, 0) = &H20: HexMatrix(2, 1) = &H21: HexMatrix(2, 2) = &H22: HexMatrix(2, 3) = &H23: HexMatrix(2, 4) = &H24: HexMatrix(2, 5) = &H25: HexMatrix(2, 6) = &H26: HexMatrix(2, 7) = &H27
HexMatrix(2, 8) = &H28: HexMatrix(2, 9) = &H29: HexMatrix(2, 10) = &H2A: HexMatrix(2, 11) = &H2B: HexMatrix(2, 12) = &H2C: HexMatrix(2, 13) = &H2D: HexMatrix(2, 14) = &H2E: HexMatrix(2, 15) = &H2F
HexMatrix(3, 0) = &H30: HexMatrix(3, 1) = &H31: HexMatrix(3, 2) = &H32: HexMatrix(3, 3) = &H33: HexMatrix(3, 4) = &H34: HexMatrix(3, 5) = &H35: HexMatrix(3, 6) = &H36: HexMatrix(3, 7) = &H37
HexMatrix(3, 8) = &H38: HexMatrix(3, 9) = &H39: HexMatrix(3, 10) = &H3A: HexMatrix(3, 11) = &H3B: HexMatrix(3, 12) = &H3C: HexMatrix(3, 13) = &H3D: HexMatrix(3, 14) = &H3E: HexMatrix(3, 15) = &H3F
HexMatrix(4, 0) = &H40: HexMatrix(4, 1) = &H41: HexMatrix(4, 2) = &H42: HexMatrix(4, 3) = &H43: HexMatrix(4, 4) = &H44: HexMatrix(4, 5) = &H45: HexMatrix(4, 6) = &H46: HexMatrix(4, 7) = &H47
HexMatrix(4, 8) = &H48: HexMatrix(4, 9) = &H49: HexMatrix(4, 10) = &H4A: HexMatrix(4, 11) = &H4B: HexMatrix(4, 12) = &H4C: HexMatrix(4, 13) = &H4D: HexMatrix(4, 14) = &H4E: HexMatrix(4, 15) = &H4F
HexMatrix(5, 0) = &H50: HexMatrix(5, 1) = &H51: HexMatrix(5, 2) = &H52: HexMatrix(5, 3) = &H53: HexMatrix(5, 4) = &H54: HexMatrix(5, 5) = &H55: HexMatrix(5, 6) = &H56: HexMatrix(5, 7) = &H57
HexMatrix(5, 8) = &H58: HexMatrix(5, 9) = &H59: HexMatrix(5, 10) = &H5A: HexMatrix(5, 11) = &H5B: HexMatrix(5, 12) = &H5C: HexMatrix(5, 13) = &H5D: HexMatrix(5, 14) = &H5E: HexMatrix(5, 15) = &H5F
HexMatrix(6, 0) = &H60: HexMatrix(6, 1) = &H61: HexMatrix(6, 2) = &H62: HexMatrix(6, 3) = &H63: HexMatrix(6, 4) = &H64: HexMatrix(6, 5) = &H65: HexMatrix(6, 6) = &H66: HexMatrix(6, 7) = &H67
HexMatrix(6, 8) = &H68: HexMatrix(6, 9) = &H69: HexMatrix(6, 10) = &H6A: HexMatrix(6, 11) = &H6B: HexMatrix(6, 12) = &H6C: HexMatrix(6, 13) = &H6D: HexMatrix(6, 14) = &H6E: HexMatrix(6, 15) = &H6F
HexMatrix(7, 0) = &H70: HexMatrix(7, 1) = &H71: HexMatrix(7, 2) = &H72: HexMatrix(7, 3) = &H73: HexMatrix(7, 4) = &H74: HexMatrix(7, 5) = &H75: HexMatrix(7, 6) = &H76: HexMatrix(7, 7) = &H77
HexMatrix(7, 8) = &H78: HexMatrix(7, 9) = &H79: HexMatrix(7, 10) = &H7A: HexMatrix(7, 11) = &H7B: HexMatrix(7, 12) = &H7C: HexMatrix(7, 13) = &H7D: HexMatrix(7, 14) = &H7E: HexMatrix(7, 15) = &H7F
HexMatrix(8, 0) = &H80: HexMatrix(8, 1) = &H81: HexMatrix(8, 2) = &H82: HexMatrix(8, 3) = &H83: HexMatrix(8, 4) = &H84: HexMatrix(8, 5) = &H85: HexMatrix(8, 6) = &H86: HexMatrix(8, 7) = &H87
HexMatrix(8, 8) = &H88: HexMatrix(8, 9) = &H89: HexMatrix(8, 10) = &H8A: HexMatrix(8, 11) = &H8B: HexMatrix(8, 12) = &H8C: HexMatrix(8, 13) = &H8D: HexMatrix(8, 14) = &H8E: HexMatrix(8, 15) = &H8F
HexMatrix(9, 0) = &H90: HexMatrix(9, 1) = &H91: HexMatrix(9, 2) = &H92: HexMatrix(9, 3) = &H93: HexMatrix(9, 4) = &H94: HexMatrix(9, 5) = &H95: HexMatrix(9, 6) = &H96: HexMatrix(9, 7) = &H97
HexMatrix(9, 8) = &H98: HexMatrix(9, 9) = &H99: HexMatrix(9, 10) = &H9A: HexMatrix(9, 11) = &H9B: HexMatrix(9, 12) = &H9C: HexMatrix(9, 13) = &H9D: HexMatrix(9, 14) = &H9E: HexMatrix(9, 15) = &H9F
HexMatrix(10, 0) = &HA0: HexMatrix(10, 1) = &HA1: HexMatrix(10, 2) = &HA2: HexMatrix(10, 3) = &HA3: HexMatrix(10, 4) = &HA4: HexMatrix(10, 5) = &HA5: HexMatrix(10, 6) = &HA6: HexMatrix(10, 7) = &HA7
HexMatrix(10, 8) = &HA8: HexMatrix(10, 9) = &HA9: HexMatrix(10, 10) = &HAA: HexMatrix(10, 11) = &HAB: HexMatrix(10, 12) = &HAC: HexMatrix(10, 13) = &HAD: HexMatrix(10, 14) = &HAE: HexMatrix(10, 15) = &HAF
HexMatrix(11, 0) = &HB0: HexMatrix(11, 1) = &HB1: HexMatrix(11, 2) = &HB2: HexMatrix(11, 3) = &HB3: HexMatrix(11, 4) = &HB4: HexMatrix(11, 5) = &HB5: HexMatrix(11, 6) = &HB6: HexMatrix(11, 7) = &HB7
HexMatrix(11, 8) = &HB8: HexMatrix(11, 9) = &HB9: HexMatrix(11, 10) = &HBA: HexMatrix(11, 11) = &HBB: HexMatrix(11, 12) = &HBC: HexMatrix(11, 13) = &HBD: HexMatrix(11, 14) = &HBE: HexMatrix(11, 15) = &HBF
HexMatrix(12, 0) = &HC0: HexMatrix(12, 1) = &HC1: HexMatrix(12, 2) = &HC2: HexMatrix(12, 3) = &HC3: HexMatrix(12, 4) = &HC4: HexMatrix(12, 5) = &HC5: HexMatrix(12, 6) = &HC6: HexMatrix(12, 7) = &HC7
HexMatrix(12, 8) = &HC8: HexMatrix(12, 9) = &HC9: HexMatrix(12, 10) = &HCA: HexMatrix(12, 11) = &HCB: HexMatrix(12, 12) = &HCC: HexMatrix(12, 13) = &HCD: HexMatrix(12, 14) = &HCE: HexMatrix(12, 15) = &HCF
HexMatrix(13, 0) = &HD0: HexMatrix(13, 1) = &HD1: HexMatrix(13, 2) = &HD2: HexMatrix(13, 3) = &HD3: HexMatrix(13, 4) = &HD4: HexMatrix(13, 5) = &HD5: HexMatrix(13, 6) = &HD6: HexMatrix(13, 7) = &HD7
HexMatrix(13, 8) = &HD8: HexMatrix(13, 9) = &HD9: HexMatrix(13, 10) = &HDA: HexMatrix(13, 11) = &HDB: HexMatrix(13, 12) = &HDC: HexMatrix(13, 13) = &HDD: HexMatrix(13, 14) = &HDE: HexMatrix(13, 15) = &HDF
HexMatrix(14, 0) = &HE0: HexMatrix(14, 1) = &HE1: HexMatrix(14, 2) = &HE2: HexMatrix(14, 3) = &HE3: HexMatrix(14, 4) = &HE4: HexMatrix(14, 5) = &HE5: HexMatrix(14, 6) = &HE6: HexMatrix(14, 7) = &HE7
HexMatrix(14, 8) = &HE8: HexMatrix(14, 9) = &HE9: HexMatrix(14, 10) = &HEA: HexMatrix(14, 11) = &HEB: HexMatrix(14, 12) = &HEC: HexMatrix(14, 13) = &HED: HexMatrix(14, 14) = &HEE: HexMatrix(14, 15) = &HEF
HexMatrix(15, 0) = &HF0: HexMatrix(15, 1) = &HF1: HexMatrix(15, 2) = &HF2: HexMatrix(15, 3) = &HF3: HexMatrix(15, 4) = &HF4: HexMatrix(15, 5) = &HF5: HexMatrix(15, 6) = &HF6: HexMatrix(15, 7) = &HF7
HexMatrix(15, 8) = &HF8: HexMatrix(15, 9) = &HF9: HexMatrix(15, 10) = &HFA: HexMatrix(15, 11) = &HFB: HexMatrix(15, 12) = &HFC: HexMatrix(15, 13) = &HFD: HexMatrix(15, 14) = &HFE: HexMatrix(15, 15) = &HFF
End Sub


'加減鹽、密文等長處理 ------------------------------------------------------------------------------------------------------------------------------------

Public Function EncryptStr(ByVal str As String, ByVal Password As String) As String '帶鹽、加尾等長加密。當SALTLEN=4時,密文長度為512
Dim s, salt, tail, t As String
Dim l As Integer
s = Left(str, PWMAXLEN)
l = Len(s)
t = Right(CStr(l + 100000), 4)
s = s & Get_Rnd_Chars(PWMAXLEN - l - SALTLEN - 4 - 1)
salt = Get_Rnd_Chars(SALTLEN)
s = salt & t & s
EncryptStr = salt & EncryptString(s, Password & salt)
End Function

 

Public Function DecryptStr(ByVal str As String, ByVal Password As String) As String '解密減鹽
Dim s, ss, salt As String
Dim l As Integer
l = Len(str)
salt = Left(str, SALTLEN)
s = Right(str, l - SALTLEN)
ss = DecryptString(s, Password & salt)
l = Len(ss)
l = CInt(Mid(ss, SALTLEN + 1, 4))
DecryptStr = Mid(ss, SALTLEN + 1 + 4, l)
End Function


Public Function Get_Rnd_Chars(N As Integer) As String '從一個預置的字符串中隨機返回N個字符。為什么不完全隨機?NO!!!Add Arthur's smell
On Error Resume Next

Dim s, ss As String
Dim i, j, l As Integer
s = "0123456789ABCDEF0123456789ABCDEF"
l = Len(s) - 1
Get_Rnd_Chars = ""
Randomize
For j = 1 To N
i = Int(l * Rnd) + 1
ss = Mid(s, i, 1)
If ss = "" Then ss = "7"
Get_Rnd_Chars = Get_Rnd_Chars & ss
Next
End Function


'*************************************************************************** 公共模塊Module_Common 代碼結束 ****************************************************************************


(2)窗體:FM_Add_Key

FM_Add_Key.frm
************************************************************************************************************************************************************************************************
VERSION 5.00
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Begin VB.Form FM_Add_Key
AutoRedraw = -1 'True
BorderStyle = 1 'Fixed Single
Caption = "快Key: 添加密鑰"
ClientHeight = 5280
ClientLeft = 45
ClientTop = 390
ClientWidth = 4350
ForeColor = &H00000000&
Icon = "FM_Add_Key.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 5280
ScaleWidth = 4350
StartUpPosition = 2 '屏幕中心
Begin VB.TextBox TXT_TARGET_NUM
Height = 270
Left = 3720
TabIndex = 2
Text = "1"
Top = 720
Width = 375
End
Begin VB.CommandButton BT_ELSE
Caption = "其他"
Height = 255
Left = 2780
TabIndex = 4
Top = 1080
Width = 520
End
Begin MSComDlg.CommonDialog CommonDialog1
Left = 3600
Top = 4680
_ExtentX = 847
_ExtentY = 847
_Version = 393216
End
Begin VB.TextBox TXT_URL
Height = 495
Left = 240
MultiLine = -1 'True
TabIndex = 7
Top = 2160
Width = 3855
End
Begin VB.CommandButton BT_BROWSE
Caption = "瀏覽"
Height = 255
Left = 3300
TabIndex = 5
Top = 1080
Width = 520
End
Begin VB.CommandButton BT_IE
Caption = "IE:缺省"
Height = 255
Left = 1890
TabIndex = 3
Top = 1080
Width = 885
End
Begin VB.TextBox TXT_BROWSER_PATH
Height = 495
Left = 240
MultiLine = -1 'True
TabIndex = 6
Text = "FM_Add_Key.frx":424A
Top = 1320
Width = 3060
End
Begin VB.CommandButton BT_SEE_PW
Height = 255
Left = 3840
Picture = "FM_Add_Key.frx":425C
Style = 1 'Graphical
TabIndex = 10
Top = 3120
Width = 255
End
Begin VB.CheckBox CB_MANUAL_CONFIRM
Caption = "Check1"
Height = 270
Left = 3960
TabIndex = 13
Top = 4200
Width = 255
End
Begin VB.CommandButton BT_SUBMIT_ADD
Caption = "提交"
Height = 375
Left = 240
TabIndex = 14
Top = 4800
Width = 3855
End
Begin VB.TextBox TXT_TAB2
Height = 270
Left = 3240
TabIndex = 12
Text = "1"
Top = 3840
Width = 855
End
Begin VB.TextBox TXT_TAB1
Height = 270
Left = 3240
TabIndex = 11
Text = "1"
Top = 3480
Width = 855
End
Begin VB.TextBox TXT_PW
ForeColor = &H00C0C0C0&
Height = 270
IMEMode = 3 'DISABLE
Left = 1080
TabIndex = 9
Text = "原系統密碼,不填表示手動輸入"
Top = 3120
Width = 2775
End
Begin VB.TextBox TXT_UN
ForeColor = &H00C0C0C0&
Height = 270
Left = 1260
TabIndex = 8
Text = "原系統用戶名,不填表示手動輸入"
Top = 2760
Width = 2835
End
Begin VB.TextBox TXT_SYSNM
ForeColor = &H00C0C0C0&
Height = 270
Left = 1080
TabIndex = 1
Text = "原系統簡稱,最多12字,必填"
Top = 720
Width = 1935
End
Begin VB.Label Label13
BackStyle = 0 'Transparent
Caption = "序號"
Height = 255
Left = 3250
TabIndex = 26
Top = 765
Width = 495
End
Begin VB.Label Label12
BackStyle = 0 'Transparent
Caption = "或"
Height = 255
Left = 3900
TabIndex = 25
Top = 1180
Width = 375
End
Begin VB.Label Label11
BackStyle = 0 'Transparent
Caption = "手工填寫完整路徑"
Height = 615
Left = 3360
TabIndex = 24
Top = 1400
Width = 855
End
Begin VB.Label Label10
BackStyle = 0 'Transparent
Caption = "網址與參數"
Height = 255
Left = 240
TabIndex = 23
Top = 1920
Width = 1095
End
Begin VB.Label Label9
BackStyle = 0 'Transparent
Caption = "啟動瀏覽器或程序"
Height = 255
Left = 240
TabIndex = 22
Top = 1080
Width = 1575
End
Begin VB.Label Label8
Alignment = 2 'Center
BackColor = &H00C0C0FF&
Caption = "提示:請確認大小寫、中英文、半全角無誤"
Height = 230
Left = 240
TabIndex = 21
Top = 4560
Width = 3855
End
Begin VB.Label Label7
BackStyle = 0 'Transparent
Caption = "手動確認登錄(填完登錄信息不自動提交)"
Height = 255
Left = 240
TabIndex = 20
Top = 4210
Width = 3255
End
Begin VB.Label Label6
BackStyle = 0 'Transparent
Caption = " 軟件模擬用鍵盤手動登錄。請先在欲登錄的系統測試一下用鍵盤登錄的過程,然后填寫:"
Height = 495
Left = 240
TabIndex = 19
Top = 120
Width = 3975
End
Begin VB.Label Label5
BackStyle = 0 'Transparent
Caption = "從密碼框到確認鍵需要按幾次TAB鍵"
Height = 375
Left = 240
TabIndex = 18
Top = 3850
Width = 3135
End
Begin VB.Label Label4
BackStyle = 0 'Transparent
Caption = "從用戶名框到密碼框要按幾次TAB鍵"
Height = 255
Left = 240
TabIndex = 17
Top = 3490
Width = 3135
End
Begin VB.Label Label3
BackStyle = 0 'Transparent
Caption = "登錄密碼"
Height = 255
Left = 240
TabIndex = 16
Top = 3130
Width = 1005
End
Begin VB.Label Label2
BackStyle = 0 'Transparent
Caption = "登錄用戶名"
Height = 255
Left = 240
TabIndex = 15
Top = 2770
Width = 1095
End
Begin VB.Label Label1
BackStyle = 0 'Transparent
Caption = "系統名稱"
Height = 255
Left = 240
TabIndex = 0
Top = 760
Width = 975
End
End
Attribute VB_Name = "FM_Add_Key"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False


'*********************************************************************************************************************************************************************
'* *
'* 快Key 窗體 FM_Add_Key *
'* *
'*********************************************************************************************************************************************************************

 

'*************************************************************************** 函數、子程序 ****************************************************************************

'FM_Add_Key 窗口,增加和修改密鑰都用這個窗口

 

Private Sub Form_Load()

End Sub


Public Sub Draw_FM_Add_Key()
On Error Resume Next

SetWindowPos FM_Add_Key.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
If FM_Main.Left > Screen.Width / 2 Then
FM_Add_Key.Left = FM_Main.Left - FM_Add_Key.Width - 20
Else
FM_Add_Key.Left = FM_Main.Left + FM_Main.Width + 20
End If
FM_Add_Key.Top = FM_Main.Top + 400

TXT_PW.PasswordChar = ""
If gDelOrEdit = 2 Then

If TXT_UN.Text = "原系統用戶名,不填表示手動輸入" Or TXT_UN.Text = "" Then
TXT_UN.Text = "原系統用戶名,不填表示手動輸入"
TXT_UN.ForeColor = &HC0C0C0
End If
TXT_PW.PasswordChar = "*"
If TXT_PW.Text = "原系統密碼,不填表示手動輸入" Then TXT_PW.PasswordChar = ""
End If

gLockMouseMidButton = True

End Sub


Private Sub Form_Unload(Cancel As Integer)
FM_Main.Enabled = True

For i = 1 To 3
For j = 1 To 10
btIndex = (j - 1) * 3 + i - 1
FM_Main.BT_DEL_SINGLE(btIndex).Visible = False
Next
Next

gDelOrNot = Not gDelOrNot

FM_Main.BT_EDIT.BackColor = &H8000000F
FM_Main.BT_EDIT.Caption = "…"
FM_Main.BT_EDIT.FontSize = 6

FM_Main.BT_ADD.Enabled = Not gDelOrNot 'True
If gTotalRealKeyNum >= MAX_KEYS_NUM Then FM_Main.BT_ADD.Enabled = False
FM_Main.BT_DEL.Enabled = Not gDelOrNot 'True
FM_Main.BT_EDIT.Enabled = Not gDelOrNot 'True
FM_Main.BT_ORDER.Enabled = Not gDelOrNot 'True
FM_Main.BT_CONFIG.Enabled = Not gDelOrNot 'True
FM_Main.BT_UNINSTALL.Enabled = Not gDelOrNot 'True
FM_Main.BT_EXIT.Enabled = Not gDelOrNot 'True
FM_Main.BT_HELP.Enabled = Not gDelOrNot 'True
FM_Main.BT_FOLD.Enabled = Not gDelOrNot 'True

FM_Main.Draw_MainForm


gLockMouseMidButton = False
End Sub

 

Private Sub BT_SUBMIT_ADD_Click() '添加一個密鑰,占用序號指定的位置,原位置順延后退
On Error Resume Next

Dim strFilename As String
Dim ADD_SUCCESS As Boolean
Dim Loc_Index As Integer


If TXT_SYSNM.Text = "原系統簡稱,最多12字,必填" Or TXT_SYSNM.Text = "" Then
MsgBox "添加或修改密鑰失敗:系統名稱不能空。", 16, " " & QK_TITLE
Else
ADD_SUCCESS = False

If gDelOrEdit <> 2 Then '增加密鑰

Loc_Index = Save_and_Place_a_Key
ADD_SUCCESS = True
gTotalRealKeyNum = gTotalRealKeyNum + 1

Set_Default_FM_Add_Key
FM_Add_Key.Visible = False

If Loc_Index >= MAX_KEYS_NUM Then
FM_Main.BT_ADD.Enabled = False
FM_Add_Key.Visible = False
End If
FM_Main.BT_A_KEY(Loc_Index - 1).Enabled = True

For i = 1 To 3
For j = 1 To 10
btIndex = (j - 1) * 3 + i - 1
FM_Main.BT_DEL_SINGLE(btIndex).Visible = False
Next
Next

FM_Main.BT_ADD.Enabled = True

FM_Main.Draw_MainForm

If ADD_SUCCESS = False Then
MsgBox "添加密鑰失敗:最多可添加" & MAX_KEYS_NUM & "個密鑰,未找到空位。請刪除不必要的密鑰。", 16, " " & QK_TITLE
End If
gDelOrNot = Not gDelOrNot

Else '修改密鑰
strFilename = gQuicKeysDataPath & "\key" & gKeyIndex & ".kir"
If Dir(strFilename) <> "" Then Kill strFilename
FM_Main.BT_A_KEY(gKeyIndex - 1).Visible = False
FM_Main.BT_DEL_SINGLE(gKeyIndex - 1).Visible = False

Save_and_Place_a_Key

FM_Add_Key.Hide
FM_Main.BT_EDIT_Click_RUN
FM_Main.Draw_MainForm

End If

FM_Main.Enabled = True
End If

gLockMouseMidButton = False

End Sub


Private Function Save_and_Place_a_Key() '寫密鑰文件,並把密鑰放到指定序號的位置,返回密鑰位置序號
On Error Resume Next

Dim strFilename, BrowserName, BrowserExeName, OldName, NewName As String
Dim ADD_SUCCESS As Boolean
Dim Target_Num, Temp_i As Integer
Dim EN_KEY As String

EN_KEY = gUniPassword 'gUniPassword是全局變量,快Key的統一密碼

Target_Num = CInt(TXT_TARGET_NUM.Text)
If Target_Num > MAX_KEYS_NUM Then Target_Num = MAX_KEYS_NUM
If Target_Num < 1 Then Target_Num = 1

For i = Target_Num To MAX_KEYS_NUM + Target_Num - 1 '循環找第一個可用的空位
Temp_i = i Mod MAX_KEYS_NUM
If Temp_i = 0 Then Temp_i = MAX_KEYS_NUM
strFilename = gQuicKeysDataPath & "\key" & Temp_i & ".kir"
If Dir(strFilename) = "" Then '如果文件不存在,就是第一個空位
gFirstSpaceNum = i
Exit For
End If
Next

If gFirstSpaceNum < Target_Num Then gFirstSpaceNum = gFirstSpaceNum + MAX_KEYS_NUM

strFilename = gQuicKeysDataPath & "\keytemp.kir"
Open strFilename For Output As #1
gSysName = TXT_SYSNM.Text
Print #1, gSysName
gBrowser = TXT_BROWSER_PATH.Text
gBrowser = Replace(gBrowser, Chr(10), "") '多行時去掉回車
gBrowser = Replace(gBrowser, Chr(13), "")
gBrowser = Replace(gBrowser, """", "")

'自動標注瀏覽器名稱
If InStr(gBrowser, "|") = 0 Then
BrowserExeName = UCase(Dir(gBrowser))
If BrowserExeName = "" Then BrowserExeName = gBrowser
BrowserExeName = "|" & Replace(BrowserExeName, ".EXE", "") '加|避免chrome和360chrome混淆
BrowserName = "其他 |"

For i = 0 To UBound(gWebBrowsers)
If InStr(gWebBrowsers(i), BrowserExeName) > 0 Then
BrowserName = Left(gWebBrowsers(i), InStr(gWebBrowsers(i), "|"))
Exit For
End If
Next
gBrowser = BrowserName & gBrowser
End If

Print #1, gBrowser
gURL = TXT_URL.Text
If Trim(gURL) = "" Then gURL = "{-null-}"
Print #1, gURL
gUserName = Trim(TXT_UN.Text)
If gUserName = "原系統用戶名,不填表示手動輸入" Or gUserName = "" Then gUserName = "{-null-}"
Print #1, gUserName
gPassWord = TXT_PW.Text
If gPassWord = "原系統密碼,不填表示手動輸入" Or gPassWord = "" Then gPassWord = "{-null-}"
gPassWord = EncryptStr(gPassWord, EN_KEY)
Print #1, gPassWord
Print #1, TXT_TAB1.Text
Print #1, TXT_TAB2.Text
Print #1, CStr(CB_MANUAL_CONFIRM.Value) '0表示未選,1表示選上
Close #1

Do While gFirstSpaceNum > Target_Num
Temp_i = (gFirstSpaceNum - 1) Mod MAX_KEYS_NUM
If Temp_i = 0 Then Temp_i = MAX_KEYS_NUM
OldName = gQuicKeysDataPath & "\key" & Temp_i & ".kir"
Temp_i = Temp_i + 1
Temp_i = Temp_i Mod MAX_KEYS_NUM
If Temp_i = 0 Then Temp_i = MAX_KEYS_NUM
NewName = gQuicKeysDataPath & "\key" & Temp_i & ".kir"
Name OldName As NewName
gFirstSpaceNum = gFirstSpaceNum - 1
Loop
Name gQuicKeysDataPath & "\keytemp.kir" As gQuicKeysDataPath & "\key" & Target_Num & ".kir"

Save_and_Place_a_Key = Target_Num

End Function

 

Public Sub Set_Default_FM_Add_Key() '設置增加密鑰操作窗口的缺省值

TXT_SYSNM.ForeColor = &HC0C0C0
TXT_SYSNM.Text = "原系統簡稱,最多12字,必填"

TXT_BROWSER_PATH.Text = "IE |iexplore.exe"
TXT_URL.Text = ""

TXT_UN.ForeColor = &HC0C0C0
TXT_UN.Text = "原系統用戶名,不填表示手動輸入"

TXT_PW.ForeColor = &HC0C0C0
TXT_PW.Text = "原系統密碼,不填表示手動輸入"

TXT_TAB1.Text = "1"
TXT_TAB2.Text = "1"
CB_MANUAL_CONFIRM.Value = 0

End Sub

 

Private Sub TXT_SYSNM_GotFocus() '文本框得到焦點
If TXT_SYSNM.Text = "原系統簡稱,最多12字,必填" Then
TXT_SYSNM.ForeColor = &H0&
TXT_SYSNM.Text = ""
End If

End Sub


Private Sub TXT_SYSNM_LostFocus() '文本框失去焦點
If TXT_SYSNM.Text = "" Then
TXT_SYSNM.ForeColor = &HC0C0C0
TXT_SYSNM.Text = "原系統簡稱,最多12字,必填"
End If
End Sub


Private Sub TXT_BROWSER_PATH_LostFocus()
If Trim(TXT_BROWSER_PATH.Text) = "" Then
TXT_BROWSER_PATH.Text = "IE |iexplore.exe"
End If
End Sub


Private Sub TXT_UN_GotFocus() '文本框得到焦點
If TXT_UN.Text = "原系統用戶名,不填表示手動輸入" Then
TXT_UN.ForeColor = &H0&
TXT_UN.Text = ""
End If

End Sub


Private Sub TXT_UN_LostFocus() '文本框失去焦點
If TXT_UN.Text = "" Then
TXT_UN.ForeColor = &HC0C0C0
TXT_UN.Text = "原系統用戶名,不填表示手動輸入"
End If
End Sub


Private Sub TXT_PW_GotFocus() '文本框得到焦點
If TXT_PW.Text = "原系統密碼,不填表示手動輸入" Then
TXT_PW.ForeColor = &H0&
TXT_PW.Text = ""
TXT_PW.PasswordChar = "*"
End If

End Sub


Private Sub TXT_PW_LostFocus() '文本框失去焦點
If TXT_PW.Text = "" Then
TXT_PW.ForeColor = &HC0C0C0
TXT_PW.Text = "原系統密碼,不填表示手動輸入"
TXT_PW.PasswordChar = ""
End If
End Sub


Private Sub BT_SEE_PW_Click() '是否明碼顯示密碼

Select Case TXT_PW.PasswordChar
Case "*"
TXT_PW.PasswordChar = ""
Case ""
TXT_PW.PasswordChar = "*"
End Select

End Sub


Private Sub BT_IE_Click()
TXT_BROWSER_PATH.Text = "IE |iexplore.exe"
End Sub


Private Sub BT_ELSE_Click()
FM_Select_Browser.Draw_FM_Select_Browser
End Sub


Private Sub BT_BROWSE_Click()
On Error Resume Next

CommonDialog1.Filter = "EXE文件(*.exe)|*.exe"
Me.CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then TXT_BROWSER_PATH.Text = CommonDialog1.FileName
End Sub


'*************************************************************************** FM_Add_Key 窗體代碼結束 ****************************************************************************


(3)窗體:FM_Check_UniKey

FM_Check_UniKey.frm
************************************************************************************************************************************************************************************
VERSION 5.00
Begin VB.Form FM_Check_UniKey
BorderStyle = 1 'Fixed Single
Caption = "快Key: 檢查統一密碼"
ClientHeight = 1215
ClientLeft = 45
ClientTop = 390
ClientWidth = 2550
Icon = "FM_Check_UniKey.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 1215
ScaleWidth = 2550
Begin VB.CommandButton BT_SUBMIT_UNIPW
Caption = "確認"
Height = 375
Left = 240
TabIndex = 3
Top = 720
Width = 2055
End
Begin VB.CommandButton BT_SEE_PW
Height = 255
Left = 2040
Picture = "FM_Check_UniKey.frx":424A
Style = 1 'Graphical
TabIndex = 2
Top = 360
Width = 255
End
Begin VB.TextBox TXT_UNI_PASSWORD
ForeColor = &H00000000&
Height = 270
IMEMode = 3 'DISABLE
Left = 240
PasswordChar = "*"
TabIndex = 1
Top = 360
Width = 2055
End
Begin VB.Label Label1
BackStyle = 0 'Transparent
Caption = "請輸入您的統一密碼"
Height = 375
Left = 240
TabIndex = 0
Top = 120
Width = 3135
End
End
Attribute VB_Name = "FM_Check_UniKey"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False


'*********************************************************************************************************************************************************************
'* *
'* 快Key 窗體FM_Check_UniKey *
'* *
'*********************************************************************************************************************************************************************



'*************************************************************************** 函數、子程序 ****************************************************************************


'FM_Check_UniKey 檢查統一密碼窗口

Private Sub Form_Load()

SetWindowPos FM_Check_UniKey.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
Draw_FM_Check_UniKey

End Sub


Private Sub BT_SUBMIT_UNIPW_Click()
On Error Resume Next

If Check_Password_Rules(TXT_UNI_PASSWORD.Text) = False Then
MsgBox "您已設置的密碼不符合信息安全規范,請盡快重新設置。" & vbCrLf & "本次操作可繼續進行。" & vbCrLf & vbCrLf & _
"要求:長度12個字符以上,同時包括大寫字母、小寫字母、數字和特殊字符。", 0 + 64, " " & QK_TITLE
End If
Create_UniPassword_FirstEncryptKey (TXT_UNI_PASSWORD.Text) '基於用戶輸入的統一密碼,分裂出 gUniPassword 和 gFirstEncryptKey
If Check_UniKey_Pass = True Then

gUniPassBase = TXT_UNI_PASSWORD.Text
FM_Config_Key.TXT_UNI_PASSWORD.Text = gUniPassBase
gUniPWChecked = True
FM_Config_Key.Enabled = True
FM_Main.Draw_MainForm
If gInConfig = False Then
FM_Main.Enabled = True
gLockMouseMidButton = False
End If

End If


End Sub

 

Public Sub Draw_FM_Check_UniKey()
On Error Resume Next

If FM_Main.Left > Screen.Width / 2 Then
FM_Check_UniKey.Left = FM_Main.Left - FM_Check_UniKey.Width - 20 + 200
Else
FM_Check_UniKey.Left = FM_Main.Left + FM_Main.Width + 20 + 200
End If
FM_Check_UniKey.Top = FM_Main.Top

FM_Check_UniKey.Caption = QK_TITLE & ": 檢查統一密碼"

FM_Main.Enabled = False
TXT_UNI_PASSWORD.Text = ""
TXT_UNI_PASSWORD.PasswordChar = "*"
gLockMouseMidButton = True

End Sub

 

Private Sub Form_Unload(Cancel As Integer)
FM_Main.Enabled = True
End Sub

 


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) '點擊窗口關閉X時,不退出,只隱藏
On Error Resume Next

If UnloadMode = 0 Then
Cancel = 1
Me.Hide
FM_Main.Hide
If gUniPWChecked = True Then FM_Config_Key.Hide
TXT_UNI_PASSWORD.Text = ""
gLockMouseMidButton = False
End If

End Sub

 


Private Sub BT_SEE_PW_Click()

Select Case TXT_UNI_PASSWORD.PasswordChar
Case "*"
TXT_UNI_PASSWORD.PasswordChar = ""
Case ""
TXT_UNI_PASSWORD.PasswordChar = "*"
End Select

End Sub


'*************************************************************************** FM_Check_UniKey 窗體代碼結束 ****************************************************************************


(4)窗體:FM_Check_UniKey_Setup

FM_Check_UniKey_Setup.frm
***********************************************************************************************************************************************************************************************

VERSION 5.00
Begin VB.Form FM_Check_UniKey_Setup
BorderStyle = 1 'Fixed Single
Caption = "快Key: 安裝/更新"
ClientHeight = 6210
ClientLeft = 45
ClientTop = 390
ClientWidth = 5295
Icon = "FM_Check_UniKey_Setup.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 6210
ScaleWidth = 5295
StartUpPosition = 2 '屏幕中心
Begin VB.PictureBox PIC_INSTALLING
Appearance = 0 'Flat
AutoSize = -1 'True
BackColor = &H80000005&
ForeColor = &H80000008&
Height = 800
Left = 3670
ScaleHeight = 765
ScaleWidth = 1110
TabIndex = 16
Top = 3250
Width = 1140
Begin VB.Label LB_STATUS0
Alignment = 2 'Center
BackStyle = 0 'Transparent
Caption = "准備就緒"
ForeColor = &H0000C000&
Height = 495
Left = 130
TabIndex = 18
Top = 300
Width = 855
End
End
Begin VB.CommandButton BT_QUIT_SETUP
Caption = "退出安裝"
Height = 375
Left = 3600
TabIndex = 14
Top = 5480
Width = 1215
End
Begin VB.CommandButton BT_SUBMIT_UNIPW_SETUP
Caption = "確認安裝/更新"
Height = 375
Left = 480
TabIndex = 3
Top = 5480
Width = 3015
End
Begin VB.CommandButton BT_SEE_PW
Height = 255
Left = 4440
Picture = "FM_Check_UniKey_Setup.frx":424A
Style = 1 'Graphical
TabIndex = 2
Top = 5120
Width = 375
End
Begin VB.TextBox TXT_UNI_PASSWORD
ForeColor = &H00000000&
Height = 270
IMEMode = 3 'DISABLE
Left = 480
PasswordChar = "*"
TabIndex = 1
Top = 5120
Width = 3975
End
Begin VB.Line LN_PROGRESS
BorderColor = &H0000C000&
BorderStyle = 2 'Dash
BorderWidth = 3
DrawMode = 14 'Copy Pen
X1 = 370
X2 = 3000
Y1 = 4200
Y2 = 4200
End
Begin VB.Line LN_PROGRESS_BACK
BorderColor = &H00C0C0C0&
BorderWidth = 2
X1 = 360
X2 = 4920
Y1 = 4200
Y2 = 4200
End
Begin VB.Label Label1
BackStyle = 0 'Transparent
Caption = " 請設置【統一密碼】,否則無法使用快Key。"
Height = 375
Left = 405
TabIndex = 0
Top = 4320
Width = 4455
End
Begin VB.Label LB_STATUS
Alignment = 2 'Center
BackStyle = 0 'Transparent
Caption = "正在搜索瀏覽器"
BeginProperty Font
Name = "宋體"
Size = 7.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H0000C000&
Height = 255
Left = 1515
TabIndex = 17
Top = 3960
Visible = 0 'False
Width = 2055
End
Begin VB.Label Label8
BackStyle = 0 'Transparent
Caption = "* 開機啟動需要修改注冊表,請設置安全軟件允許。"
ForeColor = &H000000FF&
Height = 255
Left = 405
TabIndex = 15
Top = 4875
Width = 4335
End
Begin VB.Label Label12
BackStyle = 0 'Transparent
Caption = "(3)開機自動在后台啟動。"
Height = 375
Left = 690
TabIndex = 13
Top = 2250
Width = 3615
End
Begin VB.Label Label11
BackStyle = 0 'Transparent
Caption = "(4)本程序不聯網,不上傳任何信息。"
Height = 375
Left = 690
TabIndex = 12
Top = 2500
Width = 3615
End
Begin VB.Label Label10
BackStyle = 0 'Transparent
Caption = "【作者聲明】"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 400
TabIndex = 11
Top = 2900
Width = 3615
End
Begin VB.Label Label9
BackStyle = 0 'Transparent
Caption = " 本程序為開源軟件,免費自由使用,自由分享,作者不對使用者及因使用者引起的任何損失負責。開始使用即表示接受此約定。"
Height = 975
Left = 480
TabIndex = 10
Top = 3180
Width = 3135
End
Begin VB.Label Label7
BackStyle = 0 'Transparent
Caption = "【使用說明】"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 400
TabIndex = 9
Top = 1500
Width = 4695
End
Begin VB.Label Label6
BackStyle = 0 'Transparent
Caption = "*(1)按鼠標【滾輪】呼出。"
ForeColor = &H000000FF&
Height = 375
Left = 600
TabIndex = 8
Top = 1750
Width = 5175
End
Begin VB.Label Label5
BackStyle = 0 'Transparent
Caption = "*(2)使用前必須設置【統一密碼】。"
Height = 375
Left = 600
TabIndex = 7
Top = 2000
Width = 4695
End
Begin VB.Label Label4
Alignment = 2 'Center
BackStyle = 0 'Transparent
Caption = "歡迎使用快Key!"
BeginProperty Font
Name = "宋體"
Size = 12
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Left = 1200
TabIndex = 6
Top = 360
Width = 3255
End
Begin VB.Image Image1
Height = 560
Left = 960
Picture = "FM_Check_UniKey_Setup.frx":7DDB
Stretch = -1 'True
Top = 240
Width = 600
End
Begin VB.Label Label3
BackStyle = 0 'Transparent
Caption = " 快Key(QuicKeys),幫助您自動填寫用戶名/密碼。"
Height = 375
Left = 400
TabIndex = 5
Top = 1100
Width = 4695
End
Begin VB.Label Label2
BackStyle = 0 'Transparent
Caption = " 統一密碼是打開快Key的密碼,請牢記,不要泄露。"
Height = 375
Left = 405
TabIndex = 4
Top = 4600
Width = 4335
End
End
Attribute VB_Name = "FM_Check_UniKey_Setup"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False


'*********************************************************************************************************************************************************************
'* *
'* 快Key 窗體FM_Check_UniKey_Setup *
'* *
'*********************************************************************************************************************************************************************



Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)



'*************************************************************************** 函數、子程序 ****************************************************************************

'FM_Check_UniKey_Setup 安裝時填寫統一密碼窗口

Private Sub Form_Load()

 

Dim strFilename, Uname As String
SetWindowPos FM_Check_UniKey_Setup.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
Draw_FM_Check_UniKey_Setup

If gInstalled = True Then
strFilename = gQuicKeysDataPath & "\qkconfig.stp"
Open strFilename For Input As #1
Line Input #1, gOldVerNum
Line Input #1, Uname
Close #1
End If

If Left(Trim(gOldVerNum), 2) = "V2" Then
FM_Check_UniKey_Setup.TXT_UNI_PASSWORD.PasswordChar = ""
FM_Check_UniKey_Setup.TXT_UNI_PASSWORD.Text = "統一密碼已設置,繼續使用,此處不需輸入"
FM_Check_UniKey_Setup.TXT_UNI_PASSWORD.Enabled = False
FM_Check_UniKey_Setup.BT_SEE_PW.Enabled = False
Else
If Left(Trim(gOldVerNum), 2) = "V1" Then
FM_Check_UniKey_Setup.TXT_UNI_PASSWORD.PasswordChar = ""
FM_Check_UniKey_Setup.TXT_UNI_PASSWORD.ForeColor = &HFF&
FM_Check_UniKey_Setup.TXT_UNI_PASSWORD.Text = "系統升級,請重新設置統一密碼"
End If
End If

End Sub


Private Sub BT_SUBMIT_UNIPW_SETUP_Click()
'''''On Error Resume Next '因為安全軟件會阻止修改注冊表,為了提示用戶安裝時注意到這一點,要讓錯誤信息顯示出來

Dim strFilename As String
Dim Uname, Upassword As String
Dim TempStr As String
Dim EN_KEY As String



DelHook
FM_Main.Hide

If (Left(Trim(gOldVerNum), 2) = "V1" Or gInstalled = False) And Check_Password_Rules(TXT_UNI_PASSWORD.Text) = False Then
TXT_UNI_PASSWORD.Text = ""
FM_Check_UniKey_Setup.Show
MsgBox "您輸入的密碼不符合信息安全規范,請重新輸入。" & vbCrLf & vbCrLf & "要求:長度12個字符以上,同時包括大寫字母、小寫字母、數字和特殊字符。", 0 + 64, " " & QK_TITLE

Else

If Left(Trim(gOldVerNum), 2) = "V1" Or gInstalled = False Then
gUniPassBase = TXT_UNI_PASSWORD.Text
Create_UniPassword_FirstEncryptKey (gUniPassBase) '以用戶輸入的統一密碼為基礎,生成全局變量 gUniPassword 和 gFirstEncryptKey
EN_KEY = gFirstEncryptKey
End If

If gInstalled = False Then '開始安裝

BT_SUBMIT_UNIPW_SETUP.Enabled = False
BT_QUIT_SETUP.Enabled = False

If Dir(gQuicKeysRunPath, vbDirectory) = "" Then MkDir (gQuicKeysRunPath)

Show_Installing
LB_STATUS.Visible = True
LB_STATUS.Caption = "正在初始化"
Show_Installing_Progress 8
MySleep 1000
LB_STATUS.Caption = "正在搜索瀏覽器,約2分鍾"
Show_Installing_Progress 15
Search_Browsers
LB_STATUS.Caption = "正在拷貝文件"
Show_Installing_Progress 75


Shell "taskkill /f /im QuicKeys.exe" '殺死老程序進程,進程不存在也不會出錯,安裝文件名不叫QuicKeys.exe

MySleep 500

'拷貝QuicKeys.exe到 QuicKeys目錄
TempStr = IIf(Len(App.Path) > 3, App.Path & "\" & App.EXEName & ".exe", App.Path & App.EXEName & ".exe") '獲得安裝文件自身路徑和名稱。
'EXE在根目錄下時,app.path帶“\”,不在根目錄下時沒有。
strFilename = gQuicKeysRunPath & "\QuicKeys.exe"
If Dir(strFilename) <> "" Then Kill strFilename '刪掉舊的QuicKeys.exe 文件,如果文件不存在,刪除會出錯
MySleep 500
FileCopy TempStr, strFilename '把新文件考過來

'拷貝StartQuicKeys.exe到 QuicKeys目錄
TempStr = IIf(Len(App.Path) > 3, App.Path & "\StartQuicKeys.ex_", App.Path & "StartQuicKeys.ex_")
strFilename = gQuicKeysRunPath & "\StartQuicKeys.exe"
If Dir(strFilename) <> "" Then Kill strFilename
MySleep 500

FileCopy TempStr, strFilename '把新文件考過來


'拷貝COMDLG32.OCX到 C:\Windows\System32\ 和 C:\Windows\SysWOW64\
TempStr = IIf(Len(App.Path) > 3, App.Path & "\COMDLG32.OCX", App.Path & "COMDLG32.OCX")
strFilename = "C:\Windows\System32\COMDLG32.OCX"
If Dir(TempStr) <> "" And Dir(strFilename) = "" Then
FileCopy TempStr, strFilename
End If


'建立控制板的桌面快捷方式
TempStr = IIf(Len(App.Path) > 3, App.Path & "\快Key控制板.lnk", App.Path & "快Key控制板.lnk")
strFilename = gSysDeskTopPath & "\快Key控制板.lnk"
MySleep 500
FileCopy TempStr, strFilename '把新文件考過來,舊文件被直接覆蓋,無詢問



'寫注冊表,開機啟動QuicKeys.exe
'改注冊表必須編譯成exe,安裝時設定以管理員身份運行執行,平時不要。
'管理員身份設定:編譯時“文件描述”中要含有“Setup”字樣,系統就會自動以管理員身份運行,也可在執行文件名包含Setup、Install等字樣
Set W = CreateObject("wscript.shell")
W.regwrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" & "QuicKeys.exe", gQuicKeysRunPath & "\QuicKeys.exe"

LB_STATUS.Caption = "正在配置參數"
Show_Installing_Progress 90
MySleep 2000


'寫配置文件
strFilename = gQuicKeysDataPath & "\qkconfig.stp"
Open strFilename For Output As #1
Print #1, VER_NUM '正在執行的版本號
Print #1, "未定名" 'Uname
Upassword = EncryptStr(gUniPassword, EN_KEY)
Print #1, Upassword
gCheckUniPWMode = "2"
gCheckUniPWCycle = "60"
gCheckUniPWMode = EncryptStr(gCheckUniPWMode, EN_KEY)
gCheckUniPWCycle = EncryptStr(gCheckUniPWCycle, EN_KEY)
Print #1, gCheckUniPWMode
Print #1, gCheckUniPWCycle
Close #1

PrintTimeStamp

LB_STATUS = "安裝完成->啟動"
Show_Installing_Progress 100
MySleep 2000

'啟動QuicKeys.exe
strFilename = gQuicKeysRunPath & "\QuicKeys.exe"
Shell strFilename, 1 '啟動

Stop_Show_Installing

End '直接結束即可,前面已經刪除Hook


Else '已安裝過

'************************ 升級更新,檢查版本號,如果不同,詢問是否替換。 ***********************************************************************************

strFilename = gQuicKeysDataPath & "\qkconfig.stp"
Open strFilename For Input As #1
Line Input #1, gOldVerNum
Line Input #1, Uname
Close #1

TempStr = "發現已經安裝的快Key版本號為 【" & gOldVerNum & "】" & vbCrLf
TempStr = TempStr & "當前正在安裝的快Key版本號為 【" & VER_NUM & "】" & vbCrLf & vbCrLf
If Left(Trim(gOldVerNum), 2) = "V1" Then
TempStr2 = "【注意】:需要重新填寫各系統密碼,系統路徑等數據可繼續沿用。"
Else
TempStr2 = "已存在的密鑰等數據不會被覆蓋。"
End If
TempStr = TempStr & "是否用 【" & VER_NUM & "】 版本替換 【" & gOldVerNum & "】 版本?" & vbCrLf & TempStr2 & vbCrLf & vbCrLf
TempStr = TempStr & "按【是】替換,按【否】取消並退出。"
TmpNum = MsgBox(TempStr, 4 + 32 + 256, " " & QK_TITLE & " " & VER_NUM)

If TmpNum = vbYes Then '如果確實替換

BT_SUBMIT_UNIPW_SETUP.Enabled = False
BT_QUIT_SETUP.Enabled = False

Show_Installing
LB_STATUS.Visible = True
LB_STATUS.Caption = "正在初始化"
Show_Installing_Progress 8
MySleep 1000
LB_STATUS.Caption = "正在搜索瀏覽器,約2分鍾"
Show_Installing_Progress 15
Search_Browsers
LB_STATUS.Caption = "正在更新文件"
Show_Installing_Progress 75

Shell "taskkill /f /im QuicKeys.exe" '殺死老程序進程,進程不存在也不會出錯
TempStr = IIf(Len(App.Path) > 3, App.Path & "\" & App.EXEName & ".exe", App.Path & App.EXEName & ".exe") '獲得安裝文件自身路徑和名稱。
'當EXE在根目錄下,app.path 是帶有“\”,不在時候沒有。
MySleep 500

'拷貝QuicKeys.exe到 QuicKeys目錄
strFilename = gQuicKeysRunPath & "\QuicKeys.exe"
If Dir(strFilename) <> "" Then Kill strFilename '刪掉 QuicKeys.exe 文件,如果文件不存在,刪除會出錯
MySleep 500
FileCopy TempStr, strFilename '把新文件考過來

'拷貝StartQuicKeys.exe到 QuicKeys目錄
TempStr = IIf(Len(App.Path) > 3, App.Path & "\StartQuicKeys.ex_", App.Path & "StartQuicKeys.ex_")
strFilename = gQuicKeysRunPath & "\StartQuicKeys.exe"
If Dir(strFilename) <> "" Then Kill strFilename
MySleep 500
FileCopy TempStr, strFilename '把新文件考過來

'建立控制板的桌面快捷方式
TempStr = IIf(Len(App.Path) > 3, App.Path & "\快Key控制板.lnk", App.Path & "快Key控制板.lnk")
strFilename = gSysDeskTopPath & "\快Key控制板.lnk"
MySleep 500
FileCopy TempStr, strFilename '把新文件考過來,舊文件被直接覆蓋,無詢問

LB_STATUS.Caption = "正在更新配置"
Show_Installing_Progress 95

'更新qkconfig.stp
strFilename = gQuicKeysDataPath & "\qkconfig.stp"
If Left(Trim(gOldVerNum), 2) = "V1" Then '由V1更換為V2的加密方式
EN_KEY = gFirstEncryptKey
Open strFilename For Output As #1
Print #1, VER_NUM '正在執行的版本號
Print #1, Uname '原用戶名
Upassword = EncryptStr(gUniPassword, EN_KEY)
Print #1, Upassword
gCheckUniPWMode = "2"
gCheckUniPWCycle = "60"
gCheckUniPWMode = EncryptStr(gCheckUniPWMode, EN_KEY)
gCheckUniPWCycle = EncryptStr(gCheckUniPWCycle, EN_KEY)
Print #1, gCheckUniPWMode
Print #1, gCheckUniPWCycle
Close #1
PrintTimeStamp

Else '已經是V2,只更新一下版本號
Open strFilename For Input As #1
Line Input #1, gOldVerNum
Line Input #1, Uname
Line Input #1, Upassword
Line Input #1, gCheckUniPWMode
Line Input #1, gCheckUniPWCycle
Close #1

Open strFilename For Output As #1
Print #1, VER_NUM
Print #1, Uname
Print #1, Upassword
Print #1, gCheckUniPWMode
Print #1, gCheckUniPWCycle
Close #1

End If

LB_STATUS = "更新完成->啟動"
Show_Installing_Progress 100
MySleep 2000

'重新啟動 QuicKeys.exe
strFilename = gQuicKeysRunPath & "\QuicKeys.exe"
MySleep 100 '需要等一下,否則找不到QuicKeys.exe
Shell strFilename, 1 '重啟新版本

Stop_Show_Installing
MsgBox "已替換到 【" & VER_NUM & "】 版本,並已重新啟動。" & vbCrLf & "請按鼠標【滾輪】呼出。", 0 + 64, " " & QK_TITLE

End

Else
End
End If

End If

End If

End Sub


Private Sub BT_QUIT_SETUP_Click()
TmpNum = MsgBox("確定退出安裝快Key嗎?" & vbCrLf & "按【是】退出安裝,按【否】繼續安裝。", 4 + 32 + 256, " " & QK_TITLE & " " & VER_NUM & ": 安裝")
If TmpNum = vbYes Then End '如果不安裝就完全退出
End Sub


Public Sub Draw_FM_Check_UniKey_Setup()
On Error Resume Next

If FM_Main.Left > Screen.Width / 2 Then
FM_Check_UniKey_Setup.Left = FM_Main.Left - FM_Check_UniKey_Setup.Width - 20 + 200
Else
FM_Check_UniKey_Setup.Left = FM_Main.Left + FM_Main.Width + 20 + 200
End If
FM_Check_UniKey_Setup.Top = FM_Main.Top
FM_Check_UniKey_Setup.Caption = "快Key " & VER_NUM & ": 安裝/更新"

FM_Main.Enabled = False
TXT_UNI_PASSWORD.Text = ""
TXT_UNI_PASSWORD.PasswordChar = "*"
Show_Installing_Progress 5
gLockMouseMidButton = True

End Sub


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) '點擊窗口關閉X時,不退出,只隱藏
On Error Resume Next

Dim TmpNum As Integer

If UnloadMode = 0 Then
Cancel = 1
Me.Hide
End If

TmpNum = MsgBox("確定退出安裝快Key嗎?" & vbCrLf & "按【是】退出安裝,按【否】繼續安裝。", 4 + 32 + 256, " " & QK_TITLE & " " & VER_NUM & ": 安裝")
If TmpNum = vbYes Then '如果不安裝就完全退出,下面的語句不執行
End
Else
FM_Check_UniKey_Setup.Show
End If

End Sub


Private Sub BT_SEE_PW_Click() '明文顯示密碼

Select Case TXT_UNI_PASSWORD.PasswordChar
Case "*"
TXT_UNI_PASSWORD.PasswordChar = ""
Case ""
TXT_UNI_PASSWORD.PasswordChar = "*"
End Select

End Sub


Private Sub TXT_UNI_PASSWORD_GotFocus() '文本框得到焦點
If TXT_UNI_PASSWORD.Text = "系統升級,請重新設置統一密碼" Then
TXT_UNI_PASSWORD.ForeColor = &H0&
TXT_UNI_PASSWORD.Text = ""
TXT_UNI_PASSWORD.PasswordChar = "*"
End If

End Sub


Private Sub TXT_UNI_PASSWORD_LostFocus() '文本框失去焦點
If TXT_UNI_PASSWORD.Text = "" Then
TXT_UNI_PASSWORD.ForeColor = &HFF&
TXT_UNI_PASSWORD.Text = "系統升級,請重新設置統一密碼"
TXT_UNI_PASSWORD.PasswordChar = "*"
End If
End Sub


'*********************************************************************** FM_Check_UniKey_Setup 窗體代碼結束 ***********************************************************************


(5)窗體: FM_Config_Key

FM_Config_Key.frm
******************************************************************************************************************************************************************************************
VERSION 5.00
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Begin VB.Form FM_Config_Key
BorderStyle = 1 'Fixed Single
Caption = "快Key: 用戶設置"
ClientHeight = 3405
ClientLeft = 45
ClientTop = 390
ClientWidth = 3120
Icon = "FM_Config_Key.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 3405
ScaleWidth = 3120
StartUpPosition = 3 '窗口缺省
Begin MSComDlg.CommonDialog CommonDialog1
Left = 0
Top = 2040
_ExtentX = 847
_ExtentY = 847
_Version = 393216
End
Begin VB.CommandButton BT_See_PW
Height = 255
Left = 2640
Picture = "FM_Config_Key.frx":424A
Style = 1 'Graphical
TabIndex = 12
Top = 1320
Width = 255
End
Begin VB.TextBox TXT_MINS
Alignment = 1 'Right Justify
Height = 270
Left = 1300
TabIndex = 10
Text = "60"
Top = 2460
Width = 615
End
Begin VB.CommandButton BT_CONFIG_CONFIRM
Caption = "確認"
Height = 375
Left = 240
TabIndex = 9
Top = 2870
Width = 2655
End
Begin VB.OptionButton OPT_PW_3
Caption = "超過 分鍾未使用"
Height = 250
Left = 600
TabIndex = 8
Top = 2460
Width = 2490
End
Begin VB.OptionButton OPT_PW_2
Caption = "開機后首次呼出時"
Height = 250
Left = 600
TabIndex = 7
Top = 2210
Value = -1 'True
Width = 2055
End
Begin VB.OptionButton OPT_PW_1
Caption = "每次呼出時"
Height = 250
Left = 600
TabIndex = 6
Top = 1960
Width = 1935
End
Begin VB.TextBox TXT_UNI_PASSWORD
ForeColor = &H00C0C0C0&
Height = 270
Left = 1080
TabIndex = 4
Text = "快Key密碼,必填"
Top = 1320
Width = 1815
End
Begin VB.TextBox TXT_USER_NAME
ForeColor = &H00C0C0C0&
Height = 270
Left = 1080
TabIndex = 2
Text = "未定名"
Top = 960
Width = 1815
End
Begin VB.CommandButton BT_CHANGE_PHOTO
Caption = "更換頭像"
Height = 250
Left = 960
TabIndex = 0
Top = 280
Width = 975
End
Begin VB.Label Label5
Alignment = 1 'Right Justify
BackStyle = 0 'Transparent
Caption = "可隨時更換"
Height = 255
Left = 1900
TabIndex = 13
Top = 300
Width = 975
End
Begin VB.Label Label4
Alignment = 1 'Right Justify
BackStyle = 0 'Transparent
Caption = "50x50像素圖片效果最佳"
Height = 255
Left = 820
TabIndex = 11
Top = 560
Width = 2055
End
Begin VB.Label Label3
BackStyle = 0 'Transparent
Caption = "何時要求驗證統一密碼?"
Height = 255
Left = 240
TabIndex = 5
Top = 1720
Width = 2655
End
Begin VB.Label Label2
BackStyle = 0 'Transparent
Caption = "統一密碼"
Height = 375
Left = 240
TabIndex = 3
Top = 1360
Width = 735
End
Begin VB.Label Label1
BackStyle = 0 'Transparent
Caption = "用戶姓名"
Height = 255
Left = 240
TabIndex = 1
Top = 1000
Width = 855
End
Begin VB.Image Photo
Height = 500
Left = 360
Picture = "FM_Config_Key.frx":7DDB
Stretch = -1 'True
Top = 240
Width = 500
End
End
Attribute VB_Name = "FM_Config_Key"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

'*********************************************************************************************************************************************************************
'* *
'* 快Key 窗體FM_Config_Key *
'* *
'*********************************************************************************************************************************************************************

 

'*************************************************************************** 函數、子程序 ****************************************************************************
'FM_Config_Key 窗口,填寫修改用戶消息

Private Sub Form_Load()

SetWindowPos FM_Config_Key.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
Draw_FM_Config_Key
FM_Main.Enabled = False

End Sub


Public Sub Draw_FM_Config_Key()
On Error Resume Next

Dim QKFileName, TempStr As String

If FM_Main.Left > Screen.Width / 2 Then
FM_Config_Key.Left = FM_Main.Left - FM_Config_Key.Width - 20
Else
FM_Config_Key.Left = FM_Main.Left + FM_Main.Width + 20
End If
FM_Config_Key.Top = FM_Main.Top + 400

gLockMouseMidButton = True

TXT_UNI_PASSWORD.PasswordChar = ""

QKFileName = gQuicKeysDataPath & "\uphoto.jpg"
If Dir(QKFileName) <> "" Then
Photo.Picture = LoadPicture(QKFileName)
End If

QKFileName = gQuicKeysDataPath & "\qkconfig.stp"
If Dir(QKFileName) <> "" Then
Open QKFileName For Input As #1
Line Input #1, gOldVerNum
Line Input #1, Uname
Line Input #1, Upassword
Line Input #1, gCheckUniPWMode
Line Input #1, gCheckUniPWCycle
Close #1

TXT_USER_NAME.Text = Uname
TXT_USER_NAME.ForeColor = &H0&

TXT_UNI_PASSWORD.Text = gUniPassBase
TXT_UNI_PASSWORD.ForeColor = &H0&
TXT_UNI_PASSWORD.PasswordChar = "*"

gCheckUniPWMode = DecryptStr(gCheckUniPWMode, gFirstEncryptKey)
Select Case gCheckUniPWMode
Case "1"
OPT_PW_1.Value = True
Case "2"
OPT_PW_2.Value = True
Case "3"
OPT_PW_3.Value = True
End Select

gCheckUniPWCycle = DecryptStr(gCheckUniPWCycle, gFirstEncryptKey)
TXT_MINS.Text = gCheckUniPWCycle

End If

End Sub


Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next

FM_Main.Enabled = True
gInConfig = False
gLockMouseMidButton = False
If Dir(gQuicKeysDataPath & "\qkconfig.stp") = "" Then End '安裝時,如果不設置就退出安裝

End Sub

 

Private Sub BT_CONFIG_CONFIRM_Click() '提交設置信息
On Error Resume Next


Dim strFilename As String
Dim Uname, Upassword As String
Dim TempStr As String
Dim EN_KEY As String



If Check_Password_Rules(TXT_UNI_PASSWORD.Text) = False Then

TXT_UNI_PASSWORD.Text = ""
FM_Config_Key.Show
MsgBox "您輸入的密碼不符合信息安全規范,請重新輸入。" & vbCrLf & vbCrLf & "要求:長度12個字符以上,同時包括大寫字母、小寫字母、數字和特殊字符。", 0 + 64, " " & QK_TITLE

Else

gOldUniPassword = gUniPassword
Create_UniPassword_FirstEncryptKey (TXT_UNI_PASSWORD.Text) '基於用戶輸入的統一密碼,分裂出 gUniPassword 和 gFirstEncryptKey
EN_KEY = gFirstEncryptKey 'gFirstEncryptKey , 用它給統一密碼加密,而各個系統的密碼由統一密碼加密

'寫配置文件
strFilename = gQuicKeysDataPath & "\qkconfig.stp"
Open strFilename For Output As #1
Uname = TXT_USER_NAME.Text
Print #1, VER_NUM '正在執行的版本號
Print #1, Uname
Upassword = EncryptStr(gUniPassword, EN_KEY)
Print #1, Upassword
If OPT_PW_1.Value = True Then gCheckUniPWMode = "1": gCheckUniPWCycle = "60"
If OPT_PW_2.Value = True Then gCheckUniPWMode = "2": gCheckUniPWCycle = "60"
If OPT_PW_3.Value = True Then gCheckUniPWMode = "3": gCheckUniPWCycle = TXT_MINS.Text
gCheckUniPWMode = EncryptStr(gCheckUniPWMode, EN_KEY)
gCheckUniPWCycle = EncryptStr(gCheckUniPWCycle, EN_KEY)
Print #1, gCheckUniPWMode
Print #1, gCheckUniPWCycle
Close #1

'更新所有密鑰文件
For i = 1 To MAX_KEYS_NUM
strFilename = gQuicKeysDataPath & "\key" & i & ".kir"
If Dir(strFilename) <> "" Then
'讀舊的密鑰文件
Open strFilename For Input As #1
Line Input #1, gSysName
Line Input #1, gBrowser
Line Input #1, gURL
Line Input #1, gUserName
Line Input #1, TempStr
gPassWord = DecryptStr(TempStr, gOldUniPassword)
Line Input #1, TempStr
gTabNum1 = Val(TempStr)
Line Input #1, TempStr
gTabNum2 = Val(TempStr)
Line Input #1, TempStr
gManConfirm = Val(TempStr)
Close #1
'重寫密鑰文件
Open strFilename For Output As #1
Print #1, gSysName
Print #1, gBrowser
Print #1, gURL
Print #1, gUserName
TempStr = EncryptStr(gPassWord, gUniPassword)
Print #1, TempStr
Print #1, gTabNum1 & "" '強制轉換為字符串
Print #1, gTabNum2 & ""
Print #1, gManConfirm & ""
Close #1
End If
Next

Set_Default_FM_Config_Key
'FM_Config_Key.Visible = False
FM_Config_Key.Hide

FM_Main.LB_NAME.Caption = Uname
FM_Main.Draw_MainForm
FM_Main.Enabled = True

PrintTimeStamp

gInConfig = False
gLockMouseMidButton = False

End If


End Sub

 

Private Sub Set_Default_FM_Config_Key() '設置增加密鑰操作窗口的缺省值

TXT_USER_NAME.ForeColor = &HC0C0C0
TXT_USER_NAME.Text = "未定名"

TXT_UNI_PASSWORD.ForeColor = &HC0C0C0
TXT_UNI_PASSWORD.Text = "快Key密碼,必填"

End Sub

 

Private Sub TXT_USER_NAME_GotFocus() '文本框得到焦點
If TXT_USER_NAME.Text = "未定名" Then
TXT_USER_NAME.ForeColor = &H0&
TXT_USER_NAME.Text = ""
End If

End Sub


Private Sub TXT_USER_NAME_LostFocus() '文本框失去焦點
If TXT_USER_NAME.Text = "" Then
TXT_USER_NAME.ForeColor = &HC0C0C0
TXT_USER_NAME.Text = "未定名"
End If
End Sub


Private Sub TXT_UNI_PASSWORD_GotFocus() '文本框得到焦點
If TXT_UNI_PASSWORD.Text = "快Key密碼,必填" Then
TXT_UNI_PASSWORD.ForeColor = &H0&
TXT_UNI_PASSWORD.Text = ""
TXT_UNI_PASSWORD.PasswordChar = "*"
End If

End Sub


Private Sub TXT_UNI_PASSWORD_LostFocus() '文本框失去焦點
If TXT_UNI_PASSWORD.Text = "" Then
TXT_UNI_PASSWORD.ForeColor = &HC0C0C0
TXT_UNI_PASSWORD.Text = "快Key密碼,必填"
TXT_UNI_PASSWORD.PasswordChar = ""
End If
End Sub


Private Sub BT_SEE_PW_Click() '是否明碼顯示密碼

Select Case TXT_UNI_PASSWORD.PasswordChar
Case "*"
TXT_UNI_PASSWORD.PasswordChar = ""
Case ""
TXT_UNI_PASSWORD.PasswordChar = "*"
End Select

End Sub


Private Sub BT_CHANGE_PHOTO_Click() '設置頭像
On Error Resume Next

CommonDialog1.Filter = "文本文件(*.jpg)|*.jpg"
Me.CommonDialog1.ShowOpen
FileCopy Me.CommonDialog1.FileName, gQuicKeysDataPath & "\uphoto.jpg"
Draw_FM_Config_Key
FM_Main.Draw_MainForm

End Sub

'************************************************************** FM_Config_Key 窗體代碼結束 *********************************************************************


(6)窗體:FM_Help_Key

FM_Help_Key.frm
********************************************************************************************************************************************************************
VERSION 5.00
Begin VB.Form FM_Help_Key
BorderStyle = 1 'Fixed Single
Caption = "快Key: 使用指南"
ClientHeight = 8760
ClientLeft = 45
ClientTop = 390
ClientWidth = 7095
Icon = "FM_Help_Key.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 8760
ScaleWidth = 7095
StartUpPosition = 2 '屏幕中心
Visible = 0 'False
Begin VB.CommandButton BT_LINK
Caption = "手動聯絡"
Height = 495
Left = 4680
TabIndex = 17
Top = 8040
Width = 1695
End
Begin VB.CommandButton BT_HELP_CLOSE
Caption = "關閉"
Height = 495
Left = 600
TabIndex = 0
Top = 8040
Width = 3975
End
Begin VB.Label LB_VERNUM
Alignment = 2 'Center
BackStyle = 0 'Transparent
Caption = "V2.0(Win7+)"
Height = 255
Left = 5160
TabIndex = 19
Top = 960
Width = 1095
End
Begin VB.Label Label7
Alignment = 2 'Center
BackStyle = 0 'Transparent
Caption = "當前版本號:"
Height = 255
Left = 5160
TabIndex = 18
Top = 720
Width = 1215
End
Begin VB.Label Label6
BackStyle = 0 'Transparent
Caption = "王 權 田雪松 仲 強 蔣 政"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 720
TabIndex = 16
Top = 7560
Width = 3855
End
Begin VB.Label Label2
BackStyle = 0 'Transparent
Caption = "【開發團隊】"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 2
Left = 480
TabIndex = 15
Top = 7280
Width = 2055
End
Begin VB.Image Image2
Enabled = 0 'False
Height = 1935
Left = 4680
Picture = "FM_Help_Key.frx":424A
Stretch = -1 'True
Top = 6000
Width = 1800
End
Begin VB.Label Label2
BackStyle = 0 'Transparent
Caption = "【聯系信息】"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 1
Left = 480
TabIndex = 14
Top = 6200
Width = 2055
End
Begin VB.Label Label5
BackStyle = 0 'Transparent
Caption = "【版權與免責聲明】"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 480
TabIndex = 13
Top = 4680
Width = 2535
End
Begin VB.Label Label4
BackStyle = 0 'Transparent
Caption = " 鼠標懸浮在功能鍵上即顯示其功能。"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 9
Left = 600
TabIndex = 12
Top = 2800
Width = 5895
End
Begin VB.Label Label4
BackStyle = 0 'Transparent
Caption = " 快Key采用業界標准對您原有的密碼等信息進行加密,保證您的系統安全。"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 615
Index = 8
Left = 600
TabIndex = 11
Top = 3840
Width = 5895
End
Begin VB.Label Label4
BackStyle = 0 'Transparent
Caption = " 快Key不聯網,在您電腦上脫網運行,不上傳任何信息。"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 7
Left = 600
TabIndex = 10
Top = 4320
Width = 5895
End
Begin VB.Label Label4
BackStyle = 0 'Transparent
Caption = " 任何時候,只要您按鼠標【滾輪】(或中鍵)即可調出快Key。"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 6
Left = 600
TabIndex = 9
Top = 2520
Width = 6000
End
Begin VB.Label Label4
BackStyle = 0 'Transparent
Caption = " 使用快Key必須設定一個【統一密碼】,請牢記此密碼,並保證其安全。快Key通過統一密碼管理所有系統密鑰,最多可以管理30個密鑰。"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 735
Index = 5
Left = 600
TabIndex = 8
Top = 3120
Width = 5895
End
Begin VB.Label Label4
BackStyle = 0 'Transparent
Caption = " 快Key為開源軟件,自由拷貝,自由使用,自由分享,自由修改,自由發布。"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Index = 4
Left = 600
TabIndex = 7
Top = 4920
Width = 5895
End
Begin VB.Label Label4
BackStyle = 0 'Transparent
Caption = $"FM_Help_Key.frx":155D2
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 855
Index = 3
Left = 600
TabIndex = 6
Top = 5400
Width = 5895
End
Begin VB.Label Label4
BackStyle = 0 'Transparent
Caption = " 本軟件不自動更新,安裝、更新、源文件、交流信息等可通過【大系統觀開放論壇】微信公眾號獲得,或點擊【手動聯絡】:"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 975
Index = 2
Left = 600
TabIndex = 5
Top = 6480
Width = 4095
End
Begin VB.Label Label4
BackStyle = 0 'Transparent
Caption = " 快Key將您的各個系統的用戶名、密碼、系統地址等信息統一管理,在您需要時幫您快速調用啟動系統,填寫登錄信息,並自動登錄。"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 735
Index = 0
Left = 600
TabIndex = 4
Top = 1800
Width = 5900
End
Begin VB.Label Label3
Alignment = 2 'Center
BackStyle = 0 'Transparent
Caption = "智能登錄助手 2020.9"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 2280
TabIndex = 3
Top = 960
Width = 2895
End
Begin VB.Label Label2
BackStyle = 0 'Transparent
Caption = "【功能簡介】"
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Index = 0
Left = 480
TabIndex = 2
Top = 1560
Width = 1815
End
Begin VB.Image Image1
Enabled = 0 'False
Height = 795
Left = 1440
Picture = "FM_Help_Key.frx":15666
Stretch = -1 'True
Top = 480
Width = 900
End
Begin VB.Label Label1
Alignment = 2 'Center
BackStyle = 0 'Transparent
Caption = "歡迎使用快Key!"
BeginProperty Font
Name = "宋體"
Size = 12
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 720
TabIndex = 1
Top = 600
Width = 6015
End
End
Attribute VB_Name = "FM_Help_Key"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

'*********************************************************************************************************************************************************************
'* *
'* 快Key 窗體FM_Help_Key *
'* *
'*********************************************************************************************************************************************************************


Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpoperation As String, ByVal lpfile As String, ByVal lpparameters As String, _
ByVal lpdirectory As String, ByVal nshowcmd As Long) As Long

 

'*************************************************************************** 函數、子程序 ****************************************************************************

Private Sub BT_HELP_CLOSE_Click()
FM_Help_Key.Hide
End Sub

 

Private Sub BT_LINK_Click()

Dim lngReturn As Long
lngReturn = ShellExecute(Me.hwnd, "open", "https://www.cnblogs.com/BigSystemsView/p/13613306.html", "", "", 0)
FM_Help_Key.Hide

End Sub

Private Sub Form_Load()
SetWindowPos FM_Help_Key.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
LB_VERNUM.Caption = VER_NUM
End Sub


'************************************************************** FM_Help_Key 窗體代碼結束 *****************************************************************************

(7)窗體:FM_Main

FM_Main.frm
**************************************************************************************************************************************************************************
VERSION 5.00
Begin VB.Form FM_Main
AutoRedraw = -1 'True
BackColor = &H00FFFFFF&
BorderStyle = 1 'Fixed Single
Caption = "快Key"
ClientHeight = 5910
ClientLeft = 45
ClientTop = 390
ClientWidth = 3735
BeginProperty Font
Name = "宋體"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Icon = "FM_Main.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 5910
ScaleWidth = 3735
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 29
Left = 0
Style = 1 'Graphical
TabIndex = 72
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 28
Left = 0
Style = 1 'Graphical
TabIndex = 71
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 27
Left = 0
Style = 1 'Graphical
TabIndex = 70
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 26
Left = 0
Style = 1 'Graphical
TabIndex = 69
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 25
Left = 0
Style = 1 'Graphical
TabIndex = 68
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 24
Left = 0
Style = 1 'Graphical
TabIndex = 67
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 23
Left = 0
Style = 1 'Graphical
TabIndex = 66
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 22
Left = 0
Style = 1 'Graphical
TabIndex = 65
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 21
Left = 0
Style = 1 'Graphical
TabIndex = 64
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 20
Left = 0
Style = 1 'Graphical
TabIndex = 63
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 19
Left = 0
Style = 1 'Graphical
TabIndex = 62
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 18
Left = 0
Style = 1 'Graphical
TabIndex = 61
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 17
Left = 0
Style = 1 'Graphical
TabIndex = 60
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 16
Left = 0
Style = 1 'Graphical
TabIndex = 59
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 15
Left = 0
Style = 1 'Graphical
TabIndex = 58
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 14
Left = 0
Style = 1 'Graphical
TabIndex = 57
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 13
Left = 0
Style = 1 'Graphical
TabIndex = 56
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 12
Left = 0
Style = 1 'Graphical
TabIndex = 55
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 11
Left = 0
Style = 1 'Graphical
TabIndex = 54
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 10
Left = 0
Style = 1 'Graphical
TabIndex = 53
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 9
Left = 0
Style = 1 'Graphical
TabIndex = 52
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 8
Left = 0
Style = 1 'Graphical
TabIndex = 51
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 7
Left = 0
Style = 1 'Graphical
TabIndex = 50
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 6
Left = 0
Style = 1 'Graphical
TabIndex = 49
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 5
Left = 0
Style = 1 'Graphical
TabIndex = 48
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 4
Left = 0
Style = 1 'Graphical
TabIndex = 47
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 3
Left = 0
Style = 1 'Graphical
TabIndex = 46
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 2
Left = 0
Style = 1 'Graphical
TabIndex = 45
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 1
Left = 0
Style = 1 'Graphical
TabIndex = 44
Top = 0
Width = 250
End
Begin VB.CommandButton BT_DEL_SINGLE
BackColor = &H00C0C0FF&
Caption = "-"
Height = 250
Index = 0
Left = 0
Style = 1 'Graphical
TabIndex = 43
Top = 0
Width = 250
End
Begin VB.CommandButton BT_ADD
BackColor = &H00FFFFFF&
Caption = "+"
BeginProperty Font
Name = "宋體"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 250
Left = 2140
TabIndex = 8
TabStop = 0 'False
ToolTipText = "添加密鑰"
Top = 60
Width = 300
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 29
Left = 2460
TabIndex = 40
Top = 5100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 28
Left = 1260
TabIndex = 39
Top = 5100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 27
Left = 60
TabIndex = 38
Top = 5100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 26
Left = 2460
TabIndex = 37
Top = 4600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 25
Left = 1260
TabIndex = 36
Top = 4600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 24
Left = 60
TabIndex = 35
Top = 4600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 23
Left = 2460
TabIndex = 34
Top = 4100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 22
Left = 1260
TabIndex = 33
Top = 4100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 21
Left = 60
TabIndex = 32
Top = 4100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 20
Left = 2460
TabIndex = 31
Top = 3600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 19
Left = 1260
TabIndex = 30
Top = 3600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 18
Left = 60
TabIndex = 29
Top = 3600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 17
Left = 2460
TabIndex = 28
Top = 3100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 16
Left = 1260
TabIndex = 27
Top = 3100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 15
Left = 60
TabIndex = 26
Top = 3100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 14
Left = 2460
TabIndex = 25
Top = 2600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 13
Left = 1260
TabIndex = 24
Top = 2600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 12
Left = 60
TabIndex = 23
Top = 2600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 11
Left = 2460
TabIndex = 22
Top = 2100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 10
Left = 1260
TabIndex = 21
Top = 2100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 9
Left = 60
TabIndex = 20
Top = 2100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 8
Left = 2460
TabIndex = 19
Top = 1600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 7
Left = 1260
TabIndex = 18
Top = 1600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 6
Left = 60
TabIndex = 17
Top = 1600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 5
Left = 2460
TabIndex = 16
Top = 1100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 4
Left = 1260
TabIndex = 15
Top = 1100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 3
Left = 60
TabIndex = 14
Top = 1100
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 2
Left = 2460
TabIndex = 13
Top = 600
Width = 1200
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 1
Left = 1260
TabIndex = 12
Top = 600
Width = 1200
End
Begin VB.CommandButton BT_FOLD
BackColor = &H00C0C0C0&
Caption = "<?"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 510
Left = 3360
Style = 1 'Graphical
TabIndex = 0
TabStop = 0 'False
ToolTipText = "展開/收斂功能菜單"
Top = 60
Width = 300
End
Begin VB.CommandButton BT_CONFIG
Caption = "設"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 250
Left = 2140
TabIndex = 4
TabStop = 0 'False
ToolTipText = "用戶設置"
Top = 310
Width = 300
End
Begin VB.CommandButton BT_EXIT
Caption = "退"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 250
Left = 2740
TabIndex = 2
TabStop = 0 'False
ToolTipText = "退出軟件"
Top = 310
Width = 300
End
Begin VB.CommandButton BT_ORDER
Caption = "∧"
BeginProperty Font
Name = "宋體"
Size = 6
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 250
Left = 3040
TabIndex = 5
TabStop = 0 'False
ToolTipText = "整理重排"
Top = 60
Width = 300
End
Begin VB.CommandButton BT_HELP
Caption = "?"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 250
Left = 3040
TabIndex = 1
TabStop = 0 'False
ToolTipText = "使用幫助"
Top = 310
Width = 300
End
Begin VB.CommandButton BT_UNINSTALL
Caption = "卸"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 250
Left = 2440
TabIndex = 3
TabStop = 0 'False
ToolTipText = "卸載軟件"
Top = 310
Width = 300
End
Begin VB.CommandButton BT_EDIT
Caption = "…"
BeginProperty Font
Name = "宋體"
Size = 6
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 250
Left = 2740
Style = 1 'Graphical
TabIndex = 6
TabStop = 0 'False
ToolTipText = "修改密鑰,再按退出修改"
Top = 60
Width = 300
End
Begin VB.CommandButton BT_DEL
Caption = "-"
BeginProperty Font
Name = "宋體"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 250
Left = 2440
MaskColor = &H80000000&
Style = 1 'Graphical
TabIndex = 7
TabStop = 0 'False
ToolTipText = "刪除密鑰,再按退出刪除"
Top = 60
Width = 300
End
Begin VB.CommandButton BT_A_KEY
Caption = "系統名稱"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 500
Index = 0
Left = 60
TabIndex = 10
Top = 600
Width = 1200
End
Begin VB.Image Photo
Appearance = 0 'Flat
Enabled = 0 'False
Height = 500
Left = 80
Picture = "FM_Main.frx":424A
Stretch = -1 'True
Top = 60
Width = 500
End
Begin VB.Label SERV_TOTAL
Alignment = 1 'Right Justify
BackStyle = 0 'Transparent
Caption = "歡迎使用!"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 2000
TabIndex = 42
Top = 240
Width = 1335
End
Begin VB.Label Foot_Text
Alignment = 2 'Center
BackStyle = 0 'Transparent
Caption = "按滾輪呼出 脫網運行 不傳密碼 BSV/2020"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00008000&
Height = 255
Left = 0
TabIndex = 41
Top = 5640
Width = 3735
End
Begin VB.Line Line2
X1 = 120
X2 = 3600
Y1 = 600
Y2 = 600
End
Begin VB.Label KEY_TOTAL
BackColor = &H80000005&
BackStyle = 0 'Transparent
Caption = "密鑰數:22"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 1330
TabIndex = 11
Top = 240
Width = 1335
End
Begin VB.Line Line1
BorderColor = &H80000010&
X1 = 80
X2 = 3670
Y1 = 10
Y2 = 10
End
Begin VB.Label LB_NAME
BackColor = &H80000005&
BackStyle = 0 'Transparent
Caption = "未定名"
BeginProperty Font
Name = "宋體"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 630
TabIndex = 9
Top = 240
Width = 735
End
End
Attribute VB_Name = "FM_Main"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False


'*********************************************************************************************************************************************************************
'* *
'* 快Key 主窗體 FM_Main *
'* *
'*********************************************************************************************************************************************************************

 

'*************************************************************************** 函數、子程序 ****************************************************************************


Private Sub Form_Load() '窗體載入的時候,安裝鼠標鈎子
On Error GoTo CommonErr


Init_Form
AddHook 'addhook要在draw_mainform前面
Get_Mouse_Form_XY_Ratio '要放在AddKook后。因為大分辨率屏幕時,緹數可能不等於15,所以要通過實驗方法獲得,否則窗口與鼠標不同步
Draw_MainForm

If gTotalRealKeyNum = 0 And gInstalled = True And gTotalServeTimes = 1 Then '剛安裝完,尚無密鑰
FM_Main.Visible = True
FM_Main.Left = (Screen.Width - FM_Main.Width) / 2
FM_Main.Top = (Screen.Height - FM_Main.Height) / 2
FM_Main.Enabled = True
SetWindowPos FM_Main.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
ShowCheckPad
End If

If gTotalRealKeyNum > 0 And InStr(UCase(App.EXEName), "SETUP") = 0 Then
SetWindowPos FM_Start_Note.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
FM_Start_Note.Show
FM_Start_Note.Refresh
MySleep 2000
FM_Start_Note.Hide
End If

SetWindowPos FM_Main.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag

Exit Sub

CommonErr:
MsgBox "快Key需要防火牆、360等安全軟件允許下列權限:" & vbCrLf & " (1)修改注冊表:用於開機自動啟動;" & vbCrLf & " (2)在U盤運行:用於隨身版。" & vbCrLf & vbCrLf _
& "請打開安全防護軟件,將相關項設置為允許,並將相關EXE文件加入信任列表。", 16, " " & QK_TITLE

End Sub

 


Private Sub BT_A_KEY_Click(Index As Integer) '30個密鑰按鍵是個數組,0號元素對應第1個密鑰

Open_Browser (Index)

End Sub

 


Private Sub BT_FOLD_Click() '折疊右上角功能鍵

gShowFunc = Not gShowFunc
BT_ADD.Visible = gShowFunc
BT_DEL.Visible = gShowFunc
BT_EDIT.Visible = gShowFunc
BT_ORDER.Visible = gShowFunc
BT_CONFIG.Visible = gShowFunc
BT_UNINSTALL.Visible = gShowFunc
BT_EXIT.Visible = gShowFunc
BT_HELP.Visible = gShowFunc
If gShowFunc = True Then
BT_FOLD.Caption = ">"
Else
BT_FOLD.Caption = "<?"
End If

End Sub

 

 

Private Sub BT_ADD_Click() '增加密鑰
On Error Resume Next


Dim KeyFileName As String
Dim CAN_ADD As Boolean

CAN_ADD = False

For i = 1 To MAX_KEYS_NUM
KeyFileName = gQuicKeysDataPath & "\key" & i & ".kir"
If Dir(KeyFileName) = "" Then '如果文件不存在
CAN_ADD = True
gFirstSpaceNum = i
FM_Add_Key.TXT_TARGET_NUM = gFirstSpaceNum
Exit For
End If
Next

If CAN_ADD = False Then
MsgBox "添加密鑰失敗:最多可添加" & MAX_KEYS_NUM & "個密鑰,未找到空位。請刪除不必要的密鑰。", 16, " " & QK_TITLE
Else
gDelOrEdit = 1
FM_Add_Key.Set_Default_FM_Add_Key
FM_Add_Key.Visible = True
FM_Add_Key.TXT_PW.PasswordChar = ""
FM_Add_Key.Caption = QK_TITLE & ": 添加密鑰"
FM_Add_Key.Show
FM_Add_Key.Draw_FM_Add_Key
gDelOrNot = Not gDelOrNot

For i = 1 To 3
For j = 1 To 10
btIndex = (j - 1) * 3 + i - 1
tTop = 600 + (j - 1) * 500
BT_DEL_SINGLE(btIndex).Top = tTop
tLeft = 60 + (i - 1) * 1200 + 950
BT_DEL_SINGLE(btIndex).Left = tLeft
BT_DEL_SINGLE(btIndex).Width = 250
BT_DEL_SINGLE(btIndex).Caption = (j - 1) * 3 + i
BT_DEL_SINGLE(btIndex).FontSize = 7
KeyFileName = gQuicKeysDataPath & "\key" & (btIndex + 1) & ".kir"
BT_DEL_SINGLE(btIndex).Visible = True
Next
Next


FM_Main.Height = MAIN_FORM_MAX_HEIGHT
Foot_Text.Top = 5640
FM_Main.Enabled = False

End If

End Sub

 

Private Sub BT_DEL_Click() '刪除密鑰
On Error Resume Next

Dim tTop, tLeft, btIndex As Integer
Dim KeyFileName As String

Draw_MainForm

gDelOrEdit = 1 '1表示刪除,2表示編輯,BT_DEL_SINGLE鍵組分別處理

gDelOrNot = Not gDelOrNot
If gDelOrNot = True Then
BT_DEL.BackColor = &HC0FFC0
BT_DEL.Caption = "←"
BT_DEL.FontSize = 10
gLockMouseMidButton = True
Else
BT_DEL.BackColor = &H8000000F
BT_DEL.Caption = "-"
BT_DEL.FontSize = 12
gLockMouseMidButton = False
End If

BT_ADD.Enabled = Not gDelOrNot
If gTotalRealKeyNum >= MAX_KEYS_NUM Then BT_ADD.Enabled = False
BT_EDIT.Enabled = Not gDelOrNot
BT_ORDER.Enabled = Not gDelOrNot
BT_FOLD.Enabled = Not gDelOrNot
BT_CONFIG.Enabled = Not gDelOrNot
BT_UNINSTALL.Enabled = Not gDelOrNot
BT_EXIT.Enabled = Not gDelOrNot
BT_HELP.Enabled = Not gDelOrNot

For i = 1 To 3
For j = 1 To 10
btIndex = (j - 1) * 3 + i - 1
tTop = 600 + (j - 1) * 500
BT_DEL_SINGLE(btIndex).Top = tTop
tLeft = 60 + (i - 1) * 1200 + 950
BT_DEL_SINGLE(btIndex).Left = tLeft
BT_DEL_SINGLE(btIndex).Width = 250
BT_DEL_SINGLE(btIndex).Caption = "-"
BT_DEL_SINGLE(btIndex).FontSize = 10

KeyFileName = gQuicKeysDataPath & "\key" & (btIndex + 1) & ".kir"
If Dir(KeyFileName) <> "" Then
BT_DEL_SINGLE(btIndex).Visible = gDelOrNot
BT_A_KEY(btIndex).Enabled = Not gDelOrNot
End If
Next
Next

End Sub


Private Sub BT_EDIT_Click() '編輯修改密鑰

BT_EDIT_Click_RUN

End Sub


Public Sub BT_EDIT_Click_RUN()
On Error Resume Next

Dim tTop, tLeft, btIndex As Integer
Dim KeyFileName As String

gDelOrEdit = 2 '1表示刪除,2表示編輯,BT_DEL_SINGLE鍵組分別處理

gDelOrNot = Not gDelOrNot
If gDelOrNot = True Then
BT_EDIT.BackColor = &HC0FFC0
BT_EDIT.Caption = "←"
BT_EDIT.FontSize = 10
gLockMouseMidButton = True
Else
BT_EDIT.BackColor = &H8000000F
BT_EDIT.Caption = "…"
BT_EDIT.FontSize = 6
gLockMouseMidButton = False
End If

BT_ADD.Enabled = Not gDelOrNot
If gTotalRealKeyNum >= MAX_KEYS_NUM Then BT_ADD.Enabled = False
BT_DEL.Enabled = Not gDelOrNot
BT_ORDER.Enabled = Not gDelOrNot
BT_FOLD.Enabled = Not gDelOrNot
BT_CONFIG.Enabled = Not gDelOrNot
BT_UNINSTALL.Enabled = Not gDelOrNot
BT_EXIT.Enabled = Not gDelOrNot
BT_HELP.Enabled = Not gDelOrNot

For i = 1 To 3
For j = 1 To 10
btIndex = (j - 1) * 3 + i - 1
tTop = 600 + (j - 1) * 500
BT_DEL_SINGLE(btIndex).Top = tTop
tLeft = 60 + (i - 1) * 1200 + 950 - 200
BT_DEL_SINGLE(btIndex).Left = tLeft
BT_DEL_SINGLE(btIndex).Width = 450
BT_DEL_SINGLE(btIndex).Caption = (j - 1) * 3 + i & "…"
BT_DEL_SINGLE(btIndex).FontSize = 7
KeyFileName = gQuicKeysDataPath & "\key" & (btIndex + 1) & ".kir"
If Dir(KeyFileName) <> "" Then
BT_DEL_SINGLE(btIndex).Visible = gDelOrNot
BT_A_KEY(btIndex).Enabled = Not gDelOrNot
End If
Next
Next

End Sub

 

Private Sub BT_DEL_SINGLE_Click(Index As Integer) '刪除密鑰,修改密鑰也用這個,根據全局變量gDelOrEdit 決定
On Error Resume Next

Dim KeyFileName, TmpSysNM, TempStr, TempStr2 As String
Dim YN, t As Integer


KeyFileName = gQuicKeysDataPath & "\key" & (Index + 1) & ".kir"

Select Case gDelOrEdit

Case 1 '刪除
Open KeyFileName For Input As #1
If Not EOF(1) Then
Line Input #1, TmpSysNM
End If
Close #1

t = MsgBox("刪除密鑰:【" & TmpSysNM & "】 嗎?", 36, " " & QK_TITLE)
If t = vbYes Then
Kill KeyFileName
BT_A_KEY(Index).Visible = False
BT_DEL_SINGLE(Index).Visible = False
gTotalRealKeyNum = gTotalRealKeyNum - 1
KEY_TOTAL.Caption = "密鑰數:" & gTotalRealKeyNum
End If

Case 2 '編輯修改
FM_Add_Key.TXT_TARGET_NUM = Index + 1
Open KeyFileName For Input As #1
If Not EOF(1) Then

Line Input #1, TempStr
FM_Add_Key.TXT_SYSNM = TempStr
Line Input #1, TempStr
FM_Add_Key.TXT_BROWSER_PATH = TempStr
Line Input #1, TempStr
If Trim(TempStr) = "{-null-}" Then TempStr = ""
FM_Add_Key.TXT_URL = TempStr
Line Input #1, TempStr
If Trim(TempStr) = "{-null-}" Then TempStr = ""
FM_Add_Key.TXT_UN = TempStr
Line Input #1, TempStr
TempStr2 = DecryptStr(TempStr, gUniPassword)
If TempStr2 = "{-null-}" Or TempStr2 = "" Then
FM_Add_Key.TXT_PW.ForeColor = &HC0C0C0
FM_Add_Key.TXT_PW.Text = "原系統密碼,不填表示手動輸入"
Else
FM_Add_Key.TXT_PW = TempStr2
End If
Line Input #1, TempStr
FM_Add_Key.TXT_TAB1 = TempStr
Line Input #1, TempStr
FM_Add_Key.TXT_TAB2 = TempStr
Line Input #1, TempStr
FM_Add_Key.CB_MANUAL_CONFIRM.Value = Int(TempStr)

End If
Close #1

FM_Add_Key.Visible = True
FM_Add_Key.TXT_PW.PasswordChar = ""
FM_Add_Key.Caption = QK_TITLE & ": 修改密鑰"

FM_Add_Key.TXT_SYSNM.ForeColor = &H0&
FM_Add_Key.TXT_UN.ForeColor = &H0&
If FM_Add_Key.TXT_PW.Text <> "" And FM_Add_Key.TXT_PW.Text <> "原系統密碼,不填表示手動輸入" Then FM_Add_Key.TXT_PW.ForeColor = &H0&
FM_Add_Key.TXT_PW.PasswordChar = "*"


FM_Add_Key.Show
FM_Add_Key.Draw_FM_Add_Key

gKeyIndex = Index + 1

FM_Main.Enabled = False

End Select

End Sub

 

Private Sub BT_EXIT_Click() '徹底退出程序

Dim TempStr As String
Dim TmpNum As Integer

TempStr = "要退出快Key嗎?" & vbCrLf & "退出后,快Key將不能被呼出。需要重新啟動電腦才能再次啟動快Key。" & vbCrLf & "建議點擊窗口右上角 【X】 隱藏快Key。" & vbCrLf & vbCrLf & "按【是】退出,按【否】取消。"
TmpNum = MsgBox(TempStr, 4 + 32 + 256, " " & QK_TITLE)
If TmpNum = vbYes Then '如果確實退出
QUIT_ALL
End If

End Sub


Private Sub BT_UNINSTALL_Click() '卸載快Key
On Error Resume Next

Dim TempStr, b As String
Dim TmpNum As Integer
Dim strFilename As String

If UCase(App.EXEName) <> "快KEY隨身版" Then '卸載電腦端
TempStr = "確定卸載本機上的快Key嗎?" & vbCrLf & "卸載將徹底刪除本機上的快Key及其管理的所有密鑰的信息。" & vbCrLf & "如果制作了U盤隨身版,可繼續獨立使用。" _
& vbCrLf & "卸載U盤隨身版,需要在U盤隨身版上進行。" & vbCrLf & vbCrLf
TempStr = TempStr & "按【是】卸載,按【否】取消。"
TmpNum = MsgBox(TempStr, 4 + 32 + 256, " " & QK_TITLE & " " & VER_NUM)

If TmpNum = vbYes Then '如果確實卸載

DelHook

MsgBox "本機上的快Key將完全卸載。" & vbCrLf & "謝謝使用!再見!", 0 + 64, " " & QK_TITLE '先在前面,否則后面殺進程就不執行了

strFilename = gSysDeskTopPath & "\快Key控制板.lnk" '刪掉桌面控制板快捷方式
If Dir(strFilename) <> "" Then Kill strFilename

Open gQuicKeysDataPath & "\tempkillqk.bat" For Output As #1 '因為無法刪除自己,所以用BAT文件通過Shell實現。
Print #1, "@echo off"
Print #1, "taskkill /f /im QuicKeys.exe"
Print #1, "taskkill /f /im " & App.EXEName '有時安裝狀態需要,當運行時名字不是QuicKeys.exe時
Print #1, "rmdir /s/q " & """" & gQuicKeysRunPath & """"
Print #1, "rmdir /s/q " & """" & gQuicKeysDataPath & """"
Print #1, "rd " & """" & QuicKeysRunPath & """"
Print #1, "rd " & """" & QuicKeysDataPath & """"
Close #1
MySleep 1000
Shell gQuicKeysDataPath & "\tempkillqk.bat >nul"

End

End If

Else '卸載U盤隨身版
TempStr = "確定卸載U盤上的快Key隨身版嗎?" & vbCrLf & "卸載將徹底刪除U盤上的快Key隨身版及其管理的所有密鑰的信息。" & vbCrLf & "電腦上的快Key將保留,可繼續使用。" _
& vbCrLf & "卸載電腦上的快Key,請使用桌面快捷方式【快Key控制板】。" & vbCrLf & vbCrLf
TempStr = TempStr & "按【是】卸載,按【否】取消。"
TmpNum = MsgBox(TempStr, 4 + 32 + 256, " " & QK_TITLE & " " & VER_NUM)

If TmpNum = vbYes Then '如果確實卸載

DelHook

MsgBox "U盤上的快Key隨身版將完全卸載。" & vbCrLf & "謝謝使用!再見!", 0 + 64, " " & QK_TITLE '先在前面,否則后面殺進程就不執行了

Open gQuicKeysDataPath & "\tempkillqk.bat" For Output As #1 '因為無法刪除自己,所以用BAT文件通過Shell實現。
Print #1, "@echo off"
Print #1, "taskkill /f /im 快Key隨身版.exe"
Print #1, "taskkill /f /im " & App.EXEName & ".exe" '有時安裝狀態需要,當運行時名字不是QuicKeys.exe時
Print #1, "cd \"
Print #1, "del /f /q 快Key隨身版.exe"
Print #1, "rmdir /s/q " & """" & gQuicKeysDataPath & """"
Print #1, "rd " & """" & gQuicKeysRunPath & """"
Print #1, "rd " & """" & gQuicKeysDataPath & """"
Close #1
MySleep 1000
Shell gQuicKeysDataPath & "\tempkillqk.bat >nul"

End

End If

End If

End Sub

 


Public Sub Init_Form() '初始化FM_Main
On Error Resume Next

Dim strFilename, Uname As String
Dim TmpNum As Integer

gWebBrowsers() = Split(WEB_BROWSERS_LIST, ",") '預置各流行瀏覽器信息

FM_Main.Visible = False
gInstalled = False
gUniPassword = ""
gFirstEncryptKey = ""
gUniPWChecked = False '是否檢查過統一密碼
gInConfig = False '是否正在設置過程中,false表示不是正在設置
gLockMouseMidButton = False
gIEInstead = False '隨身版用

Get_QuicKeysPath '獲得QuicKeys路徑,放在全局變量 gQuicKeysDataPath、gQuicKeysRunPath等

strFilename = gQuicKeysDataPath & "\uphoto.jpg"

If Dir(strFilename) <> "" Then
Photo.Picture = LoadPicture(strFilename)
End If

FM_Main.Caption = QK_TITLE & " - 智能登錄助手 " & VER_NUM '在主窗口上顯示標題
If gUDiskMode = True Then
FM_Main.BackColor = &H80FF& '窗體背景變色,提示為隨身版
FM_Main.Caption = QK_TITLE & " - 智能登錄助手 " & "(隨身版)" '在主窗口標題上顯示隨身版
End If


gShowFunc = False 'True
BT_ADD.Visible = gShowFunc
BT_DEL.Visible = gShowFunc
BT_EDIT.Visible = gShowFunc
BT_ORDER.Visible = gShowFunc
BT_CONFIG.Visible = gShowFunc
BT_UNINSTALL.Visible = gShowFunc
BT_EXIT.Visible = gShowFunc
BT_HELP.Visible = gShowFunc
BT_FOLD.Caption = "<?"

gDelOrNot = False '設為非正在刪除狀態
For i = 0 To 29
BT_DEL_SINGLE(i).Visible = False
Next

strFilename = gQuicKeysDataPath & "\qkconfig.stp"
If Dir(strFilename) <> "" Then
gInstalled = True
Open strFilename For Input As #1
Line Input #1, gOldVerNum '已安裝的版本號,用於與執行中的對比,決定是否替換
Line Input #1, Uname
Close #1
LB_NAME.Caption = Uname
End If
If InStr(UCase(App.EXEName), "SETUP") > 0 Then '文件名包含setup表示是安裝文件
FM_Check_UniKey_Setup.Show
End If

'*********************************************************
'FM_Check_UniKey_Setup.Show '調試安裝時使用,平時注釋掉

End Sub

 

Public Sub Draw_MainForm() '繪制窗體,按照密鑰個數
On Error Resume Next

Dim QKFileName As String
Dim TempStr As String
Dim TmpNum As Integer
Dim ColN As Single '計算用
Dim ColNum As Integer '顯示幾行按鍵
Dim h1, h2 As Integer
Dim gRealNum As Integer

QKFileName = gQuicKeysDataPath & "\uphoto.jpg"
If Dir(QKFileName) <> "" Then
Photo.Picture = LoadPicture(QKFileName)
End If

For i = 0 To 29
BT_A_KEY(i).Visible = False
Next

gMaxIndex = 0
gRealNum = 0

For i = 1 To MAX_KEYS_NUM
QKFileName = gQuicKeysDataPath & "\key" & i & ".kir"
If Dir(QKFileName) <> "" Then
gRealNum = gRealNum + 1
gMaxIndex = i
Open QKFileName For Input As #1
Line Input #1, gSysName
Close #1
BT_A_KEY(i - 1).Visible = True
BT_A_KEY(i - 1).Caption = gSysName
BT_A_KEY(i - 1).Enabled = True
End If
Next

gTotalRealKeyNum = gRealNum '全局變量

ColN = gMaxIndex / 3
ColNum = Int(ColN)
If (ColN - ColNum) > 0 Then ColNum = ColNum + 1

KEY_TOTAL.Caption = "密鑰" & gRealNum & "個"

h1 = MAIN_FORM_MAX_HEIGHT
h2 = (10 - ColNum) * 500
FM_Main.Height = h1 - h2
h1 = 5640
Foot_Text.Top = h1 - h2

'如果密鑰數為0,自動加大顯示添加鍵
If gRealNum = 0 Then
BT_ADD.Visible = True
BT_ADD.Caption = "+添加密鑰"
BT_ADD.Height = 510
BT_ADD.Width = 1200
BT_ADD.FontSize = 10

gShowFunc = True
BT_ADD.Visible = gShowFunc
BT_DEL.Visible = gShowFunc
BT_EDIT.Visible = gShowFunc
BT_ORDER.Visible = gShowFunc
BT_CONFIG.Visible = gShowFunc
BT_UNINSTALL.Visible = gShowFunc
BT_EXIT.Visible = gShowFunc
BT_HELP.Visible = gShowFunc
BT_FOLD.Caption = ">"


Else
BT_ADD.Caption = "+"
BT_ADD.Height = 250
BT_ADD.Width = 300
BT_ADD.FontSize = 12
End If

If gRealNum >= MAX_KEYS_NUM Then
BT_ADD.Enabled = False
FM_Add_Key.Visible = False
End If


QKFileName = gQuicKeysDataPath & "\timestamp" & ".ktm"
If Dir(QKFileName) <> "" Then
Open QKFileName For Input As #1
Line Input #1, TempStr
Close #1
gTotalServeTimes = Val(TempStr)
End If

SERV_TOTAL.Caption = "已服務" & gTotalServeTimes & "次"

End Sub

 


Private Sub BT_ORDER_Click() '整理密鑰按鍵,重新排序,去掉空位,以文件keyN.kir存在為依據
On Error Resume Next

Dim TempStr, OldName, NewName As String

gRealNum = 0

For i = 1 To MAX_KEYS_NUM
OldName = gQuicKeysDataPath & "\key" & i & ".kir"
If Dir(OldName) <> "" Then
gRealNum = gRealNum + 1
NewName = gQuicKeysDataPath & "\key" & gRealNum & ".kir"
If i > gRealNum Then
Name OldName As NewName
End If
End If
Next
Draw_MainForm

End Sub


Private Sub BT_CONFIG_Click()
On Error Resume Next

gInConfig = True
FM_Config_Key.Show
FM_Config_Key.Draw_FM_Config_Key
FM_Main.Enabled = False
FM_Config_Key.Enabled = False
ShowCheckPad


End Sub


Private Sub BT_HELP_Click()

FM_Help_Key.Show

End Sub

 


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) '點擊窗口關閉X時,不退出,只隱藏
If UnloadMode = 0 Then
Cancel = 1
Me.Hide
gLockMouseMidButton = False
gDelOrNot = False

BT_DEL.BackColor = &H8000000F
BT_DEL.Caption = "-"
BT_DEL.FontSize = 12

BT_EDIT.BackColor = &H8000000F
BT_EDIT.Caption = "…"
BT_EDIT.FontSize = 6

BT_ADD.Enabled = True
If gTotalRealKeyNum >= MAX_KEYS_NUM Then BT_ADD.Enabled = False
BT_DEL.Enabled = True
BT_EDIT.Enabled = True
BT_ORDER.Enabled = True
BT_FOLD.Enabled = True
BT_CONFIG.Enabled = True
BT_UNINSTALL.Enabled = True
BT_EXIT.Enabled = True
BT_HELP.Enabled = True

For i = 1 To 3
For j = 1 To 10
btIndex = (j - 1) * 3 + i - 1
BT_DEL_SINGLE(btIndex).Visible = False
BT_A_KEY(btIndex).Enabled = True
Next
Next

End If

End Sub

'*************************************************************************** FM_Main窗體代碼結束 ****************************************************************************

 

(8)窗體:FM_Select_Browser

FM_Select_Browser.frm
*********************************************************************************************************************************************************************************
VERSION 5.00
Begin VB.Form FM_Select_Browser
BorderStyle = 1 'Fixed Single
Caption = "快Key: 選擇瀏覽器或程序"
ClientHeight = 2355
ClientLeft = 45
ClientTop = 390
ClientWidth = 5205
Icon = "FM_Select_Browser.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 2355
ScaleWidth = 5205
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton BT_SELECT
Caption = "選擇"
Height = 375
Left = 240
TabIndex = 2
Top = 1800
Width = 4695
End
Begin VB.ListBox LST_BROWSERS
Height = 1320
Left = 240
TabIndex = 1
Top = 360
Width = 4695
End
Begin VB.Label Label1
BackStyle = 0 'Transparent
Caption = "下面是已安裝和使用過的瀏覽器或程序,請選擇:"
Height = 255
Left = 240
TabIndex = 0
Top = 120
Width = 3855
End
End
Attribute VB_Name = "FM_Select_Browser"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False


'*********************************************************************************************************************************************************************
'* *
'* 快Key 窗體FM_Select_Browser *
'* *
'*********************************************************************************************************************************************************************

 

'*************************************************************************** 函數、子程序 ****************************************************************************

'FM_Select_Browser 窗口,選擇用戶已經使用過的瀏覽器或程序

Private Sub Form_Load()

Draw_FM_Select_Browser

End Sub

 

Public Sub Draw_FM_Select_Browser()
On Error Resume Next

Dim QKFileName, TempStr As String

LST_BROWSERS.Clear

For i = 1 To MAX_KEYS_NUM
QKFileName = gQuicKeysDataPath & "\key" & i & ".kir"
If Dir(QKFileName) <> "" Then
Open QKFileName For Input As #1
Line Input #1, gSysName
Line Input #1, gBrowser
Close #1
If Len(gBrowser) > 30 Then
TempStr = Left(gBrowser, 10) & "..." & Right(gBrowser, 17)
Else
TempStr = gBrowser
End If
LST_BROWSERS.AddItem i & " " & TempStr & "(" & gSysName & ")"
End If
Next

For i = 1 To UBound(gWebBrowsers)
BrowserExeName = Mid(gWebBrowsers(i), InStr(gWebBrowsers(i), "|") + 1, 50) '不含.exe
QKFileName = gQuicKeysDataPath & "\browser" & BrowserExeName & ".lst"

If (Dir(QKFileName) <> "") Then
TempStr = ""
Open QKFileName For Input As #1
If Not EOF(1) Then Line Input #1, TempStr
Close #1
If Trim(TempStr) <> "" And InStr(UCase(TempStr), UCase(BrowserExeName & ".exe")) > 0 Then
gBrowser = Left(gWebBrowsers(i), InStr(gWebBrowsers(i), "|")) & TempStr
If Len(gBrowser) > 30 Then
TempStr = Left(gBrowser, 10) & "..." & Right(gBrowser, 17)
Else
TempStr = gBrowser
End If
LST_BROWSERS.AddItem "* " & TempStr & "(自動搜索)"

End If

End If


Next


FM_Add_Key.Enabled = False
FM_Select_Browser.Show
SetWindowPos FM_Select_Browser.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
If FM_Add_Key.Left > Screen.Width / 2 Then
FM_Select_Browser.Left = FM_Add_Key.Left - FM_Select_Browser.Width - 20
Else
FM_Select_Browser.Left = FM_Add_Key.Left + FM_Add_Key.Width + 20
End If
FM_Select_Browser.Top = FM_Add_Key.Top + 400
FM_Select_Browser.LST_BROWSERS.Selected(0) = True

 

End Sub

 

Private Sub BT_SELECT_Click()
On Error Resume Next

Dim QKFileName, TempStr, BN1, BN2 As String

FM_Add_Key.Enabled = True
FM_Select_Browser.Hide

FM_Add_Key.TXT_BROWSER_PATH.Text = ""

TempStr = LST_BROWSERS.Text
TempStr = Left(TempStr, InStr(TempStr, " ") - 1)
If TempStr <> "*" Then
QKFileName = gQuicKeysDataPath & "\key" & TempStr & ".kir"
If Dir(QKFileName) <> "" Then
Open QKFileName For Input As #1
Line Input #1, gSysName
Line Input #1, gBrowser
Close #1
End If
Else
BN = Mid(LST_BROWSERS.Text, 3, InStr(LST_BROWSERS.Text, "|") - 3)
For i = 0 To UBound(gWebBrowsers)
If InStr(gWebBrowsers(i), BN & "|") > 0 Then Exit For '包括"|",否則會混淆,比如“360”和“360極速”
Next
BN2 = Mid(gWebBrowsers(i), InStr(gWebBrowsers(i), "|") + 1, 50) 'EXE文件名,不含.exe
QKFileName = gQuicKeysDataPath & "\browser" & BN2 & ".lst"
If (Dir(QKFileName) <> "") Then
gBrowser = ""
Open QKFileName For Input As #1
If Not EOF(1) Then Line Input #1, gBrowser
Close #1
End If
gBrowser = BN & "|" & gBrowser
End If
FM_Add_Key.TXT_BROWSER_PATH.Text = Trim(gBrowser)

End Sub

 


Private Sub Form_Unload(Cancel As Integer)

FM_Add_Key.Enabled = True

End Sub

'*************************************************************************** FM_Select_Browser 窗體代碼結束 ************************************************************************


(9)窗體:FM_Send_Info

FM_Send_Info.frm
****************************************************************************************************************************************************************************************
VERSION 5.00
Begin VB.Form FM_Send_Info
BorderStyle = 1 'Fixed Single
Caption = "快Key: 自動登錄"
ClientHeight = 780
ClientLeft = 45
ClientTop = 390
ClientWidth = 3345
Icon = "FM_Send_Info.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 780
ScaleWidth = 3345
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton BT_SEND_KEY
BackColor = &H00FFFFFF&
BeginProperty Font
Name = "宋體"
Size = 15.75
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 700
Left = 30
MaskColor = &H00FF0000&
Picture = "FM_Send_Info.frx":424A
Style = 1 'Graphical
TabIndex = 0
Top = 30
Width = 900
End
Begin VB.Label LB_NOTE
BackStyle = 0 'Transparent
Caption = "進入登錄頁面后,鼠標左鍵點擊【用戶名】輸入框,再按此【快Key圖標】。 Go!"
Height = 735
Left = 1080
TabIndex = 1
Top = 115
Width = 2295
End
End
Attribute VB_Name = "FM_Send_Info"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False


'*********************************************************************************************************************************************************************
'* *
'* 快Key 窗體FM_Send_Info *
'* *
'*********************************************************************************************************************************************************************

 

'*************************************************************************** 函數、子程序 ****************************************************************************


Private Sub Form_Unload(Cancel As Integer)
gLock_FM_Send_Info = False
End Sub

 

Private Sub BT_SEND_KEY_Click()

FM_Send_Info.Visible = False
gLock_FM_Send_Info = False
Submit_Key

End Sub

'********************************************************************* FM_Send_Info 窗體代碼結束 *********************************************************************


(10)窗體: FM_Start_Note

FM_Start_Note.frm
**************************************************************************************************************************************************************************
VERSION 5.00
Begin VB.Form FM_Start_Note
BorderStyle = 0 'None
Caption = "快Key: 提示"
ClientHeight = 765
ClientLeft = 0
ClientTop = 0
ClientWidth = 2655
Enabled = 0 'False
Icon = "FM_Start_Note.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 765
ScaleWidth = 2655
ShowInTaskbar = 0 'False
StartUpPosition = 2 '屏幕中心
Begin VB.CommandButton Command1
BackColor = &H00FFFFFF&
Height = 700
Left = 30
Picture = "FM_Start_Note.frx":10CA
Style = 1 'Graphical
TabIndex = 0
Top = 24
Width = 800
End
Begin VB.Line Line4
BorderColor = &H00C0C0C0&
X1 = 2600
X2 = 2600
Y1 = 60
Y2 = 690
End
Begin VB.Line Line3
BorderColor = &H00C0C0C0&
X1 = 860
X2 = 860
Y1 = 60
Y2 = 690
End
Begin VB.Line Line2
BorderColor = &H00C0C0C0&
X1 = 860
X2 = 2600
Y1 = 690
Y2 = 690
End
Begin VB.Label Label2
BackStyle = 0 'Transparent
Caption = "按鼠標【滾輪】呼出"
Enabled = 0 'False
Height = 255
Left = 900
TabIndex = 2
Top = 440
Width = 1935
End
Begin VB.Line Line1
BorderColor = &H00C0C0C0&
X1 = 860
X2 = 2600
Y1 = 60
Y2 = 60
End
Begin VB.Label Label1
BackStyle = 0 'Transparent
Caption = "快Key已啟動"
Enabled = 0 'False
Height = 255
Left = 900
TabIndex = 1
Top = 120
Width = 2295
End
End
Attribute VB_Name = "FM_Start_Note"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

'*********************************************************************************************************************************************************************
'* *
'* 快Key 窗體FM_Start_Note *
'* *
'*********************************************************************************************************************************************************************

 

'*************************************************************************** 函數、子程序 ****************************************************************************


'本窗體無代碼


'******************************************************************** FM_Start_Note 窗體代碼結束 *********************************************************************

 

 

2.2 控制板:StartQuicKeys.exe

2.2.1 工程文件

(1)StartQuicKeys.vbw
*************************************************************************************************************************************************************************
FM_StartStop = 52, 52, 1196, 595, Z, 26, 26, 1170, 569, C
FM_Make_UDisk = 0, 0, 1139, 543, , 0, 0, 1028, 543, C


(2)StartQuicKeys.vbp
*************************************************************************************************************************************************************************
Type=Exe
Form=FM_StartStop.frm
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\SysWOW64\stdole2.tlb#OLE Automation
Form=FM_Make_UDisk.frm
IconForm="FM_StartStop"
Startup="FM_StartStop"
HelpFile=""
Title="StartQuicKeys"
ExeName32="StartQuicKeys.exe"
Command32=""
Name="StartQuicKeys"
HelpContextID="0"
CompatibleMode="0"
MajorVer=2
MinorVer=5
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="大系統觀開放論壇"
VersionLegalCopyright="開源軟件 自由版權 作者:王權"
VersionLegalTrademarks="BSV 大系統觀"
VersionProductName="快Key (QuicKeys)"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
Retained=0
ThreadPerObject=0
MaxNumberOfThreads=1


2.2.2 各模塊及Form代碼

(1)窗體:FM_StartStop

FM_StartStop.frm
*******************************************************************************************************************************************************************

VERSION 5.00
Begin VB.Form FM_StartStop
BorderStyle = 1 'Fixed Single
Caption = "快Key: 控制板"
ClientHeight = 405
ClientLeft = 45
ClientTop = 390
ClientWidth = 2910
Icon = "FM_StartStop.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 405
ScaleWidth = 2910
StartUpPosition = 2 '屏幕中心
Begin VB.CommandButton BT_UDisk
Caption = "制U盤"
Height = 375
Left = 2180
TabIndex = 3
ToolTipText = "制作U盤隨身版,可在其他電腦上臨時使用"
Top = 20
Width = 720
End
Begin VB.CommandButton BT_Uninstall
Caption = "卸載"
Height = 375
Left = 1460
TabIndex = 2
ToolTipText = "完全卸載,刪除全部數據"
Top = 20
Width = 720
End
Begin VB.CommandButton BT_Stop
Caption = "停止"
Height = 375
Left = 740
TabIndex = 1
ToolTipText = "退出,下次開機仍將自動啟動"
Top = 20
Width = 720
End
Begin VB.CommandButton BT_Start
Caption = "啟動"
Height = 375
Left = 20
TabIndex = 0
ToolTipText = "啟動或重新啟動"
Top = 20
Width = 720
End
End
Attribute VB_Name = "FM_StartStop"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False


'********************************************************** 快Key(QuicKeys) 源碼 ***********************************************************************
'* *
'* 版本:2.0 釋放日期:2020.9.25 作者:王權(阿色) QQ:583389416 微信公眾號:大系統觀開放論壇 開發環境:Visual Basic 6.0 企業版 *
'* *
'* 功能:自動啟動瀏覽器或exe文件,自動填寫用戶名、密碼。最多管理30個密鑰。可利用自帶控制板制作U盤隨身版,能夠運行在其他電腦上。 *
'* 運行環境:Windows XP、Windows 7-10。XP需要單獨編譯。需要COMDLG32.OCX。 *
'* 安裝路徑:C:\QuicKeys 數據存儲路徑:與安裝路徑相同。用於啟停、卸載和制作U盤隨身版的控制板快捷方式安裝在電腦桌面。 *
'* 基本原理:安裝Hook,截獲鼠標中鍵(滾輪)消息,按滾輪呼出程序,通過此程序自動填寫用戶名、密碼等登錄信息,這些信息事先已經保存,並加密。 *
'* 為了給各個密鑰加密,需要一個“統一密碼”,由用戶自行設定。用戶只要記住此密碼即可打開各個原有密鑰,並自動填寫登錄。 *
'* 統一密碼也需要加密,給它加密的密碼由開發者和用戶自動聯合設定,即初始密碼。這樣可以保證包括開發者和用戶在內的任何人都無法破解統一密碼。 *
'* 但為安全起見,請開發者嚴格保守己方所設密碼,注意在發布源代碼時刪除此密碼。加解密采用業界通用技術,並使用了加鹽和密文等長等策略。 *
'* 開發者密碼的風險很小,因為它並不登錄真正的信息系統,且快Key是離線運行的,開發者無法獲取用戶端的聯合密碼和其他任何密鑰信息,也就無法解密。 *
'* 特別說明:安裝、更新、版本替換文件與運行時文件均用本文件,但要使用不同的文件名,運行文件為QuicKeys.exe,安裝文件要改名。具體如下: *
'* (1)編譯成QuicKeys.exe。 *
'* (2)按本條模式改名,必須包含setup字樣,用於安裝(安裝和平時運行其實是一個EXE):快Key-登錄助手-安裝-QuicKeys_2-0_Setup_for_Win7-10_20200923.exe。 *
'* 這樣的話,安裝時會以管理員身份運行,平時后台啟動以普通用戶身份,避免安全軟件詢問。 *
'* (3)另有控制板 StartQuicKeys.exe,用於桌面控制快Key的啟停,還可制作U盤隨身版。 *
'* (4)需要COMDLG32.OCX,要一起zip。最后將所有相關文件壓縮為ZIP發布。 *
'* (5)快Key為開源軟件,鼓勵積極共享。本代碼可任意發布,責任與權益由發布者自負。 *
'* *
'*******************************************************************************************************************************************************************

'******************************************************************* StartQuicKeys.exe *****************************************************************************


'*******************************************************************************************************************************************************************
'* *
'* 快Key 窗體 FM_StartStop *
'* *
'*******************************************************************************************************************************************************************

 


'************************************************************************* 定義常量 ,常量為大寫加下划線 *********************************************************
Const QK_TITLE = "快Key"

 

'************************************************************** 聲明及相關定義 *************************************************************************************

Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Declare Function SetWindowPos Lib "User32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const SWP_NOMOVE = &H2 '不移動窗體
Private Const SWP_NOSIZE = &H1 '不改變bai窗體尺寸
Private Const Flag = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1 '窗體總在最du前面
Private Const HWND_NOTOPMOST = -2 '窗體不在最前面


'獲得Win系統各個目錄
Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Private Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As Long
Const MAX_LEN = 200 '字符串最大長度
Const DESKTOP = &H0& '桌面
Const PROGRAMS = &H2& '程序集
Const MYDOCUMENTS = &H5& '我的文檔
Const MYFAVORITES = &H6& '收藏夾
Const STARTUP = &H7& '啟動
Const RECENT = &H8& '最近打開的文件
Const SENDTO = &H9& '發送
Const STARTMENU = &HB& '開始菜單
Const NETHOOD = &H13& '網上鄰居
Const FONTS = &H14& '字體
Const SHELLNEW = &H15& 'ShellNew
Const APPDATA = &H1A& 'Application Data
Const PRINTHOOD = &H1B& 'PrintHood
Const PAGETMP = &H20& '網頁臨時文件
Const COOKIES = &H21& 'Cookies目錄
Const HISTORY = &H22& '歷史


'************************************************************ 聲明與定義結束 *************************************************************************************

 

'************************************************************* 公共函數、子程序 *********************************************************************************

Private Sub Form_Load()
SetWindowPos FM_StartStop.hwnd, HWND_TOPMOST, 0, 0, 0, 0, Flag
End Sub


Private Sub BT_Start_Click()

Shell "taskkill /f /im QuicKeys.exe" '殺死老程序進程,進程不存在也不會出錯
MySleep 1000
Shell "C:\QuicKeys\QuicKeys.exe", 1 '重啟
End

End Sub


Private Sub BT_Stop_Click()

Dim TempStr As String
Dim TmpNum As Integer

TempStr = "要退出快Key嗎?" & vbCrLf & "退出后,快Key將不能被呼出。需要重新啟動電腦才能再次啟動快Key。" & vbCrLf _
& "建議點擊窗口右上角 【X】 隱藏快Key。" & vbCrLf & vbCrLf & "按【是】退出,按【否】取消。"
TmpNum = MsgBox(TempStr, 4 + 32 + 256, " " & QK_TITLE)
If TmpNum = vbYes Then '如果確實退出
Shell "taskkill /f /im QuicKeys.exe" '殺進程
End
End If
End Sub


Private Sub BT_Uninstall_Click()
On Error Resume Next

Dim TempStr, b As String
Dim TmpNum As Integer
Dim strFileName, SysTempPath, QuicKeysRunPath, QuicKeysDataPath As String
Dim sTmp As String * MAX_LEN '存放結果的固定長度的字符串
Dim pidl As Long '某特殊目錄在特殊目錄列表中的位置

TempStr = "確定卸載本機上的快Key嗎?" & vbCrLf & "卸載將徹底刪除本機上的快Key及其管理的所有密鑰的信息。" & vbCrLf & "如果制作了U盤隨身版,可繼續獨立使用。" _
& vbCrLf & "卸載U盤隨身版,需要在U盤隨身版上進行。" & vbCrLf & vbCrLf
TempStr = TempStr & "按【是】卸載,按【否】取消。"
TmpNum = MsgBox(TempStr, 4 + 32 + 256, " " & QK_TITLE & " " & VER_NUM)

If TmpNum = vbYes Then '如果確實卸載

MsgBox "快Key將完全卸載。" & vbCrLf & "謝謝使用!再見!", 0 + 64, " " & QK_TITLE '先在前面,否則后面殺進程就不執行了


QuicKeysRunPath = "C:\QuicKeys"
QuicKeysDataPath = QuicKeysRunPath
'獲得網頁臨時目錄,用於存臨時產生的文件
SHGetSpecialFolderLocation 0, PAGETMP, pidl
SHGetPathFromIDList pidl, sTmp
SysTempPath = Left(sTmp, InStr(sTmp, Chr(0)) - 1)
'獲得win系統桌面路徑
SHGetSpecialFolderLocation 0, DESKTOP, pidl
SHGetPathFromIDList pidl, sTmp
gSysDeskTopPath = Left(sTmp, InStr(sTmp, Chr(0)) - 1)

strFileName = gSysDeskTopPath & "\快Key控制板.lnk" '刪掉桌面啟停快捷方式
If Dir(strFileName) <> "" Then Kill strFileName

Open QuicKeysDataPath & "\tempkillqk.bat" For Output As #1
Print #1, "@echo off"
Print #1, "taskkill /f /im QuicKeys.exe"
Print #1, "taskkill /f /im " & App.EXEName & ".exe" '殺自己進程,這里是本啟停程序
Print #1, "del /f /q " & """" & QuicKeysRunPath & "\StartQuicKeys.exe" & """"
Print #1, "del /f /q " & """" & QuicKeysRunPath & "\QuicKeys.exe" & """"
Print #1, "rmdir /s/q " & """" & QuicKeysRunPath & """"
Print #1, "rmdir /s/q " & """" & QuicKeysDataPath & """"
Print #1, "rd " & """" & QuicKeysRunPath & """"
Print #1, "rd " & """" & QuicKeysDataPath & """"
Close #1
MySleep 1000
Shell QuicKeysDataPath & "\tempkillqk.bat >nul"

End

End If
End Sub


Private Sub BT_UDisk_Click()

FM_Make_UDisk.Left = FM_StartStop.Left
FM_Make_UDisk.Top = FM_StartStop.Top
FM_StartStop.Hide
FM_Make_UDisk.Show

End Sub


Private Sub MySleep(ms As Long) '原Sleep不交出控制權,改造一個。 ms:毫秒數
Dim BeginTime As Long
BeginTime = timeGetTime '記下開始時的時間
While timeGetTime < BeginTime + ms '循環等待
DoEvents '轉讓控制權,以便讓操作系統處理其它的事件
Wend
End Sub

'*************************************************************************** 窗體 FM_StartStop 代碼結束 ****************************************************************************


(2)窗體:FM_Make_UDisk

FM_Make_UDisk.frm
*******************************************************************************************************************************************************************

VERSION 5.00
Begin VB.Form FM_Make_UDisk
BorderStyle = 1 'Fixed Single
Caption = "快Key: 制作U盤隨身版"
ClientHeight = 1935
ClientLeft = 45
ClientTop = 390
ClientWidth = 2700
Icon = "FM_Make_UDisk.frx":0000
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 1935
ScaleWidth = 2700
StartUpPosition = 3 '窗口缺省
Begin VB.DriveListBox Drive1
Height = 300
Left = 1575
TabIndex = 6
Top = 800
Width = 975
End
Begin VB.CommandButton BT_CANCEL
Caption = "取消"
Height = 375
Left = 1340
TabIndex = 5
Top = 1440
Width = 1215
End
Begin VB.CommandButton BT_MAKE
Caption = "開始制作"
Height = 375
Left = 120
TabIndex = 3
Top = 1440
Width = 1215
End
Begin VB.Label Label4
BackStyle = 0 'Transparent
Caption = "* U盤原有快Key數據將被清除。"
ForeColor = &H000000FF&
Height = 255
Left = 120
TabIndex = 4
Top = 1200
Width = 2535
End
Begin VB.Label Label3
BackStyle = 0 'Transparent
Caption = " 請輸入U盤盤符"
Height = 255
Left = 120
TabIndex = 2
Top = 840
Width = 2535
End
Begin VB.Label Label2
BackStyle = 0 'Transparent
Caption = " 請注意安全保管U盤和密碼。"
Height = 255
Left = 120
TabIndex = 1
Top = 540
Width = 2535
End
Begin VB.Label Label1
BackStyle = 0 'Transparent
Caption = " 您可以將快Key及密鑰復制到U盤,方便在其他電腦上使用。"
Height = 495
Left = 120
TabIndex = 0
Top = 120
Width = 2535
End
End
Attribute VB_Name = "FM_Make_UDisk"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False


'*******************************************************************************************************************************************************************
'* *
'* 快Key 窗體 FM_Make_UDisk *
'* *
'*******************************************************************************************************************************************************************

 


'************************************************************************* 定義常量 ,常量為大寫加下划線 *********************************************************
Const QK_TITLE = "快Key"

 

Private Sub BT_MAKE_Click()

On Error GoTo ReSelect

Dim UDisk_Sym, UD_Path, s As String
Dim PASS As Boolean
Dim FSO As Object
Dim TmpNum As Integer

Begin:

PASS = False

TempStr = "將覆蓋U盤原有【快Key隨身版】數據。" & vbCrLf & "是否繼續?" & vbCrLf & vbCrLf & "按【是】繼續,按【否】取消。"
TmpNum = MsgBox(TempStr, 4 + 32 + 256, " " & QK_TITLE)
If TmpNum = vbNo Then End '如果取消

UDisk_Sym = Trim(Drive1.Drive)
UDisk_Sym = Left(UDisk_Sym, 1) & ":"

UD_Path = UDisk_Sym & "\QuicKeys"

'拷貝文件到U盤,並調整設置
Set FSO = CreateObject("Scripting.FileSystemObject")
If Dir(UD_Path, vbDirectory) <> "" Then FSO.DeleteFolder UD_Path '不必先清空文件夾
FSO.CopyFolder "C:\QuicKeys", UD_Path
FileCopy "C:\QuicKeys\QuicKeys.exe", UDisk_Sym & "\快Key隨身版.exe" '直接覆蓋,無詢問

s = UD_Path & "\QuicKeys.exe"
If Dir(s) <> "" Then Kill s
s = UD_Path & "\StartQuicKeys.exe"
If Dir(s) <> "" Then Kill s

MsgBox "制作完成。在U盤根目錄下執行【快Key隨身版】即可啟動隨身版。", 64, " " & QK_TITLE

PASS = True

ReSelect:

If PASS = True Then
End
Else
MsgBox "制作失敗。請正確插入並選擇U盤。", 16, " " & QK_TITLE
FM_Make_UDisk.Show
End If

End Sub

 

Private Sub BT_CANCEL_Click()
End
End Sub

 

Private Sub Form_Unload(Cancel As Integer)
End '整個程序結束
End Sub


'*************************************************************************** 窗體 FM_Make_UDisk 代碼結束 ************************************************************************

 

 

 

3 安裝文件及源代碼下載   [返回頁首]

快Key (QuicKeys) V2.6安裝文件包(For Windows 7-10):

 

快Key-登錄助手-安裝-QuicKeys_2-6_Setup_for_Win7-10_20210312.zip:  (https://files.cnblogs.com/files/BigSystemsView/%E5%BF%ABKey-%E7%99%BB%E5%BD%95%E5%8A%A9%E6%89%8B-%E5%AE%89%E8%A3%85-QuicKeys_2-6_Setup_for_Win7-10_20210312.zip)

 

快Key (QuicKeys) V2.6安裝文件包(For Windows XP):

快Key-登錄助手-安裝-QuicKeys_2-6_Setup_for_WinXP_20210301.zip:  (https://files.cnblogs.com/files/BigSystemsView/%E5%BF%ABKey-%E7%99%BB%E5%BD%95%E5%8A%A9%E6%89%8B-%E5%AE%89%E8%A3%85-QuicKeys_2-6_Setup_for_WinXP_20210301.zip)

 

快Key (QuicKeys) V2.6源代碼文件包:

快KeyV2-6源代碼-20210312.zip:  (https://files.cnblogs.com/files/BigSystemsView/%E5%BF%ABKeyV2-6%E6%BA%90%E4%BB%A3%E7%A0%81-20210312.zip)

 

 

因開發環境與本文編輯器的差別,為了保持文章整齊,上述文中源代碼已做排版整理,可能存在錯誤,在VB 6.0開發環境更適合。

同時更新代碼也可能不及時,源代碼以本文件包為准

 

4 倡議與致謝   [返回頁首]

由於本人能力所限,使用了較老的編程工具VB。但編寫系統程序也無法使用當今較流行語言,后續開發者可以使用更好語言和開發工具,編寫出更好系統程序。

本人還有一些想法沒有實現,但近期沒時間做了,繼續做的可以聯系我溝通,本人願意提供任何力所能及的幫助。

本人也秉承開源精神,所有代碼全部公開。上述源碼即為當前版本的全部。

阿色是個老程序猿,功夫基本喪失,全靠百度邊查邊寫,水平有限,懇請大家批評指正。

編寫快Key過程中,阿色查閱借用了大量別人的思路和代碼,在此深表謝意!

 

5 出現問題與解決辦法   [返回頁首]

(1)安裝時出現下面問題:“運行時錯誤 '75' ; 路徑/文件訪問錯誤”,或其他文件訪問錯誤。

那是因為你的系統安全軟件(比如360)阻止快Key安裝。

可以再次嘗試安裝一下。

運行時錯誤

解決辦法:

第1種情況:如果你的系統安全軟件詢問是否允許修改注冊表,請選擇允許即可。

第2種情況:如果你的系統軟件沒有詢問,那是它直接禁止了。這時需要你打開安全軟件,找到注冊表相關設置,然后設置為允許修改注冊表。安裝完成后再恢復原狀。

(2)忘記了統一密碼。

那沒人能幫你,阿色也不能。只能刪掉重裝,所有密鑰數據都要重新填寫了。
解決辦法:
啟動桌面快捷方式【快Key控制板】卸載。
如果自動卸載不成功,可手動卸載刪除:
   1)按Ctrl_Alt_Del,打開任務管理器,結束QuicKeys進程。
   2)刪掉C:\QuicKeys文件夾及所有文件。
   3)重裝快Key。

(3)安裝不上,不能運行,或運行不正常。
解決辦法:

   可嘗試以下方法:

   1)打開 C:\QuicKeys 文件夾,將 StartQuicKeys.exe 和 QuicKeys.exe 設為“以管理員身份運行”。

         步驟:鼠標右鍵點擊文件 -> 屬性 -> 兼容性 -> 設置 -> 以管理員身份運行此程序。

以管理員身份運行

 

   2)在360等安全軟件中設置信任 StartQuicKeys.exe 和 QuicKeys.exe 兩個文件。

   3)換個安裝文件試試,XP版的兼容性更好些,它可在Windows 7等高版本操作系統上運行。

 

(4)如何備份密鑰?換電腦重新安裝時如何繼續使用原有密鑰?
解決辦法:

快Key密鑰存放在 C:\Quickeys 文件夾,可以備份此文件夾。密鑰已加密存儲,可放心備份保存。

如果要在新電腦上安裝快Key,並使用原有密鑰,可按如下操作:

   第一步:將原電腦 C:\Quickeys 文件夾拷貝到新電腦相同文件夾。

   第二步:待新電腦安裝好各種瀏覽器等軟件后,再安裝快Key。這是為了讓快Key可以自動搜索到常用瀏覽器的安裝路徑。注意:此時原統一密碼繼續有效,安裝程序不再要求您提供統一密碼。

   第三步:快Key安裝完成並啟動后,重新編輯修改各個密鑰,根據新電腦各個瀏覽器和相關程序的新路徑修改“啟動瀏覽器或程序”內容。

 修改密鑰“啟動瀏覽器或程序”內容

 

6 用戶手冊   [返回頁首]

(1)系統安裝

第一步:獲得安裝文件包。

安裝包文件一般形如“快Key-登錄助手-安裝-QuicKeys_2-6_Setup_for_Win7-10_20210226.zip”。

打開安裝包,執行其中安裝文件:

 

 執行安裝程序

第二步:開始安裝。

需要設一個統一密碼。

安裝需要持續2分鍾左右。

安裝界面

第三步:呼出。

安裝完成后,按鼠標滾輪(中鍵)呼出快Key,填寫剛設定的統一密碼即可開始使用。

今后,每次開機時快Key將自動啟動,首次呼出時需要回答統一密碼,以后就不用了。當然,還可以設置統一密碼什么時候需要。

呼出快Key

安裝完成后,桌面會增加一個“快Key控制板“快捷方式,用於啟停、卸載快Key,還可以制作U盤快Key,方便隨身使用。

 

快Key控制板

(2)快Key的基本操作步驟

系統登錄分為三個步驟:啟動系統、輸入用戶名和密碼、確認登錄(回車或按確認鍵)。

登錄的3個步驟

 

快Key可以自動替代這3步中的任何幾步,或全部步驟。

也就是說,你可以:

         * 從啟動,到輸入用戶名/密碼,到自動確認,全部自動化。

         * 也可以不自動啟動,待系統登錄界面出現后,快Key幫你自動完成后面的工作。

         * 也可以自動啟動系統,但手動輸入用戶名和密碼。

         * 甚至可以一鍵自動登錄系統。如果目標系統具有記住用戶名和密碼功能,可以讓快Key執行第①和③步,一鍵全自動登錄。

 

(3)添加密鑰

快Key需要保存各個系統的密鑰,進而自動使用密鑰。

添加密鑰就是將各個系統的密鑰交給快Key管理。

點擊 [+][+添加密鑰] ,出現添加窗口:

 

 添加密鑰

①粉紅色方框內數字:是密鑰的位置序號。

②系統名稱:自行設定,一般為目標系統簡稱。不可為空。如果不設置啟動程序,系統名稱前會增加">"符號標記。

③啟動瀏覽器或程序:要啟動哪種瀏覽器,或哪個程序。缺省為IE,可選其他已安裝瀏覽器;也可通過瀏覽或手工填寫設為任何可執行程序;也可設為“無”,意味着不啟動任何瀏覽器或程序,系統名稱前會增加">"符號標記,表示手動啟動目標系統,然后自動填寫用戶名和密碼。

④網址參數:填網址(URL)或者程序運行參數。

⑤啟動后等待時間:填寫數字,表示等待程序啟動所需要的時間,以“秒”為單位。這是為了讓啟動的程序完全進入登錄頁面后,快Key再開始自動登錄操作。一般用於一鍵全自動登錄。

⑥登錄用戶名、登錄密碼:是登錄原目標系統所需的用戶名和密碼。按右側“眼睛”鍵可看見明碼。不填意味着手動輸入。

⑦TAB鍵:需要填2個數字。快Key模仿手動鍵盤操作。TAB鍵次數是指各個輸入框跳轉時需要按幾次。如有必要,手動測試一下。

⑧手動確認登錄:如選,則意味着快Key不會自動按下登錄確認鍵,等待手工操作。

 

(4)密鑰刪除、修改、排序等

快Key日常界面如下:

日常界面

①[+]:添加密鑰。

②[-]:刪除密鑰。按下會變成綠色箭頭,再次單擊退出刪除狀態。

③[...]:修改密鑰。按下會變成綠色箭頭,再次單擊退出修改狀態。

④[^]:將密鑰整理排序。

⑤[設]:用戶設置。可設置自己的頭像、顯示的用戶名,更改統一密碼,設定統一密碼驗證方式。

⑥[卸]:徹底卸載。

⑦[退]:退出。下次開機仍將自動啟動。可以通過桌面快捷方式“快Key控制板”重新啟動、停止。

⑧[?]:簡要說明和幫助,可以連接到網上相關資料,包括本用戶手冊。缺省連接到博客園的本網頁。

⑨[>]和[<?]:功能鍵折疊。

 

(5)自動登錄

鼠標混輪(中鍵)呼出快Key,點擊相應按鈕,即安裝預定步驟自動登錄。

第一步:呼出快Key,點欲登錄系統按鈕。

如果沒有設定啟動系統,可手動啟動。

快Key將出示該系統密鑰,如下圖:

系統1的密鑰

第二步:填寫用戶名、密碼。

在適當位置點擊鼠標滾輪,將密鑰移至合適位置。密鑰隨着您點擊鼠標滾輪的位置而移動。

用鼠標“”鍵點擊目標系統登錄界面的用戶名輸入框。

用鼠標“”鍵點擊“快Key圖標”,開始自動登錄。

 

 

自動登錄

 

第三步:確認登錄。

如果您預先設定為手動確認,目標系統將等待您進一步操作,否則快Key將自動確認登錄目標系統。

 

(6)一些特別功能

①一鍵全自動登錄

* 如果目標系統能夠記住登錄用戶名和密碼,可以實現一鍵全自動登錄。

設置方法:在快Key中不設置該系統的用戶名和密碼,設置“啟動后等待時間”,一般設為5秒左右,其他正常設置即可。

這樣設置后,快Key將等待目標系統登錄界面完全顯示后自動確認登錄(相當於自動按回車鍵)。

 ②隨身版

* 如果希望隨身攜帶使用快Key,可以用快Key控制板制作隨身版U盤。

隨身版與電腦上已安裝的快Key不沖突,可以各自獨立使用。

隨身版背景為橙色,以示與桌面版的區分。

隨身版部分功能可能受限或不能正常運行,取決於運行電腦已安裝的軟件和系統設置。

對於鼠標中鍵(滾輪)的響應:后運行者截斷響應,即:如果桌面版已運行,再運行隨身版,那么鼠標中鍵響應隨身版,當隨身版退出后,則響應桌面版。

 

7 聯絡信息   [返回頁首]

博客園用戶可在本文評論區留言。

或者,通過微信公眾號【大系統觀開放論壇】聯絡:

微公號:BigSystemsView

二維碼:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM