Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm als DesktopHintergrund @ Windows (https://www.delphipraxis.net/24631-programm-als-desktophintergrund-%40-windows.html)

supermuckl 23. Jun 2004 18:38


Programm als DesktopHintergrund @ Windows
 
geht es das ich ein programm als Hintergrund nehme ? also nicht als bild oder als webseite sondern als richtiges proggi mit oberfläche..

mit tricks wärs vielleicht möglich ein vollbild prog als most bottom level unter all die anderen fenster zu knallen.. aber wenn man draufklickt sollte es dann auch nicht in den vordergrund kommen *g* also sowas wie OnTop blos umgedreht ( OnBottom )

MrKnogge 23. Jun 2004 18:40

Re: Programm als DesktopHintergrund @ Windows
 
Mit der Enterprise-Version ist es doch möglich Web-Andwendungen zu programmieren, die könntest du dann eventuell über den ActiveX-Bldschirm laufen lassen.

supermuckl 23. Jun 2004 18:41

Re: Programm als DesktopHintergrund @ Windows
 
ich sag ja.. nicht als webseite

neolithos 23. Jun 2004 18:46

Re: Programm als DesktopHintergrund @ Windows
 
Man kann auch den Parent deines Hauptfenster's auf den des Desktop's setzen.

supermuckl 23. Jun 2004 18:48

Re: Programm als DesktopHintergrund @ Windows
 
das parent der elemente die auf dem form sind oder dem form sein parent ? ( is doch schon der desktop oder? ^^ )

jedenfalls.. müsste ich ja erstmal das handle des hintergrunds rausbekommen und das dann irgendwie meinem proggi zuweisen?

wüsste ich jetzt beides nich wie das geht O_O

ok.. form1.parent := desktophandle; so ?

:cheers:

NicoDE 23. Jun 2004 18:52

Re: Programm als DesktopHintergrund @ Windows
 
Zitat:

Zitat von supermuckl
aber wenn man draufklickt sollte es dann auch nicht in den vordergrund kommen *g* also sowas wie OnTop blos umgedreht ( OnBottom )

Überschreibe die CreateParams der Form und setze nach dem Aufruf der geerbten Funktion den Parent auf GetDesktopHandle() und das Child-Flag.

supermuckl 23. Jun 2004 18:59

Re: Programm als DesktopHintergrund @ Windows
 
öhm das is mir ein bisschen hoch.. mit überschreiben von funktionen hab ich noch nix gemacht :(

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.CreateParented(GetDesktopWindow);
end;

das sagt mir übrigends:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project2.exe ist eine Exception der Klasse EComponentError aufgetreten. Meldung: 'Komponente mit der Bezeichnung Button1 existiert bereits'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

naja ^^ mal gucken wie das mit dem überschreiben tut

supermuckl 23. Jun 2004 19:03

Re: Programm als DesktopHintergrund @ Windows
 
* null peilung *

Delphi-Quellcode:

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure CreateParams(Params: Tcreateparams);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure Tform1.CreateParams(Params: Tcreateparams);
begin
inherited create(nil);
form1.Parent := GetDesktopHandle; // will er nich - undefinierter bezeichner GetDesktopHandle
end;

end.

NicoDE 23. Jun 2004 19:04

Re: Programm als DesktopHintergrund @ Windows
 
Zitat:

Zitat von supermuckl
mal gucken wie das mit dem überschreiben tut

Erst Suchen, Dann Fragen :D
(such nach Beiträgen die 'CreateParams' enthalten und von 'NicoDE' geschrieben wurden)

Nicodius 23. Jun 2004 19:10

Re: Programm als DesktopHintergrund @ Windows
 
getdesktophandle gibt es echt nicht (in welcher unit?)

supermuckl 23. Jun 2004 19:12

Re: Programm als DesktopHintergrund @ Windows
 
jep .. gefunden..
aber das form lässt sich noch bewegen.. allerdings gibts kein refresh wärend dem bewegen.. nur beim loslassen
und ich kann auf einen button wo auf form1 steckt nich klicken ( wird aber angezeigt..)
also so ganz is das wohl nich aufm desktop ?!

NicoDE 23. Jun 2004 19:12

Re: Programm als DesktopHintergrund @ Windows
 
Zitat:

Zitat von Nicodius
getdesktophandle gibt es echt nicht (in welcher unit?)

Stimmt, hab mich eben verschrieben :roll:
Der Quelltext, welcher über die Suche zu finden ist, ist korrekt...

edit: ich habe extra auf die Nebenwirkungen hingewiesen... sprich es ist/wäre eine Menge Arbeit, bis es so funktioniert, wie derjenige sich das vorgestellt hat (von Tests auf anderen Systemen mit anderen Windows/Shell-Versionen, anderen Desktop-Einstellungen und mit verschiedenen Delphi/VCL-Versionen mal ganz abgesehen).

supermuckl 23. Jun 2004 19:14

Re: Programm als DesktopHintergrund @ Windows
 
hab den code:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Classes, Controls, Forms, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
  private
    { Private declarations }
  public
    { Public declarations }
    procedure CreateParams(var Params: TCreateParams); override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  // inherited first!
  inherited CreateParams(Params);
  // only for testing purposes...
  if (Params.WndParent = Application.Handle) then
  begin
    // child window of the desktop window
    Params.WndParent := GetDesktopWindow();
    Params.Style := Params.Style or WS_CHILD;
  end;
end;

end.
der button is unklickable

NeoXX 24. Jun 2004 01:25

Re: Programm als DesktopHintergrund @ Windows
 
Wie wär's mit folgendem:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, Classes, Controls, Forms, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure AppMsg(var Msg: TMsg; var Handled: Boolean);
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AppMsg(var Msg: TMsg; var Handled: Boolean);
begin
  SetWindowPos(Self.Handle, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnMessage := AppMsg;
end;

end.
...flackert zwar n' bissl wenn Du das Hintergrundfenster anwählst, weil er das Fenster erst nach vor und dann wieder nach hinten setzt, funzt aber - auch mit dem ButtonClick :zwinker:

supermuckl 24. Jun 2004 01:36

Re: Programm als DesktopHintergrund @ Windows
 
gute idee.. blos wie wärs wenn man erst garnicht zulässt das es in den vordergrund kann ? das is doch auch nur eine WM_loskommraus die an das fenster geschickt wird sobald ich es mit der maus anklicke ?!

NeoXX 24. Jun 2004 22:49

Re: Programm als DesktopHintergrund @ Windows
 
wie wär's damit :zwinker:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Windows.SetParent(Form1.Handle, FindWindow(Nil, 'Program Manager'));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz