C/Visual C - COPIAR UNA CARPETA CON SU CONTENIDO

 
Vista:

COPIAR UNA CARPETA CON SU CONTENIDO

Publicado por Mariano (15 intervenciones) el 18/05/2001 15:54:49
Necesito, hacer un dialogo openfile, pero que me permita seleccionar capetas, no sólo archivos. Además existe una api para copiar carpetas enteras? y para insertar bit en el conienzo y fin de un archivo? quien pueda axuiliarme, en cualwuier lenguaje (incluso ensamblador), por favor hágalo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Diálogo OpenFile para seleccionar carpetas y API para copiar carpetas enteras

Publicado por Alejandro (913 intervenciones) el 25/09/2024 17:25:08
Para crear un diálogo OpenFile que permita seleccionar carpetas en lugar de archivos, puedes utilizar la función `SHBrowseForFolder` de la API de Windows. Aquí tienes un ejemplo en C++ utilizando la API de Windows:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <windows.h>
#include <shlobj.h>
 
int main() {
    BROWSEINFO browseInfo = { 0 };
    browseInfo.hwndOwner = NULL;
    browseInfo.pidlRoot = NULL;
    browseInfo.pszDisplayName = NULL;
    browseInfo.lpszTitle = TEXT("Selecciona una carpeta");
    browseInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI;
    browseInfo.lpfn = NULL;
 
    LPITEMIDLIST selectedFolder = SHBrowseForFolder(&browseInfo);
    if (selectedFolder != NULL) {
        TCHAR folderPath[MAX_PATH];
        if (SHGetPathFromIDList(selectedFolder, folderPath)) {
            // Aquí puedes utilizar la ruta de la carpeta seleccionada
        }
 
        CoTaskMemFree(selectedFolder);
    }
 
    return 0;
}

Este código utiliza la función `SHBrowseForFolder` para mostrar un diálogo de selección de carpeta. Al seleccionar una carpeta, se obtiene la ruta de la carpeta seleccionada utilizando la función `SHGetPathFromIDList`.

En cuanto a la copia de carpetas enteras, puedes utilizar la función `SHFileOperation` de la API de Windows para copiar carpetas y archivos. Aquí tienes un ejemplo en C++:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <shlobj.h>
 
int main() {
    SHFILEOPSTRUCT fileOp = { 0 };
    fileOp.hwnd = NULL;
    fileOp.wFunc = FO_COPY;
    fileOp.pFrom = TEXT("C:\\Ruta\\Origen\\*"); // Ruta de origen de la carpeta
    fileOp.pTo = TEXT("C:\\Ruta\\Destino"); // Ruta de destino de la carpeta
    fileOp.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR;
 
    int result = SHFileOperation(&fileOp);
    if (result == 0) {
        // La carpeta se copió exitosamente
    }
 
    return 0;
}

En este ejemplo, se utiliza la función `SHFileOperation` con el parámetro `FO_COPY` para copiar la carpeta y su contenido de la ruta de origen a la ruta de destino especificadas. Los parámetros `FOF_NOCONFIRMATION` y `FOF_NOCONFIRMMKDIR` se utilizan para evitar las confirmaciones y la creación de directorios de confirmación.

En cuanto a la inserción de bits al principio y al final de un archivo, esto puede variar dependiendo del tipo de archivo y el lenguaje de programación que estés utilizando. Sería útil saber más detalles sobre el tipo de archivo y el lenguaje de programación específico que estás utilizando para poder proporcionarte una solución más precisa.

Espero que esta información te sea útil, Mariano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar