就是说我把EXE里面的菜单储存在DLL里,调用函数时才取出来
解决方案 »
- 关于TChart图形显示
- 怎么安装fast report4,我用的是DELPHI6
- 用 WriteMemory 写入内存时报错。请高手进来看看。
- 使用ADO遇到的事务问题!请教各位
- 已连续五个通宵,我要再连续六个!请给予鼓励!另求delphi应聘试题
- 有用过ReportMachine做报表的高手请进.
- 奇怪的事情:窗口居然死了………………
- 高手都死了吗?SQL SERVER 读取索引
- DELPHI初级问题-DELPHI做DLL,VB用。
- DCU文件找不着怎么办
- 如何防止NT服務型態的應用服務器在錯誤触發時被關閉?(100分)
- 用过SakeMail做邮件收发程序的弟兄看过来!,救命啊...恩人...
TPluginX = procedure(var Menu: TMainMenu); stdcall;const
X_AddMenuItem = 'AddMenuItem';//与DLL文件中过程名称一致
X_PlugInName = 'Rain.XX';//库文件名称procedure TForm1.LoadPlugInDll(F: TSearchRec);
var
S: string;
I: Integer;
PlugInX: TPlugInX;
begin
I := LoadLibrary(PChar(F.Name));
if I <> 0 then
begin
PlugInX := GetProcAddress(XHandle, X_AddMenuItem);//取得函数指针
if Assigned(PlugInX) then PlugInX(mmX);
end;
end;procedure TForm1.SearchLibrary;
var
F: TSearchRec;
xPath: string;
iFound: Integer;
begin
xPath := ExtractFilePath(Application.ExeName);
try
iFound := FindFirst(xPath + X_PlugInName, 0, F);
while iFound = 0 do
begin
LoadPlugInDll(F);
iFound := FindNext(F);
end;
finally
FindClose(F);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
SearchLibrary;
end;新建DLL文件
File-New-Other-ActiveX-ActiveX Library
Rain.XX(DLL)library Rain;uses
ShareMem, ComServ, Menus;type
TXClass = class
public
procedure MenuItemClick(Sender: TObject);
end;exports
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer;var
XClass: TXClass;procedure TXClass.MenuItemClick(Sender: TObject);
var
mmiX: TMenuItem;
begin
mmiX := NewItem('&New MenuItem', 0, False, True, XClass.MenuItemClick, 0, '');
(Sender as TMenuItem).Add(mmiX);
end;procedure AddMenuItem(var Menu: TMainMenu); stdcall;
var
mmiX: TMenuItem;
begin
mmiX := NewItem('&New MenuItem', 0, False, True, XClass.MenuItemClick, 0, '');
Menu.Items.Add(mmiX);
end;{$R *.RES}
{$E XX}//改变文件扩展名exports AddMenuItem Name 'AddMenuItem';begin
end.