Меню правой кнопки мыши в Консольном приложении - PullRequest
5 голосов
/ 16 ноября 2011

Я немного искал, но не могу понять, как заставить меню консоли отображаться при щелчке правой кнопкой мыши в окне консоли в моем собственном консольном приложении, как показано ниже:

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

Как заставить меню отображаться в моем собственном консольном приложении при щелчке правой кнопкой мыши на окне консоли?

И да, я знаю, что могу использовать верхний левый значок, чтобы сделатьпоявляются функции меню, но я ищу решение правой кнопкой мыши!

(проблема возникает, когда я запускаю файл .exe напрямую, а не запускаю его через CMD.EXE)

Ответы [ 3 ]

9 голосов
/ 16 ноября 2011

Используйте SetConsoleMode для сброса режима ENABLE_QUICK_EDIT_MODE.Только вежливо восстанавливать флаг до прежнего значения при выходе из программы.

2 голосов
/ 16 ноября 2011

Сообщения мыши не отправляются в вашу программу, они отправляются в окно командной строки.В вашей программе нет окон.

Итак, вы можете каким-то образом перехватить сообщения из командной строки, например:

c ++ получить другие сообщения Windows

1 голос
/ 18 ноября 2011

Исправлено со следующим обходным решением, так как нет прямого решения вопроса / проблемы:

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();
}
...