یکی از دستورات جالب در vb دستور Sendkeys می باشد با استفاده از این دستور میتوان کلید مورد نظر را بدون اینکه کاربر آن را از صفحه کلید زده باشد به برنامه فعال ارسال کرد . در این مقاله سعی شده طرز استفاده از این دستور اموزش داده شود و با یک مثال اینکار را انجام داده ایم .
قبل از شروع توجه به این مطلب ضروری است که این دستور مانند صفحه کلید فقط کلید را به برنامه فعال ارسال میکند پس اگر میخواهید روی برنامه خاصی اجرا شود باید ابتدا آن برنامه را با دستور Shell فراخوانی کنید و اگر قبلا آن برنامه اجرا شده و میخواهید آن را به عنوان پنجره فعال مشاهده کنید باید از دستور Appactivate و سپس نوشتن نام آن برنامه فعال کنید . در ضمن اگر نام آن برنامه را نمیدانید میتوانید از کلمه Activeprogect استفاده کنید مانند مثال .
طرز استفاده از Senkeys: شکل کلی این دستور بصورت زیر است
SendKeys string,[wait]
پارامتر String : شامل کلید یا کلیدهایی است که شما میخواهید ارسال کنید .که شامل کلیدهای معمولی و کلیدهای مخصوص مانند {HOME}, {ESC}و {ENTER} میباشد . در ادامه نحوه استفاده از این کلید ها توضیح داده شده . کلیدهای Shift , Alt ,Ctrl با استفاده از کاراکتر های +,%,^ فرستاده میشوند کاراکتر های + ^ % { } [ ] را باید موقع استفاده داخل علامت کوتیشن " " استفاده کنیم .
پارامتر wait : این پارامتر که اختیاری است میتواند مقادیر True یا False داشته باشد اگر آن را ننویسیم مقدار پیش فرض آن False میباشد و اگر از کلمه True استفاده شود به مهنای آن است که Sendkeys پس از ارسال کلید به برنامه فعال منتظر پایان پردازش و تاثیر آن کلید روی آن برنامه بماند سپس به خط بعدی برنامه برود ، این حالت توصیه میشود زیرا بعضی از برنامه ها بلافاصله به کلیدی که برای آنها میفرستیم پاسخ نمی دهند .
مثال : میخواهیم برنامه ای بنویسیم که برنامه Notepad را باز کند نام پروژه vb ما را که اکنون داریم با آن کار می کنیم را درون آن بنویسد و در پایان فایل را ذخیره کند . البته برای فراخوانی یک برنامه از دستور Shell استفاده میشود و عدد 3 به معنای maximize بودن پنجره برنامه است . هنگام ذخیره فایل پیش بینی میکنیم که ممکن است فایلی با نام C:TEST2.TXT ممکن است قبلا در ان آدرس باشد و برنامه از ما برای بازنویسی تایید بخواهد پس کلید Y را نیز ارسال میکنیم و در پایان با ارسال کلید "%{F4}" که معادل Alt+F4 است برنامه را می بندیم . این برنامه را میتوانید داخل یک Command button بنویسید و اجرا کنید .
Shell "NotePad", 3
SendKeys " salam in Project yek azmayesh ast :{Enter 2}", True
SendKeys "Name: " & ActiveProject.Name & "{Enter}", True
SendKeys "%FS"
SendKeys "C:TEST2.TXT{ENTER}"
SendKeys "Y"
SendKeys "%{F4}"
علامت {Enter 2} یعنی کلید اینتر را دوبار ارسال کن .
همچنین برنامه زیر می تواند برنامه ماشین حساب ویندوز را باز کرده اعداد 1 تا 10 را جمع بزند و ببندد . این برنامه را نیز می توانید داخل یک Command button بنویسید و اجرا کنید .
R = Shell("calc.exe", 1)
AppActivate R
For I = 1 To 10
SendKeys I & "{+}", True
Next I
SendKeys "=", True
MsgBox ("payan")
SendKeys "%{F4}", True
برای اطلاعات بیشتر مراجعه کنید به http://www.sjjvb.blogfa.com/
لیست کلیدها و علائم مورد نیاز برای ارسال آنها به برنامه فعال .
Key |
Code | ||||
| |||||
ENTER |
{enter} or ~ | ||||
ESC |
{escape} or {esc} | ||||
SPACE |
{ } | ||||
TAB |
{tab} | ||||
BACKSPACE |
{backspace} or {bs} or {bksp} | ||||
BREAK |
{break} | ||||
CAPS LOCK |
{capslock} | ||||
CLEAR |
{clear} | ||||
|
{delete} or { | ||||
DOWN ARROW |
{down} | ||||
END |
{end} | ||||
HELP |
{help} | ||||
HOME |
{home} | ||||
INS |
{insert} | ||||
LEFT ARROW |
{left} | ||||
NUM LOCK |
{numlock} | ||||
PAGE DOWN |
{pgdn} | ||||
PAGE UP |
{pgup} | ||||
RIGHT ARROW |
{right} | ||||
UP ARROW |
{up} | ||||
F1, F2, F3,F16 |
{F1}, {F2}, {F3},{F16} | ||||
SHIFT |
+ (plus sign) | ||||
ALT (Windows) or |
% (percent sign) | ||||
CTRL (Windows) or |
^ (caret) | ||||
OPTION (Macintosh) |
# (pound sign) | ||||
آیا میشه فاصله زمانی بین ارسال کلید هارو هم مشخص کرد؟ مثلا هر کلید رو با فاصلیه سیصد میلی ثانیه به نرم افزار مورد نظر ارسال کنه
Application.Wait (Now() + TimeValue("00:00:3"))