none
Cerrar un archivo Abierto y eliminarlo al salir del form RRS feed

  • Pregunta

  • Hola

    tengo Mi aplicación de tipo de librerias desarrollada en C# 2012. tengo un boton en un formualrio que abre un documento. pero que pasa si el documento ya esta habierto? hay manera que c# cierre un archivo abierto?, si no considero una restricción, cada vez que presione el botón se abrirá un archivo y tendré el mismo archivo abierto "n" veces, solo quiero que se abra una vez si esta abierto que se cierre usu este codigo para abrir  mi archivo

     string manual = @"C:\ProgramData\Autodesk\Revit\Macros\2015\Revit\maneb.chm";

     System.Diagnostics.Process.Start(manual);  

    Pueden ayudarme


    jueves, 26 de noviembre de 2015 23:10

Respuestas

Todas las respuestas

  • hola

    si conoces con que aplicacion se edita el documento podrias ver si el proceso esta ejecutando y cerrarlo

    Process.GetProcessesByName Method (String)

    entonces antes de lanzar el archivo validas si el proceso se esta ejecutando por el nombre, si ya se ejecuta imagino evitas lanzar uno nuevo dejas el que esta

    o le realzias un kill() a ese proceso que recuperas por el nombre y lanzas uno nuevo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 26 de noviembre de 2015 23:51
  • Leandro, Gracias por responder.

    Tengo un archivo maneb.chm que se copia de una carpeta a la Unidad "C:\", quiero abrirlo con un boton desde mi form, pero antes de abrirlo le paso una funcion que verifica si el proceso "hh" (.exe - help de windows) se esta ejecutando lo cierre, luego abro mi archivo. este es mi codigo:

     public void CerrarManual()
            {
                Process[] ItemProcess = Process.GetProcessesByName("hh");
                if (ItemProcess != null)
                {
                    foreach (Process SubProcess in ItemProcess)
                    {
                        SubProcess.Kill();
                    }
                }
                
            }
    
    string manual = @"C:\maneb.chm"; 
    func.CerrarManual(); // si hay manual abierto lo cerramos
    System.Diagnostics.Process.Start(manual) //abrimos manual;   

    funciona!....

    Ahora quiero eliminar el archivo cuando cierro el form, agrego este código en el evento FormClosed

    func.CerrarManual();//llamo a la funcion que cierra el help abierto

    File.Delete(@"C:\maneb.chm"); //elimino el help

    pero no lo puedo eliminar porque al parecer hay otro proceso que lo esta ejecutado......me aparece este mensaje:

    "The process cannot access the file 'C:\maneb.chm' because it is being used by another process.

    Como lo elimino???



    jueves, 3 de diciembre de 2015 17:56