Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


ShellExecute y WinExec

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

ShellExecute y WinExec

Notapor SolidSnake el Mié Jun 01, 2005 11:06 am

Hola

Primero quería agradecer la ayuda que me prestaron en cuanto a la progressbar...
Ahora tengo otra duda, pero muy diferente.
Yo quiero crear como una entarada de cd, me refiero a que te salga una ventana con diferentes botones y pongan instalar, manuales,..... y que cuando le des vayas al contenido del cd (un dialogo basado normal y corriente).
Para abrir solo pongo esta función: WinExec("ejemplo.exe", SW_NORMAL); y me deja abrirlo porque se encuentra en la misma carpeta que el programa jefe (en este caso estan en la carpeta debug).

Hasta ahí lo entiendo pero esto ya no...
Luego también pongo un boton para abrir tutoriales que tengo en el cd... lo que pasa es que como es .doc, .ppt, .xls, ..... pues lo tengo que abrir con la función ShellExecute, lo malo es que tienes qu indicar la ruta por ejemplo: ShellExecute(NULL,"open","C:\\Archivos de programa\\Microsoft Visual Studio\\MyProjects\\vb\\Debug\\.zip",NULL,NULL,SW_SHOW);
Y lo que yo quiero es que no haya ruta, quiero que lo detecte automaticamente de la carpeta donde estan, como con el winexec (lo que pasa es que el winexec solo deja abrir .exe).

Otra duda es: Con qué función puedo abrir un .rar, .zip, ... (shellexecute y winexec no son).

Si pueden responderme lo más rapido posible, porque tengo que entregar un trabajo...
Muchas gracias
SolidSnake
Novato
Novato
 
Mensajes: 5
Registrado: Mar May 17, 2005 4:54 pm
Ubicación: Badalona

Re: ShellExecute y WinExec

Notapor latindeveloper el Mié Jun 01, 2005 1:59 pm

Al ejecutar ShellExecute con los archivos doc, xls, zip etc. etc. invoca al programa relacionado con éstas extenciones para abrirlos, si no hay un programa relacionado con esa aplicacion entonces lo nos abrirá.

Asegurate de estar trabajando en el directorio donde se encuentra el ejecutable, generalmente es la carpeta debug, entonces ese mismo valor debe tener la opcion directorio de trabajo "Working directory" (en Opciones de proyecto->Pestaña Debug).

Luego los archivos a abrir deben estar en la carpeta donde se encuentra el ejecutable.

ShellExecute(NULL,"open",".\\archivo.zip",NULL,NULL,SW_SHOW);

.\\ indica la carpeta actual.
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Notapor SolidSnake el Mié Jun 01, 2005 6:14 pm

Eso de .\\ me funciona... pero para abrir un archivo zip o rar??? que función debo usar???
x k con shell execute no me deja
SolidSnake
Novato
Novato
 
Mensajes: 5
Registrado: Mar May 17, 2005 4:54 pm
Ubicación: Badalona

Re: ShellExecute y WinExec

Notapor latindeveloper el Jue Jun 02, 2005 8:06 am

Seguramente no tienes instalado winzip o winrar.

Para abrir un articho segun su configuracion en el registro de windows, puedes utilizar el siguiente codigo:

Código: Seleccionar todo
if ((UINT)result <= HINSTANCE_ERROR) {

    if (GetRegKey(HKEY_CLASSES_ROOT, _T(".zip"), key) == ERROR_SUCCESS) {
        lstrcat(key, _T("\\shell\\open\\command"));

        if (GetRegKey(HKEY_CLASSES_ROOT,key,key) == ERROR_SUCCESS) {
            TCHAR *pos;
            pos = _tcsstr(key, _T("\"%1\""));
            if (pos == NULL) {                     // No quotes found
                pos = _tcsstr(key, _T("%1"));      // Check for %1, without quotes
                if (pos == NULL)                   // No parameter at all...
                    pos = key+lstrlen(key)-1;
                else
                    *pos = '\0';                   // Remove the parameter
            }
            else
                *pos = '\0';                       // Remove the parameter

            lstrcat(pos, _T(" "));
            lstrcat(pos, url);

            USES_CONVERSION;
            result = (HINSTANCE) WinExec(T2A(key),showcmd);
        }
    }
}
//By Chris Maunder

Cambias .zip por alguna otra extension, o lo puedes pasar como parametro.
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron