|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2003-12-12, 02:36 AM | #1 |
榮譽會員
|
一個Delphi的註冊機範本,沒有使用VCL,類似C/ASM使用對話視窗範本,編譯結果小,最方便的是可以使用Delphi的st
標題: 一個Delphi的註冊機範本,沒有使用VCL,類似C/ASM使用對話視窗範本,編譯結果小,最方便的是可以使用Delphi的string類型
內容: 共6個文件,如下. 只需增加註冊算法到主程式文件的CalculateCode函數,執行Build.bat進行編譯.(當然你必須安裝了Delphi, ;-) ----------------------------------------------------- resource.h 資源常量定義 ----------------------------------------------------- #define IDD_MAIN 101 #define IDE_NAME 1011 #define IDE_CODE 1012 #define IDB_GENERATE 1013 #define IDB_ABOUT 1014 #define IDB_EXIT 1015 #define IDD_ABOUT 102 #define IDB_OK 1021 #define IDR_MAINFRAME 103 ----------------------------------------------------- resource.pas 資源常量定義的Pascal版本 ----------------------------------------------------- unit resource; interface const IDD_MAIN = 101; IDE_NAME = 1011; IDE_CODE = 1012; IDB_GENERATE = 1013; IDB_ABOUT = 1014; IDB_EXIT = 1015; IDD_ABOUT = 102; IDB_OK = 1021; IDR_MAINFRAME = 103; implementation end. ----------------------------------------------------- KeyGen.ico 圖示文件 ----------------------------------------------------- ----------------------------------------------------- KeyGen.rc 資源指令碼 ----------------------------------------------------- #include "resource.h" IDR_MAINFRAME ICON DISCARDABLE "KeyGen.ico" IDD_MAIN DIALOGEX 0, 0, 212, 76 STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_APPWINDOW CAPTION "XXXX Key Generator" FONT 8, "Verdana" BEGIN EDITTEXT IDE_NAME,38,12,163,12,ES_AUTOHSCROLL EDITTEXT IDE_CODE,38,31,163,12,ES_AUTOHSCROLL | ES_READONLY PUSHBUTTON "&Generate",IDB_GENERATE,5,56,50,14,0,WS_EX_STATICEDGE PUSHBUTTON "&About",IDB_ABOUT,81,56,50,14,0,WS_EX_STATICEDGE PUSHBUTTON "E&xit",IDB_EXIT,156,56,50,14,0,WS_EX_STATICEDGE LTEXT "Name:",IDC_STATIC,10,14,24,8 LTEXT "Code:",IDC_STATIC,10,33,22,8 GROUPBOX "",IDC_STATIC,5,2,201,48 END IDD_ABOUT DIALOGEX 0, 0, 233, 65 STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About" FONT 8, "Verdana" BEGIN ICON IDR_MAINFRAME,IDC_STATIC,7,7,20,20 LTEXT "KeyGen for XXXX",IDC_STATIC,34,7,136,8,SS_NOPREFIX LTEXT "Programmed by Phidel",IDC_STATIC,34,21,119,8 DEFPUSHBUTTON "OK",IDB_OK,177,7,50,14,WS_GROUP,WS_EX_STATICEDGE LTEXT "Compiled with Borland Delphi",IDC_STATIC,34,35,131,8 LTEXT "October, 25th, 2002",IDC_STATIC,34,49,100,8 END ----------------------------------------------------- KeyGen.pas 主程式文件 ----------------------------------------------------- program KeyGen; {$R KeyGen.res} uses Windows, Messages, resource; var WinClass: TWndClass; Inst: HINST; function CalculateCode(Name: string): string; begin Result := ''; {Add Codes Here} end; procedure InitializeApp(hDlg: HWND; wParam: WPARAM; lParam: LPARAM); begin SendMessage(hDlg, WM_SETICON, 1, LoadIcon(Inst, MAKEINTRESOURCE(IDR_MAINFRAME))); end; function AboutDialogFunc(hwndDlg: HWND; msg: UINT; wParam: WPARAM; lParam: LPARAM): Boolean; stdcall; begin case msg of WM_COMMAND: begin case (LOWORD(wParam)) of IDB_OK: begin EndDialog(hwndDlg, 1); Result := True; Exit; end; end; Result := False; Exit; end; WM_CLOSE: begin EndDialog(hwndDlg, 0); Result := True; Exit; end; end; Result := False; end; function DialogFunc(hwndDlg: HWND; msg: UINT; wParam: WPARAM; lParam: LPARAM): Boolean; stdcall; var Name: array[0..255] of Char; begin case msg of WM_INITDIALOG: begin InitializeApp(hwndDlg, wParam, lParam); Result := True; Exit; end; WM_COMMAND: begin case (LOWORD(wParam)) of IDB_GENERATE: begin GetDlgItemText(hwndDlg, IDE_NAME, Name, 255); SetDlgItemText(hwndDlg, IDE_CODE, PChar(CalculateCode(string(Name)))); Result := True; Exit; end; IDE_NAME: begin if HIWORD(wParam) = EN_CHANGE then begin SetDlgItemText(hwndDlg, IDE_CODE, ''); Result := True; end else Result := False; Exit; end; IDB_about: begin DialogBox(Inst, MAKEINTRESOURCE(IDD_ABOUT), hwndDlg, @AboutDialogFunc); Result := True; Exit; end; IDB_EXIT: begin EndDialog(hwndDlg, 1); Result := True; Exit; end; end; Result := False; Exit; end; WM_CLOSE: begin EndDialog(hwndDlg, 0); Result := True; Exit; end; end; Result := False; end; begin Inst := hInstance; with WinClass do begin lpfnWndProc := @DefDlgProc; cbWndExtra := DLGWINDOWEXTRA; hInstance := Inst; hCursor := LoadCursor(0, IDC_ARROW); hbrBackground := COLOR_WINDOW + 1; lpszClassname := 'KeyGen'; end; RegisterClass(WinClass); DialogBox(Inst, MAKEINTRESOURCE(IDD_MAIN), 0, @DialogFunc); end. ----------------------------------------------------- Build.bat 編譯批次處理文件 ----------------------------------------------------- brcc32 KeyGen.rc dcc32 KeyGen.dpr -------------------------------------------------------------------------------- |
送花文章: 3,
|