תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    חוקי הפורום

    בעית עברית בקריאת DLL

    תכנות
    1
    2
    241
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגב כנושא
    התחבר בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • מנצפך
      מנצפך נערך לאחרונה על ידי

      C#
      אני משתמש במתודה OpenPrinter.

         [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA",
             SetLastError = true, CharSet = CharSet.Ansi,
             ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
      
              private static extern bool
            OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter,
            out IntPtr hPrinter, IntPtr pDefault); //ref PRINTER_DEFAULTS pd);
      

      זה עובד נפלא, אך כשאני מנסה לפתוח מדפסת עם שם בעברית זה נכשל (שגיאה 1801 : Printer_name_invalid).

      זה קורה רק שאני על משתמש באנגלית. אם המשתמש בעברית זה עובד רגיל.

      מה אפשר לעשות?
      ניסיתי לשנות את ה charset ל -unicode אך לא עוזר.

      בנוסף, האם יש דרך לשנות את השפה של כל התהליך לעברית? אולי זה יעזור.

      תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • מנצפך
        מנצפך נערך לאחרונה על ידי

        הפתרון הוא להשתמש בגירסת הunicode של הפונקציה.

        
                [DllImport("winspool.Drv", EntryPoint = "OpenPrinterW",
               SetLastError = true, CharSet = CharSet.Ansi,
               ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
        
                public static extern bool
              OpenPrinter([MarshalAs(UnmanagedType.LPWStr)] string szPrinter,
              out IntPtr hPrinter, IntPtr pDefault); //ref PRINTER_DEFAULTS pd);
        
        

        (שינו לב לשינוי בין LPWStr ל LPStr)

        תגובה 1 תגובה אחרונה תגובה ציטוט 3
        • 1 / 1
        • פוסט ראשון
          פוסט אחרון
        בא תתחבר לדף היומי!