Eugie » 19 мар 2004, 16:21
Цель вопроса не вполне понятна.
Если нужно узнать, какая программа по умолчанию открывает файл с заданным расширением (
file assoсiation), используй
FindExecutable или
AssocQueryString, например:
Код: Выделить всё
if (FindExecutable("mydoc.txt", NULL, szExeFile) > 32)
cout << ".txt files are assosiated to open with " << szExeFile << endl;
Если же вопрос в том, кто в данный момент владеет конкретным файлом (скажем, по хэндлу файла получить хэндл процесса, в контексте которого он открыт), то лично я такого способа не знаю. И сомневаюсь, что он существует, поскольку отношение 'файл-процесс' неоднозначно по определению: файл м.б. открыт одновременно несколькими процессами.
мда...хм... а в проге TaskInfo почему-то все видно...
Не знаю, не использовал.
если есть любые идени пишите...
Нет, ну можно, конечно, пробежаться по заголовкам всех главных окон...
![Smile :)](./images/smilies/icon_smile.gif)
Цель вопроса не вполне понятна.
Если нужно узнать, какая программа по умолчанию открывает файл с заданным расширением ([i]file assoсiation[/i]), используй [b]FindExecutable[/b] или [b]AssocQueryString[/b], например:
[code]
if (FindExecutable("mydoc.txt", NULL, szExeFile) > 32)
cout << ".txt files are assosiated to open with " << szExeFile << endl;
[/code]
Если же вопрос в том, кто в данный момент владеет конкретным файлом (скажем, по хэндлу файла получить хэндл процесса, в контексте которого он открыт), то лично я такого способа не знаю. И сомневаюсь, что он существует, поскольку отношение 'файл-процесс' неоднозначно по определению: файл м.б. открыт одновременно несколькими процессами.
[quote]мда...хм... а в проге TaskInfo почему-то все видно... [/quote]
Не знаю, не использовал.
[quote]если есть любые идени пишите...[/quote]
Нет, ну можно, конечно, пробежаться по заголовкам всех главных окон... :)