Fa کیبورد مجازی

kc_nitro

Member
با سلام
برای ساخت کیبورد مجازی تو mmb چی کار باید انجام داد؟
تو انجمن سرچ کردم و مشابه این سوالو دیدم ولی پاسخ کاملی پیدا نکردم
لطفأ با ذکر یه مثال عنوان کنید
با تشکر
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
اگر قصد دارید که از کیبورد مجازی در خود برنامه استفاده کنید (و نه مثلاً در Notepad ویندوز)، میتونید از پلاگین SysMetrics کمک بگیرید.
در غیر اینصورت میتونید از برنامه ی AutoIt استفاده کنید که خیلی کاملتر هم هست. البته این برنامه یک نسخه ی DLL بنام AutoItX داره که از اون هم میشه استفاده کرد (با کمک پلاگین MMBDLL برای ارتباط با AutoItX)
 

kc_nitro

Member
اگر قصد دارید که از کیبورد مجازی در خود برنامه استفاده کنید (و نه مثلاً در notepad ویندوز)، میتونید از پلاگین sysmetrics کمک بگیرید.
در غیر اینصورت میتونید از برنامه ی autoit استفاده کنید که خیلی کاملتر هم هست. البته این برنامه یک نسخه ی dll بنام autoitx داره که از اون هم میشه استفاده کرد (با کمک پلاگین mmbdll برای ارتباط با autoitx)

با سلام
ضمن سپاس از حسن توجه شما ممنون میشم اگه با ذکر یه مثال ساده مطلب رو بیان میکردید
داخل خود برنامه استفاده میشه
با تشکر
 

Xowom

Member
من نرم افزار AutoIt نسخه ی DLL رو دارم. ولی نمی دونم چطور میشه کیبورد مجازی باهاش درست کرد. لطفا یه مثال هم برای AutoIt بذارین. خیلی ممنون ....
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر

با سلام
ضمن سپاس از حسن توجه شما ممنون میشم اگه با ذکر یه مثال ساده مطلب رو بیان میکردید
داخل خود برنامه استفاده میشه
با تشکر

یک مثال که قبلاً دانلود کرده بودم رو براتون پیوست کردم.

من نرم افزار AutoIt نسخه ی DLL رو دارم. ولی نمی دونم چطور میشه کیبورد مجازی باهاش درست کرد. لطفا یه مثال هم برای AutoIt بذارین. خیلی ممنون ....
ببینید، AutoIt و پیرو اون AutoItX دستوری داره بنام Send که وظیفه ش ارسال Keystroke هست (به پنجره ی فعال)
میتونید از این تابع استفاده کنید
برای فراخوانی یک تابع از یک DLL دیگه (نه پلاگین MMB)، از پلاگین MMBDLL استفاده کنید، در واقع کار این پلاگین ارتباط دادن MMB با سایر DLL ها هست.
 

پیوست ها

  • virtual_keyboard.rar
    17.9 کیلوبایت · بازدیدها: 82

kc_nitro

Member
یک مثال که قبلاً دانلود کرده بودم رو براتون پیوست کردم.


ببینید، AutoIt و پیرو اون AutoItX دستوری داره بنام Send که وظیفه ش ارسال Keystroke هست (به پنجره ی فعال)
میتونید از این تابع استفاده کنید
برای فراخوانی یک تابع از یک DLL دیگه (نه پلاگین MMB)، از پلاگین MMBDLL استفاده کنید، در واقع کار این پلاگین ارتباط دادن MMB با سایر DLL ها هست.

با سلام
ممنون بابت مثالتون، البته نود، پلاگینشو به عنوان تروجان میشناسه ولی مفهوم بود،
آموزش برای دستور send تو Autoit که فرمودید یا یک نمونه مثال یا کلأ آموزش فارسی برای این برنامه هست؟
با تشکر
 

msnv

Well-Known Member

آموزش برای دستور send تو Autoit که فرمودید یا یک نمونه مثال یا کلأ آموزش فارسی برای این برنامه هست؟
با تشکر


سلام،
AutoIt یک برنامه آزاد است و حاوی بسیاری نمونه همراه، از جمله نمونه هایی در رابطه آموزش دستور Sendkeys و کنترل صفحه کلید و ارسال کلید،
در کل برنامه مفیدی هست، برای دانلودش به لینک زیر مراجعه کنین:

www.autoitscript.com

موفق باشید
یا علی
 

kc_nitro

Member
سلام،
autoit یک برنامه آزاد است و حاوی بسیاری نمونه همراه، از جمله نمونه هایی در رابطه آموزش دستور sendkeys و کنترل صفحه کلید و ارسال کلید،
در کل برنامه مفیدی هست، برای دانلودش به لینک زیر مراجعه کنین:

www.autoitscript.com

موفق باشید
یا علی

با سلام
تقریبأ همه نمونه هاشو چک کردم ولی اونی رو که میخواستم پیدا نکردم، لطفأ اسم اون نمونه ها رو بگید یا یک نمونه اینجا قرار بدین
با تشکر
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
شما اگر در راهنمای AutoIt عبارت Send رو جستجو کنید، توضیحات کامل این دستور رو میتونید مطالعه کنید.
علاوه بر این در پوشه ی Examples، چند فایل با نام های Calculator، Notepad 1 و Notepad 2 وجود داره که در اونها از دستور Send استفاده شده.
 

kc_nitro

Member
شما اگر در راهنمای AutoIt عبارت Send رو جستجو کنید، توضیحات کامل این دستور رو میتونید مطالعه کنید.
علاوه بر این در پوشه ی Examples، چند فایل با نام های Calculator، Notepad 1 و Notepad 2 وجود داره که در اونها از دستور Send استفاده شده.

با سلام
واقعأ ممنون، کاملأ متوجه شدم چطوریه، حالا میمونه طریقه استفاده از این دستورات مثلأ:
کد:
Send("a")
برای یک دکمه تو mmb توسط MMBDLL
برای ساختن یک کلید مجازی،که اگه در این مورد هم راهنمایی بفرمایید یا یک نمونه قرار بدید، فکر کنم دیگه در این مورد زحمتمون رو کم کنیم
با تشکر
 
آخرین ویرایش:

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
اگر از AutoItDLL که نسخه ی قدیمیتر هست استفاده میکنید:
کد:
[COLOR=#009000]**Set the path of the dll[/COLOR] 
Path$ = [COLOR=#800000]'<Embedded>\AutoItDLL.dll'[/COLOR] 
[COLOR=#000090][B]PluginSet[/B][/COLOR]("PlugIn","Path$") 
[COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","Path") 
[COLOR=#009000]**Set the Function for the dll[/COLOR] 
Functions$ = [COLOR=#800000]'AUTOIT_Send'[/COLOR] 
[COLOR=#000090][B]PluginSet[/B][/COLOR]("PlugIn","Functions$") 
[COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","Functions") 
[COLOR=#009000]**Set the Parameters for the Function[/COLOR] 
Parameters$ = [COLOR=#800000]'a'[/COLOR] 
[COLOR=#000090][B]PluginSet[/B][/COLOR]("PlugIn","Parameters$") 
[COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","Parameters")

اگر هم از AutoItX استفاده میکنید:
کد:
[COLOR=#009000]**Set the path of the dll[/COLOR] 
Path$ = [COLOR=#800000]'<Embedded>\AutoItX3.dll'[/COLOR] 
[COLOR=#000090][B]PluginSet[/B][/COLOR]("PlugIn","Path$") 
[COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","Path") 
[COLOR=#009000]**Set the Function for the dll[/COLOR] 
Functions$ = [COLOR=#800000]'AU3_Send'[/COLOR] 
[COLOR=#000090][B]PluginSet[/B][/COLOR]("PlugIn","Functions$") 
[COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","Functions") 
[COLOR=#009000]**Set the Parameters for the Function[/COLOR] 
Parameters$ = [COLOR=#800000]'a'[/COLOR] 
[COLOR=#000090][B]PluginSet[/B][/COLOR]("PlugIn","Parameters$") 
[COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","Parameters")

فقط نکته ای که وجود داره اینه که در MMB نمیشه Focus رو روی یک شئ خاص قرار داد از اینرو هم وقتی روی دکمه ای که در صفحه کلید مجازی قرار داره کلیک میکنید، Focus از ادیت باکس برداشته میشه و عملاً چیزی تایپ نمیشه.
البته با دستور ("Show("EditBox میشه ادیت باکس رو انتخاب کرد اما با این روش تمام متن ادیت باکس سلکت میشه و با ادامه ی کد تمام متن قبلی پاک میشه و حرف جدید جایگزین میشه که این چیزی نیست که مدنظر ماست.
اما میشه هنگام ارسال حرف فشرده شدن کلید END رو هم شبیه سازی کرد که Carret رو به آخر متن میبره، اینطوری حرف مورد نظر به آخر کلمه اضافه میشه.
اما ایرادی که این روش داره این هست همیشه حرف به آخر کلمه اضافه میشه (مثلاً اگر قصد داشته باشید حرف سوم رو اصلاح کنید نمیشه و باید تمام حروف بعد از اون رو پاک کنید...)
بهرحال برای استفاده از این روش پارامتر ارسالی رو به این شکل تغییر بدید:
کد:
[COLOR=#009000]**Set the Parameters for the Function[/COLOR] 
Parameters$ = [COLOR=#800000]'{END}a'[/COLOR] 
[COLOR=#000090][B]PluginSet[/B][/COLOR]("PlugIn","Parameters$") 
[COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","Parameters")

این توضیحات بیشتر برای استفاده از پلاگین MMBDLL کاربرد داره، چون تمام اینکار ها رو با پردازش String و بدون نیاز به پلاگین هم میتونید انجام بدید.
مثلاً برای حرف a کد چیزی شبیه به این خواهد بود:
کد:
CHAR$ = [COLOR=#800000]'a'[/COLOR] 
Text$ = EditBox$ + CHAR$ 
[COLOR=#000090][B]LoadText[/B][/COLOR]("EditBox","Text$")
با کمی کدنویسی میشه برای چند ادیت باکس هم گسترشش داد.
 

kc_nitro

Member
با سلام
ممنون از توضیحات کاملتون و مشکلم تو این مسئله کاملأ حل شد ولی مثل اینکه سوالهای من تمومی نداره!
حالا این روشها برای استفاده درون خود برنامه و قابل اجرا بر روی شیئ EditBox هستن، اگه لازم باشه کیبوردی داشته باشیم که تو همه محیطها کار کنه از چه روشی و چگونه بهره ببریم یا اصلأ راحت تریم که کیبورد رو با یه برنامه ویژیوال که برای این کار طراحی شده درست کنیم و بعد تحت یک فایل اجرایی تو mmb استفاده کنیم؟
با تشکر
 

nevercom

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

خاطرم هست قبلترها مثالی دیده بودم که اومده بود و برنامه ی On-Screen Keyboard خود ویندوز رو Bind کرده بود، روش خیلی جالبی هست، اما من در ویندوز 7 که تست کردم "osk.exe" رو نتونستم Bind کنم.
فکر کنم بهترین راه استفاده از همون On-Screen Keyboard باشه.
و یا به هر روشی هنگام ارسال کلید ها، Focus رو روی همون پنجره نگه دارید.
 

kc_nitro

Member
با سلام
البته استفاده از osk همه جا به درد نمیخوره چرا که بعضی جاها مثل استفاده از کیوسک ها میبایست دسترسیه کاربران را محدود کرد از آن جمله حذف F ها از کیبورد و ... که میطلبد یک کیبورد سفارشی داشته باشیم
با تشکر
 

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

بالا