myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Basistechnologien und allgemeine .NET-Klassen » Mit shortcut.exe Verknüpfung erstellen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Mit shortcut.exe Verknüpfung erstellen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Kleba Kleba ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.08.2007
Beiträge: 71
Entwicklungsumgebung: Visual Studio 2008 Pro
Herkunft: Deutschland


Kleba ist offline

Mit shortcut.exe Verknüpfung erstellen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hey Leute!

ich hab da mal eine Frage smile

Ich habe mir die  Shortcut.exe runtergeladen und in mein Projekt mit eingebunden. Damit möchte ich dann eine Verknüpfung in den Autostart auf mein Programm erstellen.

Die Befehle für Shortcut.exe sind folgende:

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Shortcut.exe /F:filename /A:C|E|Q [/T:target] [/P:parameters] [/W:workingdir]
         [/R:runstyle] [/I:icon,index] [/H:hotkey] [/D:description]

 /F:filename    : Specifies the .LNK shortcut file.
 /A:action      : Defines the action to take (C=Create, E=Edit or Q=Query).
 /T:target      : Defines the target path and file name the shortcut points to.
 /P:parameters  : Defines the command-line parameters to pass to the target.
 /W:working dir : Defines the working directory the target starts with.
 /R:run style   : Defines the window state (1=Normal, 3=Max, 7=Min).
 /I:icon,index  : Defines the icon and optional index (file.exe or file.exe,0).
 /H:hotkey      : Defines the hotkey, a numeric value of the keyboard shortcut.
 /D:description : Defines the description (or comment) for the shortcut.

Mein bisheriger Code sieht so aus:

C#-Code:
        public void SetData()
        {
            Process prShortcut = new Process();
            ProcessStartInfo prShortcutinfo = new ProcessStartInfo("shortcut.exe");
            prShortcutinfo.Arguments = String.Format("F:{0} /A:C /T:{1}", app_path, autostart_path +"/Reminder.lnk");

            if (chkAutostart.Checked == true)
            {
                try
                {
                    prShortcut = Process.Start(prShortcutinfo);
                }
                catch (Win32Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
        }

Nun ist in dem Programm eine Checkbox. Wenn die aktiviert ist und die Einstellungen übernommen werden, soll die Verknüpfung in dem Autostart Ordner erstellt werden.

Jetzt ist halt nur die Frage warum er das nicht macht smile Es wird keine Error-Message ausgegeben sondern nur wie gewollt Shortcut.exe gestartet und wieder beendet, aber keine Verknüpfung erstellt.

Habt ihr eine Idee dazu? Übergebe ich die Parameter falsch? Ein Denkanstoß wäre wünschenswert, möchte ja nicht direkt alles vorgekaut bekommen smile

Danke im Voraus
KLeba

P.S.: Ja, ich habe schon nach Lösungen gesucht, aber leider dazu nichts gefunden und ich dachte bevor ich noch ewig und 3 Tage nach einem Fehler suche, frage ich lieber einen Dritten. Manchmal hab ich auch einfach nur ein Brett vor Kopf und sehe die einfachsten Sachen nicht.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Kleba am 25.09.2007 11:43.

Neuer Beitrag 25.09.2007 11:42 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.478
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Kleba,

du solltest dir mal angucken, was shortcut.exe für Ausgaben macht. Dazu kannst du statt shortcut.exe ... einfach cmd.exe /k shortcut.exe ... starten.

Hm, wenn ich jetzt den Code so ansehe, dann sind deine Parameter bei String.Format doch vertauscht.

herbivore
Neuer Beitrag 25.09.2007 11:47 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Kleba Kleba ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.08.2007
Beiträge: 71
Entwicklungsumgebung: Visual Studio 2008 Pro
Herkunft: Deutschland

Themenstarter Thema begonnen von Kleba

Kleba ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat:
Hm, wenn ich jetzt den Code so ansehe, dann sind deine Parameter bei String.Format doch vertauscht.

Oha - du hast recht (wen wunderts?) smile Danke für den Hinweis, werd mal schauen, dass das klappt.

Melde mich dann wieder.
Neuer Beitrag 25.09.2007 12:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Kleba Kleba ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.08.2007
Beiträge: 71
Entwicklungsumgebung: Visual Studio 2008 Pro
Herkunft: Deutschland

Themenstarter Thema begonnen von Kleba

Kleba ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

mir ist gerade noch was aufgefallen.

autostart_path ist bei mir
string autostart_path = Environment.SpecialFolder.Startup.ToString();

aber wenn ich mir den String anzeigen lasse, steht da nur "Startup" drin und nicht der Pfad zu dem Ordner... wieso? Ich dachte wenn ich das so angebe, ist der String gleich der Pfadangabe des Autostartordners?!
Neuer Beitrag 25.09.2007 12:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.478
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Kleba,

Environment.SpecialFolder ist ein Enum. Da kann bei ToString ja nichts anderes herauskommen als der Name des Enum-Elements.

Du willst: Environment.GetFolderPath

herbivore
Neuer Beitrag 25.09.2007 13:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Kleba Kleba ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.08.2007
Beiträge: 71
Entwicklungsumgebung: Visual Studio 2008 Pro
Herkunft: Deutschland

Themenstarter Thema begonnen von Kleba

Kleba ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

So,

hab das jetzt nochmal abgeändert und bekomme jetzt auch die richtige Pfadangabe. Das Problem ist jetzt nur, dass shortcut.exe mir sagt, die PFandangabe wäre invalid (weil leerzeichen im PFad vorhanden sind z.B. bei "\Dokumente und Einstellungen\")

Kann ich die Leerzeichen irgendwie ersetzen oder einzelen Teile/komplett in Anführungsstriche ("") setzen? In der Hilfe dazu steht, dass ich die Anführungszeichen verwenden soll, aber weiss nicht wie ich das in

C#-Code:
prShortcutinfo.Arguments = String.Format("F:{0} /A:C /T:{1}", autostart_path +"\\Reminder.lnk", app_path);

den String bekomme.

Hat dazu jemand eine Idee? Oder ist das nicht machbar? Das Problem ist ja, dass Windows keine Standardvariable für den Autostart-Ordner hat, sonst könnnt ich ja einfach diese übergeben und es würde ohne probleme gehen... aber so?

Ratloser Gruß
Kleba
Neuer Beitrag 25.09.2007 14:01 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.478
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Kleba,

"\"F:{0}\" /A:C \"/T:{1}\""

herbivore
Neuer Beitrag 25.09.2007 14:08 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Kleba Kleba ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.08.2007
Beiträge: 71
Entwicklungsumgebung: Visual Studio 2008 Pro
Herkunft: Deutschland

Themenstarter Thema begonnen von Kleba

Kleba ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Also ich bisn nochmal...

sorry, falls es langsam nervt, aber ich verstehe nicht, was los ist. Der gibt immer an

The parameter "Pfandangabe" is invalid

The syntax of the command is incorrect.

Hier nochmal der Text aus der Readme, ich kann beim besten Willen kein Syntaxfehler entdecken...

Zitat:
Shortcut [Version 1.11]

Creates, modifies or queries Windows shell links (shortcuts)


The syntax of this command is:

Shortcut.exe /F:filename /A:C|E|Q [/T:target] [/P:parameters] [/W:workingdir]
[/R:runstyle] [/I:icon,index] [/H:hotkey] [/D:description]

/F:filename : Specifies the .LNK shortcut file.
/A:action : Defines the action to take (C=Create, E=Edit or Q=Query).
/T:target : Defines the target path and file name the shortcut points to.
/P:parameters : Defines the command-line parameters to pass to the target.
/W:working dir : Defines the working directory the target starts with.
/R:run style : Defines the window state (1=Normal, 3=Max, 7=Min).
/I:icon,index : Defines the icon and optional index (file.exe or file.exe,0).
/H:hotkey : Defines the hotkey, a numeric value of the keyboard shortcut.
/D:description : Defines the description (or comment) for the shortcut.

Notes:
- Any argument that contains spaces must be enclosed in "double quotes".
- If Query is specified (/A:Q), all arguments except /F: are ignored.
- To find the numeric hotkey value, use Explorer to set a hotkey and then /A:Q
- To prevent an environment variable from being expanded until the shortcut
is launched, use the ^ carat escape character like this: ^%WINDIR^%

Examples:
/f:"%ALLUSERSPROFILE%\Start Menu\Programs\My App.lnk" /a:q
/f:"%USERPROFILE%\Desktop\Notepad.lnk" /a:c /t:^%WINDIR^%\Notepad.exe /h:846
/f:"%USERPROFILE%\Desktop\Notepad.lnk" /a:e /p:C:\Setup.log /r:3

Hier nochmal mein (relevanter) Code:

C#-Code:
string autostart_path = Environment.GetFolderPath(Environment.SpecialFolder.Startup);

C#-Code:
        public void SetData()
        {
            Process prShortcut = new Process();
            ProcessStartInfo prShortcutinfo = new ProcessStartInfo("shortcut.exe");
            prShortcutinfo.Arguments = String.Format("\"F:{0}\" /A:C \"/T:{1}\"", autostart_path + "\\Reminder.lnk", app_path);
           // Nur um zu gucken ob der Pfad richtig ausgegeben wird
            string bla = prShortcutinfo.Arguments.ToString();
            MessageBox.Show(bla);
            Clipboard.SetDataObject(bla);
            if (chkAutostart.Checked == true)
            {
                try
                {
                    prShortcut = Process.Start(prShortcutinfo);
                }
                catch (Win32Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
        }
Neuer Beitrag 25.09.2007 15:11 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.478
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Kleba,

/F nicht F

herbivore
Neuer Beitrag 25.09.2007 16:24 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 12 Jahre.
Der letzte Beitrag ist älter als 12 Jahre.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 07.08.2020 15:08