Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problema con shellexecute (https://www.clubdelphi.com/foros/showthread.php?t=87404)

danielmj 29-12-2014 18:22:52

problema con shellexecute
 
Hola, intento pasar unos parametros al cmd usado con shellexecute pero me da error y la verdad no sé como solucionarlo, entonces buscando y buscando encontre este truco en el foro ¿podría usarlo para pasarle esos parametros que hasta ahora me da error? he probado el truco a parte y el resultado me lo da en lenguaje chino o primo hermano, en todo caso mi código es este:

Código Delphi [-]
ShellExecute(Form1.Handle, nil, 'cmd.exe',
  'c:\program files\blender foundation\blender\blender.exe -b c:\cubo.blend -f png', SW_SHOWNORMAL);

Y el error este:
Código:

[dcc32 Error] cons.pas(121): E2010 Incompatible types: 'PWideChar' and 'Integer'
Sé que es un error con los tipos de datos pero ¿por qué hace referencia al pwidechar?
Espero podais ayudarme. Un saludo y feliz año.

BDWONG 29-12-2014 18:47:54

Bueno te da incompatibilidad de tipos porque te falta un parametro, antes del parametro del SW_SHOWNORMAL va otro que seria para especificar el directorio

bueno te dejo este ejemplo
Código Delphi [-]
ShellExecute(Form1.Handle, 'open',pchar('cmd'),pchar('/k notepad.exe'),nil, SW_SHOWNORMAL);


en este caso solo abre el cmd y mediante el ejecuta el bloc de notas

te dejo la referencia para que le des una mirada
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

saludos...

danielmj 29-12-2014 20:17:02

Hola bdwong,

Ya había conseguido que no diese error, solo que ahora simplemente no hace nada, ni abre la consola ni nada. Tengo esto:

Código Delphi [-]
ShellExecute(Handle,'render', PChar('cmd'),
  PCHAR(sEdit1.Text+ ' --background '+sEdit2.Text+' --render-output //test_ --engine CYCLES --render-format PNG --use-extension 1 --render-frame 5'), nil, SW_SHOW

Independientemente de que los parametros de la aplicacion a llamar, el cmd debería abrirse ¿verdad?

Un saludo y gracias.

BDWONG 29-12-2014 23:43:48

Bueno en el segundo parametro la palabra 'render' creo que un valor valido porque segun la msdn de microsoft esta no existe, si quieres abrir el cmd cambia ese parametro por 'open'
ademas si quieres que te ejecute los comandos que le vas a mandar al cmd tienes que poner antes el '/k '
porque si no, no hara nada

Código Delphi [-]
ShellExecute(Handle,'open', PChar('cmd'),
  PCHAR('/k '+sEdit1.Text+ ' --background '+sEdit2.Text+' --render-output //test_ --' + 
  'engine CYCLES --render-format PNG --use-extension 1 --render-frame 5'),nil, SW_SHOWNORMAL);

Espero mas o menos se entienda

danielmj 30-12-2014 12:27:27

buenas, tenias razon bdwong, es open y no render, por otra parte y lo digo a titulo informativo, quite la "/k" y funciona bien. Una cosa que no sé si se podra hacer ¿sería posible capturar el porcentaje de progreso y enviarlo a una barra de progreso en el formulario? se me ocurre lo siguiente:


Cada una de esas lineas podría ser un tanto por cierto del progreso, por que van saliendo mientras no se acaba el render ¿podría usarlas para calcular el progressBar? y ¿hay alguna forma de contar esas lineas? en difinitiva ¿sería posible mostrar en un progressBar el progreso del render tomando la consola como referencia? ¿me daría esta opción este truco?

Un saludo.


La franja horaria es GMT +2. Ahora son las 07:41:34.

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