Shortcut in einer Schleife



  • Hallo ich bin neu hier und habe nicht sehr viel Erfahrung mit C#

    Ich hoffe ihr könnt mir hier helfen.

    Ich möchte gerne in einer Schleife einen Shortcut erstellen.
    1. Geht das? oder kann man nur ein Shortcut erstellen?
    2. Folgender Code: bei einer datei funktioniert es, sobald es aber mehr sind bekomme ich den Fehler System.ArgumentException Zusätzliche Informationen: Der Wert liegt außerhalb des erwarteten Bereichs.

    string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
                                string TargetPathName = gettingFolderPath + Path.GetFileName(array2[i]);
    
                                string linkFileName = new FileInfo(TargetPathName).Name;
    
                                // shortcut path for desktop
                                //string shortcutPath = Path.Combine(desktop, @linkFileName.Substring(0, linkFileName.Length - 4) + ".lnk");
    
                                // shortcut path in current folder
                                string shortcutPath = Path.Combine(gettingFolderPath, @linkFileName.Substring(0, linkFileName.Length - 4) + ".lnk");
    
                                // Throws Exception when more than one file
                                WshShell shell = new WshShell();
                                IWshShortcut link = (IWshShortcut)shell.CreateShortcut(shortcutPath);
                                link.TargetPath = TargetPathName;
                                link.Save();
    

    Seht ihr das Problem?
    Brauche eure Hilfe ich komme einfach nicht mehr weiter.



  • Also das Problem scheint nicht die Schleife zu sein, sondern die kyrillischen/chinesischen etc. Buchstaben.

    Wie kann ich den das Problem lösen?
    habt ihr ein paar Tips nach was ich da suchen sollte?

    ...D-J... schrieb:

    Hallo ich bin neu hier und habe nicht sehr viel Erfahrung mit C#

    Ich hoffe ihr könnt mir hier helfen.

    Ich möchte gerne in einer Schleife einen Shortcut erstellen.
    1. Geht das? oder kann man nur ein Shortcut erstellen?
    2. Folgender Code: bei einer datei funktioniert es, sobald es aber mehr sind bekomme ich den Fehler System.ArgumentException Zusätzliche Informationen: Der Wert liegt außerhalb des erwarteten Bereichs.

    string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
                                string TargetPathName = gettingFolderPath + Path.GetFileName(array2[i]);
    
                                string linkFileName = new FileInfo(TargetPathName).Name;
    
                                // shortcut path for desktop
                                //string shortcutPath = Path.Combine(desktop, @linkFileName.Substring(0, linkFileName.Length - 4) + ".lnk");
    
                                // shortcut path in current folder
                                string shortcutPath = Path.Combine(gettingFolderPath, @linkFileName.Substring(0, linkFileName.Length - 4) + ".lnk");
    
                                // Throws Exception when more than one file
                                WshShell shell = new WshShell();
                                IWshShortcut link = (IWshShortcut)shell.CreateShortcut(shortcutPath);
                                link.TargetPath = TargetPathName;
                                link.Save();
    

    Seht ihr das Problem?
    Brauche eure Hilfe ich komme einfach nicht mehr weiter.



  • Du kannst mal IShellLinkW probieren:
    http://www.pinvoke.net/default.aspx/Interfaces.IShellLinkW



  • Danke werde ich mal probieren.
    Aber ich habe gerade ein etwas anderes Problem.

    Und zwar das encoding auf utf8.

    Habe das hier ausprobiert jedoch sehe ich in meiner console immernoch nur Fragezeichen.

    string cyrillicText = "Мне очень понравилась ваша фотография и письмо";
                byte[] bytes = Encoding.Default.GetBytes(cyrillicText);
                cyrillicText = Encoding.UTF8.GetString(bytes);
                Console.WriteLine(cyrillicText);
                Console.Read();
    

    Weißt du ob ich da noch irgendwelche Einstellungen tätigen muss?

    hustbaer schrieb:

    Du kannst mal IShellLinkW probieren:
    http://www.pinvoke.net/default.aspx/Interfaces.IShellLinkW



  • Zur Anzeige in der Konsole mußt du diese noch auf UTF-8 stellen:

    chcp 65001
    

    s.a. Codepage (Zeichensatztabelle)



  • Okay wie genau mach ich das?
    Sorry habe erst vor paar Tagen damit angefangen, kenne mich noch nicht so gut aus.

    Th69 schrieb:

    Zur Anzeige in der Konsole mußt du diese noch auf UTF-8 stellen:

    chcp 65001
    

    s.a. Codepage (Zeichensatztabelle)



  • In der Konsole eingeben und danach dann dein Programm starten.

    Du kannst aber auch von deinem Programm aus diese Eigenschaft setzen: Console.OutputEncoding



  • Könntest du mir zeigen wie ich mein Code anpassen muss, damit die Ausgabe richtig ist. Ich stehe irgendwie auf dem Schlauch und im Internet was ich so gefunden habe funktioniert auch nicht. Weiß nicht mehr wie ich das Problem noch lösen kann.

    public Class1()
            {
    
                string a = UnicodeToUTF8("АЗУОЫЯЕЁЮИ");
                Console.WriteLine(a);
                Console.Read();
            }
            private string UnicodeToUTF8(string strFrom)
            {
                byte[] bytSrc;
                byte[] bytDestination;
                string strTo = String.Empty;
    
                bytSrc = Encoding.Unicode.GetBytes(strFrom);
                bytDestination = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, bytSrc);
                strTo = Encoding.ASCII.GetString(bytDestination);
    
                return strTo;
            }
    

    Th69 schrieb:

    In der Konsole eingeben und danach dann dein Programm starten.

    Du kannst aber auch von deinem Programm aus diese Eigenschaft setzen: Console.OutputEncoding



  • "А" ist HTML. In C# müsstest du "\u1040" schreiben.
    Und: Wenn du ein anderes Problem hast, dann mach bitte einen anderen Thread auf. Ist doch völlig unübersichtlich so. Und frustrierend für Leute die den Thread-Titel lesen und dir evtl. helfen können/wollen.



  • Okay danke werde ich machen.

    Das liegt nur an dem Editor.
    Normalerweise sollte da kyrillische Buchstaben stehen.

    hustbaer schrieb:

    "А" ist HTML. In C# müsstest du "\u1040" schreiben.
    Und: Wenn du ein anderes Problem hast, dann mach bitte einen anderen Thread auf. Ist doch völlig unübersichtlich so. Und frustrierend für Leute die den Thread-Titel lesen und dir evtl. helfen können/wollen.



  • Console.OutputEncoding = Encoding.UTF8;
    Console.WriteLine("Б");

    ?


Log in to reply