用VC編寫的SN快速輸入工具

2021-04-02 15:00:44 字數 4173 閱讀 2429

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 引言 如果能在自己的程式中也具備動態更換 的能力,將使軟體平添幾分亮點從而更易博得使用者的青睞。具筆者了解,當前介紹這種技術的文章資料較少,與其流行程度很不協調,而且現有的少量資料也多是針對對話方塊進行的,無非是在對話方塊...