نمایش نتایج 1 تا 6 از 6

نام تاپیک: چطور hotkey برای فرم تعریف کنیم

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آذر 1388
    محل زندگی
    شیراز
    پست
    124

    چطور hotkey برای فرم تعریف کنیم

    سلام
    دوستان من نیاز به کدی دارم که وقتی کاربر یک کلید خاص را فشار داد عمل خاصی انجام شود.
    همچنبن این عمل در زمانی که برنامه ما فعال نیست انجام شود.
    منظورم اینه حتی برنامه minimize هم باشه این عمل انجام بشه


  2. #2

    نقل قول: hotkey در سی شارپ

    سلام دوست عزیز.
    باید از گلوبال شورت کات استفاده کنی ، که به سیستم عامل شورت کات های نرم افزارت رو معرفی میکنی ، برای انجام اینکار مراحل زیر رو دنبال کن :

    - کد های زیر رو در کلاس فرم ات قرار میدی (با فرض اینکه اسم فرمت form1 است ، توی اینجا قرار میدی : public partial class Form1 : Form { ) :

    [System.Runtime.InteropServices.DllImport("user32.d ll")]
    private static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vk);
    [System.Runtime.InteropServices.DllImport("user32.d ll")]
    private static extern bool UnregisterHotKey(IntPtr hWnd, int id);


    enum KeyModifier
    {
    None = 0,
    Alt = 1,
    Control = 2,
    Shift = 4,
    WinKey = 8
    }


    - باید شورت کات های گلوبالت رو به سیستم معرفی کنی ، که با زدن این دکمه های سیستم عامل به نرم افزار شما رجوع کنه ، برای اینکار کد زیر رو درون تابع سازنده فرم تون زیر متد InitializeComponent(); بنویسید )

    RegisterHotKey(this.Handle, 0, (int)KeyModifier.None, Keys.F10.GetHashCode());

    (در اینجا عدد صفری که وارد شده اهمیت داره ، و بعدا شما از طریق عددی که بنده اینجا صفر وارد کردم متوجه میشد چه دکمه زده شده است ، برای هر دکمه باید یک بار این کد را بنویسید و مقدار عدد و Keys رو تغییر بدید)

    - و در آخر کارهایی که باید انجام شود رو مشخص میکنید :


    protected override void WndProc(ref Message m)
    {
    base.WndProc(ref m);


    if (m.Msg == 0x0312)
    {
    Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF); // The key of the hotkey that was pressed.
    KeyModifier modifier = (KeyModifier)((int)m.LParam & 0xFFFF); // The modifier of the hotkey that was pressed.
    int id = m.WParam.ToInt32(); // The id of the hotkey that was pressed.
    switch (id)
    {
    case 0: { } break;
    }
    }
    }


    برای هر دکمه (که یک عدد اختصاص دادید ، که در اینجا فقط عدد صفر رو برای کلید F10 مشخص کردم) یک case درون switch قرار میدید و با زدن F10 ، هر کدی که در کیس 0 نوشتید ، اجرا میشود

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آذر 1388
    محل زندگی
    شیراز
    پست
    124

    نقل قول: چطور hotkey برای فرم تعریف کنیم

    با تشکر از شما

    هنگام اجرای برنامه با این خطا مشاهده شدم

    Unable to load DLL 'user32.d ll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

    ارور بالا از کد زیر گرفته شده است.
    RegisterHotKey(this.Handle, 0, (int)KeyModifier.None, Keys.F10.GetHashCode());

    همچنین من برای این امر از کد شما و کدی که در آدرس زیر میباشد استفاده کردم.
    http://www.fluxbytes.com/csharp/how-...lication-in-c/

  4. #4

    نقل قول: چطور hotkey برای فرم تعریف کنیم

    لینکی که دادید همان کدی هست که براتون گذاشته بودم !
    نمیدونم ، تنها چیزی که به ذهنم میرسه اینکه اگر ویندوزتون 64 بیتی هست برای اون باشه ، چون برای من روی 32 بیت جواب میده

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آذر 1388
    محل زندگی
    شیراز
    پست
    124

    نقل قول: چطور hotkey برای فرم تعریف کنیم

    فکر نکنم به دلیل 64 بیتی بودن کامپیوتر من باشد
    زیرا از همین کد در برنامه دیگری استفاده کرده ام.

  6. #6
    کاربر دائمی
    تاریخ عضویت
    آذر 1388
    محل زندگی
    شیراز
    پست
    124

    نقل قول: چطور hotkey برای فرم تعریف کنیم

    مشکل را متوجه شدم
    در کد شما این قسمت مشکل داشت!!!

    user32.d ll

تاپیک های مشابه

  1. مبتدی: چطور توی وی بی تعریف کنیم که کامند هایی که روی یک لاین هستند ...
    نوشته شده توسط alisherlock در بخش برنامه نویسی مرتبط با بازی و گرافیک در VB6
    پاسخ: 1
    آخرین پست: جمعه 10 آبان 1392, 19:23 عصر
  2. پاسخ: 4
    آخرین پست: چهارشنبه 15 دی 1389, 02:50 صبح
  3. سوال: چطور میشه یه تصویر ثابت برای کامپوننت تعریف کرد؟
    نوشته شده توسط mbshareat در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 0
    آخرین پست: پنج شنبه 09 مهر 1388, 17:01 عصر
  4. سوال: چطور باید برای یک فرم کد نوشت؟
    نوشته شده توسط saleh.hi.62 در بخش برنامه نویسی در محیط QT و هم خانواده هایش
    پاسخ: 1
    آخرین پست: شنبه 12 بهمن 1387, 23:20 عصر
  5. سوال: آیا میشه دو تا سازنده برای کلاس فرم تعریف کرد ؟؟؟
    نوشته شده توسط migrant در بخش C#‎‎
    پاسخ: 1
    آخرین پست: چهارشنبه 06 شهریور 1387, 22:49 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •