ساخت یوزرو صفحه کلید با کامپیوتر

فقق

Banned
سلام من سوالی داشتم که :من یک نرم افزار کیبرد می سازم و می خواهم وقتی مثال در نوت پد از طریق اون نرم افزار کیبردم متنی را در داخل نوت پد بنویسم خوب این کار انجام نمی شه چون ارتباطی بین صفحه کلید من و نوت پد یا هر برنامه ای دیگر نیست خوب این ارتباط را جه جور برقرار کنم ؟
مثال دیگر من روی مای کامپیوتر فوکس می کنم خوب می خواهم هر وقت روی اینتر در صفحه کلید ساخته شده کلیک کردم مای کامپیوتر باز شود خوب چطور؟؟؟
 

فقق

Banned
یک سوال

من در سایت هایی که داده بودید همچین چیزی را مشاهده کردم private const uint SWP_NOSIZE = 0x0001;
این فقط( 0X0001) به چه معناست ؟؟؟
ممنون از سایتتون مفید بود
التماس دعا
 

the_king

مدیرکل انجمن
من در سایت هایی که داده بودید همچین چیزی را مشاهده کردم private const uint SWP_NOSIZE = 0x0001;
این فقط( 0X0001) به چه معناست ؟؟؟
ممنون از سایتتون مفید بود
التماس دعا

0x0001 همون عدد 1 ئه، 0x پیشوند اعداد مبنای 16 است و هر مقداری که بعد از 0x نوشته بشه در مبنای 16 است
(هگزادسیمال)، 0001 در مبنای 16 همون عدد یک است و بودن و نبودن اون صفر های قبلش تاثیری نداره.

SWP_NOSIZE یک فلگ است (همون مقدار 1) که اگه در توابعی مثل SetWindowPos بکار بره جلوی تغییر دادن اندازه
پنجره رو می گیره، اگر قصد تغییر دادن ابعاد پنجره رو نداشته باشیم برای اطمینان از عدم تغییر سهوی ابعاد پنجره
این فلگ رو اضافه می کنیم.

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

فقق

Banned
در باره عدد

سلام ببخشید من دوباره در این مورد سوال می کنم من بازم هنگ کردم من در مورد 0x0001 این را فهمیدم که عدد 1 است سوال این است این 1 به معنای درست است یا به معنای عدد 1 است مثل 2و3و..../خوب سوال بعدی من این است که اگه عدد است چرا خوب 1 نمی نویسند و دوم کاربرد اینها کجا است من اینها را از کجا می تونم پیدا کنم چون نوشتید مانع از بزرگپنجره می شود ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
 

the_king

مدیرکل انجمن
سلام ببخشید من دوباره در این مورد سوال می کنم من بازم هنگ کردم من در مورد 0x0001 این را فهمیدم که عدد 1 است سوال این است این 1 به معنای درست است یا به معنای عدد 1 است مثل 2و3و..../خوب سوال بعدی من این است که اگه عدد است چرا خوب 1 نمی نویسند و دوم کاربرد اینها کجا است من اینها را از کجا می تونم پیدا کنم چون نوشتید مانع از بزرگپنجره می شود ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

نه منظور از 1 وضعیت True نیست، منظور دقیقا عدد 1 است، بسیاری از توابع API ویندوز پارامتر هایی دارند که
بین چنین گزینه مواردی رو انتخاب می کنه، مثلا تابع ()ShowWindow یک پنجره رو در وضعیتی نشون میده یا
مخفی می کنه، اما اینکه در چه وضعیتی نشون بده توسط یک پارامتر عددی مشخص میشه، مثلا 0 ، 1 ، 2 ، 3
و ... تعداد این وضعیت ها معمولا زیاده، تعداد اینجور توابع هم خیلی خیلی زیاده، حفظ کردن اینکه
هر وضعیت با چه عددی مشخص میشه برای برنامه نویس امکان پذیر نیست، در ضمن اگر در جایی فرضا از وضعیت 4
استفاده بشه نمیشه فوری تشخیص داده که منظور از 4 دقیقا چه وضعیته، باید به راهنما رجوع کرد که وقت گیره
و خوانایی کد هم کم میشه.

به همین جهت برای هر وضعیت یک اسم مشخص تعریف کرده اند که در کد نویسی هم از اون اسم استفاده میشه،
مستقیما از عدد مورد نظر استفاده نمی کنند. مثلا :

کد:
private const int SW_HIDE = 0;
private const int SW_SHOWNORMAL = 1;
private const int SW_SHOWMINIMIZED = 2;
private const int SW_SHOWMAXIMIZED = 3;
private const int SW_SHOWNOACTIVATE = 4;
private const int SW_SHOW = 5;
private const int SW_MINIMIZE = 6;
private const int SW_SHOWMINNOACTIVE = 7;
private const int SW_SHOWNA = 8;
private const int SW_RESTORE = 9;
private const int SW_SHOWDEFAULT = 10;
private const int SW_FORCEMINIMIZE = 11;

راهنمای توابع API هم MSDN مایکروسافته.
 

جدیدترین ارسال ها

بالا