SmallExe.dpr
上传用户:psxgmh
上传日期:2013-04-08
资源大小:15112k
文件大小:3k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. program SmallExe;
  2. uses
  3.   SysUtils,
  4.   Windows,//这个单元必须要加入
  5.   Messages; //这个单元必须要加入
  6. var
  7.   WinClass: TWndClassA;
  8.   Inst, Handle, Button1, Label1, Edit1: Integer;
  9.   Msg: TMsg;
  10.   hFont: Integer;
  11. procedure CheckPassword;//定义一个检查用户输入的密码是否正确的过程;
  12. var
  13.   Text: PChar;
  14.   Textlength: Integer;
  15. begin
  16.     TextLength := GetWindowTextLength(Edit1);
  17.     GetMem(Text, TextLength + 1);
  18.     GetWindowText(Edit1, Text, TextLength + 1);//利用API函数取得用户输入的密码;
  19.     if (Text = 'caoyang') then
  20.     begin
  21.       MessageBoxA(Handle, '密码输入正确,恭喜您,您已经完成了登陆认证!','密码检查', MB_OK);
  22.       FreeMem(Text, TextLength + 1);
  23.       Halt;
  24.       Exit;
  25.     End
  26.     Else
  27.       MessageBoxA(Handle, '密码输入不正确,请重新输入.', '密码检查', MB_OK);
  28. end;
  29. function WindowProc(hWnd, uMsg, wParam, lParam:Integer):Integer;stdcall;
  30. //这里定义了一个过程类型的具体兼容实现,实际上是一个回调函数
  31. begin
  32. //反复循环检测消息队列,给uMsg,wParam,lParam赋值
  33.   Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
  34. //当收到点击按钮的消息的时候,调用CheckPassword过程来检查用户的输入是否正确
  35.  if (lParam = Button1) and (uMsg = WM_COMMAND) then 
  36.     CheckPassword;
  37. //如果收到销毁窗体的消息,则利用Halt语句释放所有的资源
  38.   if (uMsg = WM_DESTROY) then    
  39. Halt;
  40. end;
  41. //下面的部分是程序的主体
  42. begin
  43.   { ** 注册用户自己的窗口类 ** }
  44.   Inst := hInstance;
  45.   with WinClass do
  46.   begin
  47.     style              := CS_CLASSDC or CS_PARENTDC;
  48.     lpfnWndProc        := @WindowProc;
  49.     hInstance          := Inst;
  50.     hbrBackground      := color_btnface + 1;
  51.     lpszClassname      := 'AG_TESTWINDOW';
  52.     hCursor            := LoadCursor(0, IDC_ARROW);
  53.   end;
  54.  RegisterClass(WinClass);
  55.   { ** 创建主窗体 ** }
  56.   Handle := CreateWindowEx(WS_EX_WINDOWEDGE, 'AG_TESTWINDOW', '用Windows API编写程序演示',WS_VISIBLE or WS_SIZEBOX or WS_CAPTION or WS_SYSMENU,
  57.                                      363, 278, 305, 65, 0, 0, Inst, nil);
  58.   { ** 创建一个按钮 ** }
  59.   Button1:=CreateWindow('Button', '确认', WS_VISIBLE or WS_CHILD or BS_PUSHLIKE or BS_TEXT,216, 8, 75, 25, handle, 0, Inst, nil);
  60.   { ** 创建一个静态文本标签 ** }
  61.   Label1 := Createwindow('Static', '请输入密码:', WS_VISIBLE or WS_CHILD or SS_LEFT,8, 12, 76, 13, Handle, 0, Inst, nil);
  62.   { ** 创建一个编辑框 ** }
  63.   Edit1:=CreateWindowEx(WS_EX_CLIENTEDGE, 'Edit', '', WS_CHILD or WS_VISIBLE  or  WS_BORDER or ES_PASSWORD, 88, 8, 121, 21, Handle, 0, Inst, nil);
  64.   { ** 创建字体句柄 ** }
  65.   hFont := CreateFont(-11, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET,
  66.       OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH or FF_DONTCARE, 'MS Sans Serif');
  67.   { 改变字体 }
  68.   if hFont <> 0 then
  69.   begin
  70.     SendMessage(Button1, WM_SETFONT, hFont, 0);
  71.     SendMessage(Label1, WM_SETFONT, hFont, 0);
  72.     SendMessage(Edit1, WM_SETFONT, hFont, 0);
  73.   end;
  74.   
  75. {把输入焦点放在编辑框中 }
  76.    SetFocus(Edit1);
  77.    UpdateWindow(Handle);
  78.   { ** 消息循环检测 ** }
  79.   while(GetMessage(Msg, Handle, 0, 0)) do
  80.   begin
  81.     TranslateMessage(msg);//翻译消息的类型
  82.     DispatchMessage(msg);//分发消息给相应的处理例程
  83.   end;
  84. end.