"Desktop anzeigen" per Code [gelöst]

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
LazTester
Beiträge: 8
Registriert: Mi 12. Okt 2011, 19:28

"Desktop anzeigen" per Code [gelöst]

Beitrag von LazTester »

Bin ein "Delphianer" und versuche mich mit Lazarus und FPC anzufreunden. :D Das ist jedoch nicht einfach. Im Moment habe ich das Gefühl, es "fehlt an allen Ecken und Enden". Wie gesagt, es ist ein Gefühl, keine Tatsache. Es hapert angefangen von der Hilfe in Lazarus per F1, über die Unterstützung im Internet, bis zur Suchfunktion in diesem Forum.

An sich bin ich ein Fan von freien Alternativen, so auch von der Möglichkeit, mit Lazarus eine Alternative zu Delphi zu haben. Ich habe mit Delphi (bisTurbo-Delphi = 2006) Erfahrungen, und will nun sehen, ob ich mit dem Wissen zu Lazarus wechseln kann. Bin nun schon eine gute Woche am Testen und ziemlich frustriert. Ich dachte, ich könne mit ein wenig Einarbeitung mein Delphi-Wissen verwenden, und relativ schnell ungefähr an den Wissensstand anknüpfen, den ich mir über Jahre erarbeitet habe. Stattdessen komme ich mir wie ein Anfänger vor, der nach jeder Kleinigkeit fragen muss. Ich bin es gewohnt, mir in vielen Fällen selbst helfen zu können, mit allgemeiner Internetsuche und der Forensuchen. Leider komme ich schon bei einem relativ einfachen Problem nicht weiter. Suchbegriffe waren "System", "Hotkey", "senden", "Desktop", u.a. und in etlichen Kombinationen mit und ohne "+" usw. Ergebnis war entweder "Die folgenden Wörter deiner Suchanfrage wurden ignoriert, da sie zu häufig vorkommen", oder "Es wurden keine Beiträge gefunden, weil das Wort system-hotkey in keinem Beitrag enthalten ist." oder 4 Seiten mit Beiträgen, die nichts mit dem SENDEN von Hotkeys zu tun haben.

Ich würde mich freuen, wenn ihr mir sagen könnt, wie ich das in Zukunft besser angehe. :)

Hier nun zum konkreten Problem:

Ich dachte, als Einstieg in Lazarus (und FPC) nehme ich ein einfaches Projekt in Angriff. In diesem Projekt soll einfach nur auf einen Mausklick reagiert werden, der in einem bestimmten Bereich des Desktops erfolgt (if PtInRect(...) then ...). Dabei soll ein kleiner, rechteckiger Bereich rechts unten neben der System-Uhr überwacht werden, und bei einem Klick in diesen Bereich sollen alle Fenster auf dem Desktop minimiert werden, so wie das unter Windows mit "Win+D" erreicht werden kann. Das ganze wäre so ähnlich wie die Funktion (weiß grad nicht wie die heißt) in Win Vista und 7.

Meine Frage ist: Wie löse ich den Windows-Befehl aus, der alle Fenster minimiert und den Desktop zeigt (= "Win+D")?

LazTester.


Edit: Thread-Title um "[gelöst]" erweitert.
Zuletzt geändert von LazTester am Fr 14. Okt 2011, 15:13, insgesamt 1-mal geändert.

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: "Desktop anzeigen" per Code

Beitrag von u-boot »

Verwende bitte eine externe Suchmaschine. Es soll ja bald soweit sein, dass es eine neue Suchfunktion im Forum geben soll. Ok es soll schon eine Weile bald soweit sein von daher ...
Zu deiner F1-Hilfe ... verwende am besten die "Bibliotheken-Suche" des Forums.

Zu deiner Frage weiss ich nicht die Antwort (Ich verwende schon ne weile kein windoof mehr). Ich frage mich nur, wie man drauf kommt, dass ausgerechnet ein windows-spezifisches Projekt ein einfaches sein soll. Die meisten Leute, die Lazarus verwenden (und von denen ich gehört habe) achten auf Plattformunabhängigkeit.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: "Desktop anzeigen" per Code

Beitrag von Socke »

Willkommen im Forum!
LazTester hat geschrieben:Ich würde mich freuen, wenn ihr mir sagen könnt, wie ich das in Zukunft besser angehe. :)
Was die Suche angeht: Verwende google oder eine andere unabhängige Suchmaschine
LazTester hat geschrieben:Ich dachte, als Einstieg in Lazarus (und FPC) nehme ich ein einfaches Projekt in Angriff. In diesem Projekt soll einfach nur auf einen Mausklick reagiert werden, der in einem bestimmten Bereich des Desktops erfolgt (if PtInRect(...) then ...). Dabei soll ein kleiner, rechteckiger Bereich rechts unten neben der System-Uhr überwacht werden, und bei einem Klick in diesen Bereich sollen alle Fenster auf dem Desktop minimiert werden, so wie das unter Windows mit "Win+D" erreicht werden kann. Das ganze wäre so ähnlich wie die Funktion (weiß grad nicht wie die heißt) in Win Vista und 7.

Meine Frage ist: Wie löse ich den Windows-Befehl aus, der alle Fenster minimiert und den Desktop zeigt (= "Win+D")?
Der Weg, den du zu deinem Ziel beschreitest, wird nur unter Windows funktionieren, da jedes Betriebssystem andere Funktionen für so etwas bereitstellt. Daher hat die Lösung nichts mit den Stärken von Lazarus und dem Free Pascal Compiler (der Plattformunabhängigkeit) zu tun. Die Lösung wird also vermutlich genau so aussehen wie in Delphi oder in C (das ist dann nur eine etwas andere Syntax).

Auf die Schnelle gesucht, finde ich vor allem den Vorschlag alle gerade gezeigten Fenster zu minimieren, siehe ...
Zuletzt geändert von Socke am Do 13. Okt 2011, 14:21, insgesamt 1-mal geändert.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

LazTester
Beiträge: 8
Registriert: Mi 12. Okt 2011, 19:28

Re: "Desktop anzeigen" per Code

Beitrag von LazTester »

@u-boot
u-boot hat geschrieben:Verwende bitte eine externe Suchmaschine. Es soll ja bald soweit sein, dass es eine neue Suchfunktion im Forum geben soll. Ok es soll schon eine Weile bald soweit sein von daher ...
Verstehe ich das richtig, dass die Forensuche, sagen wir mal höflich, unzulänglich ist?

u-boot hat geschrieben:Zu deiner F1-Hilfe ... verwende am besten die "Bibliotheken-Suche" des Forums.
Danke für den Tipp. Wie verwendet man denn die "Bibliotheken-Suche" des Forums? Zusatzfrage: Ich gehe davon aus, dass du weißt, dass mit der F!-Hilfe eine Kontext-sensitive Hilfe gemeint ist, die Information zu einem Begriff unter dem Cusor anzeigt. Funktioniert das somit mit der "Bibliotheken-Suche" des Forums?
u-boot hat geschrieben:Zu deiner Frage weiss ich nicht die Antwort (Ich verwende schon ne weile kein windoof mehr).
Eigentlich ist der Sinn dieses Threads, eine Antwort auf meine Frage zu kennen und mitzuteilen. Deine Antwort hilft soweit also nix. :(

Bitte unterlasse doch die nervigen "Windoof"-Pöbeleien. :wink:

u-boot hat geschrieben:Ich frage mich nur, wie man drauf kommt, dass ausgerechnet ein windows-spezifisches Projekt ein einfaches sein soll. Die meisten Leute, die Lazarus verwenden (und von denen ich gehört habe) achten auf Plattformunabhängigkeit.
Ich verstehe nicht, was du willst: Setzt du hier deine Pöbelei gegen Windows fort? Verstehst du was anderes unter einem einfachen Projekt? (Wenn ja, was?) In welcher Weise, denkst du, soll die Eigenschaft "Windows-spezifisches Projekt" Einfluß darauf nehmen, ob es ein einfaches ist? Was meinst du mit "wie man darauf kommt"? Und was hat das mit meiner Frage damit zu tun, wieviele Leute, die Lazarus verwenden, auf Plattfomunabhängigkeit achten?

Es tut mir leid, aber ich kann absolut nicht erkennen, wie deine Antwort helfen soll. :( Das einzige, was klar zu sein scheint, ist, dass es mir vorrangig, nein sogar konkret, um Windows geht. Das hab ich auch von Anfang an geschrieben.


@Socke
Socke hat geschrieben:Willkommen im Forum!
Danke! *freu* :D

Socke hat geschrieben:
LazTester hat geschrieben:Meine Frage ist: Wie löse ich den Windows-Befehl aus, der alle Fenster minimiert und den Desktop zeigt (= "Win+D")?
Der Weg, den du zu deinem Ziel beschreitest, wird nur unter Windows funktionieren, ...
Hab ich das nicht deutlich genug geschrieben? :oops: Dann tut es mir leid. Ich versuchs nochmal deutlicher: Das Projekt ist spezifisch für Windows gedacht. Was ich suche, ist eine Möglichkeit, den Windows-internen Befehl per Code aufzurufen, mit dem der Desktop angezeigt wird, also alle Fenster werden minimiert. Ein weiterer Aufruf hat die umgekehrte Wirkung: Alle Fenster, die durch den vorherigne Aufruf minimiert wurden, werden wieder restauriert, und zwar in dem WindowState, in dem sie vorher waren und in der Größe wie sie vorher waren. Dieser Befehl kann mit der Tastatur aufgerufen werden, indem man "Win+D" drückt.

Socke hat geschrieben:Daher hat die Lösung nichts mit den Stärken von Lazarus und dem Free Pascal Compiler (der Plattformunabhängigkeit) zu tun.
Richtig, hat nichts mit den Stärken von Lazarus u FPC, oder der Plattformunabhängigkeit zu tun. Ich will ja garnicht so viel, ich will ja weniger! Ich bin schon mit einer Lösung für Windows zufrieden.

Socke hat geschrieben:Die Lösung wird also vermutlich genau so aussehen wie in Delphi oder in C (das ist dann nur eine etwas andere Syntax).

Auf die Schnelle gesucht, finde ich vor allem den Vorschlag alle gerade gezeigten Fenster zu minimieren, siehe ...
  • http://us.generation-nt.com/how-use-win32-api-show-desktop-help-10134252.html
  • http://www.tek-tips.com/faqs.cfm?fid=4263
Leider geht dieser Ansatz an meinem Problem vorbei. Die genannten Codes minimieren und restaurieren alle Fenster in Eigenregie. Das hat nach meiner Erfahrung zusätzlich zu dem Code in den Beispielen noch etlichen Zusatzaufwand zur Folge, um z. B. zu unterscheiden, ob ein Fenster, das sich über den ganzen Bildschirm erstreckt, maximiert ist oder einfach nur so groß wie der Desktop. Oder auch die Reihenfolge (Level) der Fenster, wie diese auf dem Desktop angeordnet sind, z. B. Submost, Topmost, oder dazwischen. Auch sollen keine Fenster restauriert werden, die vorher schon minimiert waren. Die sollen minimiert bleiben.

Was ich suche, ist das Aufrufen der Windows-eigenen Funktion, die dann auch die oben genannte Verwaltung übernimmt.

Dennoch vielen Dank für die genannten Links. :D Vermutlich werde ich diesen Ansatz benutzen und die komplette Fenster-Verwaltung selbst bauen, falls hier niemand wissen sollte, wie der Sys-Befehl "Win+D" per Code aufgerufen werden kann.

LazTester.

Eclipticon
Beiträge: 292
Registriert: Sa 5. Feb 2011, 20:38
OS, Lazarus, FPC: Windows XP VirtualBox (FPC 2.6.4, Laz 1.2.4)
CPU-Target: 32Bit
Wohnort: Wien

Re: "Desktop anzeigen" per Code

Beitrag von Eclipticon »

Ist die bewusste Funktion denn unter Delphi verfuegbar?

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: "Desktop anzeigen" per Code

Beitrag von Socke »

LazTester hat geschrieben:Wie verwendet man denn die "Bibliotheken-Suche" des Forums?
Auf der Portal-Seite gibts unter den aktuellen Threads zwei Such-Felder. In dem entsprechenden Feld gibst du den gesuchten Funktionsnamen ein und du bist fast am Ziel (die Suche ist nicht so genau, aber genau genug, um dein Ziel zu finden). Hier wird auch nur in der Dokumentation der Lazarus Component Library (LCL, entspricht in etwa der Delphi VCL), der Free Pascal Comoponent Libray (FCL, stellt jede Menge nicht-grafische Klassen bereit) und der Runtime Library (RTL, Basisfunktionen, die jedes Programm braucht/brauchen kann) gesucht. Abgesehen von der Lazarus-Dokumentation über die IDE (im Wiki) ist damit alles abgedeckt.
LazTester hat geschrieben:Hab ich das nicht deutlich genug geschrieben?
Doch schon, aber der größte Unterschied zwischen Delphi und Lazarus ist eben die Plattformunabhängigkeit, weshalb sie auch gerne erwähnt wird.

Noch ein paar weitere Ansätze (keine fertigen Lösungen) Das letzte zeigt recht einfach, wie du die Tastenkombination nur mit WinAPI erzeugen kannst; Die Funktionsaufrufe von VB nach Pascal zu übersetzen sollte nicht so schwer sein.
Edit: Noch ein Nachtrag zur Funktion keybd_event(): http://social.msdn.microsoft.com/Forums ... 13cc329ab9" onclick="window.open(this.href);return false;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Re: "Desktop anzeigen" per Code

Beitrag von bembulak »

Willkommen im Forum!

Binde die Unit "Windows" ein, dann:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  hndl : THANDLE;
begin
   hndl := FindWindow('Shell_TrayWnd', '');
   SendMessage(hndl, WM_COMMAND, 419, 0);
end;

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: "Desktop anzeigen" per Code

Beitrag von Socke »

Hast du noch eine Dokumentation zu den Werten und welche Auswirkungen sie haben? Der erste von mir gepostete Link verwendet nämlich anstatt 419 die 415 zum Minimieren und die 416 zum Wiederherstellen...
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

LazTester
Beiträge: 8
Registriert: Mi 12. Okt 2011, 19:28

Re: "Desktop anzeigen" per Code

Beitrag von LazTester »

Eclipticon hat geschrieben:Ist die bewusste Funktion denn unter Delphi verfuegbar?
Ist mir nicht bekannt.


@Socke

Die "Bibliotheken-Suche" des Forums habe ich dank deiner Beschreibung gefunden. Zum Thema "F1-Hilfe" habe ich noch einige Fragen, werde dafür aber einen anderen Thread öffnen.

Socke hat geschrieben:... der größte Unterschied zwischen Delphi und Lazarus ist eben die Plattformunabhängigkeit, weshalb sie auch gerne erwähnt wird.
Das finde ich echt gut! *Daumen-hoch* In dieser Hinsicht bin ich sehr bescheiden und begnüge mich mit den Fähigkeiten für Windows.

Apropos bescheiden: Ich habe auf Anhieb noch andere große Unterschiede bemerkt. Einige schlechte, mit denen ich mich später beschäftige, und einige gute Unterschiede. Einer der wichtgsten ist der Preis: 0,- Euro ist genial. Die Entwicklung schreitet in der IT sehr schnell voran, sodass die letzte kostenlose Delphi-IDE (TurboExplorer von 2006) schon "veraltet" ist. Da ich nicht kommerziell entwickele, habe ich keine Lust (und auch nicht das Geld), mir ständig neue Delphi-IDEs zu kaufen. Mit Win 7 hat es einige Neuerungen gegeben (64 bit, Benutzerkontensteuerung UAC, ...), die es notwendig machen, eine neuere IDE zu kaufen, weil die von vor 5 Jahren fast schon "nutzlos" geworden ist. Da sehe ich in Lazarus einen echten Vorteil, weil da problemlos (weil kostenlos) auf die neueste Version umgestiegen werden kann.

Ein weiterer "kleiner" Unterschied sei noch erwähnt: Lazarus startet extrem schnell und auch die Installation geht flott.


Zurück zum eigenlichen Thema.

Zuerst das weniger Gute: Die meisten deiner Links führen zu Ansätzen, die zum einen nur das Minimieren, aber nicht das "Undo-Minimize" enthalten und immer eine eigene Verwaltung erforden, wie ich das schon vorher beschrieben habe. Zum anderen beziehen sie sich auf das Senden von Tastenanschlägen an das aktive Fenster, was erfahrungsgemäß Ungenauigkeiten beinhaltet, siehe deinen letzten Zusatz-Link:
"Leider gibt es keine verwaltete Methode, mit der man Tastatureingaben an andere Fenster schicken kann, deshalb kommt man in so einem Fall um den nativen API-Aufruf an FindWindow oder SetForegroundWindow nicht herum."
Das Gute: Dein zweiter Link führt zu einer C++ Lösung, die genau das macht, was ich mir vorgestellt habe. Es wird eine Nachricht an das System geschickt (genauer an das Shell_TrayWnd Fenster), die die selbe Windwos-eigene Routine aufruft, wie "Win+D". Dabei wird eine vorhandene Verwaltung aufgerufen, die alles händelt, inklusive Z-Order, Fenster die schon vorher minimiert waren, Fenster die vorher maximiert waren, usw. ... und stellt mit einem zweiten Aufruf (Msg 416) eine Undo-Routine zur Verfügung. :D


@bembulak
bembulak hat geschrieben:Willkommen im Forum!
Danke! *freu* :)

Obwohl in deinem Code-Schnipsel die Undo-Routine fehlt, entspricht deine Lösung dem, was ich wollte. :D Und du hast die Unit zum Einbinden genannt. :wink: Ansonsten ist deine Lösung die gleiche, die Socke in seinem oben beschriebenen zweiten Link gepostet hat.


Somit danke ich euch allen für eure Hilfe! Das Problem kann als gelöst angesehen werden.


Nachtrag: Ich schließe mich dem letzten Posting von Socke an und würde mich über eine Dokumentation der SendMessage-Werte freuen. Die Win-32-API habe ich abgesucht, aber nichts gefunden. Vielleicht sollte man mal eine Sammlung von SendMessage-Werten anlegen!? :wink: (Falls es das noch nicht gibt.) Ich habe auch beide Werte getestet (415 und 419) und beide minimieren alle Fenster ohne einen sichtbaren Unterschied.

LazTester

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: "Desktop anzeigen" per Code

Beitrag von Hitman »

LazTester hat geschrieben:Nachtrag: Ich schließe mich dem letzten Posting von Socke an und würde mich über eine Dokumentation der SendMessage-Werte freuen. Die Win-32-API habe ich abgesucht, aber nichts gefunden. Vielleicht sollte man mal eine Sammlung von SendMessage-Werten anlegen!? :wink: (Falls es das noch nicht gibt.)
SendMessage ist hervorragend dokumentiert: http://msdn.microsoft.com/en-us/library ... s.85).aspx
Alle (Standard-)Messages finden sich hier: http://msdn.microsoft.com/en-us/library ... em_defined

Im konkreten Fall wird WM_COMMAND benutzt: http://msdn.microsoft.com/en-us/library ... s.85).aspx

Wie man dort sieht, bezieht sich der Parameter dafür auf ein Menü; ist also höchst Anwendungsabhängig. Da die Shell (also der Explorer) eine Windows Anwendung ist und nicht Teil der API, ist die Menüstruktur natürlich "intern" und nicht öffentlich dokumentiert (soweit ich weiß). Sicher oder vor allem auch deswegen, weil man das sonst alles über alle Windows Versionen hinweg stabil halten müsste.
Zuletzt geändert von Hitman am Fr 14. Okt 2011, 21:11, insgesamt 1-mal geändert.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: "Desktop anzeigen" per Code

Beitrag von Socke »

Hitman hat geschrieben:Wie man dort sieht, bezieht sich der Parameter dafür auf ein Menü; ist also höchst Anwendungsabhängig.
Vielen Dank, dass du das heraust gesucht hast; bei mir wirds wohl noch was dauern, bis ich wieder unter Windows programmiere, aber vielleicht hilfts ja jemand anderem.
LazTester hat geschrieben:Somit danke ich euch allen für eure Hilfe! Das Problem kann als gelöst angesehen werden.
Vielleicht kannst du noch deinen ersten Beitrag in diesem Thread bearbeiten und den Titel um ein [gelöst] erweitern, dann sieht das jeder direkt in der Übersicht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

LazTester
Beiträge: 8
Registriert: Mi 12. Okt 2011, 19:28

Re: "Desktop anzeigen" per Code

Beitrag von LazTester »

@Hitman

Leider funktionieren deine Links nicht. Würdest du sie bitte korrigieren? :)
Hitman hat geschrieben:Wie man dort sieht, bezieht sich der Parameter dafür auf ein Menü; ...
Leider seh ich da nix. Hab versucht die Links zusammenzusetzen, lande aber auf Seiten, wo ich absolut nichts von SendMessage-Werten finden kann. :(

Die Dokumentation zu SendMessage habe ich gefunden, und die ist echt gut. Das ist aber nicht der Punkt. Die Funktion an sich ist (mir) ausreichend bekannt, ebenso die gebräuchlichsten Messages, die gesendet werden, z. B. WM_COMMAND. Was ich wirklich suche (und seit ein paar Jahren auch sammele), sie die zusätzlichen Werte zu den gesendeten Messages, also WPARAM und LPARAM. Denn eine WM_COMMAND-Msg ohne einen WPARAM-Wert nützt nichts. :(

Danke füe die Mühe, die du dir gemacht hast. :)

LazTester

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2826
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: "Desktop anzeigen" per Code

Beitrag von m.fuchs »

LazTester hat geschrieben:Die Dokumentation zu SendMessage habe ich gefunden, und die ist echt gut. Das ist aber nicht der Punkt. Die Funktion an sich ist (mir) ausreichend bekannt, ebenso die gebräuchlichsten Messages, die gesendet werden, z. B. WM_COMMAND. Was ich wirklich suche (und seit ein paar Jahren auch sammele), sie die zusätzlichen Werte zu den gesendeten Messages, also WPARAM und LPARAM. Denn eine WM_COMMAND-Msg ohne einen WPARAM-Wert nützt nichts. :(
Die findest du in der Liste der Nachrichten (http://msdn.microsoft.com/en-us/library ... p/ms644927" onclick="window.open(this.href);return false;).

In den Detailbeschreibungen der einzelnen Nachrichten sind auch die Parameter beschrieben.

mfg
Michael
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

LazTester
Beiträge: 8
Registriert: Mi 12. Okt 2011, 19:28

Re: "Desktop anzeigen" per Code

Beitrag von LazTester »

Hallo Michael,
m.fuchs hat geschrieben:Die findest du in der Liste der Nachrichten (http://msdn.microsoft.com/en-us/library ... p/ms644927" onclick="window.open(this.href);return false;).

In den Detailbeschreibungen der einzelnen Nachrichten sind auch die Parameter beschrieben.
Scheinbar stehe ich auf dem Schlauch. :oops: Ich finde weder WM_COMMAND noch die zugehörigen WPARAM- und LPARAM-Werte. Kannst du mir helfen?

LazTester

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2826
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: "Desktop anzeigen" per Code [gelöst]

Beitrag von m.fuchs »

Dort findest du auch nicht WM_COMMAND sondern eine Liste mit möglichen Nachrichten (in thematischen Gruppen zusammengefasst).

Dort gibt es dann zum Beispiel Scroll Bar Messages (http://msdn.microsoft.com/en-us/library ... p/ff486023" onclick="window.open(this.href);return false;), eine Liste mit Scrollbar-Nachrichten. Die wiederum enthält unter anderen die Nachricht SBM_SETPOS (http://msdn.microsoft.com/en-us/library ... p/bb787565" onclick="window.open(this.href);return false;) und da stehen wiederum die Beschreibungen der Parameter.

Oder eben auch für WM_COMMAND (http://msdn.microsoft.com/en-us/library ... p/ms647591" onclick="window.open(this.href);return false;).

hth
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten