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 10-03-2007
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
ShellExecute para ejecutar comando que contiene '>'

Veamos esto...

Código:
ShellExecute(Handle, nil, PChar('G:\Mostrar_Num.bat > G:\Num.txt'), nil, nil, SW_SHOWNORMAL);
El archivo Mostrar_Num.bat es un archivo por lotes que muestra un número (a manera de ejemplo). Así la línea que contiene el archivo Mostrar_Num.bat es:

Código:
@echo 8
Al ejecutar en la línea de comandos del sistema la línea:

Código:
G:\>Mostrar_Num.bat > Num.txt
Se crea el archivo 'Num.txt' y en el se consigna el número 8. Pero cuando ejecuto la instrucción ShellExecute, no pasa nada, y la función no genera ningún error.

La pregunta entonces sería la siguiente: ¿De qué otra manera se puede ejecutar esa línea desde Delphi de tal manera que funcione?
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita
  #2  
Antiguo 10-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
La respuesta corta:
Usa el truco 54. Este permite ejecutar la linea de comandos tal cual tu la tienes, o incluso, permite capturar directamente la salida del programa sin tener que utilizar un archivo de texto.

La respuesta larga:
Tu codigo no funciona porque en la funcion Shellexecute, el programa a ejecutar y los parametros tienen que pasarse por separado. Es decir:
Código Delphi [-]
ShellExecute(Handle,nil,PChar('G:\Mostrar_Num.bat'),PChar('> G:\Num.txt'),nil,SW_SHOW);
Pero aun asi no funcionaria como tu esperas, ya que la redireccion ">" es un parametro manejado por el interprete de comandos. Asi que lo que debemos ejecutar es el interprete de comandos, y pasarle toda la linea como parametro. Algo Asi:
Código Delphi [-]
ShellExecute(Handle,nil,PChar('cmd.exe'),PChar('/c G:\Mostrar_Num.bat > G:\Num.txt'),nil,SW_SHOW);
Y aun asi, tendríamos que resolver el problema de que el interprete de comandos no se llama siempre igual en todos los windows, tendríamos que obtener su nombre de la variable de entorno COMSPEC.

En fin, mejor usar el truco 54
Responder Con Cita
  #3  
Antiguo 11-03-2007
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Vaya, qué me estará pasando? La solución es lógica! je je .

No esperaría una respuesta mejor, ni más rápida. Gracias seoane.

Voy a probar las dos soluciones, para dos aplicaciones diferentes. En realidad en una de ellas requiero del archivo de texto, pero en la otra quizás no, así que el truco 54 en este caso será una alternativa excelente.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita
  #4  
Antiguo 26-03-2007
lacovera lacovera is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
lacovera Va por buen camino
a mi no me va el shellexecute

hola!! estoy intentando llamar a un programa externo desde delphi 2006 con ShellExecute y no me lo reconoce (undeclarated identifier ShellExecute)
hay que agregar algo a mi proyecto para poder utilizarlo??

Muchas gracias!!
Responder Con Cita
  #5  
Antiguo 26-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por lacovera
hay que agregar algo a mi proyecto para poder utilizarlo??
Código Delphi [-]
uses ShellApi;
Responder Con Cita
  #6  
Antiguo 26-03-2007
lacovera lacovera is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
lacovera Va por buen camino
Muchas 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
Ejecutar comando del Sistema Operativo sergionr API de Windows 6 09-04-2007 18:52:07
Ejecutar comando runas desde delphi bykram API de Windows 10 29-12-2004 21:29:24
Quiero ejecutar dos comando MSDOS nesetru Varios 4 09-02-2004 21:11:56
Comando para EPSON TMU 200 gendelphi Impresión 1 30-12-2003 01:57:12


La franja horaria es GMT +2. Ahora son las 15:02:32.


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