Nuevo en formularios de Windows / identificador de ventana.

Intentando guardar archivos en diferentes ubicaciones.

Imagen de SaveFileDialog:

introduzca la descripción de la imagen aquí

Puedo obtener el identificador del cuadro de edición de los cuadros de edición del nombre del archivo en el cuadro de diálogo Guardar archivo. Capaz de pegar el camino.

introduzca la descripción de la imagen aquí

private const int WM_SETTEXT = 0x000C;

IntPtr edithWnd = IntPtr.Zero;
edithWnd = FindWindowEx(edithWnd, IntPtr.Zero, "Edit", null);
SendMessage(edithWnd, WM_SETTEXT, IntPtr.Zero, "D:\Mine\Folder1\file");

El código anterior establece la ruta del archivo en el cuadro de texto del nombre del archivo.

Ahora, haga clic en el botón "Guardar" obteniendo su identificador y enviando un clic.

private const int BM_CLICK = 0x00F5;

IntPtr handle = GetForegroundWindow(); // Save As dialog
IntPtr edithWnd = FindWindowEx(handle, IntPtr.Zero, "Button", "&Save");           
SendMessage(edithWnd, BM_CLICK, IntPtr.Zero, null);

Está funcionando bien, pero mientras usa este código en el bucle para guardar varios archivos en diferentes ubicaciones, no funciona correctamente, está guardando todos los archivos en una sola ubicación

Por ejemplo, el archivo se guarda en "D: \ Mine \ Carpeta1 \ archivo"

File1 no se guarda en "D: \ Mine \ Folder2 \ file1", sino que se guarda en "D: \ Mine \ Folder1 \ file1"

File2 no se guarda en "D: \ Mine \ Folder3 \ file2", sino que se guarda en "D: \ Mine \ Folder1 \ file2"

Parece que solo apunta a la primera ubicación, sin importar cuál sea la ruta.

1
Baj B 24 ago. 2020 a las 12:12

1 respuesta

La mejor respuesta

¿Por qué no acceder primero a la ruta deseada y luego guardar el archivo?

Trabajó para mi..

SendMessage(edithWnd, WM_SETTEXT, IntPtr.Zero, "D:\Mine\Folder1\");
// Hit enter
SendKeys.SendWait("{ENTER}");
// Now click the save button, file name will be there already, in case if it is 
// not paste the file name first and then perform save button click

Es posible que deba enfocar la ruta del archivo antes de presionar "Enter" que establecerá el enfoque y presionar "Enter" le permitirá ingresar a la ruta de la carpeta.

1
Dharman 25 ago. 2020 a las 12:31