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

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

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

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

מתוזמן נעוץ נעול הועבר ארכיון code613m
7 פוסטים 3 כותבים 416 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • נתנאלנ מנותק
    נתנאלנ מנותק
    נתנאל
    כתב ב נערך לאחרונה על ידי
    #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

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

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

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