Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№115-11-2007 13:45:50

KraKot
Участник
 
Группа: Members
Зарегистрирован: 15-11-2007
Сообщений: 5
UA: Firefox 2.0

закрытие firefox с .net кода

Всем доброго времени суток.Значит такая проблемка, нуна закрыть Firefox из кода.если в нем открыто много вкладок, тогда вылетает запрос мол уверены ли вы что закрываете все.Это происходит когда вызывается для его процесса closemainwindow().если вызвать Kill то все ок,firefox тихонечко закроется без лишних вопросов,токо Kill низя вызывать. Так вот хотелось бы узнать как закрыть firefox closemainwindow() да при том чтобы он ничего и не спрашивал!?очень надо!

Замечание п. 4.6
Дубликат темы удален.
Sergeys

Отсутствует

 

№215-11-2007 22:45:22

SaniOK
Участник
 
Группа: Members
Откуда: Минск
Зарегистрирован: 25-10-2007
Сообщений: 38
UA: Firefox 3.0
Веб-сайт

Re: закрытие firefox с .net кода

Подозреваю что нормально закрыть (не принудительное убийство процесса) никак, если у ФФ не отключена опция подтверждения выхода при закрытии вкладок.
Дело не в .net-e.

Отсутствует

 

№315-11-2007 22:59:50

Unghost
Призрак-админ
 
Группа: Administrators
Откуда: Moscow, Russia
Зарегистрирован: 08-10-2004
Сообщений: 11771
UA: Minefield 3.0

Re: закрытие firefox с .net кода

==> Разработка


Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.

Отсутствует

 

№416-11-2007 11:50:04

formatC'vt
Участник
 
Группа: Members
Откуда: М.О., г. Ивантеевка
Зарегистрирован: 09-01-2005
Сообщений: 94
UA: Iceweasel 2.0
Веб-сайт

Re: закрытие firefox с .net кода

или как вариант - программно нажать нужную кнопку в этом запросе.


"Software is like SEX - it's better when it's FREE" (C) Linus Torvalds

Отсутствует

 

№516-11-2007 11:53:42

KraKot
Участник
 
Группа: Members
Зарегистрирован: 15-11-2007
Сообщений: 5
UA: Firefox 2.0

Re: закрытие firefox с .net кода

программно нажать кнопку, ну это понятно, вопрос в том,как?! ниже представлен код, который я написал, он ищет firefox после чего ищет все его дочерние окошки, и посылает им сигнал закрыться, токо он все равно выдает messagebox(((((

Выделить код

Код:

namespace firefoxCloser
{
    public partial class Form1 : Form
    {
        private Process[] processes;
        static private string txt="";
        private static List<IntPtr> handles = new List<IntPtr>();
        private static List<string> captions = new List<string>();
        private IntPtr mainHwnd;
        
        public Form1()
        {
            InitializeComponent();
            this.ShowProcesses();
        }

        private delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
        private delegate bool EnumWindowsChildProc(IntPtr hWnd, IntPtr lParam);

        [DllImport("User32.dll")]
        private static extern bool EnumChildWindows(IntPtr hWnd,EnumWindowsChildProc enumFunc,IntPtr lParam);

        [DllImport("User32.dll")]
        private static extern bool EnumWindows(EnumWindowsProc enumFunc, IntPtr lParam);

        [DllImport("User32.dll")]
        private static extern bool GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);

        [DllImport("User32.dll")]
        private static extern bool PostMessage(IntPtr hWnd, uint msg, uint wParam, uint lParam);

        private static bool EnumFunc(IntPtr hWnd, IntPtr lParam)
        {
            const uint WM_CLOSE = 0x0010;

            StringBuilder wndCaption = new StringBuilder(1024);

            GetWindowText(hWnd, wndCaption, 1024);

            if (wndCaption.ToString() == txt)
            {
                EnumChildWindows(hWnd,new EnumWindowsChildProc(CloseChildren), IntPtr.Zero );
                return false;
            }
            else
            {
                return true;
            }
        }
        
        private static bool CloseChildren(IntPtr hWnd, IntPtr lParam)
        {
            const uint WM_CLOSE = 0x0010;

            StringBuilder wndCaption = new StringBuilder(1024);

            GetWindowText(hWnd, wndCaption, 1024);
            if(wndCaption.ToString()!="")
                captions.Add(wndCaption.ToString());
            handles.Add(hWnd);
            //PostMessage(hWnd, WM_CLOSE, 0, 0);
            return true;
        }

        private void ShowProcesses()
        {
            handles.Clear();
            processes = Process.GetProcessesByName("firefox");
            foreach(Process proc in processes)
            {
                this.mainHwnd = proc.MainWindowHandle;
                txt = proc.MainWindowTitle.ToString();
                this.richTextBox1.Text += proc.ProcessName+txt+"\n";
            }
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            foreach (Process proc in processes)
            {
                try
                {
                    EnumWindows(new EnumWindowsProc(EnumFunc), IntPtr.Zero);
                    foreach (IntPtr ptr in handles)
                        this.richTextBox2.Text += ptr.ToString() + "\n";
                    foreach (string str in captions)
                        this.richTextBox3.Text += str+ "\n";

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }

        private void GetProcessesById()
        {
            Process proc;
            foreach(IntPtr ptr in handles)
            {
                try
                {
                    proc = Process.GetProcessById(ptr.ToInt32());
                    this.richTextBox3.Text += "***" + ptr.ToString() + "***" + "\n";
                    this.richTextBox3.Text += proc.MainWindowTitle.ToString() + "\n";
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
    }
}

чего делать то (((((

Отсутствует

 

№616-11-2007 13:41:48

KraKot
Участник
 
Группа: Members
Зарегистрирован: 15-11-2007
Сообщений: 5
UA: Firefox 2.0

Re: закрытие firefox с .net кода

))) работает, закрывает )))

Отсутствует

 

№716-11-2007 19:55:06

arka
Участник
 
Группа: Members
Зарегистрирован: 10-08-2005
Сообщений: 183
UA: Firefox 2.0
Веб-сайт

Re: закрытие firefox с .net кода

))) работает, закрывает )))

А теперь раскажите нетерпеливым, зачем всё это?

Отсутствует

 

№817-11-2007 10:32:46

formatC'vt
Участник
 
Группа: Members
Откуда: М.О., г. Ивантеевка
Зарегистрирован: 09-01-2005
Сообщений: 94
UA: Iceweasel 2.0
Веб-сайт

Re: закрытие firefox с .net кода

Видимо для корректного завершения работы FF. Например: Сидите вы на работе, в FF, заходит начальство - нажали "горячую" комбинацию клавиш и FF пропал :)
В свое время делал такое для IE, но тогда FF еще не было :)


"Software is like SEX - it's better when it's FREE" (C) Linus Torvalds

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]