Wurde Anwendung durch Autostart oder manuell gestartet?

Terminator2

Erfahrenes Mitglied
Hallo,

Ich habe mit nun ein eigenes Desktop-Hintergrund-Programm programmiert, welches auch Rücksicht auf die Bildverhältnisse nimmt, damit das Bild nicht gestaucht/gestreckt wird.
Nun habe ich das Programm so in den Autostart eingetragen:
Code:
 My.Computer.Registry.CurrentUser.CreateSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run\").SetValue("Wallpaper Changer", My.Application.Info.DirectoryPath & "\WallpaperChanger.exe")

Wenn das Programm nun beim Autostart geladen wird, soll das Hintergrundbild geändert werden. Wird es allerdings nicht automatisch gestartet, soll das Hintergrundbild erst einmal bestehen bleiben.
Das Wechseln an sich wäre ja nicht das Schlimmste, es ist nur nervig, wenn das Programm bei jedem Systemstart bestehen bleibt. Es soll schließlich beim Systemstart nach dem Wechseln des Hintergrundbildes automatisch geschlossen werden, beim manuellen Öffnen hingegen geöffnet bleiben.


Gruß David
 
Ich glaube eine einfache Möglichkeit ist, wenn Du einen Parameter übergibst. Z.B. in der Form: MeinProg.exe -a
Wenn das Programm gestartet wird wertest Du als erstes den Parameter aus, gibt es ihn, wird das Programm sofort wieder beendet, gibt es ihn nicht, bleibt es offen.
Und beim Autostart-Link gibts Du einfach den Parameter an.

Wäre das eine Lösung?
Ob es möglich ist das Ganze mit Systemmitteln und .NET auszulesen weiss ich ad hoc nicht.

Gruss
..::SD::..
 
Die Idee ist auf jeden Fall gut. Ich denke so wird das auch bei anderen Programmen gemacht. Die Frage ist nur, wie ich das in .NET auslesen kann. Ich werde das gleich mal mit den CommandLineArgs ausprobieren. Damit kann man herausfinden, ob das Programm über eine Datei gestartet wurde.

Gruß David
 
Hi!

Ich hab das eben mal schnell gestestet:

Code:
[STAThread]
static void Main(string[] args)
{
	Application.EnableVisualStyles();
	Application.SetCompatibleTextRenderingDefault(false);

	if (args.Length > 0)
	{
		MessageBox.Show(args[0]);
	}

	Application.Run(new Form1());
}
Der Code oben gilt für eine WindowsForms Anwendung. Bei mir funktioniert das vorzüglich. Wenn kein Parameter angegeben ist, startet die Anwendung, wenn ich einen angebe, wird dieser zuerst in einer MessageBox ausgegeben.

Hoffe es hilft...

Gruss
..::SD::..
 
In C# bekommst du die Startparameter als Argument der Main-Funktion mit.

Code:
static void Main(string[] args)
{
}
 

Neue Beiträge

Zurück