es mas, si ademas lo borro estando abierto el fichero, me deja borrarlo, por lo que pierdo el contenido que en ese momento estuviera grabando en ese fichero, eso es lo que quiero evitar,
Estás equivocado.
No hay que preocuparse por eso en absoluto, el Notepad, Notepad++ y en general los editores de texto no protegen el archivo que has abierto porque no es necesario hacerlo, no es culpa de la aplicación de SysInternals, sinó de que los editores no modifican la protección de esos archivos... se visualiza una cópia OnTheFly del archivo entero, y en caso de guardarlo, si intentas eliminarlo mientras el archivo está siendo guardado, eso ya es muy distinto y ahí si verás como no puedes eliminarlo, y si has eliminado el archivo préviamente e intentas guardarlo, no ocurrirá ninguna catástrofe, el nuevo archivo se generará con el contenido del archivo que borraste y las modificaciones que le hayas hecho, en cualquier editor vaya.
Si quieres hacer mejores pruebas sobre los permisos, usa un archivo de video abierto por un reproductor (Un reproductor que no séa
MediaPlayer Classic/
MediaPlayer Classic Home Cinema, porque este tampoco protege el archivo que ejecutas y lo puedes eliminar del disco en cualquier momento mientras sigue la visualización...)
Igual que puedes eliminar un script mientras está en ejecución...
En fín todo eso depende del programa y de como hayan querido desarrollar el aspecto de la seguridad de los archivos abiertos.
No creo que puedas detectar con 100% de certeza si un archivo de TXT ha sido abierto,
Podrías usar WMIC para mostrar la línea de comandos con la que se ejecutaron todas las aplicaciones, al abrir un archivo de texto, estaría en esa línea de comandos, pero si abres otro archivo distinto desde el programa la línea de comandos no se actualizara.
WMIC Process get commandline /format:list
Así que mi consejo para asegurarte lo máximo posible en esas ocasiones como "archivos de texto" es que combines Handles + WMIC + CMDOW
Con CMDOW puedes obtener el título de la ventana de la aplicación, donde debe salir el nombre del archivo que está abierto en ese momento, pero claro, si en el editor de texto tienes multiples pestañas, en el TitleBar sólo mostrara el nombre del archivo de la pestaña que tengas abierto... por eso te aconsejo combinar y te digo que no lo puedes saber 100% con seguridad.
C:\>cmdow | find /I "test"
0x230440 1 2752 Res Ina Ena Vis sublime_ C:\Users\Administrador\Desktop\test 2.
0x470404 1 2596 Res Ina Ena Vis notepad test.txt: Bloc de notas
PD:
CMDOW y WMIC no serían necesarios si usases WMI, en cualquier otro lenguaje, pero no conseguirías mejores resultados.
EDITO: Quizás alguien más experimentado en procesos y handles encuentra otra solución más efectiva
Saludos.