Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2016
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
ayuda con ShellExecute con parámetro

Por favor, necesito un poco de ayuda...
Tengo un pequeño programa de consola hecho en C# y necesito llamarlo desde delphi.
Este programa necesita le sea ingresado un parámetro y tengo problemas con la llamada, siempre me sale un error probando de distintas formas.
Estoy haciendo algo como lo siguiente:

Código Delphi [-]
ruta:= '/c ' + cRutaExe + 'Archivos\programa.exe ' + folio;
ShellExecute(Handle,'open',PChar('cmd'),PChar(ruta),nil,Sw_ShowMinimized);

(cRutaExe es la ruta hacia donde está el ejecutable de delphi, mientras que el programa C# está en la carpeta Archivo dentro de esa ruta y folio es el parámetro que requiere el programa)

Lo he hecho de distintas formas, a veces solo abre el cmd y no hace nada, otras abre el cmd en la carpeta cRutaExe, otras me manda error. He usado muchas veces el ShellExecute pero directamente para abrir programas ejecutables no a través de cmd.
La cosa es que necesito abrir cmd para poder ejecutar el programa de consola de c# y pasarle un parámetro, ¿cómo se puede hacer?
De antemano gracias.
Responder Con Cita
  #2  
Antiguo 27-05-2016
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 21
ASAPLTDA Va por buen camino
[
Código Delphi [-]
ruta:= '/c ' + cRutaExe + 'Archivos\programa.exe ' + folio;
ShellExecute(Handle,'open',PChar('cmd'),PChar(ruta),nil,Sw_ShowMinimized);

Hola en que sistema operativo trabajas?
ruta:= '/c ' podria ser c:\ ??
Responder Con Cita
  #3  
Antiguo 27-05-2016
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Cita:
Hola en que sistema operativo trabajas?
ruta:= '/c ' podria ser c:\ ??
'/C' es una instrucción que se pasa a cmd para que ejecute algo

"cmd, /C programa.exe"

lo que hace es abrir cmd y la instrucción /C hace que se ejecute el programa y luego cierre el cmd
Responder Con Cita
  #4  
Antiguo 27-05-2016
JOSEPE JOSEPE is offline
Miembro
 
Registrado: feb 2005
Posts: 45
Poder: 0
JOSEPE Va por buen camino
Asi?

Y asi?

Código Delphi [-]
  filename := 'c:\Archivos\programa.exe'; 
  parameters := 'folio'; 
  ShellExecute(handle,'open',PChar(filename), PChar(parameters),'',SW_SHOWMINNOACTIVE);

Última edición por ecfisa fecha: 27-05-2016 a las 19:57:26. Razón: acomodar a visualización de página
Responder Con Cita
  #5  
Antiguo 27-05-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Desconozco el motivo de llamar al ejecutable desde el command shell y no directamente, pero de este modo me funciona correctamente:
Código Delphi [-]
procedure ExecuteByCMD(const FileExe, Params: string; const nShow: Integer);
const
  SPC = ' ';
begin
  ShellExecute(0,
               'open',
               'CMD.EXE',
               PChar('/C' + SPC + FileExe + SPC + Params),
               nil,
               nShow);
end;

Ejemplo de llamada:
Código Delphi [-]
begin
  ExecuteByCMD('C:\WINDOWS\NOTEPAD.EXE', 'C:\WINDOWS\WIN.INI', SW_SHOW);
...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 27-05-2016
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Al final logré realizar lo que necesitaba, lo hice de la siguiente forma:

Código Delphi [-]
ruta:= '/C programa ' + folio;
  ShellExecute(Handle,'open',PChar('cmd'),PChar(ruta),PChar(cRutaExe + 'Archivos'),Sw_ShowMinimized);


Cita:
Desconozco el motivo de llamar al ejecutable desde el command shell y no directamente
ecfisa me daba error abrirlo directamente, pero le volveré a dar una vuelta a eso a ver si puedo abrirlo directamente, pero ahora por lo menos ya me funciona.

Gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ShellExecute mjjj API de Windows 4 17-04-2010 21:39:20
ayuda con declaracion de parametro microbiano Conexión con bases de datos 3 11-03-2010 00:08:45
Shellexecute mjjj Varios 2 11-09-2007 18:41:21
ShellExecute jorodgar Varios 8 07-05-2007 14:46:15
ShellExecute erfedecai API de Windows 4 26-06-2006 20:12:46


La franja horaria es GMT +2. Ahora son las 04:36:42.


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
Copyright 1996-2007 Club Delphi