Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Вниз

Способы вызова Dll   Найти похожие ветки 

 
msoftware   (2003-03-24 06:03) [0]

Здравствуйте Мастера! Я знаю 2 способа вызова dll, но во всех моих способах эти библиотеки показываются в панели задач. Как сделать чтобы этого небыло???


 
MPS87   (2003-03-24 06:40) [1]

Неужели никто не знает???


 
Думкин   (2003-03-24 07:51) [2]


> msoftware © (24.03.03 06:03)

Покажи как делаешь.


 
PGM   (2003-03-24 08:51) [3]

Если используешь VCL с формами в DLL то передавай туда Application и создавай формы с помошью переданного Application, а не через Application в DLL.


 
Внук   (2003-03-24 09:41) [4]

Ой... А в Help заглянуть?

When writing a DLL that uses VCL forms, assign the window handle of the host EXE’s main window to the DLL’s Application.Handle property. This makes the DLL’s form part of the host application. Never assign to the Handle property in an EXE.


 
msoftware   (2003-03-24 13:22) [5]

Показываю как делаю:
ниже код Unit"a самой библиотеки:
library wzrdll;
uses
SysUtils,
Classes,
uStep1 in "uStep1.pas" {fStep1},
uStep3 in "uStep3.pas" {fStep2},
uStep2 in "uStep2.pas" {fStep3},
uStep4 in "uStep4.pas" {fStep4};

{$R *.res}
exports
ShowWizard name "showWizard";
begin
end.

Далее, на форме в библиотеке:
...
var
fStep1: TfStep1;
procedure ShowWizard(AOwner: TComponent);
implementation

uses uStep3, uStep2, uStep4;

{$R *.dfm}

procedure ShowWizard(AOwner: TComponent);
begin
fstep1:=TFstep1.Create(AOwner);
fstep2:=TFstep2.Create(AOwner);
fstep3:=TFstep3.Create(AOwner);
fstep4:=TFstep4.Create(AOwner);
fStep1.Show;
end;

...
А ниже уже как вызываю библиотеку:
type TShowWizard=procedure(AOwner: TComponent);
var WzrdLib: THandle;
ShowWizard: TShowWizard;
begin
WzrdLIb:=LoadLibrary("wzrdll.dll");
if WzrdLib<32 then showMessage("Библиотека wzrdll.dll не найдена")
else begin
ShowWizard:=TShowWizard(GetProcAddress(WzrdLib,"showWizard"));
ShowWizard(Application);




 
oomneeq   (2003-03-24 13:47) [6]

Ну если не хочешь хелп читать, и в ShowWizard будешь всегда Aopplication передавать, то вставь одну строчку вот так:
procedure ShowWizard(AOwner: TComponent);
begin
Application.Handle:=TApplication(AOwner).Handle
fstep1:=TFstep1.Create(AOwner);
fstep2:=TFstep2.Create(AOwner);
fstep3:=TFstep3.Create(AOwner);
fstep4:=TFstep4.Create(AOwner);
fStep1.Show;
end;


 
passm   (2003-03-24 13:49) [7]

library ...
...
uses
...
forms,
...
function GetLibAppHandle: HWND; stdcall;
begin
Result:= Application.Handle
end;

procedure SetLibAppHandle(const Handle: HWND); stdcall;
begin
Application.Handle:= Handle
end;

exports
...
GetLibAppHandle,
SetLibAppHandle,
...;

При загрузки DLL запоминай GetLibAppHandle и передавай Handle от приложения SetLibAppHandle(Application.Handle). Перед выгрузкой DLL восстанавливай Application.Handle у DLL.


 
Mystic   (2003-03-24 14:06) [8]

> msoftware ©

А почему не пакеты?


 
PGM   (2003-03-24 14:40) [9]

Если бы передавал как советовали TApplication, а не TComponent и создавал формы через Application.CreateForm не было бы никаких проблем.


 
msoftware   (2003-03-24 14:57) [10]

< passm © (24.03.03 13:49)
Честно говоря нифига, все равно как отдельное приложение показывает. Может быть проблема в том что я запускаю dll из другой dll которая запускается приложением???


 
passm   (2003-03-24 15:06) [11]

msoftware © (24.03.03 14:57)> Наверняка... Попробуй передать Handle: Application -> DLL -> DLL


 
msoftware   (2003-03-24 17:29) [12]

> passm © (24.03.03 13:49)
O zdorovo! rabotaet,dashe bez gethandle oboslos spasibo vot tolko klaviatura russkie bukvi ne rabotayut stalo, pochemu?????


 
msoftware   (2003-03-24 17:43) [13]

pochemu ruskie bukvi ne rabotaut nepoimu?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
3-6365
oss
2003-03-14 13:03
2003.04.03
сложение полей


3-6361
Tornado
2003-03-14 08:04
2003.04.03
Что добавить в дистрибутив?


8-6613
ZEE
2002-12-29 22:33
2003.04.03
Рисование любым цветом на DC


1-6564
[BAD]Angel
2003-03-19 20:13
2003.04.03
Как сделать любое окно виндовс onTOP?


1-6456
mastervigo
2003-03-20 20:11
2003.04.03
автоперенос по словам в Excel-документе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский