[Delphi] Fensterrahmen einer anderen Anwendung entfernen

Stex

Zeta Sagittarii
ID: 54415
L
11 Mai 2006
937
185
Hi,

ich suche im Moment nach einer Möglichkeit, den Rahmen, den Windows um ein Fenster zieht, zu entfernen. Ich finde aber nicht einmal mehr heraus, wie ich das bei meiner eigenen Anwendung zur Laufzeit machen kann, daher wird das auch mit den anderen nichts ^^
Im Grunde genommen möchte ich nur ein Fenster, das nicht zu meiner eigenen Anwendung gehört auf bsnone setzen.

Danke schonmal im Voraus!
 
Ich kenne nur aus anderen Programmiersprachen (z.B Java) setUndecoratet(true) -->ka obs richtig geschrieben ist und ob es dir in irgenteiner Form weiterhilft.

mfg
 
Die WinAPI sieht SetWindowLong() dafür für. Dazu musst du ein Fenster-Handle übergeben, ein Parameter, der angibt, dass du den Fenster-Stil ändern willst und der dritte Parameter, was der neue Stil sein soll (hier dann den alten ohne das WS_BORDER-Flag setzen; GetWindowLong() liefert den aktuellen Stil).

Das Fenster-Handle mit FindWindowEx() ermitteln.

Ich kann zwar kein Delphi, aber wenn ich mich nicht täusche, kann man aus Delphi direkt die API-Funktionen aufrufen.

Mehr Infos zu den Funktionen im MSDN:
https://msdn.microsoft.com/en-us/library/ms632600(VS.85).aspx
https://msdn.microsoft.com/en-us/library/ms633591.aspx
https://msdn.microsoft.com/en-us/library/ms633584(VS.85).aspx
https://msdn.microsoft.com/en-us/library/ms633500(VS.85).aspx
 
@theHacker: Ja, das müsste genau das sein, was ich suche. Das Fensterhandle habe ich, die liegen bereits in einer Liste vor und die Funktion dürfte genau das machen, was ich möchte, danke sehr!
Und ja, von Delphi kann man API-funktionen direkt aufrufen.


Ich brauche das ganze für EverestPoker, da ich die offenen Tische verändern möchte, um Platz zu sparen muss da dann der Rahmen weg.

Edit:
Falls es jemanden interessiert, der endgültige Code war:
oldstyle := getwindowlong(handle ,GWL_STYLE);
SetWindowLong(handle, GWL_STYLE, oldstyle AND NOT WS_CAPTION);

oldstyle ist vom typ variant, geht vermutlich schöner, aber ich weiß nicht, wie ich das Format "long" als Variable speichern soll.
 
Zuletzt bearbeitet:
Laut Google is longint bzw. longword der richtige Typ.

Ich kann das auf der Seite nicht ganz nachvollziehen, wie du auf longword kommst, aber es funktioniert jedenfalls *g*

Allerdings kann ich den Rahmen seltsamerweise nur unter XP ändern, Vista weigert sich... aber das ist da nichts neues, es zaubert mir auch manchmal beim Verschieben von Fenstern mit dem Programm irgendwoher Leerfenster oder maximiert sie mal so, dass man nur noch die unteren 10% des Fensters sieht.

Hast du da Erfahrungen mit?
 
Hast du da Erfahrungen mit?
Ne sorry, Vista hab ich weder als OS in Benutzung, noch viel weniger Erfahrung, wie man es programmiertechnisch bedient.

Ich vermute einfach mal, dass das mit dem neuen Rechte-Management zu tun hat, dass du nicht einfach wild an fremden Fenstern fummeln kannst. Is aber - wie gesagt - nur ne Vermutung.