Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ChangeDisplaySettings Hooken (https://www.delphipraxis.net/79375-changedisplaysettings-hooken.html)

Luckie 21. Okt 2006 11:38


ChangeDisplaySettings Hooken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich versuche gerade mit dem Beispiel von toms zu API-Hooks http://www.michael-puff.de/dirindex..../Importe/toms/ , ChangeDisplaySettings zu hooken, damit ich mitbekommen, wenn sich die Auflösung ändert und zwar bevor sie geändert wird, damit ich noch die Icon Poitionen sichern kann.

Leider funktioniert mein Demo-Programm nicht, obwohl es eigentlich das Beispiel von toms ist. Ich hänge es hier mal an.

Reinhard Kern 22. Okt 2006 13:58

Re: ChangeDisplaySettings Hooken
 
Zitat:

Zitat von Luckie
Ich versuche gerade mit dem Beispiel von toms zu API-Hooks http://www.michael-puff.de/dirindex..../Importe/toms/ , ChangeDisplaySettings zu hooken, damit ich mitbekommen, wenn sich die Auflösung ändert und zwar bevor sie geändert wird, damit ich noch die Icon Poitionen sichern kann.

Leider funktioniert mein Demo-Programm nicht, obwohl es eigentlich das Beispiel von toms ist. Ich hänge es hier mal an.

Hallo,

ist das nicht unnötig kompliziert? Die Positionen von Icons sollte man doch kennen, oder man kann sie rechtzeitig abfragen, und von der Displayänderung werden sowieso alle benachrichtigt.

Gruss Reinhard

Luckie 22. Okt 2006 22:10

Re: ChangeDisplaySettings Hooken
 
Zitat:

Zitat von Reinhard Kern
Die Positionen von Icons sollte man doch kennen,

Und woher, wenn ich sie nicht vorher speichere? Wenn ich sie beim Programmstart speichere, ok, und wenn er dann ein Icon verschiebt bevor er die Auflösung ändert?

Zitat:

oder man kann sie rechtzeitig abfragen,
Und wie?

Zitat:

und von der Displayänderung werden sowieso alle benachrichtigt.
Aber erst, wenn die Auflösung geändert wurde, dann ist es natürlich zu spät zum Speichern.

Aber wenn du eine einfachere Alternative kennst, ich bin für alles offen.

Reinhard Kern 23. Okt 2006 00:18

Re: ChangeDisplaySettings Hooken
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Reinhard Kern
Die Positionen von Icons sollte man doch kennen,

Und woher, wenn ich sie nicht vorher speichere? Wenn ich sie beim Programmstart speichere, ok, und wenn er dann ein Icon verschiebt bevor er die Auflösung ändert?

Zitat:

oder man kann sie rechtzeitig abfragen,
Und wie?

Zitat:

und von der Displayänderung werden sowieso alle benachrichtigt.
Aber erst, wenn die Auflösung geändert wurde, dann ist es natürlich zu spät zum Speichern.

Aber wenn du eine einfachere Alternative kennst, ich bin für alles offen.

Hallo,

ich denke einfach nach folgender Logik:

A wenn du die Position vorher weisst, existiert das Problem nicht.

B wenn nicht, warum must du es danach dann plötzlich wissen?

m.a.W. wenn der Anwender das Icon verschiebt, weisst du nicht, wo es ist - warum ist dir das vor der Displayumschaltung egal und nachher nicht mehr?

Ich sage ja nicht, dass du keine guten Gründe hast, ich kenne sie nur bisher nicht. Ich persönlich würde das so angehen: wenn ich die Position kennen muss, speichere ich sie von Anfang an - nach einer Displayänderung eben die neue. Einen Hook würde ich ungern dafür aufwenden.

Gruss Reinhard

runger 23. Okt 2006 05:15

Re: ChangeDisplaySettings Hooken
 
Hallo Reinhard,

was für eine überflüssige Diskussion. Er hat eine klare Frage gestellt und erwartet eine klare Antwort.
Hier gibt's bereits einige threads zu diesem Thema, aber nie eine befriedigende Antwort. Das ganze ist zum Beispiel sinnvoll um eine Änderung der Display-Skalierung zu verhindern.

Rainer

Luckie 23. Okt 2006 08:39

Re: ChangeDisplaySettings Hooken
 
Zitat:

Zitat von Reinhard
wenn der Anwender das Icon verschiebt, weisst du nicht, wo es ist - warum ist dir das vor der Displayumschaltung egal und nachher nicht mehr?

Ich muss es vorher wissen, um die Icon-Positionen zu sichern, damit ich sie danach eventuell wieder herstellen kann. Beipsiel: Nehmen wir an du hast viele Icon auf dem Desktop und alle schön angeordnet. Jetzt startest du ein Spiel, welches die Auflösung ändert. Beendest du das Spiel und es stellt die Auflösung wieder zurück, kannst du deine 125 Icons wieder alle neu anordnen. Deswegen muss ich die Positionen vorher sichern können. Und dazu muss ich mitbekommen wann die Auflösung geändert wird, dies abfangen, die Icon-Positionen sichern und dann kann die Auflösung geändert werden.

Aber da shab eich alles schon im ersten Posting erklärt:
Zitat:

Zitat von Luckie
damit ich mitbekommen, wenn sich die Auflösung ändert und zwar bevor sie geändert wird, damit ich noch die Icon Poitionen sichern kann.


Luckie 27. Okt 2006 00:06

Re: ChangeDisplaySettings Hooken
 
Konnte sich das mittlerweile mal jemand näher angucken?

x000x 28. Okt 2006 02:58

Re: ChangeDisplaySettings Hooken
 
Moin moin,
Zitat:

Zitat von Luckie
Konnte sich das mittlerweile mal jemand näher angucken?

Angucken schon, nur obs dir weiterhilft...

In meiner Windows.pas ist ChangeDisplaySettings so deklariert
Delphi-Quellcode:
type
  //TChangeDisplaySettings = function(dwWidth: DWORD; dwHeight: DWORD; dwBpp: DWORD): HRESULT; stdcall;
  TChangeDisplaySettings = function(var lpDevMode: TDeviceMode; dwFlags: DWORD): Longint; stdcall;
Wenn ich die hooke und von einem anderen Programm ChangeDisplaySettings aufrufe, erscheint die
MessageBox --> scheint also zu funktionieren...
Wenn ich allerdings meine Auflösung über Einstellungen Anzeige ändere, erscheint sie nicht.
Kann es vll. sein, dass dabei ChangeDisplaySettings gar nicht aufgerufen wird?

Christian Seehase 28. Okt 2006 03:54

Re: ChangeDisplaySettings Hooken
 
Moin Peter,

seit 98/2000 gibt es noch die Funktion ChangeDisplaySettingsEx, und ich möchte mal stark annehmen, dass das Betriebssystem diese Funktion benutzt, wenn sie vorhanden ist.

x000x 28. Okt 2006 05:36

Re: ChangeDisplaySettings Hooken
 
Moin Christian,

das funktioniert auch nicht. Ich hab mal CounterStrike gestartet, auch dort
lässt sich die MessageBox nicht blicken.
Wie gesagt, aus einem anderen Delphi-Projekt aufgerufen, erscheint sie.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:02 Uhr.
Seite 1 von 2  1 2      

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