דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. C# יצירת קיצור דרך על שולחן עבודה

C# יצירת קיצור דרך על שולחן עבודה

מתוזמן נעוץ נעול הועבר ארכיון code613m
4 פוסטים 2 כותבים 401 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • avrahamA מנותק
    avrahamA מנותק
    avraham
    כתב ב נערך לאחרונה על ידי
    #1

    על פי זה
    http://stackoverflow.com/questions/4897655/create-shortcut-on-desktop-c-sharp
    ייבאתי את הרפרנס בתפריט add reference, וכתבתי כך:

    using IWshRuntimeLibrary;
    
                WshShell wsh = new WshShell();
                IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(
                    Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\filename.lnk") as IWshRuntimeLibrary.IWshShortcut;
                shortcut.Arguments = "";
                shortcut.TargetPath = Environment.CurrentDirectory + "\\filename.exe";
                shortcut.WindowStyle = 1;
                shortcut.Description = "filename";
                shortcut.WorkingDirectory = Environment.CurrentDirectory + "";
                shortcut.IconLocation = Environment.CurrentDirectory + "\\icon.ico";
                shortcut.Save();
    

    במחשב הפיתוח זה עבד כמצופה, וייצר קיצור דרך . אבל כשהעברתי את היישום ארוז למחשב אחר, זה קרס מיד בהפעלה הראשונה. אבל כשביטלתי את השורות הנ"ל הכל עבד. למה זה קורה?
    נ.ב. במחשב שלי יש וינדוס 10, ומחשב השני וינדוס 7, זה יכול להיות קשור?
    תודה מראש!

    פורסם במקור בפורום CODE613 ב02/05/2017 15:28 (+03:00)

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      למה לא ללכוד את השגיאה? עוטפים בtry ובcatch פולטים את השגיאה להודעה או לקובץ (עדיף, כי זה קל לקרוא...).
      אני לא רואה בעיה במבט ראשון, חוץ משורות 7 ו10 שהם "מסוכנות": שרשור נתיב נוכחי עם תוספת של סלש יכול לגרום לנתיב לא חוקי במקרה בו התיקיה בנוכחית היא תיקיית שורש כמו C:\ שאז זה ייתן C:\filename.exe.
      בשביל לפתור את זה תשתמש בPath.Combine:

      Path.Combine(Environment.CurrentDirectory, "filename.exe")
      

      ככה זה יעבוד אפי' בלינוקס 🙂

      פורסם במקור בפורום CODE613 ב03/05/2017 09:47 (+03:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      2
      • avrahamA מנותק
        avrahamA מנותק
        avraham
        כתב ב נערך לאחרונה על ידי
        #3

        רוח הקודש הופיעה בבית מדרשך, זה באמת נתיב לא חוקי...

        System.IO.FileNotFoundException: The filename, directory name, or volume label syntax is incorrect. (Exception from HRESULT: 0x8007007B)
           at IWshRuntimeLibrary.IWshShortcut.Save()
           at projectname.FirstRun.CreateShortcut()
        

        השאלה מה יכול לגרום לזה להיות לא חוקי, לפני הקריסה עשיתי רישום של שני הנתיבים, הקובץ יעד והלינק, ושניהם נרשמו כמו שצריך. וגם שיניתי את היצירה של הנתיב עם פאס' קומביין כך:

        WshShell wsh = new WshShell();
                    IWshRuntimeLibrary.IWshShortcut shortcut = wsh.CreateShortcut(
                        Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) , "projectname.lnk")) as IWshRuntimeLibrary.IWshShortcut;
                        System.IO.File.WriteAllText(Path.Combine(Environment.CurrentDirectory, "first.log"),
                            Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "projectname.lnk")
                            );
                    shortcut.Arguments = "";
                    shortcut.TargetPath = Path.Combine(Environment.CurrentDirectory,  "projectname.exe");
                        System.IO.File.WriteAllText(Path.Combine(Environment.CurrentDirectory, "second.log"),
                            Path.Combine(Environment.CurrentDirectory, "projectname.exe")
                            );
                        shortcut.WindowStyle = 1;
                    shortcut.WorkingDirectory = Path.Combine(Environment.CurrentDirectory, "");
                    shortcut.IconLocation = Path.Combine(Environment.CurrentDirectory, "projectname.exe");
                    shortcut.Save();
        
        C:\Users\usrname\Desktop\projectname.lnk
        C:\Users\usrname\Dropbox\projectname\projectname\bin\Debug\projectname.exe
        

        זה גם לא בעיה של הרשאות, כי הצלחתי לכתוב סתם קובץ טקסט על השולחן עבודה שלו.
        מה עוד יכול להיות :?:

        פורסם במקור בפורום CODE613 ב03/05/2017 14:11 (+03:00)

        תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #4

          יש מצב שזה בעיה בWindows Scripting. לדעתי לך על הדרך השניה, שלישית או הרביעית מהלינק בסטאק.

          פורסם במקור בפורום CODE613 ב03/05/2017 15:06 (+03:00)

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          תגובה 1 תגובה אחרונה
          1

          בא תתחבר לדף היומי!
          • התחברות

          • אין לך חשבון עדיין? הרשמה

          • התחברו או הירשמו כדי לחפש.
          • פוסט ראשון
            פוסט אחרון
          0
          • דף הבית
          • קטגוריות
          • פוסטים אחרונים
          • משתמשים
          • חיפוש
          • חוקי הפורום