Форум программистов, компьютерный форум CyberForum.ru

Как определить, из какого режима запущена программа? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Матрица методом крамера и алгоритм http://www.cyberforum.ru/cpp-beginners/thread56715.html
Помогите если не сложно; 1. Решить систему уравнений методом Крамера. x1 + x2 + 2x3 +3x4 = 1 3x1 - x2 - x3 - 2x4 = -4 2x1 + 3x2 - x3 - x4 = -6 x1 + 2x2 + 3x3 - x4 = 1 2. Разработать алгоритм и программу обеспечивающую представление матрицы произвольного размера с возможностью изменения числа строк и столбцов, вывода на экран подматрицы любого размера и всей матрицы. Программа должна...
C++ Массив, его значение, его квадрат и т.д. Помогите написать такую программу на С++. <<Вывести на экран номер элемента одномерного массива, его значение, его квадрат, адрес ячейки памяти с использованием указателей. Элементы массива вводятся с клавиатуры>> http://www.cyberforum.ru/cpp-beginners/thread56714.html
Получить список хендлов дочерних окон C++ WinAPI
Скок не ковырялся,ничего путного не вышло.Есть у кого готовый вариант ? Без классов - стандартными способами(FindWindow,FindWindowEx и т.д.) Цель: сэмулировать ввод сообщения в каждое дочернее окно приложения.
Не работают cin и cout C++
Компилю на С++. Впервые. Использую Borland C++ Builder 6.0 Прочитал много разных самоучителей, энциклопедий по С++ Создаю приложение под windows Везде в книгах пишется команда cout, но она вобще не работает в компиляторе. с cin та же история В чем тут подвох-то? У меня уже нервов не хватает. Складывается впечатление что у меня эти функции просто вырезали
C++ Разработать простой двухпросмотровый ассемблер http://www.cyberforum.ru/cpp-beginners/thread56692.html
Нужно разработать простой двухпросмотровый ассемблер. Есть кое какие наброски
C++ Элементы массива циклически сдвинуть на k позиций влево Помогите пожалуйста написать программу!!!понимаю что все должно быть оч легко, но... В С++: 1. Дан массив, состоящий из символов. Элементы массива циклически сдвинуть на k позиций влево. 2. Победителем соревнований объявляется тот спортсмен, у которого максимален наилучший результат по всем броскам. Таким образом, программа должна найти значение максимального элемента в данном массиве, а также... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1695 / 874 / 44
Регистрация: 04.06.2008
Сообщений: 5,340
16.10.2009, 21:32     Как определить, из какого режима запущена программа?
Значит, вот что я нашёл по твоему вопросу.
Читаем у Джефри Рихтера,
http://wm-help.net/books-online/book...4-23.html#h1t1


"Иногда программе приходится определять свой родительский процесс. Однако родственные связи между процессами существуют лишь на стадии создания дочер него процесса. Непосредственно перед началом исполнения кода вдочернем процес се Windows перестает учитывать его родственные связи. В предыдущих версиях Win dows не было функций, которые позволяли бы программе обращаться с запросом к ее родительскому процессу. Но ToolHelp-функции, появившиеся в современных вер сиях Windows, сделали это возможным. С этой целью Вы должны использовать струк туру PROCESSENTRY32: ее элемент th32ParentProcessID возвращает идентификатор "родителя" данного процесса. Тем не менее, если Вашей программе нужно взаимодействовать с родительским процессом, от идентификаторов лучше отказаться. Почему — я уже говорил. Для определения родительского процесса существуют более надежные механизмы: объекты ядра, описатели окон и т. д.
Единственный способ добиться того, чтобы идентификатор процесса или потока не использовался повторно, — не допускать разрушения объекта ядра "процесс" или "поток". Если Вы только что создали новый процесс или поток, то можете просто не закрывать описатели на зти объекты — вот и все. А по окончании операций с иден тификатором, вызовите функцию CloseHandle и освободите соответствующие объек ты ядра. Однако для дочернего процесса этот способ не годится, если только он не унаследовал описатели объектов ядра от родительского процесса."

Теперь по структуре PROCESSENTRY32
Вот в этой теме я с ней удачно работал, ознакомься.
ofstream

Ну, то есть тебе надо создать переменную типа PROCESSENTRY32
заполнить её и поле PROCESSENTRY32.th32ParentProcessID и есть идентификатор родителя.
Не забывай, что если ты его где-то сохранишь, а потом родитель закроется, а его PID будет использоваться... Но старина Рихтер об этом писал уже.

Если поподробнее про заполнение структуры надо- пиши в личку. Тут ссылку не даю, там хакерский какой-то ресурс, здесь это не приветствуется.

...А знаешь что в цитате самое ценное и многообещающее?
Вот эта строка
"Для определения родительского процесса существуют более надежные механизмы: объекты ядра, описатели окон и т. д. "
То есть Рихтер намекает, что возможен доступ к объектам ядра!
А если его ещё и модифицировать можно- это полный контроль над системой!
 
Текущее время: 00:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru