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

📄 main.pas

📁 枫叶插件管理器 版本:1.0.0.0 说明: 基于API DLL形式的插件管理器
💻 PAS
字号:
Unit Main;

Interface

Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, PluginsType;

Type
  TForm1 = Class(TForm)
    Procedure FormClose(Sender: TObject; Var Action: TCloseAction);
  Private
  Public
  Protected
    Procedure CreateParams(Var Params: TCreateParams); Override;
  End;

Function Sg_Plugin: PPluginModule; Stdcall;

Var
  Form1: TForm1 = Nil;

Implementation

{$R *.dfm}
Var
  ExeApp: TApplication;
  MenuItem: TMenuItem;
  LibHandle: THandle;
  AddPluginPic: PAddPluginPic_CallBack;

Const
  {$I PluginInfo.inc}
  Info: TPluginInfo = (
    Version: PluginVersion;
    Name: PluginName;
    Description: PluginDescription;
    ModulePath: GetModulePath;
    );

Function GetPluginInfo: PPluginInfo; Stdcall;
Begin
  Result := @Info;
End;

Procedure SetPluginManagerInfo(PMI: PPluginManagerInfo); Stdcall;
Begin
  ExeApp := TApplication(PMI^.App);
  MenuItem := TMenuItem(PMI^.MenuItem);
  LibHandle := PMI^.LibHandle;
  AddPluginPic := PMI^.AddPluginPicCallBack;
End;

Procedure SetAbout(This_Module: PPluginModule); Stdcall;
Begin
  ExeApp.MessageBox('关于...', '', MB_ICONINFORMATION);
End;

Procedure SetConfig(This_Module: PPluginModule); Stdcall;
Begin
  ExeApp.MessageBox('无配置...', '', MB_ICONINFORMATION);
End;

Function SetInitialize(This_Module: PPluginModule): Integer; Stdcall;
Begin
  Result := S_OK;
End;

Function SetTerminate(This_Module: PPluginModule): Integer; Stdcall;
Begin
  If Form1 <> Nil Then FreeAndNil(Form1);
  Result := S_OK;
End;

Function SetStart(This_Module: PPluginModule): Integer; Stdcall;
Begin
  If Form1 = Nil Then ExeApp.CreateForm(TForm1, Form1);
  Form1.Show;
  Result := S_OK;
End;

Function SetStop(This_Module: PPluginModule): Integer; Stdcall;
Begin
  Result := S_OK;
End;

Function SetUninstall(This_Module: PPluginModule): integer; Stdcall;
Begin
  Result := S_OK;
End;

Const
  DllModule: TPluginModule = (
    PluginInfo: GetPluginInfo;
    PluginManagerInfo: SetPluginManagerInfo;
    About: SetAbout;
    Config: SetConfig;
    Initialize: SetInitialize;
    Terminate: SetTerminate;
    Start: SetStart;
    Stop: SetStop;
    Uninstall: SetUninstall;
    );

Function Sg_Plugin: PPluginModule; Stdcall;
Begin
  Result := @DllModule;
End;
{==============================================================================}
Procedure TForm1.CreateParams(Var Params: TCreateParams);
Begin                                   //重载不显示在任务栏
  Inherited CreateParams(Params);
  Params.WndParent := ExeApp.MainForm.Handle;
End;

Procedure TForm1.FormClose(Sender: TObject; Var Action: TCloseAction);
Begin                                   //自释放窗体
  Action := caFree;
  Form1 := Nil;
End;

End.

 

⌨️ 快捷键说明

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