Запускаю IE из winforms, могу ли я закрыть IE, когда мои winforms закрываются? - PullRequest
1 голос
/ 24 октября 2008

У меня есть приложение winforms, поэтому, когда кто-то нажимает на кнопку, мне нужно открыть IE по определенному URL.

Когда кто-то закрывает приложение winforms, мне нужно закрыть IE.

Возможно ли это? Если да, то как?

Ответы [ 5 ]

3 голосов
/ 24 октября 2008

Если у вас нет ссылки на старый процесс, который вы использовали для запуска IE, вам нужно выполнить поиск в массиве процессов, возвращенном System.Diagnostics.Process.GetProcessesByName ("IEXPLORE"), и завершить определенный процесс.

некоторые образцы здесь .

1 голос
/ 24 октября 2008

Да, это возможно,

Когда вы вызываете System.Diagnostics.Process.Start () для запуска браузера, используйте специально созданный объект процесса. Позже вы можете использовать информацию о процессе, чтобы убить процесс.

Однако, как упоминал Дэн Уокер, может быть, лучше использовать элемент управления веб-браузера, если у вас нет особых потребностей в навигации, тогда может быть эффективнее просто запустить и убить IE.

1 голос
/ 24 октября 2008

Это можно было бы сделать, но лучше было бы просто встроить Internet Explorer в свое приложение с помощью элемента управления WebBrowser. Таким образом, когда вы закрываете веб-сайт, у вас нет шансов закрыть все окно, когда ваш веб-сайт открывается в новой вкладке в существующем окне IE.

Редактировать: Если вы все равно собираетесь это сделать, посмотрите на страницу MSDN на System.Diagnostics.Process.Close

0 голосов
/ 24 октября 2008

Попробуйте это (при условии, что WinForms вы используете .NET)

Process ieProcess = Process.Start("iexplore", @"http://www.website.com");

// Do work, etc

ieProcess.Kill();

Это убьет только тот экземпляр, который вы запустили.

0 голосов
/ 24 октября 2008

Не уверен, как вы запускаете IE, но если вы сохраняете ссылку на запущенный процесс (или дескриптор окна, который был создан), вы можете завершить процесс (или закрыть окно), когда закроется приложение.

EDIT:

Код для закрытия дескриптора окна похож на

Utilities.Utilities.SendMessage(mTestPanelHandle, WM_COMMAND, WM_CLOSE, 0);

если у вас есть P / Invoke

public const int WM_COMMAND = 0x0112;
public const int WM_CLOSE = 0xF060;
[DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true,
        CallingConvention = CallingConvention.StdCall)]
public static extern int SendMessage(IntPtr hwnd, uint Msg, int wParam, int lParam)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...