Einzelnen Beitrag anzeigen

goose33

Registriert seit: 26. Okt 2004
Ort: Merseburg
49 Beiträge
 
#1

Form aus DLL in fremden Programm ?

  Alt 29. Aug 2005, 11:38
Hallo,

folgendes Problem :

Ich hab ne Anwendung ( FS2004 ) in der ich ein Fenster erstellen möchte.
Das ganze geht über sogenannte Module ( das sind für den FS DLL's ).
Das geht soweit, das ich ein neues Menü im FS habe aus dem ich auf meine DLL
zugreifen kann.
In der initialisierung der DLL erstelle ich mein Fenster.
Das geht eigentlich auch soweit, nur das das Fenster

1. keinen Taskbareintrag haben soll
2. beim minimieren des FS auch minimiert werden soll.

Soweit ich das verstanden habe sollte das mit CreateParented gehen.
Geht eigentlich auch, nur das mein Fenster immer hinter allen anderen Fenstern ist, also
ich das nie sichtbar bekomme.
Es ist da, das ist sicher, denn wenn man ein anderes Fenster des FS schnell hin und herschiebt, dann
sieht man mein Fenster im Hintergrund und dann is es wieder hinter dem anderen Fenster verschwunden.

Ich hab also folgendes versucht : ( ich hab alles was ich so versucht habe in der Procedure stehen gelassen.)

Code:
library Project1;

uses
  Windows,
  Messages,
  Forms,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  module,
  Unit1 in 'Unit1.pas' {Form1};

procedure ModuleInit; stdcall;
var
  HFSimWindow: HWND;
begin
  HFSimWindow := FindWindow('FS98MAIN', nil);
  Form1 := TForm1.CreateParented(HFSimWindow);
  //Form1 := TForm1.Create(Application);
  //Form1.ParentWindow := HFSimWindow;
  Form1.BringToFront;
  //SetWindowPos(Form1.Handle, HFSimWindow, 0, 0, 0, 0, SWP_NOSIZE + SWP_NOZORDER );
  SetWindowPos(Form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE);
  //Form1.FormStyle := fsStayOnTop;
end;

.
.
.
// hier wird eigentlich das fenster angezeigt
  procedure DoMenu;
  begin
    Form1.Show; // hier auch schon x - Möglichkeiten versucht
    SetWindowPos(Form1.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE );
  end;

// hier die unit1
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
Also ich hab da noch verschiedene andere möglichkeiten ausprobiert und nix ging.
Jetzt bin ich Ratlos und hoffe einer von Euch kann helfen?

Vielen dank Euch !!!

Matthias
  Mit Zitat antworten Zitat