[Delphi] dll z formą w exe

0

Umieściłem w pliku exe moje dll za pomocą dll injection.
W dll jest zrobiona forma.
I kiedy uruchamiam mojego exe'ka najpierw uruchamia się forma z dll i dopiero po jej zamknieciu uruchamia się reszta programu.Ja chcę aby jednocześnie została uruchomiona forma z dll oraz forma z exe.Jak takie cos zrobić?

0

Jaki sens ma zrobienie biblioteki i wrzucenie jej do exe ?
Masz jedną aplikację, a zajmuję 2 razy więcej. Bezsensu.

0

Może się źle wyraziłem.W moich zamiarach jest , żeby biblioteka była osobno ale jedynie była ona wykorzystywana przez exe.Nie musi ona być władowana na siłę w exe.A w niektórych przypadkach się to może przydać,np jak się straciło kod źródłowy programu.Moje pytanie jest co trzeba napisać w bibliotece aby jej forma pracowała równolegle z formą główną programu.

0

Nie wiem czy dobrze kombinuję, ale jeżeli pokazanie jednej formatki po drugiej
formatce nie działa to zrób to może w wątku. A co do przechowywanie dllki - w
exeku programu to ma to czasem sens, jeżeli wszystko chcemy mieć w jednym
pliku, na przykład dołączając bass.dll i mamy - na przykład - zgrabną grę gdzie
wszystkie dane zostały umieszczone w zasobach, a co da się zrobić przy użyciu
modułu dllloader. A co do tego pokazywania formatek to może ktoś, coś więcej
tutaj Tobie doradzi, bo jeżeli chodzi o komunikację między oknami kiedy mamy
dwie aplikacje to do takich rzeczy oczywiście uzywa się komunikatów lub DDE.

0

nigdy nie robiłem wątków w dll.Tworzy się je tak samo jak w normalnym programie?
I w tym wątku ma się znaleŹć to?

  form1 := TForm1.Create(nil);
    Form1.ShowModal;
0

Nie wiem czy to będzie działało jak należy, a wątki masz opisane pod tym adresem:
Wątki - natomiast ja jedynie jak bawiłem
się na próbę w umieszczanie formatek w dllce, to zrobiłem to właśnie w taki sposób:

library dllka;

uses
  Forms,
  Classes,
  unit1 in 'Unit1.pas' {Form1},
  unit2 in 'unit2.pas' {Form2};

{$R dllka.res}

procedure SetAppHandle(AppHandle : integer); stdcall;
begin
  Application.Handle := AppHandle;
end;

procedure ShowForm; stdcall;
var
  Form1 : TForm1;
begin
  Form1 := TForm1.Create(Application);
  Form1.ShowModal;
  Form1.Free;
end;

exports
  SetAppHandle,
  ShowForm;

begin
end.<delphi>
Poniżej wycinek z kodu głownej formatki programu w exe. Chociaż pewnie są też i inne sposoby, a i
nie mam tutaj na myśli ładowania dynamicznego, a nie statycznego, bo to jedno z oczywistych rozwiązan.
<delphi>//...
procedure SetAppHandle(AppHandle : integer); stdcall external 'dllka.dll';

procedure ShowForm; stdcall external 'dllka.dll';

{$R *.dfm}

procedure TForm1.Button1Click(Sender : TObject);
begin
  SetAppHandle(Application.Handle);
  ShowForm;
end;
//...

1 użytkowników online, w tym zalogowanych: 0, gości: 1