![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как по хэндлу процесса получить список открытых файлов [D6, Win95/98, WinME, Win2k, WinXP]
PFR © (2004-08-11 10:36:00)В DLL после выполнения некоторой функции остается залоченным файл (потом он в DLL не используется). Известно имя этого файла. Нужно найти хандл этого файла и закрыть. Подскажите, pls, как это сделать? (или хотя бы ссылочку (кроме sysinternals.com - там все как-то запутано))
PFR (2004-08-11 13:34:00) [1]Проблема на самом деле в том, что у меня (а может и у других)
при установке пароля на таблицу Paradox с помощью функции dbiDoRestructure лочится каталог содержащий таблицы, а мне при определенных условиях надо его прибить из программы. С помощью утилиты Process Explorer выяснил что лок каталога происходит при выполнении этой функции, каталог освобождается только при снятии задачи (а не при закрытии БД), снятие лока вручную не приводит к к-л отрицательным последствиям. Писал в конференцию БД, но там ничем помочь не смогли. Решил пойти другим путем... и опять тупик
Игорь Шевченко (2004-08-11 12:21:00) [2]
> Но как мне самому это реализовать в программе?
Для NT-систем через Native API работы с объектами, для Win9x - не знаю. Насчет "закрыть открытый файл" не могу ничего посоветовать, так как открыт файл в другом процессе, и Handle учитывается в его таблице. Авторы программ c Sysinternals используют драйвер режима ядра, чтобы показывать всеоткрытые файли и прочие объекты. При это появляется возможность и закрывать файлы, открытые чужими процессами.
А теперь главный вопрос - с какой целью нужно смотреть открытые файлы и закрывать их ? Иожет, можно найти более простое решение ?
PFR (2004-08-11 11:24:00) [3]Спасибо.
Но как мне самому это реализовать в программе?
Игорь Шевченко (2004-08-11 11:11:00) [4]www.sysinternals.com Process Explorer или HandleEx