Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-03-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question c++ Builder enviar parametros

hola en C++ Builder

¿como puedo pasar parametros ¡?

especialmente al enviar parametros con espacios

por ejemplo abrir archivo que esta en

C:\miapp.exe

tengo este codigo pero no se como hacerle

por que los parametros que la aplicacion recibe.

se muestran asi.

c:\miapp.exe
parametro
1
parametro
2
parametro
_3


y yo quiero que salgan asi.
c:\miapp.exe
parametro 1
parametro 2
parametro _3



Código:
 
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
     BOOL CreateProcess(
  LPCWSTR pszImageName,
  LPCWSTR pszCmdLine,
  LPSECURITY_ATTRIBUTES psaProcess,
  LPSECURITY_ATTRIBUTES psaThread,
  BOOL fInheritHandles,
  DWORD fdwCreate,
  LPVOID pvEnvironment,
  LPWSTR pszCurDir,
  LPSTARTUPINFOW psiStartInfo,
  LPPROCESS_INFORMATION pProcInfo
);

void __fastcall TForm1::Button1Click(TObject *Sender)
{
STARTUPINFO StartInfo;// name structure
PROCESS_INFORMATION ProcInfo; // name structure
memset(&ProcInfo, 0, sizeof(ProcInfo)); // Set up memory block
memset(&StartInfo, 0 , sizeof(StartInfo)); // Set up memory block
StartInfo.cb = sizeof(StartInfo); // Set structure size
 

     char *sCmdLin =  "C:\\miapp.exe   'parametro 1'   'parametro 2'    'parametro _3' " ;
  int res = CreateProcess(NULL, sCmdLin  , NULL, NULL, NULL, NULL, NULL, NULL, &StartInfo, &ProcInfo);

}
//---------------------------------------------------------------------------
ayuda no entiendo

gracias por su atencion.
Responder Con Cita
  #2  
Antiguo 27-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cuando hay espacios debes indícar el texto entre comillas, ejemplo: "c:\documents and settings\tu carpeta\tuprograma.exe"
Responder Con Cita
  #3  
Antiguo 28-03-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Cuando hay espacios debes indícar el texto entre comillas, ejemplo: "c:\documents and settings\tu carpeta\tuprograma.exe"

entonces asi.


char *sCmdLin = "C:\\miapp.exe "parametro 1" "parametro 2" "parametro _3" " ;


mm char *sCmdLin = "C:\\miapp.exe 'parametro 1' 'parametro 2' 'parametro _3' " ;

dejame revisarlo.


ptra cosas a fuerzas se tiene que poner la doble barra??
C:\\

o solo con C:\

si es doble barra a fuerza. como la pongo???
si se supone que el programa lo obtiene el directorio de windows.
o de archivos de texto que manejan solo C:\archivos de programa\mi app\
Responder Con Cita
  #4  
Antiguo 28-03-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Con CreateProcess:
Código:
   PROCESS_INFORMATION pi = {0};
   STARTUPINFO si = {0};
   si.cb = sizeof(si);
   si.dwFlags = STARTF_USESHOWWINDOW;
   si.wShowWindow = SW_SHOW;
   bool bRet = CreateProcess(0, "C:\MiPrograma.exe param1 param2,0,0,0,0,0,0,&si,&pi);
Con ShellExecute:
Código:
ShellExecute(0, 0, "C:\MiPrograma.exe", "param1 param2", 0, SW_SHOW);


Saludos.
Responder Con Cita
  #5  
Antiguo 28-03-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
Con CreateProcess:
Código:
   PROCESS_INFORMATION pi = {0};
   STARTUPINFO si = {0};
   si.cb = sizeof(si);
   si.dwFlags = STARTF_USESHOWWINDOW;
   si.wShowWindow = SW_SHOW;
   bool bRet = CreateProcess(0, "C:\MiPrograma.exe param1 param2,0,0,0,0,0,0,&si,&pi);
Con ShellExecute:
Código:
ShellExecute(0, 0, "C:\MiPrograma.exe", "param1 param2", 0, SW_SHOW);


Saludos.
funciona pero solo en parte.

por que yo quiero pasar paramtros.
asi

bool bRet = CreateProcess(0, "C:\MiPrograma.exe param 1 param 2 ,0,0,0,0,0,0,&si,&pi);

son 2 parametros

y que pueda recibirllos asi.

param 1

param 2


en la forma que me propnene salen asi

C:\MiPrograma.exe
param
1


lo que quiero es poder pasarle la ruta de otra aplicacion .
y de otros documentos. a mi aplicacion.

la ruta es

c:\archivos de programa\winrar.exe

y
el archivo a comprimir es

C:\Users\jxj\Documents\mi carpeta\archivo emails.txt



como ven hay espacios. y no se como manejarlos.
con c++ builder 6..
Responder Con Cita
  #6  
Antiguo 28-03-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Código:
   PROCESS_INFORMATION pi = {0};
   STARTUPINFO si = {0};
   si.cb = sizeof(si);
   si.dwFlags = STARTF_USESHOWWINDOW;
   si.wShowWindow = SW_SHOW;
   CreateProcess(0, "Miprograma.exe \"c:\\archivos de programa\\winrar.exe\" \"C:\\Users\\jxj\\Documents\\mi carpeta\\archivo emails.txt\"",0,0,0,0,0,0,&si,&pi);
Saludos.

Última edición por escafandra fecha: 28-03-2011 a las 15:01:20.
Responder Con Cita
  #7  
Antiguo 28-03-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
Código:
   PROCESS_INFORMATION pi = {0};
   STARTUPINFO si = {0};
   si.cb = sizeof(si);
   si.dwFlags = STARTF_USESHOWWINDOW;
   si.wShowWindow = SW_SHOW;
   CreateProcess(0, "Miprograma.exe \"c:\\archivos de programa\\winrar.exe\" \"C:\\Users\\jxj\\Documents\\mi carpeta\\archivo emails.txt\"",0,0,0,0,0,0,&si,&pi);
Saludos.
vientos.. ahora lo pruebo..

sol una duda mas respecto a \\
casi siempre lo manjo asi \
en todo archivos ini.
lo tengo asi.

[winrar]
AppPat=c:\archivos de programa\winrar.exe\

como se le agregan los 2 \\ si yo manejo \

he probado y no responde si pongo \
solo responde si pongo \\

mmm. reviso y aver que pasa.
Responder Con Cita
  #8  
Antiguo 29-03-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cuando escribes código C el carácter '\' es de control. El compilador espera recibir otro caracter (\n, \r. \"...) asi, cuando quieres poner un '\' debes poner '\\'. Para poner unas comillas en un texto debes poner \", para diferenciar esas comillas de las que debes poner en la sintaxis.

Cuando lees un ini con una ruta C:\loquesea, el compilador lo interpreta tal cual, no actúan los caracteres de control, porque no estamos escribiendo código.

Los parámetros, cuando llevan espacios en su interior, deben ir encerrados entre comillas. Así, param numero uno, debe ir escrito en el código así:

Código:
"\"param numero uno\""
De esta forma el sistema lo considera como un sólo parámetro.


Saludos.
Responder Con Cita
Respuesta



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
Enviar parámetros al Browser MaMu API de Windows 0 15-04-2008 08:11:32
Enviar Parámetros a una form Manuel Varios 4 16-08-2006 04:24:38
Recibir parámetros desde php con una aplicación c++Builder Panchisco C++ Builder 0 04-06-2005 22:32:35
Enviar parametros a un informe (QuickReport) Lionel Impresión 1 08-06-2004 15:25:45
Parametros entre Delphi i c++ Builder jsb Varios 7 20-02-2004 18:25:05


La franja horaria es GMT +2. Ahora son las 07:20:16.


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