⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 applog.dpr

📁 这一系列是我平时收集的pascal深入核心编程
💻 DPR
字号:
program AppLog;

{$R AppLog.res}

uses Windows, Messages;

  // 引入动态链接库函数
function ShellHook_Start(hWndListBox: HWND): BOOL; stdcall; external '..\DLL\ShellHk.Dll';
function ShellHook_Stop(): BOOL; stdcall; external '..\DLL\ShellHk.Dll';

const
 // 图标资源ID
  IDD_APPLOG = 101;

 // ListBox ID
  IDC_APPLOG = 1000;
  
 // 模板资源ID
  IDI_APPLOG = 1001;


 // 处理WM_INITDIALOG
function AppLog_OnInitDialog(hWnd, hWndFocus: HWND; lParam: LPARAM): BOOL;
begin
 // 设置窗体图标
  SendMessage(hWnd, WM_SETICON, ICON_BIG, LoadIcon(HInstance, MakeIntResource(IDI_APPLOG)));

 // 尝试安装钩子 
  if (ShellHook_Start(GetDlgItem(hWnd, IDC_APPLOG)) = FALSE) then
  begin
    MessageBox(GetActiveWindow(), 'Unable to start shell hook', 'AppLog', 0);
    EndDialog(hWnd, IDCANCEL);
  end;

 // 接受默认焦点
  Result := TRUE;
end;

 // 处理WM_SIZE
procedure AppLog_OnSize(hWnd: HWND; state: UINT; cx, cy: Integer);
begin
 // 当主窗体大小发生变化, ListBox也跟着作相应调整
  SetWindowPos(GetDlgItem(hWnd, IDC_APPLOG), 0, 0, 0, cx, cy, SWP_NOZORDER);
end;

 // 处理WM_COMMAND
procedure AppLog_OnCommand(hWnd: HWND; id: Integer; hWndCtl: HWND; codeNotify: UINT);
begin
 // 要求关闭对话框
  if (id = IDCANCEL) then
  begin
   // 尝试卸载钩子
    if (ShellHook_Stop() = FALSE) then
      MessageBox(GetActiveWindow(), 'Unable to stop shell hook', 'AppLog', 0);

   // 结束主对话框
    EndDialog(hWnd, id);
  end;
end;

 // 对话框消息处理回调
function AppLog_DlgProc(hWnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): BOOL; stdcall;
begin
  case (uMsg) of
    WM_INITDIALOG:
      begin
        Result := BOOL(SetWindowLong(hWnd, DWL_MSGRESULT,
          Longint(AppLog_OnInitDialog(hWnd, wParam, lParam))));
      end;

    WM_COMMAND:
      begin
        AppLog_OnCommand(hWnd, LOWORD(wParam), lParam, HIWORD(wParam));
        Result := TRUE;
      end;

    WM_SIZE:
      begin
        AppLog_OnSize(hWnd, wParam, LOWORD(lParam), HIWORD(lParam));
        Result := TRUE;
      end;

    else Result := FALSE;
  end;
end;

 // 程序'主线程'入口
begin
  DialogBox(HInstance, MakeIntResource(IDD_APPLOG), 0, @AppLog_DlgProc);
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -