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?
(Windows) fsStayOnTop für fremde Fenster/Anwendungen
-
- Lazarusforum e. V.
- Beiträge: 395
- Registriert: Sa 15. Mai 2010, 13:46
- CPU-Target: 64 bit
- Kontaktdaten:
-
- 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
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
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
-
- 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
Dazu sei noch gesagt unter DeplhiTreff stehen ne Menge fünktionen wie du freme FensterHandle's rausbekommst...
Code: Alles auswählen
Signatur := nil;
-
- 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
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...
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...
-
- 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
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 ?? )
Schon wird das Programm nicht mehr geschlossen.
Und dann Halt Form1.Hide... (oder Form1.windowsstate := wsminimized ?? )
Code: Alles auswählen
Signatur := nil;
-
- 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
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...
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...