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 Deskband - Nur einmal starten (https://www.delphipraxis.net/52324-deskband-nur-einmal-starten.html)

Christian Seehase 27. Aug 2005 19:51


Deskband - Nur einmal starten
 
Moin Zusammen,

ich bin gerade dabei ein Deskband zu erstellen, und stehe vor dem Problem, dass sich dieses mehrmals einfügen lässt.
Als Basis habe ich Deskband.h und Deskband.cpp aus dem PSDK übersetzt, desweiteren habe ich zur Dokumentation noch das Beispiel von Euromind herangezogen.
Bei diesem funktioniert das mit dem einzelnen Eintrag der einfach immer umgeschaltet wird.

Viel mehr konnte ich zu dem Thema, auch im PSDK, leider nicht finden.

Kann mir jemand sagen, was ich da machen muss?

Olli 27. Aug 2005 20:35

Re: Deskband - Nur einmal starten
 
Frage: Du willst doch im Prinzip nicht das Deskband nur einmal, sondern vielmehr nur einmal pro Explorer, korrekt? Dann könntest du entweder a.) einen session-lokalen oder b.) einen mit Prozeß-ID "lokalisierten" Mutex (also zB "<MutexName><PID>") erstellen.

Danach prüfst du eben immer, ob der Mutex schon geladen ist (bei der Variante mit der PID bekommst du ja normalerweise die PID des aktuellen Prozesses sehr einfach raus). Denn wie bei allen DLLs, werden ja auch Deskbands normalerweise "gefragt", was sie wollen ... und das ist genau wo du dann nicht "antwortest".

Christian Seehase 27. Aug 2005 20:42

Re: Deskband - Nur einmal starten
 
Moin Olli,

Zitat:

Zitat von Olli
...sondern vielmehr nur einmal pro Explorer, korrekt?

leider nicht korrekt.

Es soll eine erweiterte Schnellstartleiste werden, die die bestehende ersetzen soll.

Der "Witz" ist, dass das Beispiel von Euromind sich wie gewünscht verhält (ein Eintrag im Kontextmenü der Startleiste, der sich als Radiobuttoneintrag verhält), ich aber beim besten Willen keine Stelle ausmachen kann, an der meine Version anders eingebunden wird. :?

Olli 27. Aug 2005 21:08

Re: Deskband - Nur einmal starten
 
Zitat:

Zitat von Christian Seehase
ich aber beim besten Willen keine Stelle ausmachen kann, an der meine Version anders eingebunden wird. :?

Was ist mit der GUID?

Christian Seehase 27. Aug 2005 21:16

Re: Deskband - Nur einmal starten
 
Moin Olli,

die GUID habe ich für mein DeskBand neu generiert.

Olli 27. Aug 2005 21:18

Re: Deskband - Nur einmal starten
 
Weißt du die GUID der echten Schnellstartleiste? Dann könntest du die aus dem Euromind-Beispiel mit dieser vergleichen. Alternativ übernimmst du mal die von Euromind und kompilierst neu und testest das Ganze dann.

Christian Seehase 27. Aug 2005 21:29

Re: Deskband - Nur einmal starten
 
Moin Olli,

da man ja tunlichst die GUIDs aus fremden (Sample)-Sourcen ersetzt, wenn sie denn nicht zum System gehören, hatte ich das schon gemacht.
Das Euromind Beispiel arbeitet also schon mit einer von mir generierten GUID.

Da ich den Eindruck habe, dass das so rübergekommen ist:
Ich hatte nicht die Absicht die Schnellstartleiste durch meine zu überschreiben, sondern es soll nur etwas werden, dass ich ersatzweise nutzen will. Die Originalleiste soll dann also schlicht deaktiviert werden.

Olli 27. Aug 2005 21:34

Re: Deskband - Nur einmal starten
 
Hmm okay.

Zitat:

Zitat von Christian Seehase
Ich hatte nicht die Absicht die Schnellstartleiste durch meine zu überschreiben, sondern es soll nur etwas werden, dass ich ersatzweise nutzen will. Die Originalleiste soll dann also schlicht deaktiviert werden.

So habe ich es nach deiner ersten Klarstellung verstanden. Und der Euromind-Code deaktivert die andere Leiste nicht zB in den Explorer-Einstellungen der Registry? Dort werden doch die Deskbandeinstellungen abgespeichert, soweit ich im Bilde bin.

Christian Seehase 27. Aug 2005 21:48

Re: Deskband - Nur einmal starten
 
Moin Olli,

der Unterschied ist, dass das Euromind-Beispiel auch andere Varianten mit abdecken kann.
Dies wird allerdings über Werte gesteuert, die man vor dem Compilieren entsprechend setzen muss, so dass man es, beispielsweise, auch in den IE einklinken kann.
Als Basis nehmen kann ich das Beispiel leider auch nicht, da sich, dummerweise, der Explorer 100% CPU-Zeit genehmigt, wenn man die neue Leiste auf der Taskleiste soweit verschiebt, dass das Fenster vollständig zu sehen ist.
Da ich hier den Fehler nicht finden konnte (nach Beseitigung der offensichtlichen), habe ich mir dann das original MS-Beispiel mal übersetzt, was soweit auch funktioniert.

[EDIT]
Zu früh [Absenden] erwischt :wall:

Das Euromind-Beispiel tut auch nichts in der von Dir beschriebenen Richtung.
Nach der Registrierung des Deskbands sollte der Rest durch die Shell verwaltet werden.
Die Rückgabewerte, die ich da habe, unterscheiden sich, abgesehen von Grössenangaben, auch nicht.
[/EDIT]

Olli 27. Aug 2005 22:13

Re: Deskband - Nur einmal starten
 
Tut mir leid, in dem Falle weiß ich auch nicht weiter. :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 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