آژانس هواپیماییexchanging

چگونه مي شود يكي از كليد هاي كيبورد را از كار انداخت

شروع موضوع توسط Mehdi Hamedali ‏23 ژانویه 2004 در انجمن برنامه نویسی

  1. Mehdi Hamedali

    Mehdi Hamedali کاربر تازه وارد

    تاریخ عضویت:
    ‏16 نوامبر 2003
    نوشته ها:
    267
    تشکر شده:
    0
    سلام
    چطور ميشه در يك فرم كه پر از چك باكس تكست باكس كمبو باكس فيلد كليد هست كليدي مثل حرف S و يا کليد کاربردي مانند Tab را از کار انداخت.
    با تشکر پيشاپيش
    :wub:
    قربان شما
    MHa
     
  2. Mehdi Hamedali

    Mehdi Hamedali کاربر تازه وارد

    تاریخ عضویت:
    ‏16 نوامبر 2003
    نوشته ها:
    267
    تشکر شده:
    0
    دوستان گرامي با سلام
    يعني سئوال ما اين قدر سخت بود يا ..... :p

    خلاصه
    ممنون

    باتشکر
    MHa
     
  3. Adeli

    Adeli کاربر تازه وارد

    تاریخ عضویت:
    ‏16 اکتبر 2003
    نوشته ها:
    5
    تشکر شده:
    0
    با سلام خدمت شما دوست عزيز
    براي سوال شما يه راهنمايي كوچك دارم شما براي اين كار ( حذف يك كليد ) بايد دنبال سيستمي به نام هوك ( Hook ) برويد .
    اگر اطلات بيشتري در مورد اين سيستم داريد برام ايميل بفرستيد .
    موفق باشيد
     
  4. Mehdi Hamedali

    Mehdi Hamedali کاربر تازه وارد

    تاریخ عضویت:
    ‏16 نوامبر 2003
    نوشته ها:
    267
    تشکر شده:
    0
    سلام به دوست عزیز
    من يک راه پيدا کردم که البته فقط در VB کار مي کنه
    البته اگر خواستي اطلاعاتي در مورد اون داشته باشي در خدمت هستم
    در هر حال متشکر از راهنماييت

    قربان شما
    MHa
     
  5. Mehdi Hamedali

    Mehdi Hamedali کاربر تازه وارد

    تاریخ عضویت:
    ‏16 نوامبر 2003
    نوشته ها:
    267
    تشکر شده:
    0
    دوستان گرامي فکر مي کنم شما نتونستيد به من کمک کنيد
    فکر کنم خودم زود تر به نتيجه رسيدم

    قربان شما
    MHa
     
  6. littlerabbit

    littlerabbit مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏13 جولای 2003
    نوشته ها:
    667
    تشکر شده:
    4
    محل سکونت:
    Iran
    سلام
    1.در مورد Hook خق با شماست راهي كه منم سراغ دارم Hook هست اما Hook يك CallBack ميخواد و اين در وي بي كارو سخت ميكنه.
    2. Hook خطر Crash واسه وي بي داره اصولا هوك ميتونه مزاحم بزرگي به حساب بساد اين برنامه هايي كه معمولا مينويسن و باهاش كليه كليدهايي رو كه كاربر زده ميدزدن از همين هوكاستفاده ميكنن.
    من كد دلفي رو كه خودم نوشتم و ممكنه باعث Crash در Explorer ميشه (گاهي البته اگه مثل من هميشه در خال انگولكش باشي) اين هوك هيچكاري نميكنه ققط همه كليدها از اين فيلتر رد ميشن و اگه بخوايد ميتونيد اونو به فيلتر بعدي ژاس نديد و اين اصلا در مايكروسافت Doc توصيه نشده :wacko: :wacko:

    کد:
    var
      HookHandle : HHOOK ;
        function HooKProc(Code : Integer ;Param1 : WPARAM  ; Param2 : LPARAM  ):LRESULT ;stdcall;
        begin
            Result := CallNextHookEx(HookHandle ,Code ,Param1 ,Param2);
        end;
    
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
       UnhookWindowsHookEx(HookHandle );
    end;
    
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      HookHandle := SetWindowsHookEX(WH_KEYBOARD ,HooKProc ,HInstance,0);
    end;
    
    كد هيچ گارانتي نداره با مسئوليت خودتون استفاده كنيد!!!!! Param 1& 2 همون كليدهايي هستن كه ميخواد ميتونيد CallNextHook رو بيخيال شيد اما توصيه شده نيست منظورم اينه بيلي گفته نكنيد!!!!اونوقت كليد تو همين تابع خفه ميشه.
    براي گرفتن آدرس تابع تو وي بي ميتونيد از اپراتور AdressOf استفاده كنيد On and On :ph34r:



    خرگوش كوچولو
     
  7. appbannerkhuniresbanner
  8. littlerabbit

    littlerabbit مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏13 جولای 2003
    نوشته ها:
    667
    تشکر شده:
    4
    محل سکونت:
    Iran
    اما دز کل اگه فقط کارت با Edit و کنترل ها یمشابه درست میشه چرا توی رویداد KeyPress تمرکز نمیکنی؟
     
  9. Mehdi Hamedali

    Mehdi Hamedali کاربر تازه وارد

    تاریخ عضویت:
    ‏16 نوامبر 2003
    نوشته ها:
    267
    تشکر شده:
    0
    سلام به خرگوش كوچولو و همه دوستان
    من در مورد هوك بگم كه اصلاَ قبولش ندارم چون تو برنامه هاي كه تابع وي بي هستتند و از آن پيروي مي كنند اصلاَ نمي شه كه اين برنامه رو فرا خوني كرد و در كل من فكر مي كنم كه هوك به درد نمي خوره
    ولي خرگوش كوچولو دقيقاَ دست گذاشتي روي جاي كه باهاش مي شه اين كار رو كرد
    روال KeyPress روال خوب و راحت و شناخته شده اي که با دو دستور IF و دستور KeyAscii اين کار انجام ميشه و پيش نيازش دانستن Ascii هاي کليد هاي است که مي خواهي اونو رو حذف کني
    ولي مشکل من با VB.Net که آخرش همه کارا درسته ولي يک تعريف مي خواد که من نميدونم و کار نمي کنه
    مشکل من مثل خيلي هاي ديگه به روز نبودن
    به هر حال متشکر

    :happy:

    قربان شما
    MHa
     
  10. littlerabbit

    littlerabbit مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏13 جولای 2003
    نوشته ها:
    667
    تشکر شده:
    4
    محل سکونت:
    Iran
    به قولي انسان دشمن اونچيزيه كه نميدونه. چه قبول داشته باشي و چه نداشته باشي اين شگرد هست و كاربرد هم داره. اما منظورت از اينكه يه تعريف ميخواي چيه؟؟؟؟
     
  11. Mehdi Hamedali

    Mehdi Hamedali کاربر تازه وارد

    تاریخ عضویت:
    ‏16 نوامبر 2003
    نوشته ها:
    267
    تشکر شده:
    0
    سلام به همه دوستان
    اولين كه من منظور شما رو كه انسان دوشمن ..... نفهميدم آخه من خيلي سواد ندارم
    دوم اين كه من بلد هستم و اين كار رو بارها و بارها انجام دادم نه تنها تو VB بلکه تو برنامه های دیگه هم این کار رو انجام دادم ولی من با این کار می خواستم شما کمی از اطلاعات خودتون رو به دیگر دوستان آموزش بدید البته در این مورد
    و اما در مورد VB.Net و تعریف خاص این که من بسیاری از دسورات را که تو VB 6 انجام می دادم با یک ابزار و یا تنظیم یک دورنما قابل اجرا بود ولی این دستورات تو VB.Net قابل اجرا نشد و در هنگام Run به مشکل برخوردیم اما با یک تعریف خاص (که شبیح همون دورنما ها و یا ایجاد تعریفی یک ابزار بود) این کار قابل انجام شد
    راستی خرگوش کوچولو Visual.net چقدر کار کردی هیچ کودوم از دستوراتی که می نویسی تو VB.net کار نمی کنه چرا
    من خیلی سوادم پایینه یا شما دستوراتت سطح بالان

    قربان شما
    MHa
     
  12. littlerabbit

    littlerabbit مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏13 جولای 2003
    نوشته ها:
    667
    تشکر شده:
    4
    محل سکونت:
    Iran
    منظورت از اينكه يه تعريف ميخواي چيه؟؟؟؟ يه نمونه : اين کليد A رو تو net رو يه Text غير فعال ميکنه :
    کد:
    	Private Sub Text1_KeyPress(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.KeyPressEventArgs) Handles Text1.KeyPress
    		Dim KeyAscii As Short = Asc(eventArgs.KeyChar)
    		If KeyAscii = Asc("A") Then
                KeyAscii = 0
            End If
    
            If KeyAscii = 0 Then
                eventArgs.Handled = True
            End If
    	End Sub
    
    اما يه چيز ديگه هموطن من هيچوقت نگفتم كدهام مال وي بي دات نت هست . گفتم؟؟؟؟ همه كدها مال وي بي 6 بوده ولي طوري نوشته شده كه به راحتي با خود مبدل نت تبديل بشه و مشكلي پيش نياد. خالا كه متلك بازاره منم ميگم (اما جدي نگير) وقتي فرق وي بي 6 با نت رو فهميدي بيا.... :D (شرمنده شوخي بود جدي نبود!!!) :p
     
  13. Mehdi Hamedali

    Mehdi Hamedali کاربر تازه وارد

    تاریخ عضویت:
    ‏16 نوامبر 2003
    نوشته ها:
    267
    تشکر شده:
    0
    سلام به همه دوستان
    دستت درد نكنه خرگوش كوچولو
    مي رم امتحان نكم
    ولي باورت ميشه چيزي از حرف هاي آخرت نفهميدم
    شرمنده من سواد ندارم

    قربان شما
    MHa
     
  14. avajang.com .leftavajang.com.right
  15. littlerabbit

    littlerabbit مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏13 جولای 2003
    نوشته ها:
    667
    تشکر شده:
    4
    محل سکونت:
    Iran
    اون حرفا رو جدي نگير. منم خودم هم نفهميدم چي مينويسم!!!
     
  16. Mehdi Hamedali

    Mehdi Hamedali کاربر تازه وارد

    تاریخ عضویت:
    ‏16 نوامبر 2003
    نوشته ها:
    267
    تشکر شده:
    0
    سلام به همه دوستان
    خرگوش كوچولو جان سلام
    بابا خيلي كارت درسته :D
    دوستت داريم بابا :happy:
    راستي از اين به بعد يك سري سئوال بهت ميدم دوست داشتي جواب بده تا هم من بهتر ياد بگيرم و هم دوستان استفاده ببرند
    يادآوري كنم كه اين قولي بود كه به احسان دادي.
    اگه قبول داري پيغام بذار

    قربانت
    MHa