Как узнать какой процесс какой файл использует?

Хуки позволяют подгрузить свою динамическую библиотеку в адресное пространство всех запущенных (и запускаемых) процессов. Работая в контексте другого процесса, можно перечислить его хэндлы, узнать, какие из них соответствуют файлам и получить информацию о файлах. Альтернативный вариант - написать драйвер и проанализировать структуры ядра ОС. Но если опыта в написании драйверов нет, лучше использовать хуки

Примеров использования хуков в сети много, попробуйте погуглить хотя бы на тему "как написать кейлогер".