Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Problema al ejecutar aplicacion con parametros (https://www.clubdelphi.com/foros/showthread.php?t=25775)

RazoR 03-10-2005 23:14:44

Problema al ejecutar aplicacion con parametros
 
Bueno, tengo un problema. El tema es así: yo quiero ejecutar un emulador de ROMs de SNES y al darle la ruta del ROM no me ejecuta ni el programa si quiera, pero si no se la doy (o sea para ejecutar el emulador normalmente) si me lo ejecuta.

Ésto es lo que uso para ejecutarlo sin el ROM:

Código Delphi [-]
 ShellExecute(Form1.Handle,nil,PChar('"C:\Documents and Settings\...\zsnesw.exe"'),'','',SW_SHOWNORMAL);
Y ésto es lo que quiero usar para ejecutarlo con el ROM:

Código Delphi [-]
 ShellExecute(Form1.Handle,nil,PChar('"C:\Documents and Settings\...\zsnesw.exe rom.smc"'),'','',SW_SHOWNORMAL);
rom.smc es el archivo del ROM. La sintaxis del ZSNES (el emulador que uso de SNES) es ésta:

Usage : zsnes [-d,-f #, ... ] <filename.sfc>
Eg : zsnes -s -r 2 game.sfc

Para más info click acá

Lo raro es que si yo voy a Inicio->Ejecutar y pongo:

"C:\Documents and Settings\Gonzalo\Mis documentos\Programacion\ZSNES Rom Loader\ZSNES\zsnesw.exe rom.smc"

Me ejecuta el emulador corriendo el ROM que elegí por lo que en teoría debería andar ésto, creo.

Alguien tiene idea de cuál puede ser el problema o una solución al mismo?

Saludos, Gonzalo

PD: al método que usé para correr el emulador con parámetros lo usé con otros programas y me anduvo bien, así que no sé por qué con éste no anda.

ContraVeneno 04-10-2005 00:14:00

no estoy seguro de esto, pero creo que si quitas las comillas y dejas solo los apóstrofes debería funcionar.

RazoR 04-10-2005 02:09:34

No, no anduvo :(

Lepe 04-10-2005 11:51:14

Cita:

Empezado por Ayuda delphi
HINSTANCE ShellExecute(

HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened

¿Para qué servirá lo que he puesto en rojo? :D

Lo que está en azul, será interesante ponerlo, para que encuentre el
"rom.smc", ya que el directorio activo en windows puede ser distinto al
especificado del ejecutable.

Código Delphi [-]
ShellExecute(Form1.Handle,
      nil, 
      PChar('"C:\Documents and Settings\....\zsnesw.exe"',
      Pchar('"rom.smc"'),'',SW_SHOWNORMAL);

Un saludo

RazoR 04-10-2005 15:18:43

Ya lo intenté también :( Y con WinExec tampoco pude. También probé con nombres 8.3 y no pude, ya no sé que hacer :(

/EDIT: con ésto había probado antes, nombres 8.3 y poniendo los parámetros y la carpeta de trabajo por separado.

Código Delphi [-]
 ShellExecute(Form1.Handle,nil,PChar('C:\docu~1\Gonzalo\Misdoc~1\progra~1\ZSNESr~1\ZSNES\zsnesw.exe')  ,
   PChar('C:\docu~1\Gonzalo\Misdoc~1\progra~1\ZSNESr~1\ZSNES\rom.smc'),
     PChar('C:\docu~1\Gonzalo\Misdoc~1\progra~1\ZSNESr~1\ZSNES'),SW_SHOWNORMAL);

Lepe 04-10-2005 15:53:27

Que si funciona hombre, no desesperes.

Si una ruta tiene espacios en blanco, y/o bien es más larga de 8 caracteres, tienes que meterla entre dobles comillas.

Si no estas en windows equispé o 2000 ;) entonces no esperes que funcione

Código Delphi [-]
ShellExecute(Form1.Handle,
      nil, 
      PChar('"C:\Documents and Settings\....\zsnesw.exe"',
      Pchar('"rom.smc"'),
      PChar('"C:\Documents and Settings\...\"'),
      SW_SHOWNORMAL);
Eso debe funcionar, y si no:
Código Delphi [-]
ShellExecute(Form1.Handle,
      Pchar('open'), 
      PChar('"C:\Documents and Settings\....\zsnesw.exe"',
      Pchar('"rom.smc"'),
      PChar('"C:\Documents and Settings\...\"'),
      SW_SHOWNORMAL);

Un saludo

RazoR 04-10-2005 16:19:46

Acabo de probar con ésto:

Código Delphi [-]
ShellExecute(Form1.Handle,
         PChar('open'),
         PChar('"C:\Documents and Settings\Gonzalo\Mis Documentos\Programacion\ZSNES Rom Loader\ZSNES\zsnesw.exe"'),
         Pchar('"rom.smc"'),
         PChar('"C:\Documents and Settings\Gonzalo\Mis Documentos\Programacion\ZSNES Rom Loader\ZSNES\"'),
         SW_SHOWNORMAL);

Y ésto:

Código Delphi [-]
ShellExecute(Form1.Handle,
         nil,
         PChar('"C:\Documents and Settings\Gonzalo\Mis Documentos\Programacion\ZSNES Rom Loader\ZSNES\zsnesw.exe"'),
         Pchar('"rom.smc"'),
         PChar('"C:\Documents and Settings\Gonzalo\Mis Documentos\Programacion\ZSNES Rom Loader\ZSNES\"'),
         SW_SHOWNORMAL);

Y ninguna de las 2 cosas anduvo :( Tengo Windows XP SP2

/EDIT: Probé poniéndole la ruta completa al rom y anduvo!! Muchisimas, pero muchisimas gracias :D


La franja horaria es GMT +2. Ahora son las 06:38:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi