Screensaver: MySettings

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    Screensaver: MySettings

    Hi,

    Ich hab einen Bildschirmschoner programmiert (Fenster im Vollbild, statt .exe -> .scr, Aufruf mit Parametern möglich: /p ### -> Preview im Handle ###, /c Config, /s: Start als Screensaver) und die Einstellungen werden unter Properties.Settings.Default (c#) bzw My.Settings (vb) gespeichert.
    Funktioniert auch soweit gut. Wenn ich den dann allerdings installier und da in den Einstellungen über das System-Fenster für Bildschirmschoner etwas ändere, dann werden diese nur in der Vorschau und beim Testen angewendet und nicht dann, wenn der Schoner wirklich läuft... (da werden die Default Einstellungen angewendet) Kann sich das jemand erklären?

    Sry, wenn das grad völlig Banane klingt, aber ich weiß schon wieder nicht, wie ich mich ausdrücken soll.

    Eigentlich habe ich nur das eine Programm (.scr) auf dem Rechner gefunden (also nicht dass Windows eine Kopie davon gemacht hat und beim Einstellen ein anderes Programm startet als dann in wirklichkeit)
    Also ich hab jetzt nochmal ein altes Projekt von mir rausgekramt, das auf der ScreensaverLib von mir aufbaut. Da lade ich die Einstellungen beim Start der Anwendung und speichere sie beim Schließen des Einstellungs-Fensters.
    Ansonsten greift das Programm nur auf diese geladenen Einstellungen zu.

    Ohne ein genaueres Wissen um den Code wird es schwierig, herauszufinden, woran es liegt.
    Wo rufst Du My.Settings.Load und My.Settings.Save auf?
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    @Sederic Enders:: Die Settings sind andere, wenn Du das Programm von einem anderen Pfad aus startest und wenn Du es umbenennst.
    Finde mal die Settings-XML-Datei und teste, indem Du dort die Werte im Editor änderst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dankeschön.

    Niko Ortner schrieb:

    Da lade ich die Einstellungen beim Start der Anwendung und speichere sie beim Schließen des Einstellungs-Fensters.
    genau, ich auch... Was hast denn du für eine ScreensaverLib? Kann man sich die irgendwo anschauen? :D

    RodFromGermany schrieb:

    Finde mal die Settings-XML-Datei und teste, indem Du dort die Werte im Editor änderst.
    Das sind ja die in der AppData, oder? Da hab genau eine xml liegen, in der die veränderten Einstellungen stehen; also müssten die ja eigentlich auch geladen werden...

    Edit:
    Ich hab jetzt einfach mal das Einstellungsfenster starten lassen, wenn eigentlich der Bildschirmschoner starten soll und hab da dann was verstellt und siehe da, es wurde tatsächlich eine neue Datei angelegt... und zwar auf die art:
    Original Screensaver hat seine Datei im Ordner: ScrName.scr_Url_kryptischeZeichen
    Der Screensaver, der dann in wirklichkeit läuft, hat sein zeug im Ordner: SCRNAM~1.SCR_Url_andereKryptischeZeichen
    Kann sich das jemand erklären?
    Das Problem scheint nicht nur bei mir (Windows 8.1) sondern auch bei Vista aufzutreten...
    Edit:
    Und irgendwie schient es Laut System.IO.File.Exists auch eine Datei C.\Windows\SCRNAM~1.SCR zu geben. Allerdings wenn ich die dann mit System.Diagnostics.Process.Start("explorer.exe", "/e,/select," & "C:\Windows\SCRNAM~1.SCR") öffne, wird trdm die Datei C:\Windows\ScrName.scr im Explorer markiert... :?:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Sederic Enders“ ()

    Sederic Enders schrieb:

    Kann sich das jemand erklären?
    Genau das hab ich gemeint:

    RodFromGermany schrieb:

    Die Settings sind andere, wenn Du das Programm von einem anderen Pfad aus startest und wenn Du es umbenennst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Sederic Enders schrieb:

    Aber das will ich doch gar nicht
    Dann musst Du Dich um Deine eigenen Settings selber kümmern. Nimm z.B. eine DataTable, die kannst Du per dt.WriteXml(PATH) bzw. dt.ReadXml(PATH) ganz easy handeln.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Edit: War auf Post #4 und #5 bezogen.

    @Sederic Enders: Die ScreensaverLib hab ich hier mal veröffentlicht. Ist aber schon etwas älter und müsste mal überarbeitet werden, aber ein Beispielprojekt ist dabei.

    Die My.Settings verhalten sich etwas komisch. Wie RodFromGermany schon erklärt hat, ändert sich der Pfad, in dem die Xml-Datei liegt gerne mal.
    Wenn Du das Problem nicht beheben oder umgehen kannst, solltest Du Dich eventuell selbst um das Speichern der Einstellungen kümmern. Mit Environment.GetFolderPath() bekommst Du den AppData-Ordner. Da nimmst Du einfach einen Unterordner und speicherst eine Xml-Datei drin.
    Huiii, heute wieder Eigenwerbung: ApplicationSettings (siehe Signatur).
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    @Sederic Enders:
    ...oder du schreibst dir einen eigenen SettingsProvider, der sich um deine Bedürfnisse beim Daten halten kümmert und gibst ihn bei den Setting-Eigenschaften bei Provider an.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()