בעית עברית בקריאת DLL
-
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 אך לא עוזר.בנוסף, האם יש דרך לשנות את השפה של כל התהליך לעברית? אולי זה יעזור.
-
הפתרון הוא להשתמש בגירסת ה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)
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות