用vc編寫的sn快速輸入工具
大家在安裝軟體時,一般都會遇到讓輸入序列號
sn的情況。序列號
(sn)
通常是由「
-」分隔開的幾部分組成,相應地,安裝軟體輸入序列號的地方通常也是由幾個文字框
(textbox)
組成的,這時,為了輸入序列號,我們就要在安裝程式和記錄有
sn的檔案之間貼上、複製多次,非常麻煩。從玩電腦到現在,安裝了不少軟體,只記得有一次,那個安裝程式作的比較體貼人意,
可以把這種
sn一次性貼上到
sn的編輯框中。剛才在網上看到了一篇名為「用
c#**編寫的
sn快速輸入工具
」的文章,和我那次用的情況是一樣的,感覺很有意思。就用
vc也簡單實現了一下。
原理很簡單,我參考了
[1]中說的方法,在這裡就不贅述了,那位仁兄寫的相當好,你可以開啟這個鏈結http://blog.csdn.net/eos_3tion/archive/2006/01/23/586527.aspx
看一下。
大致可以把這個程式分為
3個步驟:
第一步,從剪貼簿裡面取資料。
第二步,處理取來的資料,根據分隔符把整個
sn長串分割成幾個短字串備用。
第三步,獲得相應文字框的控制代碼,將處理好的資料添到相應得文字框中。
下面就慢慢介紹用
vc開發這個程式的過程:
首先,開啟
notepad
,自己隨便寫乙個
sn string
,一會我們要把它貼上到序列號文字框中。假設這個
sn string
是這樣的
abcde-fghki-sgdjg-ieurr-lpgwq
。該sn分5
部分,每個部分
5個字元,部分之間用「-」分割,所以共有
29個字元。
接著開啟
vc6.0
,建立乙個基於
dialog
的mfc
程式。我把工程的名字寫成了「
autosn」。
然後,開啟
resource view
。見figure 1
。編輯idd_autosn_dialog
,使其最終的介面如
figure 2
所示。
figure 1 resource view
figure 2 inte***ce
給按鈕」get sn」
新增乙個
click
事件處理函式,如果你沒有修改其他設定的話,該函式的名字會為
onok
。下面就是該函式的**。
void cautosndlg::onok()
// ...
// get the currently selected data
handle hdata = getclipboarddata(cf_text);
if(hdata != null)
// extract the five parts
cstring s1 = strsn.mid(0, 5); // get "abcde"
cstring s2 = strsn.mid(6, 5); // get "fghki"
cstring s3 = strsn.mid(12, 5); // get "sgdjg"
cstring s4 = strsn.mid(18, 5); // get "ieurr"
cstring s5 = strsn.mid(24, 5); // get "lpgwq"
cedit* pbox;
// get the first edit box
pbox = (cedit*) getdlgitem(idc_edit_sn1);
pbox->setfocus();
pbox->setsel(0, -1);
// "abcde" goes here
pbox->replacesel(s1);
// get the second edit box
pbox = (cedit*) getdlgitem(idc_edit_sn2);
pbox->setfocus();
pbox->setsel(0, -1);
// "fghki" goes here
pbox->replacesel(s2);
// get the third edit box
pbox = (cedit*) getdlgitem(idc_edit_sn3);
pbox->setfocus();
pbox->setsel(0, -1);
// "sgdjg" goes here
pbox->replacesel(s3);
// get the fourth edit box
pbox = (cedit*) getdlgitem(idc_edit_sn4);
pbox->setfocus();
pbox->setsel(0, -1);
// "ieurr" goes here
pbox->replacesel(s4);
// simulatekey tab
// simulatekey( vk_tab );
// get the fifth edit box
pbox = (cedit*) getdlgitem(idc_edit_sn5);
pbox->setfocus();
pbox->setsel(0, -1);
// "lpgwq" goes here
pbox->replacesel(s5);
globalunlock(hdata);
} else
}
if(!emptyclipboard())
// ...
closeclipboard();
}編譯,執行程式。開啟記載有
sn的記事本,將複製其中的
sn,按下「
get sn
」按鈕。
figure 3
是執行結果截圖。
figure 3 result
在作者原來的文章中也提到了鍵盤模擬事件
keybd_event
。在vc
中有乙個
keybd_event
的函式。
void keybd_event(
bytebvk,// virtual-key code
bytebscan,// hardware scan code
dworddwflags,// function options
ulong_ptrdwextrainfo// additional keystroke data
);我也寫了乙個函式,以byte型別的virtual-key code變數為引數,也可以達到模擬鍵盤的效果,也把這個函式貼出來。
void simulatekey(byte key )
參考:
[1] eos_3tion,用
c#**編寫的
sn快速輸入工具, 2006-02-01,
用VC 編寫 網路計時計費工具
我們每次在windows 中撥號上網之後 撥號程式都會最小化到系統托盤區裡面。當我們把滑鼠移到它的圖示上時,就會顯示出接收和傳送的資料流量,但我們最關心的往往是我們已經上網有多長時間了以及上網費用。下面筆者將向你介紹如何用vc 編寫乙個有這些功能的軟體,希望能對你有所幫助。我們的程式介面,當按下確定...
用vc編寫任務管理器殺不掉的程序
記得自己上高中的時候,我們上微機課,那時候每個機子都有個監控程式,很麻煩,老師上課了機子就被鎖住了,什麼也做不了,很不爽,那時候大家都知道用任務管理器結束程序,但是偏偏這個程序結束不了,後來我找到了個方法,在cmd下執行ntsd c q p 程序id,這樣這個監控程式就會結束了。那時候只知道這個方法...
用VC編寫具有動態換膚功能的應用程式
2002 07 15 資訊產業部電子第二十二研究所青島分所 郎銳 yesky 引言 如果能在自己的程式中也具備動態更換 的能力,將使軟體平添幾分亮點從而更易博得使用者的青睞。具筆者了解,當前介紹這種技術的文章資料較少,與其流行程度很不協調,而且現有的少量資料也多是針對對話方塊進行的,無非是在對話方塊...