![]() |
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? |
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". |
Re: Deskband - Nur einmal starten
Moin Olli,
Zitat:
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. :? |
Re: Deskband - Nur einmal starten
Zitat:
|
Re: Deskband - Nur einmal starten
Moin Olli,
die GUID habe ich für mein DeskBand neu generiert. |
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.
|
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. |
Re: Deskband - Nur einmal starten
Hmm okay.
Zitat:
|
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] |
Re: Deskband - Nur einmal starten
Tut mir leid, in dem Falle weiß ich auch nicht weiter. :(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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