Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 27/03/2011
JXJ JXJ is offline
Miembro
 
Join Date: Apr 2005
Posts: 2,475
Poder: 24
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



Code:
 
//---------------------------------------------------------------------------
#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.
Reply With Quote
  #2  
Old 27/03/2011
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,681
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cuando hay espacios debes indícar el texto entre comillas, ejemplo: "c:\documents and settings\tu carpeta\tuprograma.exe"
Reply With Quote
  #3  
Old 28/03/2011
JXJ JXJ is offline
Miembro
 
Join Date: Apr 2005
Posts: 2,475
Poder: 24
JXJ Va por buen camino
Question

Quote:
Originally Posted by Casimiro Notevi View Post
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\
Reply With Quote
  #4  
Old 28/03/2011
escafandra's Avatar
[escafandra] escafandra is offline
Miembro Premium
 
Join Date: Nov 2007
Posts: 2,211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Con CreateProcess:
Code:
   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:
Code:
ShellExecute(0, 0, "C:\MiPrograma.exe", "param1 param2", 0, SW_SHOW);


Saludos.
Reply With Quote
  #5  
Old 28/03/2011
JXJ JXJ is offline
Miembro
 
Join Date: Apr 2005
Posts: 2,475
Poder: 24
JXJ Va por buen camino
Quote:
Originally Posted by escafandra View Post
Con CreateProcess:
Code:
   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:
Code:
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..
Reply With Quote
  #6  
Old 28/03/2011
escafandra's Avatar
[escafandra] escafandra is offline
Miembro Premium
 
Join Date: Nov 2007
Posts: 2,211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Code:
   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.

Last edited by escafandra : 28/03/2011 at 15:01.
Reply With Quote
  #7  
Old 28/03/2011
JXJ JXJ is offline
Miembro
 
Join Date: Apr 2005
Posts: 2,475
Poder: 24
JXJ Va por buen camino
Quote:
Originally Posted by escafandra View Post
Code:
   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.
Reply With Quote
  #8  
Old 29/03/2011
escafandra's Avatar
[escafandra] escafandra is offline
Miembro Premium
 
Join Date: Nov 2007
Posts: 2,211
Poder: 22
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í:

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


Saludos.
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Enviar parámetros al Browser MaMu API de Windows 0 15/04/2008 08:11
Enviar Parámetros a una form Manuel Varios 4 16/08/2006 04:24
Recibir parámetros desde php con una aplicación c++Builder Panchisco C++ Builder 0 04/06/2005 22:32
Enviar parametros a un informe (QuickReport) Lionel Impresión 1 08/06/2004 15:25
Parametros entre Delphi i c++ Builder jsb Varios 7 20/02/2004 18:25


All times are GMT +2. The time now is 05:46.


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