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

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

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

רגסטרי של קובץ COM #C

מתוזמן נעוץ נעול הועבר ארכיון code613m
7 פוסטים 3 כותבים 550 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • נתנאלנ
    נתנאלנ
    נתנאל
    כתב ב נערך לאחרונה על ידי
    #1

    שלום וברכה.
    אני כרגע עוסק באיזה פיתוח של תוכנת Winforms, שתעבוד עם אובייקטים של COM, כלומר תוכנה חיצונית שיש לה םספריה שדרכה אפשר לתקשר.
    כבר יומיים אני עומד בבעיה זו:
    במחשב שלי ששם מותקן הVisualStudio אין שום בעיה. אבל ברגע שזה נסגר ועובר למחשב אחר, התוכנה לא פועלת כלל. לאחר העיון ברשת נראה כי צריך לשנות את השמות של הקבצים שעוסקים בזה, במקרה הזה Resources for Visual Basic.tlb. שינוי ידני של סיומת הקובץ הזה לtlb.old גרם לכך שזה יעבוד אצל מחשבים אחרים גם כן.
    מכיון שאני לא יכול לדרוש מכל מי שזה יהיה אצלו על המחשב ללכת ושנות שמות קבצים, אני מנסה לעשות את זה באופן תכנותי.
    נסתי את הקוד הבא:

                    var tlbfiles = Directory.EnumerateFiles(@"C:\Users\", "*.tlb", SearchOption.AllDirectories);
                    foreach (string currentFile in tlbfiles)
                    {
                        string mewfile = (Path.GetDirectoryName(currentFile) + "\\" + Path.GetFileName(currentFile) + ".old");
                                File.Copy(currentFile, Path.GetDirectoryName(currentFile) + "\\" + mewfile + ".old", true);
                    }
    

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

    אחרי זה, הבנתי שאפשר לעשות רגסטרי לקובץ ע"י פקודה בCMD, וכתבתי את הקוד הבא:

     Process p = new Process();
                        p.StartInfo.FileName =  "cmd.exe";
                        p.StartInfo.Arguments = "regtlibv12.exe " +currentFile;
                        p.Start();
    

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

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

    בתודה.
    נתנאל

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

    הצטרפות לרשימת התפוצה בעניני תכנות JS , React , Node וכל מיני דברים מענינים כאן :cool:
    https://programing-tips.web.app/

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

      לאיזה COM אתה מנסה לגשת?

      פורסם במקור בפורום CODE613 ב09/06/2016 11:36 (+03:00)

      תגובה 1 תגובה אחרונה
      0
      • נתנאלנ
        נתנאלנ
        נתנאל
        כתב ב נערך לאחרונה על ידי
        #3

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

        פורסם במקור בפורום CODE613 ב09/06/2016 12:28 (+03:00)

        הצטרפות לרשימת התפוצה בעניני תכנות JS , React , Node וכל מיני דברים מענינים כאן :cool:
        https://programing-tips.web.app/

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

          תעלה לפה פרוייקט קטן לדוגמא שעובד אצלך בויזואל-סטודיו
          אני אנסה אותו אצלי

          פורסם במקור בפורום CODE613 ב09/06/2016 12:43 (+03:00)

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

            אני גם מזועזע כמו רחמים...
            אני גם עבדתי בעבר עם אינדיזיין, והשתגעתי מחוסר תיעוד...
            @נתנאל

            את הקטע הזה שצריך לשנות את סיומת הקובץ למדתי בStockOverflow את הדרך לעשות זאת עליתי על זה בעצמי. בלי קשר אני חושב שזאת הדרך לשנות סיומות קבצים.

            תן לינק לstackoverflow לקט של שינוי השם, חשוב לי לראות.

            פורסם במקור בפורום CODE613 ב09/06/2016 12:45 (+03:00)

            • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
            • בכל נושא אפשר ליצור קשר dovid@tchumim.com
            תגובה 1 תגובה אחרונה
            0
            • נתנאלנ
              נתנאלנ
              נתנאל
              כתב ב נערך לאחרונה על ידי
              #6

              הקבצים המצורפים הם לאינדי לפי גרסא. צריך שיהיה מסמך פתוח באינדי לפני שמפעילים את זה.
              זה לרסגטרי של הפעלה אקטבית - הדרך השניה שלי.

              וכאן זה הדרך הראשונה של שינוי השם:

              indeTagCodeCS6.rar
              indeTagCodeCS5.rar

              פורסם במקור בפורום CODE613 ב09/06/2016 13:01 (+03:00)

              הצטרפות לרשימת התפוצה בעניני תכנות JS , React , Node וכל מיני דברים מענינים כאן :cool:
              https://programing-tips.web.app/

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

                ממש כואב הראש.
                לך על הדרך של הregtlibv12.
                תכתוב ככה:

                var p = new Process();
                p.StartInfo.Arguments = currentFile;
                p.StartInfo.FileName = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() + "regtlibv12.exe";
                if (!p.Start())
                {
                	//לא הצליח
                }
                

                פורסם במקור בפורום CODE613 ב09/06/2016 19:20 (+03:00)

                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                תגובה 1 תגובה אחרונה
                1

                שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

                נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

                בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                הרשמה התחברות
                תגובה
                • תגובה כנושא
                התחברו כדי לפרסם תגובה
                • מהישן לחדש
                • מהחדש לישן
                • הכי הרבה הצבעות


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

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

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