برگزیده های پرشین تولز

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

Mehdi Hamedali

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

Mehdi Hamedali

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

خلاصه
ممنون

باتشکر
MHa
 

Adeli

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

Mehdi Hamedali

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

قربان شما
MHa
 

Mehdi Hamedali

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

قربان شما
MHa
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
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:



خرگوش كوچولو
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
به نقل از Mehdi Hamedali :
سلام
چطور ميشه در يك فرم كه پر از چك باكس تكست باكس كمبو باكس فيلد كليد هست كليدي مثل حرف S و يا کليد کاربردي مانند Tab را از کار انداخت.
با تشکر پيشاپيش
:wub:
قربان شما
MHa

اما دز کل اگه فقط کارت با Edit و کنترل ها یمشابه درست میشه چرا توی رویداد KeyPress تمرکز نمیکنی؟
 

Mehdi Hamedali

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

:happy:

قربان شما
MHa
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
به نقل از Mehdi Hamedali :
سلام به خرگوش كوچولو و همه دوستان
من در مورد هوك بگم كه اصلاَ قبولش ندارم چون تو برنامه هاي كه تابع وي بي هستتند و از آن پيروي مي كنند اصلاَ نمي شه كه اين برنامه رو فرا خوني كرد و در كل من فكر مي كنم كه هوك به درد نمي خوره
ولي خرگوش كوچولو دقيقاَ دست گذاشتي روي جاي كه باهاش مي شه اين كار رو كرد
روال KeyPress روال خوب و راحت و شناخته شده اي که با دو دستور IF و دستور KeyAscii اين کار انجام ميشه و پيش نيازش دانستن Ascii هاي کليد هاي است که مي خواهي اونو رو حذف کني
ولي مشکل من با VB.Net که آخرش همه کارا درسته ولي يک تعريف مي خواد که من نميدونم و کار نمي کنه
مشکل من مثل خيلي هاي ديگه به روز نبودن
به هر حال متشکر

:happy:

قربان شما
MHa

به قولي انسان دشمن اونچيزيه كه نميدونه. چه قبول داشته باشي و چه نداشته باشي اين شگرد هست و كاربرد هم داره. اما منظورت از اينكه يه تعريف ميخواي چيه؟؟؟؟
 

Mehdi Hamedali

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

قربان شما
MHa
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
به نقل از Mehdi Hamedali :
سلام به همه دوستان
اولين كه من منظور شما رو كه انسان دوشمن ..... نفهميدم آخه من خيلي سواد ندارم
دوم اين كه من بلد هستم و اين كار رو بارها و بارها انجام دادم نه تنها تو VB بلکه تو برنامه های دیگه هم این کار رو انجام دادم ولی من با این کار می خواستم شما کمی از اطلاعات خودتون رو به دیگر دوستان آموزش بدید البته در این مورد
و اما در مورد VB.Net و تعریف خاص این که من بسیاری از دسورات را که تو VB 6 انجام می دادم با یک ابزار و یا تنظیم یک دورنما قابل اجرا بود ولی این دستورات تو VB.Net قابل اجرا نشد و در هنگام Run به مشکل برخوردیم اما با یک تعریف خاص (که شبیح همون دورنما ها و یا ایجاد تعریفی یک ابزار بود) این کار قابل انجام شد
راستی خرگوش کوچولو Visual.net چقدر کار کردی هیچ کودوم از دستوراتی که می نویسی تو VB.net کار نمی کنه چرا
من خیلی سوادم پایینه یا شما دستوراتت سطح بالان

قربان شما
MHa

منظورت از اينكه يه تعريف ميخواي چيه؟؟؟؟ يه نمونه : اين کليد 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
 

Mehdi Hamedali

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

قربان شما
MHa
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
اون حرفا رو جدي نگير. منم خودم هم نفهميدم چي مينويسم!!!
 

Mehdi Hamedali

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

قربانت
MHa
 
بالا