Как получить путь каталога используя хэндл окна католога?

Тема в разделе "WASM.WIN32", создана пользователем AlexCab, 24 апр 2010.

  1. AlexCab

    AlexCab New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2008
    Сообщения:
    142
    Лучшее что я нагуглил это отслеживать все окна каталогов, что не есть хорошо:dntknw:
    Подскажите лучше (можно не традиционный:)
    Заранее спасибо!
     
  2. MikDay

    MikDay New Member

    Публикаций:
    0
    Регистрация:
    5 май 2005
    Сообщения:
    32
    Адрес:
    Minsk
    Это вопрос или загадка? Что такое "окно каталога"?
     
  3. MikDay

    MikDay New Member

    Публикаций:
    0
    Регистрация:
    5 май 2005
    Сообщения:
    32
    Адрес:
    Minsk
    Это вопрос или загадка? Что такое "окно каталога"?
     
  4. AlexCab

    AlexCab New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2008
    Сообщения:
    142
    Это вопрос.
    Окно каталога это окно в котором отображается содержимое каталога (файлы, подкаталоги, тулбар, адресная строка, и тд.), окно проводника извиняюсь за неточность.
    Я могу получить хэндл этого окна но мне необходим путь отображаемого каталога.
    Иногда этот путь отображается в строке заголовка окна и/или адреса, но иногда нет потому этот вариант не подходит.
     
  5. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Окно понятия не имеет о каких-то каталогах или файлах которые в нем отображаются.
     
  6. gribodemon

    gribodemon New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    138
    На ум приходит хук kernel32!FindFirstFile.
    Если внутри приложения несколько окон и тебе нужно отдельное инфо по определённому окну, то ... надо будет определить ID потока каждого из окон, и в хукнутой FindFirstFile уже сравнивать ID текущего потока с ID потоков, в которых у тебя находятся окна.

    Это ещё при условии, что твоё приложение не использует драйвер для чтения файлов и папок.
    Если использует, то надо писать свой драйвер там хукать SDT, к примеру.
     
  7. gribodemon

    gribodemon New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    138
    Если нужен не особо универсальный способ, то найди просто контрол ( FindWindow(Ex) ), отвечающий за вывод пути до папки и получи его тект ( GetWindowText() ).

    Можно ещё порыться в памяти приложения на наличие текстовых строк и по маске попробовать поискать пути.

    Но это всё хуета. Постом выше я описал, как лучше всего сделать.
     
  8. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    А если "окно каталога" отображает Сетевое окружение или Панель управления?
     
  9. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    А вам не приходило в голову, что, скорее всего, адрессная строка заполняется ВСЕГДА, просто если выставлен флаг "Скрывать", то она попросту не показывается.
    Не знаю так и оно на самом деле, но думаю, что так т.к. в индии делают именно так :)
     
  10. AlexCab

    AlexCab New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2008
    Сообщения:
    142
    gribodemon
    Когда нужно узнать путь, окно уже отображается и ListView построен.

    http://forum.codeby.net/topic9631.html здесь я нашол следующее:
    Гляньте у кого есть Delphi.
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    AlexCab
    В шелле есть куча надстроек, по сути это оболочка для удалённого управления проводником и может выполнять фактически всё что угодно, просто не весь функционал открыт и доступен по имени. Это нужно в сурцах смотреть, там всё есть.
     
  12. megaaa

    megaaa New Member

    Публикаций:
    0
    Регистрация:
    29 май 2009
    Сообщения:
    51
    тогда легче сделать инжект в поток и вызвать там GetCurrentDirectory если я правильно понял мысль.
     
  13. gribodemon

    gribodemon New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    138
    megaaa
    Таг ведь:
    MSDN:
    current process, а не current thread

    Поэтому хукать нужно функции, через которые приложение работает с файлами.
     
  14. megaaa

    megaaa New Member

    Публикаций:
    0
    Регистрация:
    29 май 2009
    Сообщения:
    51
    ссори за дизинформацию, забыл что она из пеба достает текущую директорию.
    тогда наверно самым простым решением будет прочитать из адресной строки :)