Конференция "WinAPI" » Определить путь до файла, имея его Handle
 
  • DevilDevil (18.12.07 23:58) [0]
    возможен ли сабж?
  • homm © (19.12.07 00:05) [1]
    Дело в том, что у открытого дескриптора может уже не существовать файла в фаловой системе.
  • homm © (19.12.07 00:06) [2]
    Хотя не утверждаю все же, что узнать нельзя :)
  • guav © (19.12.07 00:13) [3]
    > [1] homm ©   (19.12.07 00:05)


    > Дело в том, что у открытого дескриптора может уже не существовать
    > файла в фаловой системе.

    Это как ?
    (ну кроме насильного размонтирования тома, например извлечением флешки).


    > [0] DevilDevil   (18.12.07 23:58)

    может, посмотреть GetFileInformationByHandleEx ?
  • Ins © (19.12.07 00:21) [4]
    Возможно то - возможно - http://pda.delphimaster.net/?n=5&id=1188989858&p=2 , но неужели вы не знаете какой файл вы открыли? Не проще ли при открытии запоминать вместе с хэндлом имя?
  • DevilDevil (19.12.07 00:33) [5]
    спасибо.

    ну иногда есть только Stream...
    почему бы из него не узнать имя используемого файла (в случае FileStream) ?

    а начиная скакой версии Windows, такая чтука прокатит?
  • homm © (19.12.07 00:45) [6]
    > [3] guav ©   (19.12.07 00:13)
    > Это как ?

    Открой в BSPlayer любую киношку (за другие плеры не ручаюсь) а потом удали ее во время воспроизведения. Файл исчезнет, а с видео ничего не случится, даже перематывать можно. Я так сериалы смотрю, запускаю серию, удаляю файл сразу же :)
  • guav © (19.12.07 01:00) [7]
    > [6] homm ©   (19.12.07 00:45)

    Интересная фича. Наблюдаю на другом плеере то же.
  • Ins © (19.12.07 01:05) [8]

    > ну иногда есть только Stream...
    > почему бы из него не узнать имя используемого файла (в случае
    > FileStream) ?

    На мой взгляд, лучшими вариантами будут:
    1. Написать потомка TFileStream, в котором в конструкторе запоминать имя файла в каком-либо поле класса, и сделать свойство, которое позволяет его извлечь.
    2. При создании экземпляра заносить в TStringList с помощью AddObject имя файла и ссылку на экземпляр TFileStream. Когда имя файла понадобится - по ссылке на экземпляр найти в списке имя соотв. файла.
  • slow!alfamoon!com (20.12.07 21:33) [9]
    ;Определить путь до файла, имея его Handle
    ;DevilDevil   (18.12.07 23:58)
    ;возможен ли сабж?

    Если хэндл валиден на момент проверки (т.е. объект не закрыт и это именно тот объект, который нужен) - да.
 
Конференция "WinAPI" » Определить путь до файла, имея его Handle
Есть новые Нет новых   [134431   +14][b:0][p:0]