PDA

View Full Version : کنترل صفحه کلید



YRajabali
شنبه 17 تیر 1391, 08:41 صبح
با سلام
توی VB اتوکد یا مجموعه آفیس چطور می تونم روی دکمه های کیبورد تسلط داشته باشم
مثلا توی اتوکد می خوام با زدن دکمه Page UP توی خط فرمان اتوکد یک رشته (عدد 90) وارد بعد اینتر بشه ؟؟؟:متفکر:

محسن واژدی
شنبه 17 تیر 1391, 09:18 صبح
سلام علیکم
میبخشید زیاد متوجه منظورتان نشدم در صورت امکان بیشتر توضیح دهید،
اگر می خواهید کلیدهای فشرده شده بر روی فرم را دریافت کنید، گزینه KeyPreview را از Properties فرم True، سپس کد زیررا در ماژول فرم کپی کنید:
Private Sub Form_KeyPress(KeyAscii As Integer)
MsgBox "Key pressed asc code: " & KeyAscii, vbInformation
End Sub


در اینحال اگر برنامه را اجرا و کلیدی را فشار دهیم پیام بالا ظاهر میشود

موفق باشید

YRajabali
شنبه 17 تیر 1391, 09:39 صبح
سلام علیکم
میبخشید زیاد متوجه منظورتان نشدم در صورت امکان بیشتر توضیح دهید،
اگر می خواهید کلیدهای فشرده شده بر روی فرم را دریافت کنید، گزینه KeyPreview را از Properties فرم True، سپس کد زیررا در ماژول فرم کپی کنید:
Private Sub Form_KeyPress(KeyAscii As Integer)
MsgBox "Key pressed asc code: " & KeyAscii, vbInformation
End Sub


در اینحال اگر برنامه را اجرا و کلیدی را فشار دهیم پیام بالا ظاهر میشود

موفق باشید

اولاً به خاطر حسن توجه شما سپاسگزارم
منظور بنده اینه که :
توی اتوکد ، وقتی یک فرمانی در خط فرمان تایپ می شه با زدن اینتر ، فرمان اجرا می شه
حال بنده می خوام به جای تایپ فرمان و زدن کلید اینتر ؛ با زدن یک کلید این دو کار با هم انجام بشه
نمی دونم متوجه منظورم شدید یا نه !؟

arenaw
شنبه 17 تیر 1391, 10:34 صبح
خب شما میتونی از همین رویدادی که جناب واژدی فرمودن یا KeyDown یا KeyUp استفاده کنی
مثلا برای همون pageup که گفتین :

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyPageUp Then
'your command
End If
End Sub

setroyd
یک شنبه 18 تیر 1391, 00:10 صبح
این رو میتونی با api تو یه timer بزاری و بگی مثلا اگر نوشته ی ما= ali بود این کار انجام بشه یا ..... دیگه که در هرجای ویندوز فراخوانی بشه چون اگر از توابع keyup یا down استفاده کنی فقط میتونی داخل vb ازش استفاده کنی در خارج از برنامه نمیشه مگر با api

Public Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

این تابع تقریبا همین چیزیه که شما میخوای

YRajabali
یک شنبه 18 تیر 1391, 15:17 عصر
خب شما میتونی از همین رویدادی که جناب واژدی فرمودن یا KeyDown یا KeyUp استفاده کنی
مثلا برای همون pageup که گفتین :

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyPageUp Then
'your command
End If
End Sub


دوست عزیز
این رو که فرمودید درست
اما این کد به تنهایی توی اتوکد هیچ کاری رو نمی کنه چون باید یه رابطه ای رو بشه با محیط اتوکد برقرار کرد
مثال زیر رو ببینید
Public Sub draw_circle()
Dim myradius As Integer
Dim center_point(0 To 2) As Double
Dim mycircle As AcadCircle
'center point is x=200,y=300,z=0
center_point(0) = 200
center_point(1) = 300
center_point(2) = 0
myradius = 50
Set mycircle = ThisDrawing.ModelSpace.AddCircle(center_point, myradius)
End Sub

در این مثال دایره ای با مختصات x=200,y=300,z=0 و شعاع 50 توی اتوکد رسم می شه که در حقیقت رسم دایره رو این کد Set mycircle = ThisDrawing.ModelSpace.AddCircle(center_point, myradius)انجام می ده که ThisDrawing محیط فایلی است که هم اکنون باز و فعال است ، ModelSpace به اتوکد یادآوری می کند که دایره را در فضای Model رسم کند و AddCircle نیز تابعی است که یک دایره را در اتوکد رسم می کند که center_point همان مختصات و myradius شعاع می باشد

کدی که شما نوشتید به یه همچین کدی هم نیاز داره که کامل بشه
متأسفانه بنده اطلاعاتی در رابطه با چنین کد هایی ندارم

arenaw
یک شنبه 18 تیر 1391, 15:36 عصر
خب من با کد هایی که شما نوشتید آشنایی ندارم
کدی که من نوشتم میگه اگر در فرم کلید Page Up زده شد بیاد دستورات اون قسمت سبز رنگ ( your command ) رو اجرا کنه
حالا شما مثلا میتونی همین کدهای مربوط به رسم دایره در اتوکد رو جای اون قسمت بزارید

YRajabali
یک شنبه 18 تیر 1391, 23:45 عصر
خب من با کد هایی که شما نوشتید آشنایی ندارم
کدی که من نوشتم میگه اگر در فرم کلید Page Up زده شد بیاد دستورات اون قسمت سبز رنگ ( your command ) رو اجرا کنه
حالا شما مثلا میتونی همین کدهای مربوط به رسم دایره در اتوکد رو جای اون قسمت بزارید

اونی که من گفتم مثال بود
بنده می خوام با زدن کلید Page Up یک رشته (عدد 90 ) تایپ + اینتر .
از اینکه به این تاپیک توجه نمودید متشکرم .


دوستانی که با کدهای واسط بین محیط اتوکد و VB اطلاعاتی دارن لطفا دریغ نکنند
منتظر پاسخ ها تون هستم

YRajabali
جمعه 17 آذر 1391, 12:06 عصر
کسی نیست ؟؟؟؟؟