2011-11-16 15 views
5

私はちょっと検索しましたが、自分のコンソールアプリケーションでコンソールウィンドウを右クリックしたときのコンソールメニューの表示方法を理解できないようです。コンソールアプリケーションの右クリックメニュー

http://i44.tinypic.com/2jbl82w.png

コンソールウィンドウを右クリックして自分のコンソールアプリケーションにメニューを表示させるにはどうすればよいですか?

はい、左上のアイコンを使用してメニュー機能を表示することができますが、右クリックのソリューションを探しています。

+0

は、デバッガでそれを実行していますか? http://stackoverflow.com/questions/1060240/what-happened-to-the-context-menu-in-my-console-application –

+0

こちらをお読みください:http://stackoverflow.com/questions/1944481/console-app-mouse-click-xy-coordinate-detection-comparison –

+0

Visual Studio(デバッグ)またはビジュアルスタジオ(アプリケーションが直接実行された)の外部でアプリケーションを実行する場合は関係ありません – Birdman

答えて

1

string filelocation = Assembly.GetExecutingAssembly().Location; 

string filename = Process.GetCurrentProcess().MainModule.ModuleName; 
filename = filename.Replace(".exe", ""); 

Process[] processArray = Process.GetProcesses(); 

int processesExists = 0; 


for (int i2 = 0; i2 < (processArray.Length - 1); i2++) 
{ 
    if (processArray[i2].ProcessName.Contains(filename)) 
    { 
     processesExists++; 
    } 
} 

if (processesExists == 1 && !Console.Title.Contains("cmd")) 
{ 
    Process.Start("cmd.exe", "/C " + "\"" + filelocation + "\""); 
} 

if (!Console.Title.Contains("cmd")) 
{ 
    Process.GetCurrentProcess().Kill(); 
} 
2

マウスメッセージは、あなたのプログラムに行くされていない、彼らはコマンドプロンプトウィンドウに行っている(問題は、私はCMD.EXEを通してそれを実行するのではなく直接.exeファイルを実行したときに表示されているようです)。プログラムにはウィンドウがありません。

だから、あなたは何とかこれを見るコマンドプロンプトからのメッセージを乗っ取ることができます:

c++ get other windows messages

9

使用SetConsoleModeENABLE_QUICK_EDIT_MODEモードをクリアします。あなたのプログラムが終了するときにフラグを元の設定に戻すのは丁寧です。質問/問題に対する直接的な解決策がありませんので、以下の回避策で固定

+0

ありがとうございました! 構文はどのように見えますか? – Birdman

+0

このためにAPIにアクセスするには、[here](http://www.pinvoke.net/default.aspx/kernel32.setconsolemode)のコードをコピーします。コンソールウィンドウのハンドルを取得する方法はわかりません。 – sq33G