宿主的功用:
裝載.dfm檔案動態生成窗體;
註冊動態生成窗體中的類,物件,屬性,方法,函式,從而讓指令碼引擎能夠操作它們。
下面以tms scripter studio為例:
unit umain;
inte***ce
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, menus, atscript, atpascal;
type
tformmain = class(tform)
mainmenu1: tmainmenu;
scripter: tatpascalscripter;
m1: tmenuitem;
n11: tmenuitem;
n21: tmenuitem;
procedure n11click(sender: tobject);
procedure n21click(sender: tobject);
private
procedure loadscript(sender: tcomponent; const dfmfile, pscfile,
initproc: string);
// params: sender--宿主窗體 dfmfile--介面指令碼檔案 pscfile--業務指令碼 initproc--呼叫指令碼的初始化方法
public
end;
varformmain: tformmain;
implementation
uses uclass, unit1, unit2;
procedure tformmain.loadscript(sender: tcomponent; const dfmfile, pscfile,
initproc: string);
begin
uclass.loadfromdfm(dfmfile, sender); // 裝載介面
scripter.addcomponents(sender); // 讓指令碼認識窗體中的物件
uclass.pianlicomps(sender, scripter);
scripter.sourcecode.clear;
scripter.sourcecode.loadfromfile(pscfile); // 裝載業務
scripter.executesubroutine(initproc); // 呼叫指令碼的初始化方法
end;
procedure tformmain.n11click(sender: tobject);
begin
loadscript(form1, '1.dfm', '1.psc', 'init');
end;
procedure tformmain.n21click(sender: tobject);
begin
loadscript(form2, '2.dfm', '2.psc', 'init');
end;
end.
堅持學習WF 6 開發可復用的宿主程式
我們之前寫工作流宿主程式一般都是直接寫在program.cs檔案裡,這樣復用性比較差。我們就簡單的寫兩個類,這兩個類主要實現的是對workflowinstance和workflowruntime的封裝。我們以後的例子都會使用這兩個類。serializable public class private...
WPF 主程式合併程式集
但ilmerge不支援wpf程式,下面二步操作即可實現ilmerge一樣的功能,並且是整合在vs開發環境的中。1.將wpf主程式 exe工程 解除安裝,在編輯工程檔案,在xml最後部分新增上下面一段配置 importproject msbuildtoolspath microsoft.csharp....
ollydbg找到主程式入口
通常用ollydbg開啟乙個程式之後,並沒有直接跳到程式主函式入口位址,而是在進行一些初始化工作,這個是需要跳過的。如果上述都不太熟悉的話可以中規中矩的進行單步執行 1.開始之後便一直f8,直到步過下面這個函式 ff15 38804000 call dword ptr ds kernel32.get...