2017-03-01 25 views
0

私はコンソールゲームを持っており、マウス入力を無効にしたい。 thisページからコードを取得しましたが、GetConsoleMode関数を実行しようとするとエラーコード6(「無効なハンドル」の略)で失敗します。C#コンソールアプリケーションGetConsoleModeエラーコード6

私の質問:なぜGetConsoleWindow()メソッドが無効なコンソールハンドルを返しますか?ここで

私のソースコード:

private static void DisableMouseInput() 
{ 
    IntPtr consoleHandle = GetConsoleWindow(); 
    uint consoleMode; 

    Console.WriteLine(Marshal.GetLastWin32Error());   // get current console mode 
    if (!GetConsoleMode(consoleHandle, out consoleMode)) 
    { 
     // Error: Unable to get console mode. 
     Console.WriteLine(Marshal.GetLastWin32Error()); 
     throw new Exception(); 
     return; 
    } 
    // Clear the mouse input bit in the mode flags 
    consoleMode = consoleMode & 0xffbf; //0xffef = ~0x0040 = ~ENABLE_QUICK_EDIT 
    // set the new mode 
    if (!SetConsoleMode(consoleHandle, consoleMode)) 
    { 
     // ERROR: Unable to set console mode 
    } 
} 

答えて

2

あなたはconsoleHandleを取得するための別の方法を試してみましたか? 例:

const int STD_INPUT_HANDLE = -10; 

[DllImport("kernel32.dll"] 
static extern IntPtr GetStdHandle(int nStdHandle); 

private static foo() { 
    IntPtr consoleHandle = GetStdHandle(STD_INPUT_HANDLE); 
    .... 
} 
+0

ありがとうございました。 Thx – Kippi

関連する問題