AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi SPI_SETDRAGFULLWINDOWS, aber nur für eigene Anwendung
Thema durchsuchen
Ansicht
Themen-Optionen

SPI_SETDRAGFULLWINDOWS, aber nur für eigene Anwendung

Ein Thema von Bernhard Geyer · begonnen am 14. Sep 2016 · letzter Beitrag vom 14. Sep 2016
 
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: SPI_SETDRAGFULLWINDOWS, aber nur für eigene Anwendung

  Alt 14. Sep 2016, 15:50
Klar geht das

Delphi-Quellcode:
function TMagnetic.SetFullWindowDrag(HWND: DWORD; ShowFullWindow: Boolean): Boolean;

// Aktiviert oder deaktiviert die Anzeige von Fensterinhalten während des
// Ziehens oder der Größenänderung von Anwendungsfenstern.
// Der Rückgabewert gibt Aufschluss darüber, ob der Aufruf zu einer Änderung
// gegenüber der vorherigen Einstellung geführt hat (True) oder nicht (False).

begin
  // Bisherige Einstellung ermitteln:

  result := SystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0, @lOldSetting, 0);
  if result = false then
    // Result := False;
    // Der abfragende Aufruf war nicht erfolgreich
    // (z.B. Windows 95 ohne "PLUS!"-Pack).
    exit; // Rückgabewert bleibt False

  // Eine Aktion ist nur dann notwendig, wenn sich der bisherige
  // vom gewünschten Wert unterscheidet:
  if Bool(lOldSetting) <> ShowFullWindow then
    // Wert ändern und Erfolg prüfen:
    result := SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, Abs(DWORD(ShowFullWindow)), nil,
      SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE);

end;
mach mein TMagnetic wech dann sollte das funktionieren.

Zitat:
In WM_NCLBUTTONDOWN und Co. könnte man dann die Nachricht nicht an DefWindowProc() weiterleiten um somit den Windows-eigenen Drag-Drop-Prozess zu verhindern. Ob das auch die Option abfängt, über die Tastatur ein Fenster zu verschieben, wäre zu testen.
Sorry das ist schlichtweg falsch.

Delphi-Quellcode:
{$REGION 'WM_ENTERSIZEMOVE'}
    WM_EXITSIZEMOVE:
      begin
        if FullDrag then
          SKAERO_MagneticWindow.SetFullWindowDrag(MainApp.Handle, False);
      end;
{$ENDREGION}
Delphi-Quellcode:
{$REGION 'WM_NCLBUTTONDOWN'}
    WM_NCLBUTTONDOWN:
      begin
        IsMoving := TRUE;
        if (wP = HTCAPTION) and FullDrag then
          SKAERO_MagneticWindow.SetFullWindowDrag(MainApp.Handle, True);
      end;
{$ENDREGION}
Zitat:
weil das ein unzuverlässiger Hack ist
Das hat nichts mit einem Hack zu tun.. ich verwende das schon seit Jahren und hatte keine Probleme.
Man muss es nur richtig machen.

Aber ja nebenbei du kannst es deaktivieren aber mit meiner Anwendung würde es wieder aktiviert.
Also eine Dauerhafte Möglichkeit das Auszuschalten wirst du nicht finden.

gruss

Geändert von EWeiss (14. Sep 2016 um 15:59 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:02 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