Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 18.08.2010
Сообщений: 22

CreateProcess и существующий процесс FireFox

01.09.2010, 17:54. Показов 1488. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! В моей программе через CreateProcess запускаю FireFox, потом нахожу окно созданного FF и отслеживаю все его сообщения это всё великолепно работает при одном условии, если в системе нет уже запущенного FF, если же он есть то происходит следующее(описываю своими словами, как я это понял) созданный мною экземпляр FF проверяет есть ли в процессах уже запущенный FF, ага, нашёл такой процесс(существующий FF), и потом подаёт какую-то команду уже существующему процессу, мол создавай ка ты новое окно обозревателя, а сам завершает работу и как следствие окно найти вот таким методом - не получается.
Метод запуска FF

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
STARTUPINFO pSI;
PROCESS_INFORMATION pPI;
 
int Start()
{
//sPath - путь к FireFox
    ZeroMemory( &pPI, sizeof(PROCESS_INFORMATION) );
    ZeroMemory( &pSI, sizeof(STARTUPINFO) );
    pSI.cb = sizeof(STARTUPINFO);
    pSI.dwFlags = STARTF_USESHOWWINDOW;
    pSI.wShowWindow = SW_HIDE;
    bStarted = TRUE;
    if (!CreateProcess( NULL, sPath, NULL, NULL, TRUE, 0, NULL, NULL, &pSI, &pPI))
    {
        return -2;
    }
    WaitForInputIdle(pPI.hProcess, INFINITE);
    return 0;
}
Метод нахождения окна FF
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
BOOL CALLBACK EnumWindowsProc( HWND hwnd, LPARAM lParam) 
{
    DWORD dwRetThrID;
    char lpName[512] = {0};
    GetClassName( hwnd, lpName, 100);
    if (strcmp( lpName , "MozillaUIWindowClass" ) == 0 ) 
    {
        dwRetThrID = GetWindowThreadProcessId( hwnd, NULL); 
        if (dwRetThrID == pPI.dwThreadId)//если уже есть запущенный FF, то в pPI все значения будут не существующие
        {
            hFind = hwnd;
            return FALSE;
        }       
        return TRUE;
    }
    return TRUE;
}
а вот так я вызываю EnumWindows
C++
1
EnumWindows(EnumWindowsProc, LPARAM(pPI.dwProcessId));
Метод с передачей параметров конкретной строки адреса, а потом поиск по заголовку окна ф-цией FindWindow() - не подходит.
Подскажите пожалуйста, что ещё можно придумать? Заранее благодарен!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.09.2010, 17:54
Ответы с готовыми решениями:

Закрыть процесс, запущенный через CreateProcess
Добрый день! Имеется приложение на WinAPI. При нажатии клавиш Shift + C должен открываться блокнот (обязательно с использованием...

Процесс CreateProcess
int _tmain(int argc, _TCHAR* argv) { PROCESS_INFORMATION pi; STARTUPINFO si; ZeroMemory(&si, sizeof(STARTUPINFO)); ...

Создать программу, в которой с помощью функции CreateProcess порождается процесс выполняющий чтение файла и вывод его на экран
Доброго всем вечера. Делаю лабу по системному программированию и как бы есть немалые проблемы. Вот сама лаба. Создать программу, в...

4
Эксперт С++
 Аватар для Andrew_Lvov
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
01.09.2010, 21:14
Используйте EnumProcesses, проверяйте, какой из них приднадлежит фаерфоксу.
0
2 / 2 / 0
Регистрация: 18.08.2010
Сообщений: 22
01.09.2010, 23:07  [ТС]
Цитата Сообщение от Andrew_Lvov Посмотреть сообщение
Используйте EnumProcesses, проверяйте, какой из них приднадлежит фаерфоксу.
Я наверное уже подтормаживаю, но я не понимаю, что Вы этим хотели сказать, пожалуйста подробнее.
0
Эксперт С++
 Аватар для Andrew_Lvov
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
01.09.2010, 23:19
ЕнумПроцессес - получате список процессов, вытягиваете тот, в котором фаерфокс, ищете главное окно. Вам ведь это нужно 7
0
2 / 2 / 0
Регистрация: 18.08.2010
Сообщений: 22
02.09.2010, 09:53  [ТС]
Цитата Сообщение от Andrew_Lvov Посмотреть сообщение
ищете главное окно
Мне не нужно не главное окно, а то, которое создано после моего CreateProcess, потому что может быть и другое(созданное ранее окно)!

Добавлено через 10 часов 2 минуты
Цитата Сообщение от UginL7 Посмотреть сообщение
Мне не нужно не главное окно, а то, которое создано после моего CreateProcess, потому что может быть и другое(созданное ранее окно)!
Извените, опечатка. Должно быть так : "Мне нужно не главное окно,"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.09.2010, 09:53
Помогаю со студенческими работами здесь

Процесс под названием firefox.exe. Хотя у меня мозилла не установлена. Появилось 50-60 одинаковых процессов и процессор был загружен на 90-100%
Вчера словил какую-то гадость. Сначала в диспетчере задач плодились процессы. В основном - это какой-то процесс под названием firefox.exe....

Можно ли как-то перенести закладки с браузера Firefox c ПК, на Андройд браузер (не Firefox)?
Ребят, всем привет! Подскажите, можно ли как-то перенести закладки с браузера Firefox c ПК, на Андройд браузер? p.s. Синхронизацию...

Создание расширения для Firefox. Перевод расширений Chrome на Firefox
Здесь обсуждается процесс создания расширений для Mozilla Firefox, а также портинг из Chrome. Добавлено через 17 минут Товаращи...

Частые падения Mozilla Firefox - прекращена работа программы Plugin Container for Firefox
Как это исправить, падает пару раз за час:

Selenium Firefox driver и плагины Firefox
Если в селениуме используется файерфокс драйвер, то возможно ли его запускать с плагинами? Т.к. селениум, как буд-то не учитывает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru