Лучшее что я нагуглил это отслеживать все окна каталогов, что не есть хорошо Подскажите лучше (можно не традиционный Заранее спасибо!
Это вопрос. Окно каталога это окно в котором отображается содержимое каталога (файлы, подкаталоги, тулбар, адресная строка, и тд.), окно проводника извиняюсь за неточность. Я могу получить хэндл этого окна но мне необходим путь отображаемого каталога. Иногда этот путь отображается в строке заголовка окна и/или адреса, но иногда нет потому этот вариант не подходит.
На ум приходит хук kernel32!FindFirstFile. Если внутри приложения несколько окон и тебе нужно отдельное инфо по определённому окну, то ... надо будет определить ID потока каждого из окон, и в хукнутой FindFirstFile уже сравнивать ID текущего потока с ID потоков, в которых у тебя находятся окна. Это ещё при условии, что твоё приложение не использует драйвер для чтения файлов и папок. Если использует, то надо писать свой драйвер там хукать SDT, к примеру.
Если нужен не особо универсальный способ, то найди просто контрол ( FindWindow(Ex) ), отвечающий за вывод пути до папки и получи его тект ( GetWindowText() ). Можно ещё порыться в памяти приложения на наличие текстовых строк и по маске попробовать поискать пути. Но это всё хуета. Постом выше я описал, как лучше всего сделать.
А вам не приходило в голову, что, скорее всего, адрессная строка заполняется ВСЕГДА, просто если выставлен флаг "Скрывать", то она попросту не показывается. Не знаю так и оно на самом деле, но думаю, что так т.к. в индии делают именно так
gribodemon Когда нужно узнать путь, окно уже отображается и ListView построен. http://forum.codeby.net/topic9631.html здесь я нашол следующее: Гляньте у кого есть Delphi.
AlexCab В шелле есть куча надстроек, по сути это оболочка для удалённого управления проводником и может выполнять фактически всё что угодно, просто не весь функционал открыт и доступен по имени. Это нужно в сурцах смотреть, там всё есть.
megaaa Таг ведь: MSDN: current process, а не current thread Поэтому хукать нужно функции, через которые приложение работает с файлами.
ссори за дизинформацию, забыл что она из пеба достает текущую директорию. тогда наверно самым простым решением будет прочитать из адресной строки