member5320 Ответов: 0

Как закрыть приложения на 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(бафф);
туда вход;
}

0 Ответов