PDA

View Full Version : سوال: فشردن مجازی کلید کیبرد



vahid_d_0101
سه شنبه 02 مهر 1387, 22:17 عصر
سلام بچه ها
من میخوام کاری کنم که برنامه ام مثل صفحه کلید کار کنه یعنی یه کلید داشته باشه که وقتی اونو زدیم مثلا کلید های Ctrl+Alt+r را بزنه ( این برای مثال بود هر کلیدی که خودمون خواستیم رو بزنه )

Netsky
چهارشنبه 03 مهر 1387, 00:45 صبح
عزیزم باید از تابع send keys استفاده کنی . این فایل ضمیمه یه نمونه هستش برای کلید های آلت و اف 4 . یه فایل وب هم کنارشه که میتونی توضیحات و همچنین کلیدهای دیگه رو هم توش پیدا کنی .
امیدوارم موفق باشی .......................

vahid_d_0101
چهارشنبه 03 مهر 1387, 02:24 صبح
بچه ها برنامه زیر رو یه نگاه بهش بندازید با Vb نوشته نشده کار این برنامه اینه که ایکون های دسکتاپ را به شکل های زیبایی کنار هم میچینه
شما میتونید کلیدی رو برای این برنامه تعریف کنید که بازدن اون ایکون ها عوض شده و به شکل بعدی بروند Hot key----> Layout من میخواستم که برنامه ای بنویسم که بعد از هر 1 دقیقه کار اون کلید ها رو بکنه و شکل ایکون ها را عوض کنه خیال کردم با sendkey می شود ولی هر کاری میکنم کار نمیکنه حالا شما نظری بدید تا چه طوری این برنامه رو بنویسم.
اگر هم بشه یه برنامه نوشت که کار اون برنامه پایینی را انجام بده دیگه کولاکه

vahid_d_0101
جمعه 05 مهر 1387, 01:01 صبح
بچه ها جدی جدی کسی نمیتونه کمک کنه

noorsoft
جمعه 05 مهر 1387, 05:02 صبح
با این تابع میشه من یک مثال از Tab برات میزارم



ّPublic Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)


Sub SendTab()
Dim ScanCode As Integer
Dim VK_OEM_TAB As Integer
Dim KEYEVENTF_KEYUP As Integer

KEYEVENTF_KEYUP = &H2
VK_OEM_TAB = 9 'Tab

ScanCode = MapVirtualKey(VK_OEM_TAB, 0)
keybd_event VK_OEM_TAB, ScanCode, 0, 0

ScanCode = MapVirtualKey(VK_OEM_TAB, 0)
keybd_event VK_OEM_TAB, ScanCode, KEYEVENTF_KEYUP, 0
End Sub

xrezax
یک شنبه 18 تیر 1391, 09:52 صبح
با این تابع میشه من یک مثال از Tab برات میزارم



ّPublic Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)


Sub SendTab()
Dim ScanCode As Integer
Dim VK_OEM_TAB As Integer
Dim KEYEVENTF_KEYUP As Integer

KEYEVENTF_KEYUP = &H2
VK_OEM_TAB = 9 'Tab

ScanCode = MapVirtualKey(VK_OEM_TAB, 0)
keybd_event VK_OEM_TAB, ScanCode, 0, 0

ScanCode = MapVirtualKey(VK_OEM_TAB, 0)
keybd_event VK_OEM_TAB, ScanCode, KEYEVENTF_KEYUP, 0
End Sub



میشه دستور Ctrl + A رو بوسیله این دستور بنویسی ...

محسن واژدی
یک شنبه 18 تیر 1391, 14:39 عصر
میشه دستور Ctrl + A رو بوسیله این دستور بنویسی ...

سلام
کد زیر بررسی کنید:

Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Public Sub SendCtrlA()
Dim isCtrl As Byte, isAK As Byte
isCtrl = MapVirtualKey(vbKeyControl, 0)
isAK = MapVirtualKey(vbKeyA, 0)
keybd_event vbKeyControl, isCtrl, 0, 0
keybd_event vbKeyA, isAK, 0, 0
keybd_event vbKeyControl, isCtrl, &H2, 0
keybd_event vbKeyA, isAK, &H2, 0
End Sub

ویا:

Private Sub Command1_Click()
SendKeys "^A"
End Sub

موفق باشید

arenaw
یک شنبه 18 تیر 1391, 17:19 عصر
کلا ^ به معنای Ctrl + هستش

SendKeys "^C"

xrezax
یک شنبه 18 تیر 1391, 17:21 عصر
اینم واسه Ctrl + C


Public Sub SendCtrlC()
Dim isCtrl As Byte, isAK As Byte
isCtrl = MapVirtualKey(vbKeyControl, 0)
isAK = MapVirtualKey(vbKeyC, 0)
keybd_event vbKeyControl, isCtrl, 0, 0
keybd_event vbKeyC, isAK, 0, 0
keybd_event vbKeyControl, isCtrl, &H2, 0
keybd_event vbKeyC, isAK, &H2, 0
End Sub