PDA

View Full Version : ساخت یک کیبرد مجازی



راحله سعادتی
جمعه 12 اسفند 1384, 20:25 عصر
تو Run ویندوز بنویسید OSK

سپس مشاهده خواهید کرد که یک کیبرد مجازی اجرا خواهد شد .

آیا این همه برنامه نویس که اینجا هستند می توانند همچنین چیزی را بنویسند .؟

vcldeveloper
شنبه 13 اسفند 1384, 03:10 صبح
یک حالت ساده از این نوع کیبورد ها را می تونید در آدرس زیر پیدا کنید:
http://www.codeproject.com/useritems/XKeyboard.asp
با استفاده از MS Active Accessibility SDK میشه برنامه ایی مثل MS On-Screen Keyboard نوشت.

Hamid_PaK
شنبه 13 اسفند 1384, 06:55 صبح
علی آقا باز هم گلی به جمال شما ...

راحله سعادتی
شنبه 13 اسفند 1384, 10:34 صبح
یک حالت ساده از این نوع کیبورد ها را می تونید در آدرس زیر پیدا کنید:
http://www.codeproject.com/useritems/XKeyboard.asp
با استفاده از MS Active Accessibility SDK میشه برنامه ایی مثل MS On-Screen Keyboard نوشت.

تو بخش دلفی لینک C را میذارید ؟

ولی به هر حال عالی بود .

تو این سایتی که لینکش را گذاشتید فقط کدهای C پیدا میشه ،؟ آیا دلفی هم داره ؟

vcldeveloper
یک شنبه 14 اسفند 1384, 08:18 صبح
و این سایتی که لینکش را گذاشتید فقط کدهای C پیدا میشه ،؟ آیا دلفی هم داره ؟
نه دلفی نداره - حداقل من ندیدم.
MS Active Accessibility SDK را هم می تونید از سایت مایکروسافت دانلود کنید.

mamizadeh
یک شنبه 14 اسفند 1384, 15:45 عصر
با سلام
خدمت دوست گرامی
این مطلبی را که شما می گیم یه امر سیستمی هستش
و خودتونم که می دونید کارای سیستمس با سی راحت تره از جمله که VC++ با شه ولی اینطوری نیست که دلفی نتونه چون کاری نداریم که توی دلفی نشه نوشت .
ولی در مورد کار با کیبورد در کتاب توابع API انتشارات نص من موردی رودیدم که از توابع خود ویندوز استفاده می کرد و در هر کجا که بودید مثلا اگه دکمه ی A را می زدید رویداد شما رو اجرا می کرد.
خوب از این رو می شه کاری کرد که یه برنامه این این چنین مانند نوشت و برای هر دکمه با این توابع دستوراتی داد که کیبورد را عوض یا جای دکمه ها را تغییر دهد.
ولی توصیه من در این یک مورد و موارد سیستمی و در موارد سخت افزاری اینه که اگه از VC++ سر در می یارید با این برنامه ای کارا را بکونید البته با دلفی هم میشه چون در زمان دانشجویی خواستم واسه رباطی که درست کرده بودم یه کیبوردی را تهیه کنم که به صورت ترکیبی کارهایی رو بکنه و به همین دلیل خواستم کیبورد را طراحی کنم که به پورت سریال بخوره و دو تا خروجی داشته باشه اولی برای مانیتور و برنامه ای که نوشته بودم که عملکرد را بهم بگه و دومی واسه اینکه رباط را تغییر حالت بده خلاصه که فکر کنم این از برنامه ای که شما گفتید بالاتر باشه چون هم باید کاری کرد که برنامه ای مانند osk نوشت که با کیبورد غیر استاندارد کار کنه و هم باید دو تا خروجی داشته باشه .
ما این جور کارا رو نمی گیم .چون اررش گفتن رو نداره ولی اون حرف شما واسه من خیلی که بگین آیا این همه برنامه نویس که اینجا هستند می توانند همچنین چیزی را بنویسند .؟ بنویسید این حرف واسه من کمی سنگینه .....(البته واسه خودم نمی گم ولی فکر کنم کمی این لفظ شما ....)
من به جهنم ولی اینجا دوستانی داریم که خیلی خیلی با شخصیت و دارای علم واقعا تحسین انگیزی هستند.
فکر کنم از دوستان یه عذر خواهی باید بکنید.
ولی در مورد این گفته شما
تو بخش دلفی لینک C را میذارید ؟

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

راحله سعادتی
یک شنبه 14 اسفند 1384, 21:00 عصر
من که چیزی نگفتم .

اگر گفتم معذرت می خوام .

دنیای دلفی
یک شنبه 14 اسفند 1384, 21:39 عصر
به راحتی می توان یک صفحه کلید مجازی نوشت من قبلا نوشتم اگر پیداش کردم UPLOAD می کنم ولی در کل ساده است

vcldeveloper
دوشنبه 15 اسفند 1384, 07:05 صبح
این مسئله ربطی به سیستمی بودن و دلفی یا ++VC نداره. میشه با اضافه کردن خصوصیت WS_EX_NOACTIVATE به Style فرم اصلی برنامه از تغییر Focus صفحه کلید در هنگام فشردن کلیدها در برنامه جلوگیری کرد. با استفاده از پیغام های مختلفی هم میشه کاراکترها را به پنجره مربوطه فرستاد، مثل WM_KEYDOWN, WM_KEYUP, WM_CHAR. اما مشکل این چیزها نیست...
مشکل اینه که برای بدست آوردن هندل پنجره ایی که فوکوس صفحه کلید را داره، نمیشه از توابعی مثل GetFocus یا GetActiveWindow استفاده کرد، این توابع فقط در پنجره های برنامه خودتون کاربرد دارند و نمیشه از شون برای بدست آوردن هندل سایر پنجره ها استفاده کرد. توابعی مثل GetForegroundWindow هم فقط پنجره اصلی یک برنامه را پیدا می کنند و با پنجره های Child کاری ندارند در حالی که باید پیغام های مربوطه به پنجره Child ایی که Focus کیبورد را دارد فرستاده بشند....
برای رفع این مشکل MS Accessibility از رابط COM برای دسترسی به داده های پنجره هایی که اون رابط را پشتیبانی کنند استفاده می کنه (AccClientDocMgr.GetFocused). مطمئن نیستم ولی شاید بشه با استفاده از یک Hook صفحه کلید علاوه بر پیغام های ارسالی، پنجره ایی که پیغام ها را دریافت میکنه را هم پیدا کرد، در اون صورت میشه با ردگیری پیغام هایی مقل WM_KEYDOWN، هندل اون پنچره در سایر Process ها را بدست آورد و براش پیغام ارسال کرد...

MiRHaDi
جمعه 04 فروردین 1385, 21:20 عصر
سلام
تازه با Messaging هم میشه نوشتش ! کار زیاد مشکلی نیست ! هست ؟
بای

MiRHaDi
جمعه 04 فروردین 1385, 21:24 عصر
سلام
البته علی جان فرموده بودند :) اینجا پیامشون بعد از اینکه من پست کردم اومد !! :)
بای

khareh_siah
سه شنبه 08 فروردین 1385, 14:53 عصر
با تابع keybd_event میتونی هر کلیدی رو شبیه سازی کنی حتی نام لوک و کپس لوک

Tarrah
شنبه 19 فروردین 1385, 11:00 صبح
در ادامه بحث یه سوال:
یه فرم دارم که روش webbrowser گذاشتم.وقتی خودم یه کیبورد روی فرم ایجاد می کنم focus فقط رو فرم اصلیه و به edit box های مختلفی که از سایت های مختلف رو webbrowser میاد منتقل نمیشه.چه طور میشه focus رو تغییر داد ؟
یه کارم میشه کرد. اونم ایه که کیبورد خود win رو فراخوانی کرد.در این صورت اگه بخوام بعضی از دگمه هاشو غیر فعال کنم از چه دستوراتی باید استفاده کنم ؟

zjghhdd
سه شنبه 06 آذر 1386, 11:01 صبح
سلام میشه لطف کنید این کد رو برای من ارسال کنید با تشکر

SYNDROME
سه شنبه 06 آذر 1386, 15:23 عصر
سلام میشه لطف کنید این کد رو برای من ارسال کنید با تشکر
به تاریخ آخرین پست نگاه کنید.
موفق باشید