全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:709
推到 Plurk!
推到 Facebook!

工作列的數量

尚未結案
kuraki5336
初階會員


發表:13
回覆:35
積分:34
註冊:2010-06-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2016-10-28 16:20:14 IP:114.46.xxx.xxx 未訂閱
Dear All 

以往我們有兩個Form1,Form2 當在Form1 使用 Form2.Show ;

工具列會呈現 1個Form1 的執行 2個窗體

再引用Dll檔的時候就會是多個。

LoadLibrary(PChar( 'xxxxx.DLL'));
@mShowDllFunc := GetProcAddress(mHandle, 'xxxxxx');

這樣在工具列上就會看到多個的樣子,該如何解決。

kuraki5336
初階會員


發表:13
回覆:35
積分:34
註冊:2010-06-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2016-10-29 17:18:52 IP:114.38.xxx.xxx 未訂閱
我把我的範例
VCL Form CALL FMX Form 的DLL 會在FreeLibrary 有奇怪的問題
1. 工具列會呈現兩個應用程式且不會消失....
2. FreeLibrary -> close VclForm 會一直報錯,VCL Form CALL VCL Form 的DLL 就不會有問題。

簡化成簡單的Sample
還請各位高手能指點一下。
https://drive.google.com/file/d/0Bw65pqTUp5t8TXhiMktLVDMwRk0/view?usp=sharing
定義DLL的

unit Unit4;

interface

uses System.SysUtils, Windows, Dialogs;

var
CreateFrame: function:Boolean;
CloseFrame: procedure;
DllHandle : THandle;

function LoadLib : Boolean;
procedure UnloadLib;

implementation

function LoadLib : Boolean;
begin
if DllHandle = 0 then
begin
DllHandle := LoadLibrary(Pchar(GetCurrentDir '\Project3.dll'));

if DllHandle > 0 then begin
@CreateFrame := GetProcAddress(DllHandle,'CreateFrame');
@closeFrame := GetProcAddress(DllHandle,'CloseFrame');
end
else begin
MessageDlg('not found', mtInformation, [mbOK], 0);
end;
end;
Result := DllHandle <> 0;
end;

procedure UnloadLib;
begin
if DLLHandle <> 0 then
begin
FreeLibrary(DLLHandle);
DllHandle := 0;
end;
end;

initialization
LoadLib;

finalization
UnloadLib;
dpr

exports
CloseFrame,
CreateFrame;
系統時間:2024-03-29 14:01:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!