مشکلات عملکردWindowEx را برای برنامه های 32 بیتی در ویندوز 10 ایجاد کنید

در برخی موارد، ویندوز 10(Windows 10) پس از ارتقاء به نسخه جدیدتر، هنگام فراخوانی تابع CreateWindowEx از msctf.dll هنگامی که ویندوز در برخی از برنامه های 32 بیتی ایجاد می شود، باعث خرابی یا مشکلات دیگر می شود . در این پست، ما متوجه خواهیم شد که  تابع CreateWindowEx چیست - علل احتمالی این خطای عملکرد را بررسی می کنیم و سپس راه حل پیشنهادی برای کاهش این مشکل ارائه می دهیم.

آشنایی با عملکرد CreateWindowEx

ایجاد تابع WindowEx

برنامه های ویندوز(Windows) ، از جمله برنامه های دات نت که از Windows Forms یا Windows Presentation Foundation ( WPF ) استفاده می کنند، با فراخوانی توابع CreateWindowExA یا CreateWindowExW پنجره های خود را ایجاد می کنند .

هر دو تابع به صورت داخلی یک تابع مشترک USER32 را فراخوانی می‌کنند که برخی از اعتبارسنجی پارامترها را انجام می‌دهد، مانند سبک‌های پنجره و دسته‌های مشخص‌شده در تماس، ایجاد یک پنجره فرزند MDI در صورتی که سبک پنجره توسعه‌یافته (MDI)WS_EX_MDICHILD مشخص شده باشد و زمینه فعال‌سازی فعلی برای فراخوانی را پردازش کند. نخ. اگر همه چیز در سمت USER32 فراخوانی (USER32-side)CreateWindowEx خوب باشد، سپس به اجرای CreateWindowEx در حالت هسته ( WIN32K ) فراخوانی می‌شود .

هنگام تلاش برای ایجاد یک شی پنجره جدید، CreateWindowEx(CreateWindowEx) وظایف زیر را انجام می دهد:

  • تعیین کنید که آیا ایجاد یک دسته برای شی پنجره جدید از  حد سهمیه دسته کاربر(User) برای فرآیند فراخوانی فراتر خواهد رفت.
  • حافظه را برای شی پنجره جدید از پشته دسکتاپ اختصاص می دهد.
  • حافظه را برای شی پنجره جدید مقداردهی می کند.
  • یک دسته برای شی پنجره جدید در جدول User handle ایجاد می کند.

علل خرابی CreateWindowEx

برخی از شرایطی که می توانند باعث ایجاد مشکل عملکرد CreateWindowEx شوند به شرح زیر برشمرده می شوند:

  • کلاس پنجره مشخص شده وجود ندارد.
  • استفاده از سبک های پنجره نامعتبر یا سبک های پنجره گسترده.
  • استفاده از دسته‌های کاربر(User) نامعتبر ، مانند دستگیره‌های پنجره و دسته‌های منو.
  • تلاش برای ایجاد یک پنجره فرزند بدون تعیین پنجره والد.
  • تلاش برای ایجاد یک پنجره فرزند یا یک پنجره متعلق به و والد/مالک مشخص شده به دسکتاپ متفاوتی نسبت به رشته فراخوان تعلق دارد.
  • ایجاد یک پنجره فرزند یا متعلق به سقف از سقف پنجره تودرتو فراتر خواهد رفت.
  • ایجاد یک شی پنجره جدید از سهمیه دسته برای فرآیند فراخوانی فراتر خواهد رفت.
  • پشته کافی در پشته دسکتاپ برای تخصیص حافظه برای شی پنجره جدید وجود ندارد.
  • هیچ ورودی موجود در جدول دسته کاربر وجود ندارد.(User)

رفع مشکلات عملکرد CreateWindowEx(Fix CreateWindowEx) برای برنامه های 32 بیتی در ویندوز 10(Windows 10)

مایکروسافت(Microsoft) راه حلی برای مشکلات عملکرد CreateWindowEx ارائه کرده است.(CreateWindowEx)

برای حل این مشکل، باید نصب ویندوز 10 خود را به نسخه قبلی برگردانید.

گزینه بازگشت به عقب در ویندوز 10(Windows 10) به مدت 10 روز(10 days) (در بیشتر موارد) پس از ارتقای نصب ویندوز 10 در دسترس است.

این عملیات فایل‌های شخصی شما را نگه می‌دارد، اما برنامه‌ها و درایورهایی را که پس از ارتقا نصب شده‌اند حذف می‌کند و همچنین تغییراتی را که در تنظیمات ایجاد کرده‌اید معکوس می‌کند.

اگر گزینه roll back در دسترس نیست - از فایل‌های شخصی خود نسخه پشتیبان تهیه کنید ، می‌توانید با پشتیبانی IT یا Helpdesk یا پشتیبانی مایکروسافت(Microsoft Support) تماس بگیرید تا دستگاه خود را به نسخه قبلی ویندوز 10(Window 10) بازیابی کنید .

That’s it!

PS : مایکروسافت در حال کار بر روی یک قطعنامه است و در نسخه بعدی ویندوز 10(Windows 10) به روز رسانی را ارائه خواهد کرد.



About the author

من یک کارشناس باتجربه ویندوز 10 و 11/10 هستم که هم در مرورگرها و هم در برنامه های گوشی های هوشمند تجربه دارم. من بیش از 15 سال مهندس نرم افزار هستم و با تعدادی از شرکت های بزرگ از جمله مایکروسافت، گوگل، اپل، یوبی سافت و غیره کار کرده ام. من همچنین توسعه ویندوز 10/11 را در سطح کالج تدریس کرده ام.



Related posts