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

نام تاپیک: هيچ راه خروجي در برنامه نباشه

  1. #1
    کاربر تازه وارد آواتار repo20
    تاریخ عضویت
    دی 1388
    محل زندگی
    دنياي سي شارپ
    پست
    30

    Question هيچ راه خروجي در برنامه نباشه

    سلام دوستان
    يه سوال
    مي خواهم در برنامه اي درست كردم هيچ راه خروجي نباشه به جز يه button .
    براي مثال كليد هاي Alt+F4 وAlt+Tab كارنكند و Windows Task Manager هم اجرا نشه.


  2. #2
    کاربر دائمی آواتار AliRezaPro
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    PE Header
    پست
    1,054

    نقل قول: هیچ راه خروجی در برنامه نباشه

    باید از API استفاده کنی
    http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_20675500.html

    http://www.codeproject.com/KB/cs/globalhook.aspx

  3. #3
    کاربر تازه وارد آواتار repo20
    تاریخ عضویت
    دی 1388
    محل زندگی
    دنياي سي شارپ
    پست
    30

    نقل قول: هیچ راه خروجی در برنامه نباشه

    نقل قول نوشته شده توسط man7tomani مشاهده تاپیک
    باید از API استفاده کنی
    http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_20675500.html

    http://www.codeproject.com/KB/cs/globalhook.aspx
    دوست عزيز
    براي كار نكردن Alt+F4 توي رویداد FormClosing نوشتم:
    e.Cancel = true;
    براي اجرا نشدن Windows Task Manager هم يه تايمر گذاشتم و توي اون نوشتم:
    Process[] ps = Process.GetProcesses();
    foreach (Process p in ps)
    {
    if (p.ProcessName.ToLower() == "taskmgr")
    {
    p.Kill();
    }
    }

    كد هاي بالا كاملا كار كرد اما مشكل من غير فعال كردن Alt+Tabاست كه بوسيله Alt+Tabميشه از برنامه اي به برنامه ديگر رفت.
    اگه كدي بگيد كه Alt+Tabكار نكنه خيلي ممنون ميشم.

  4. #4
    کاربر دائمی آواتار debugger
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    Turkey
    پست
    842

    نقل قول: هيچ راه خروجي در برنامه نباشه

    َAlt+Tab را به عنوان یک کلید ترکیبی تو برنامه ات بگیر .

    مثلا وقتی این کلید ها را زد یه پیغام بیاد

    ایجوری مال ویندوز کار نخواهد کرد

  5. #5
    کاربر تازه وارد آواتار repo20
    تاریخ عضویت
    دی 1388
    محل زندگی
    دنياي سي شارپ
    پست
    30

    نقل قول: هیچ راه خروجی در برنامه نباشه

    نقل قول نوشته شده توسط debugger مشاهده تاپیک
    َAlt+Tab را به عنوان یک کلید ترکیبی تو برنامه ات بگیر .

    مثلا وقتی این کلید ها را زد یه پیغام بیاد

    ایجوری مال ویندوز کار نخواهد کرد

    ميشه بيشتر توضيح بديد يا يك نمونه كد يا سورس بذاريد.
    چطوري به عنوان یک کلید ترکیبی تو برنامه بگيرمش.
    شرمنده من تازه كارم و به كمك شما شديدا نيازمندم.

  6. #6
    کاربر دائمی آواتار debugger
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    Turkey
    پست
    842

    نقل قول: هيچ راه خروجي در برنامه نباشه

    این کد ها برای غیر فعال کردن Alt+Tab, Alt+Esc, Ctrl+Esc هست البته برای محیط خارج از دیباگ


    namespace BlockShortcuts 
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private delegate int LowLevelKeyboardProcDelegate(int nCode, int
    wParam, ref KBDLLHOOKSTRUCT lParam);

    [DllImport("user32.dll", EntryPoint = "SetWindowsHookExA", CharSet = CharSet.Ansi)]
    private static extern int SetWindowsHookEx(
    int idHook,
    LowLevelKeyboardProcDelegate lpfn,
    int hMod,
    int dwThreadId);

    [DllImport("user32.dll")]
    private static extern int UnhookWindowsHookEx(int hHook);

    [DllImport("user32.dll", EntryPoint = "CallNextHookEx", CharSet = CharSet.Ansi)]
    private static extern int CallNextHookEx(
    int hHook, int nCode,
    int wParam, ref KBDLLHOOKSTRUCT lParam);

    const int WH_KEYBOARD_LL = 13;
    private int intLLKey;
    private KBDLLHOOKSTRUCT lParam;

    private struct KBDLLHOOKSTRUCT
    {
    public int vkCode;
    int scanCode;
    public int flags;
    int time;
    int dwExtraInfo;
    }

    private int LowLevelKeyboardProc(
    int nCode, int wParam,
    ref KBDLLHOOKSTRUCT lParam)
    {
    bool blnEat = false;
    switch (wParam)
    {
    case 256:
    case 257:
    case 260:
    case 261:
    //Alt+Tab, Alt+Esc, Ctrl+Esc, Windows Key
    if (((lParam.vkCode == 9) && (lParam.flags == 32)) ||
    ((lParam.vkCode == 27) && (lParam.flags == 32)) || ((lParam.vkCode ==
    27) && (lParam.flags == 0)) || ((lParam.vkCode == 91) && (lParam.flags
    == 1)) || ((lParam.vkCode == 92) && (lParam.flags == 1)) || ((true) &&
    (lParam.flags == 32)))
    {
    blnEat = true;
    }
    break;
    }

    if (blnEat)
    return 1;
    else return CallNextHookEx(0, nCode, wParam, ref lParam);

    }

    private void KeyboardHook(object sender, EventArgs e)
    {
    intLLKey = SetWindowsHookEx(WH_KEYBOARD_LL,new LowLevelKeyboardProcDelegate(LowLevelKeyboardProc) ,
    System.Runtime.InteropServices.Marshal.GetHINSTANC E(
    System.Reflection.Assembly.GetExecutingAssembly(). GetModules()[0]).ToInt32(), 0);
    }

    private void ReleaseKeyboardHook()
    {
    intLLKey = UnhookWindowsHookEx(intLLKey);
    }

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
    if (checkBox1.Checked)
    KeyboardHook(this, e);
    else
    ReleaseKeyboardHook();
    }
    }
    }

    آخرین ویرایش به وسیله debugger : چهارشنبه 14 بهمن 1388 در 15:11 عصر

  7. #7
    کاربر تازه وارد آواتار repo20
    تاریخ عضویت
    دی 1388
    محل زندگی
    دنياي سي شارپ
    پست
    30

    نقل قول: هیچ راه خروجی در برنامه نباشه

    [quote=debugger;902096]این کد ها برای غیر فعال کردن Alt+Tab, Alt+Esc, Ctrl+Esc هست البته برای محیط خارج از دیباگ



    ممنون ولي من تازه كارم و نميدونم اينو كجاي برنامه بايد بنويسم.
    لطفا اگه ميشه يه كد كوچيك يا يه نمونه سورس بديد.

    يك دنيا مرسي

  8. #8
    کاربر تازه وارد آواتار repo20
    تاریخ عضویت
    دی 1388
    محل زندگی
    دنياي سي شارپ
    پست
    30

    نقل قول: هیچ راه خروجی در برنامه نباشه

    نقل قول نوشته شده توسط debugger مشاهده تاپیک
    این کد ها برای غیر فعال کردن Alt+Tab, Alt+Esc, Ctrl+Esc هست البته برای محیط خارج از دیباگ



    namespace BlockShortcuts 



    {

    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private delegate int LowLevelKeyboardProcDelegate(int nCode, int
    wParam, ref KBDLLHOOKSTRUCT lParam);

    [DllImport("user32.dll", EntryPoint = "SetWindowsHookExA", CharSet = CharSet.Ansi)]
    private static extern int SetWindowsHookEx(
    int idHook,
    LowLevelKeyboardProcDelegate lpfn,
    int hMod,
    int dwThreadId);

    [DllImport("user32.dll")]
    private static extern int UnhookWindowsHookEx(int hHook);

    [DllImport("user32.dll", EntryPoint = "CallNextHookEx", CharSet = CharSet.Ansi)]
    private static extern int CallNextHookEx(
    int hHook, int nCode,
    int wParam, ref KBDLLHOOKSTRUCT lParam);

    const int WH_KEYBOARD_LL = 13;
    private int intLLKey;
    private KBDLLHOOKSTRUCT lParam;

    private struct KBDLLHOOKSTRUCT
    {
    public int vkCode;
    int scanCode;
    public int flags;
    int time;
    int dwExtraInfo;
    }

    private int LowLevelKeyboardProc(
    int nCode, int wParam,
    ref KBDLLHOOKSTRUCT lParam)
    {
    bool blnEat = false;
    switch (wParam)
    {
    case 256:
    case 257:
    case 260:
    case 261:
    //Alt+Tab, Alt+Esc, Ctrl+Esc, Windows Key
    if (((lParam.vkCode == 9) && (lParam.flags == 32)) ||
    ((lParam.vkCode == 27) && (lParam.flags == 32)) || ((lParam.vkCode ==
    27) && (lParam.flags == 0)) || ((lParam.vkCode == 91) && (lParam.flags
    == 1)) || ((lParam.vkCode == 92) && (lParam.flags == 1)) || ((true) &&
    (lParam.flags == 32)))
    {
    blnEat = true;
    }
    break;
    }

    if (blnEat)
    return 1;
    else return CallNextHookEx(0, nCode, wParam, ref lParam);

    }

    private void KeyboardHook(object sender, EventArgs e)
    {
    intLLKey = SetWindowsHookEx(WH_KEYBOARD_LL,new LowLevelKeyboardProcDelegate(LowLevelKeyboardProc) ,
    System.Runtime.InteropServices.Marshal.GetHINSTANC E(
    System.Reflection.Assembly.GetExecutingAssembly(). GetModules()[0]).ToInt32(), 0);
    }

    private void ReleaseKeyboardHook()
    {
    intLLKey = UnhookWindowsHookEx(intLLKey);
    }

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
    if (checkBox1.Checked)
    KeyboardHook(this, e);
    else
    ReleaseKeyboardHook();
    }
    }
    }



    هيچ تفاوتي نداشت.
    هنوز هم كليد هاي Alt+Tab وAlt+Esc و Ctrl+Escكار مي كنند .

  9. #9
    کاربر دائمی آواتار debugger
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    Turkey
    پست
    842

    نقل قول: هيچ راه خروجي در برنامه نباشه

    دوست عزیز در محیط دیباگ یا همون ویژوال استدیو کار می کنه

    شما کد را بنویس و برنامه را build کن و از ویژوال استدیو خارج شو و برنامه را اجرا کن یعنی فایل اجرایی برنامه را مستقل اجرا کن

    اونوقت ببین کار می کنه یا نه ؟؟

  10. #10
    کاربر تازه وارد آواتار repo20
    تاریخ عضویت
    دی 1388
    محل زندگی
    دنياي سي شارپ
    پست
    30

    نقل قول: هیچ راه خروجی در برنامه نباشه

    نقل قول نوشته شده توسط debugger مشاهده تاپیک
    دوست عزیز در محیط دیباگ یا همون ویژوال استدیو کار می کنه

    شما کد را بنویس و برنامه را build کن و از ویژوال استدیو خارج شو و برنامه را اجرا کن یعنی فایل اجرایی برنامه را مستقل اجرا کن

    اونوقت ببین کار می کنه یا نه ؟؟

    خيلي خيلي ممنون نجاتم دادي.

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

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