我有一个自定义模块在 PDFGenerator 完成后立即执行。我按照本指南了解如何创建自定义模块
https://stackoverflow.com/a/55799101/9945420
在处理批处理文档时,我想操作生成的 PDF 文件并为该文件添加页脚。该页脚的内容需要在管理模块中进行配置。
因此,在名为“StampOnScanProcess”的项目中,我添加了一个名为“Setup”的文件夹,其中包含两个文件。一个Form
叫做“FrmSetup”的
public partial class FrmSetup : Form
{
private IBatchClass batchClass;
public FrmSetup()
{
InitializeComponent();
}
public DialogResult ShowDialog(IBatchClass batchClass)
{
this.batchClass = batchClass;
// Load previous Settings ...
return this.ShowDialog();
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnSave_Click(object sender, EventArgs e)
{
// Save ...
this.Close();
}
}
和一个UserControl
名为“UserCtrlSetup”
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ISetupForm
{
[DispId(1)]
AdminApplication Application { set; }
[DispId(2)]
void ActionEvent(int EventNumber, object Argument, out int Cancel);
}
[ClassInterface(ClassInterfaceType.None)]
[ProgId(CUSTOM_MODULE_NAME_SETUP)]
public partial class UserCtrlSetup : UserControl, ISetupForm
{
private const string CUSTOM_MODULE_NAME_SETUP = "StampOnScanProcess.Setup";
private AdminApplication adminApplication;
public AdminApplication Application
{
set
{
value.AddMenu(CUSTOM_MODULE_NAME_SETUP, CUSTOM_MODULE_NAME_SETUP, "BatchClass");
adminApplication = value;
}
}
public void ActionEvent(int EventNumber, object Argument, out int Cancel)
{
Cancel = 0;
if ((KfxOcxEvent)EventNumber == KfxOcxEvent.KfxOcxEventMenuClicked && (string)Argument == CUSTOM_MODULE_NAME_SETUP)
{
FrmSetup form = new FrmSetup();
form.ShowDialog(adminApplication.ActiveBatchClass);
}
}
}
我修改了我的注册文件并将设置表单添加到其中
[Modules]
StampOnScanProcess
[StampOnScanProcess]
RuntimeProgram=StampOnScanProcess.exe
ModuleID=StampOnScanProcess.exe
Description=...
Version=10.2
SupportsNonImageFiles=True
SupportsTableFields=True
SetupProgram=StampOnScanProcess.Setup
[Setup Programs]
StampOnScanProcess.Setup
[StampOnScanProcess.Setup]
Visible=0
OCXFile=StampOnScanProcess.exe
ProgID=StampOnScanProcess.Setup
启动管理模块时,我转到批处理类属性=>队列,并希望通过单击中间的属性按钮来调用此设置表单。
不幸的是,属性按钮被禁用,所以我无法打开设置表单。此表单被添加到批处理类的上下文菜单中
如何将此表单绑定到属性按钮?存储配置数据并在运行时应用程序执行时访问它的最佳方式是什么?
我需要考虑如何存储数据,因为有些用户有用户资料
并且运行时应用程序当前在没有凭据的情况下登录。
public void LoginToRuntimeSession()
{
login = new Login();
login.EnableSecurityBoost = true;
login.Login();
login.ApplicationName = CUSTOM_MODULE_ID;
login.Version = "1.0";
login.ValidateUser($"{CUSTOM_MODULE_ID}.exe", false, "", "");
session = login.RuntimeSession;
}
因此,我也可能必须在设置时存储凭据。