Как закрыть приложения на C# родной хост EXE-файл, когда браузер закрыт
I'm working on developing Chrome Extension for several weeks. I have almost completed a demo version of chrome extension now. but I have one problem I don't know so that I wanna get some help from you guys.I've written the host in c# lang My host program is running even though the chrome browser was closed. and then my host program is launching again when chrome browser was re-open. which means my host programs are stacking whenever chrome browser was all closing then re-opening. how can I solve this problem? Plz, help me and advice me. Thanks in advance :D
Что я уже пробовал:
Я попытался управлять хост-приложением с помощью этого кода
[DllImport("Kernel32")] private static extern bool SetConsoleCtrlHandler(EventHandler handler, bool add); private delegate bool EventHandler(CtrlType sig); static EventHandler _handler; enum CtrlType { CTRL_C_EVENT = 0, CTRL_BREAK_EVENT = 1, CTRL_CLOSE_EVENT = 2, CTRL_LOGOFF_EVENT = 5, CTRL_SHUTDOWN_EVENT = 6 } private static bool Handler(CtrlType sig) { switch (sig) { case CtrlType.CTRL_C_EVENT: case CtrlType.CTRL_LOGOFF_EVENT: case CtrlType.CTRL_SHUTDOWN_EVENT: case CtrlType.CTRL_CLOSE_EVENT: default: return false; } } static void Main(string[] args) { // Some biolerplate to react to close window event _handler += new EventHandler(Handler); SetConsoleCtrlHandler(_handler, true); ... }
но этот код не работает и не выходит из хост-приложения
Richard MacCutchan
Я не вижу никакой связи между приведенным выше кодом и расширением Chrome. Кроме того, ваше приложение, по-видимому, устанавливает консольный обработчик, а затем завершает работу. Я подозреваю, что это не то, что вы хотите, чтобы он сделал.
member5320
Я просто хочу знать, когда браузер закрывается и когда на событии закрытия браузера хост-приложение также должно быть убито.
Richard MacCutchan
Извините, я до сих пор не понимаю, какое это имеет отношение к приведенному выше коду.
member5320
Я нашел какой-то код на языке Си, чтобы закрыть нативное приложение следующим образом
std::string req;
хотя(!(УР=read_request()).пустые())
{
//обработать запрос и отправить ответ
}
а это мой c# код для получения данных из браузера
частная статическая строка OpenStandardStreamIn()
{
использование var stdin = Console.OpenStandardInput();
строковый ввод = "";
длина int = 0;
byte[] bytes = новый байт[4];
stdin.Read(байты, 0, 4);
длина = BitConverter.ToInt32(байт, 0);
byte[] buff = новый байт[длина];
stdin.Read(buff, 0, buff.Длина);
вход += кодировка.Кодировке utf8.Метода getString(бафф);
туда вход;
}