PDA

View Full Version : سوال: نحوه ی کار فارسی نویس



ali-a2
شنبه 21 مرداد 1391, 21:32 عصر
با سلام !

میخواستم بپرسم فارسی نویس ها چجوری عمل می کنند ؟ اگه SendKeys استفاده میشه به چه صورت هستش ؟

ممنون !

the king
شنبه 21 مرداد 1391, 22:27 عصر
با سلام !

میخواستم بپرسم فارسی نویس ها چجوری عمل می کنند ؟ اگه SendKeys استفاده میشه به چه صورت هستش ؟

ممنون !

نه کاری به SendKeys ندارند، نقطه ضعف اصلی اینجور توابع اینه که بافر صفحه کلید (یک حافظه ای که کلید هایی که فشار می دهید رو ثبت می کنه) رو پر می کنند،
اما اینکه کجا این بافر پردازش میشه تحت کنترل شون نیست، فرضا شما دارید در یک TextBox می نویسید و SendKeys هم بافر رو پر می کنه. اگر در همین فاصله
که TextBox داره کلید ها رو یکی یکی از بافر در میاره جای دیگری کلیک کنید، بقیه بافر میره یه جای دیگه پردازش میشه و خدا می دونه ویندوز چه کاری غیر عادی ای
انجام میده.

فارسی ساز ها با توجه به اینکه در برنامه های استاندارد کار بکنند یا مخصوص نرم افزار های خاص باشند کمی متفاوت اند اما معمولا کاری به بافر ندارند،
هر کلیدی یک کد داره، هر وقت یک کلید فشار داده میشه این کد با یک روال استاندارد پردازش میشه و تبدیل میشه به یک کاراکتر.
فشار دادن کلید پیغام WM_KEYDOWN رو ایجاد می کنه و تبدیل شدن کد کلید به کاراکتر پیغام WM_CHAR
هر پنجره ای که داخلش تایپ می کنید ایندو پیغام رو موقع فشار دادن هر کلید دریافت می کنه که در حالت عادی یک پردازش عمومیه.

این ابزار های فارسی ساز این روال پردازش رو زیر نظر می گیرند و داخلش دخالت می کنند، وقتی یک کلیدی مثل A فشار داده شد،
بجای اینکه کاراکتر a رو ایجاد کنند کاراکتر ش رو ایجاد می کنند.

از اونجایی که فونت های True Type و Open Type ای که توی ویندوز استفاده میشه روال چسبان و غیر چسبان بودن حروف رو ذاتا می دانند،
دیگه نیازی نیست که فارسی ساز درگیر چسبان و غیر چسبان بودن کاراکتر ها باشه، خودشون بصورت خودکار هر جا که لازم باشه
حالت های چسبان و غیر چسبان مشابه ﺷ ﺸ ﺶ ﺵ رو ایجاد می کنند. اما در بعضی برنامه های خاص فونت های عادی قابل استفاده نیستند،
اینه که فارسی ساز کارش دشوار میشه، چون باید خودش عبارت رو تفسیر کنه تا بفهمه الان باید حرف چسبان ایجاد کنه یا غیر چسبان.

ali-a2
یک شنبه 22 مرداد 1391, 00:39 صبح
ممنون جناب The King ! یه سری اطلاعاتم تو لینک زیر پیدا کردم !

فارسی نویس (http://barnamenevis.org/showthread.php?345355-%D8%B7%D8%B1%DB%8C%D9%82%D9%87-%DA%A9%D8%A7%D8%B1-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D9%86%D9%88%DB%8C%D8%B3-%D9%87%D8%A7)