Допустим есть некий process id. Как определить, что это pid Internet/Windows Explorer'а? Сейчас я это делаю очень наивнум способом - по названию exe, которое получаю через GetModuleBaseName. Если поменять имя ехе - мой метод идет нафиг. Может есть более надежный способ?
Как вариант - можно сверить класс/заголовок окна, но это тоже не очень. Если + ко всему еще проверить наличие некоторых сигнатур в исполняемом файле, тогда уже более точно можно сказать.
посмотреть, какие com-сервера в нем зарегистрированны что вы на меня так смотрите? да не знаю я, как.. oO
Один китайский дедушка тоже так думал, а потом рассказывал: Враги сбросили меня в пропасть, и теперь я немножко прихрамываю. Короче, вопрос был - То, что оба этих Explorer-а встроены в Windows, сильно облегчает задачу. Например, вот решение для просто Explorer-а: GetWindowThreadProcessId(GetWindow(GetWindow(GetDesktopWindow,GW_CHILD),GW_HWNDLAST),addr pid(Progman)), а pid(Progman)=pid(Explorer). Наверняка и для Internet Explorer'а найдется подобный инвариант, ищите.
я вижу, что паранойя некоторым совсем жить не даёт - имя модуля не подходит... - класс окна тоже не ахти - сигнатуры... хм .. а если враги пройдутся дизасмом и дебаггером по твоей прожке и занопят процедурки проверки сигнатур ?