Frage

Ich brauche den „Run beim Start von Windows“ zu addieren, zu meinem Programm CintaNotes, will aber nicht die „Reinheit“ davon zu opfern: es ist eine 100% portable Freeware und darf nicht Spuren im System verlassen. Ich habe die Idee kommen automatisch zu erkennen aus der Startup-Verknüpfung ausgeführt wird und in die Taskleiste automatisch minimiert wird. Gibt es eine Möglichkeit, es zu tun? Ich bin mit C ++ und rohem Winapi.

So: - Kein Schreiben in die Registrierung - Keine Befehlszeilenparameter

Danke!

UPD: Die Frage ist nicht, wie in der Taskleiste zu minimieren! Die Frage ist, wie kann in der Regel zwischen Seinem Laufe eines Programm unterscheiden und aus einer Startup-Ordner-Verknüpfung ausgeführt werden, ohne Registrierung und Befehlszeilenparameter.

War es hilfreich?

Lösung

Ihre „Reinheit“ erscheint bestenfalls ein künstliches Konstrukt zu sein. Wenn Sie den Benutzer doch sagen, eine Verknüpfung im Start-up-Ordner zu erstellen, gehst du schon einen Fußabdruck (und, um ehrlich zu sein, gibt es kaum einen Unterschied zwischen „myprog.exe“ und „myprog.exe -m“) . In diesem Fall gibt es einige einfacheren Ansätze als automagically zu erkennen versuchen, wo Sie laufen lassen.

Ich würde einfach eine Menüoption in Ihrem Programm zur Verfügung stellen ( „Install“), die dann die Software auf ein Festplattenverzeichnis installieren würde (wie auf das Flash-Laufwerk im Gegensatz), einschließlich dem erforderlichen Programme Eintrag (Start, Alle Programme, CintaNotes).

Als Teil dieses Prozesses (oder auch nach der Installation), können Sie sie lassen angeben „Mit Windows starten“ und dann legen Sie die Start-up-Ordner-Verknüpfung für den Benutzer mit Befehlszeilenoption so dass das Programm sagen, wenn es so läuft. Es gibt keinen Punkt in so dass „Start with Windows“ es sei denn, das im Programm zur Verfügung (das heißt, auf der Festplatte, nicht das Flash-Laufwerk).

Ihre Benutzer brauchen sich nie darum kümmern, Abkürzungen überhaupt zu schaffen, allein diejenigen mit den Parametern lassen. Und das gibt das Programm die Kontrolle darüber, wie es laufen wird -. Zwei Modi: „installiert“ (und minimiert starten) oder „Laufen ohne erste Installation“ (und starten normal)

So etwas wie das Verzeichnis der ausführbaren Datei zu finden, nicht nur funktionieren, weil das Start-up-Ordner Element, das Ihr Programm startet, ist wahrscheinlich eine Abkürzung, um es zu sein, so dass Sie nicht diesen Weg haben.

Ich denke, dies ein klassischer Fall ist die falsche Frage zu stellen. In der Antwort auf Ihre Frage, sage ich: Nein, es gibt keine Möglichkeit zu sagen, dass Sie habe ohne einige Befehlszeilenparameter von einem Startordner Eintrag ins Leben gerufen worden. Aber ich habe schon falsch gewesen, nur :-) meine Frau fragen. Einige-one sonst kann auch eine Art und Weise kennen.

Dieses bearbeitet ein Hinzufügen seit Kommentare erlauben nicht genügend Platz:

Sie fragen:

  

Was denken Sie nur das Deaktivieren der „Start beim Windows-Start“ -Option, wenn Programm erkennt es aus dem Flash-Laufwerk ausgeführt wird? Ich denke, es gibt eine Möglichkeit, dies zu erkennen.

Das ist eine gute Idee, da es keinen Sinn macht, automatische Ausführung zu ermöglichen, bis es installiert ist (da das Flash-Laufwerk nicht da sein kann). Eine Möglichkeit:

1 / von Flash ausgeführt wird, starten Sie mit „myprog.exe“, da Sie nur doppelt geklickt die ausführbare Datei und Sie in einem normalen Fenster ausgeführt werden. Dies stellt die Option „auf Festplatte zu installieren“, aber nicht „Mit Windows starten“. Im Rahmen des Prozesses installieren, können Sie erlauben, sie die installierte Kopie einzurichten, um „mit Windows-Start“, aber nicht die laufende Kopie.

2 / Ihr installiertes Programm kann als „myprog.exe -i“ eingerichtet werden, laufen, da Sie das Produkt in der Start / Alle Programme erstellen. Dies würde deaktivieren „Install auf Festplatte“, sondern ermöglicht es Ihnen, „Start with Windows“ zu wechseln. Sie können wählen, ob Sie explizit (durch den Benutzer) laufen wollen normal oder minimiert zu starten (siehe (3)).

3 / Die Verknüpfung in StartUp kann "myprog.exe es" sein (wieder, Sie dies kontrollieren, weil Sie es erstellt wird). Dies ist identisch mit (2), aber beginnt minimierte (wenn (2) ohnehin minimiert gestartet, gibt es keinen Unterschied zwischen (2) und (3) und kein Grund für verschiedene Befehlszeilenoptionen).

Auf diese Weise kann jede Option ein anderes Verhalten haben, wie Sie für richtig halten.

Andere Tipps

Auch wenn Sie bereits Solver das Problem haben ich wollte nur sagen, dass es möglich zu erkennen, ob das Programm von Verknüpfung gestartet wurde. Sobald Sie die Verknüpfung Pfad haben, können Sie es vergleichen Ordner zum Start.

Siehe Abschnitt „erkennen, ob eine ausführbare Datei aus einem Short-Cut gestartet wurde "Unter Undocumented Create

Überprüfen Sie die Registrierung für diesen Schlüssel. HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ Currentversion \ Run und einen neuen String-Schlüssel mit dem Pfad Ihrer Anwendung als Wert hinzufügen. und verwenden NOTIFYICONDATA Struktur für Ihre Anwendung auf die Schale zu minimieren.

Warum verwenden Sie kein Argument, um die Anwendung wie minimiert zu starten:

YourProgram.exe -m
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top