(Windows) fsStayOnTop für fremde Fenster/Anwendungen

Rund um die LCL und andere Komponenten
Antworten
MitjaStachowiak
Lazarusforum e. V.
Beiträge: 395
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

(Windows) fsStayOnTop für fremde Fenster/Anwendungen

Beitrag von MitjaStachowiak »

Hallo,
wer kennt sich mit WinAPI aus? Ich möchte das Fenster einer fremden Anwendung, das ich per FindWindow ermittelt habe, mit fsStayOnTop im Vordergrund halten.

Das Programm DeskPins (http://users.forthnet.gr/pat/efotinis/p ... kpins.html" onclick="window.open(this.href);return false;) macht genau das, nur ich möchte mit meinem Programm nur EIN ganz bestimmtes Fenster im Vordergrund halten und dafür keine Fremdsoftware mitgeben müssen.

Welche Befehle brauche ich dafür?

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: (Windows) fsStayOnTop für fremde Fenster/Anwendungen

Beitrag von Bora4d »

Das müßte dir genügen:
SetWindowPos(HandleVonFenster, HWND_TOPMOST, 0,0, 0,0, SWP_NOMOVE OR SWP_NOSIZE);

Wen du auch Position oder/und größe ändern willst entsprechd SWP_NOMOVE oder/und SWP_NOSIZE entfernen und die für Nullen richtige Werte schreiben.

Hier ist Funktionsbeschreibung:
BOOL SetWindowPos(
HWND hWnd, // handle of window
HWND hWndInsertAfter, // placement-order handle
int X, // horizontal position
int Y, // vertical position
int cx, // width
int cy, // height
UINT uFlags // window-positioning flags
);

http://msdn.microsoft.com/en-us/library ... 85%29.aspx

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: (Windows) fsStayOnTop für fremde Fenster/Anwendungen

Beitrag von MAC »

Dazu sei noch gesagt unter DeplhiTreff stehen ne Menge fünktionen wie du freme FensterHandle's rausbekommst...

Code: Alles auswählen

Signatur := nil;

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 395
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: (Windows) fsStayOnTop für fremde Fenster/Anwendungen

Beitrag von MitjaStachowiak »

Funktioniert bestens, danke.

Vielleicht passt das hier auch noch:
In einem anderen Fall, möchte ich verhindern, dass man ein Fenster über den X-Button von Windows schließen kann (Statt dessen soll es nur versteckt werden - ich habe es schon mit Message-Hooks versucht, ging aber nicht). Kann man stattdessen über einen anderen Befehl diesen Button deaktivieren?

[Edit] Hm, dazu mache ich mal ein neues Thema auf...

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: (Windows) fsStayOnTop für fremde Fenster/Anwendungen

Beitrag von MAC »

Ich weis nicht ob das schon beantworte wurde aber du kannst ganz einfach im OnCloseQuery- Event die mitgelieferte Variable "Canclose" auf False setzen ...
Schon wird das Programm nicht mehr geschlossen.
Und dann Halt Form1.Hide... (oder Form1.windowsstate := wsminimized ?? )

Code: Alles auswählen

Signatur := nil;

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 395
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: (Windows) fsStayOnTop für fremde Fenster/Anwendungen

Beitrag von MitjaStachowiak »

Stimmt, nur geht das nur für eigene Fenster. Ich gehe in letzter Zeit irgendwie immer von Thema zu Thema... Hier kommt das mit dem Schließen eines Fensters:
http://www.lazarusforum.de/viewtopic.php?f=18&t=5120" onclick="window.open(this.href);return false;
Mit den Hooks bin ich nicht wirklich weiter gekommen. Scheint wohl nicht so ohne weiteres zu gehen...

Antworten