![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Копался на форуме долго, но этого не нашел.
--------------------
|
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 2 Всего: 19 |
Madest
Посмотри в MSDN описание CreateToolhelp32Snapshot |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 2 Всего: 19 |
Step
Не совсем так. Там обсуждается получение ID по HANDLE, а человека интересует по имени процесса |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
Mad, к сожелению почемуто получаеться что наши посты ведут себя как конфликтующее и вот эти в том числе
ты сам что предложил вот это CreateToolhelp32Snapshot ну будет у тебя снимок.... и потом ты будешь искать по имени в этом снимке а в той теме уже есть код обработки снимка, осталось его только скорректировать... Добавлено @ 17:25
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Goldberg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 3.6.2004 Репутация: нет Всего: нет |
Посмотри - Process::GetProcessesByName
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
Madest, интересная задача..
давайте разберемся
по имени приложения или процесса... все предложенные варианты были про имя процесса если необходимо по имени приложения то необходимо получать хендл окна этого приложения и танцевать от него -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
http://forum.vingrad.ru/index.php?showtopic=22801&hl=mysql
Задержка - по закрытию окна "Setup complete". Это в API было. Кстати, не всегда срабатывало. А сейчас пишу свой инсталлятор программы с MFC - вообще не работает. Причем если раскомментировать MessageBox все четко срабатывает. Чудеса да и только =) Что он такого делает - мне не въехать. А не работет вот в каком смысле: процесс "setup.exe" запускается, а "_INS5176_._MP" (вот оно имя процесса найденное в таскменеджере) нет. Мне б найти его ID или сразу HANDLE чтоб затормозить. Процесс "_INS5176_._MP" не запускается при наличии привиденного выше кода про окно. Т.е. хочу получить HANDLE и тормозить через WaitForSingleObject(). Начальство строго запретило наличие таинственных MessageBox-ов в инсталяшке =) Goldberq, 'Process' : is not a class or namespace name - пишет мне компилятор. Это сообщение отредактировал(а) Madest - 29.10.2004, 09:14 --------------------
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
по привиденному мной коду вы можете перебрать все процессы, и сравнить имена, получив пид процесса вы открываете его пид-у и получаете хендл.... и делайте то что сможете
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Осталось немного =)
По имени отловить не получилось, поймал по родительскому pi.dwProcessId("setup.exe") целых два. Там еще _isdel.exe появляется. Но мимо задержки проскакивает из-за того что хендл как-то неправильно получаю. Чего не так? --------------------
|
|||
|
||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Хендл на второй процесс получаю, т.е. он не равен NULL, но с ним WAitForSingleObject не ждет.
Кстати, pe32.szExeFile какие-то странные: у первого [System Process], у второго System. Это сообщение отредактировал(а) Madest - 29.10.2004, 14:02 --------------------
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
WAitForSingleObject ищи чтото другое, имхо это не подходит к твой задачи...
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Другое что? Процесс или функцию? Если функцию, то какую приблизительно? =) Горе мне, горе... А может таки можно как-нить заставить работать код с окном "setup complete" без MessageBox?
--------------------
|
|||
|
||||
| Goldberg |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 3.6.2004 Репутация: нет Всего: нет |
#using <mscorlib.dll> #using <System.dll> Добавлено @ 22:13
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления. |
||||
|
|||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Goldberq, что-то не подрубается ничего =(
if(pe32.th32ParentProcessID==pi.dwProcessId) - давало не то что мне нужно. Ну а вот что я сделал:
Но вот следующее условие if(pe32.szExeFile=="_INS5176._MP") не срабатывает, хотя передо мной код и MessageBox с "_INS5176._MP - они совпадают по названию! Попробовал банально if(pe32.szExeFile=="MSDEV.EXE") - тоже ничего! Как сравнивать имя процесса в таскменеджере и pe32.szExeFile. Скоро сойду с ума. --------------------
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
сравнивай не строчки а области памяти
memcmp, или чето такое szExeFile - это не строка, а указатель на страку типа char a[]="_INS5176._MP"; memcmp((void*)a,(void*)pe32.szExeFile,12);
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Действительно указатель =) Совсем я тавой-то.
Правда не умею сравнивать указатель строку =( Но это уже проще. --------------------
|
|||
|
||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
WaitForSingleObject не работает =( Но уже по нужному процессу пытаюсь затормозить. --------------------
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
WaitForSingleObject - тормозит твой процесс но ни как не другой....
а первый параметр это чучуть не тот хендл о котором ты думаешь.... это переменная по которой стработает поковыряйтесь вот в этом DebugActiveProcess может найдете чтото -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Madest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 27.11.2003 Где: Городок Репутация: нет Всего: нет |
Может мы не поняли друг друга? Мне и нужно мою программу затормозить, пока не отработает до конца setup.exe MYSQL.
Кстати, поменяв в OpenProceess() PROCESS_QUERY_INFORMATION на PROCESS_ALL_ACCESS моя программа останавливается, но не продолжает работать по завершению ожидаемого процесса. Вот. --------------------
|
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: нет Всего: 25 |
Madest, внатури не поняли.. тебе прямяком в факю надо, там помоему подобное было...
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Атос |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 11.9.2004 Где: Екатеринбург Репутация: нет Всего: нет |
упс....
Это сообщение отредактировал(а) Атос - 6.11.2004, 10:28 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |