SHELL.Execute información

vForum público de la plataforma de desarrollo Velneo

Moderador: vCoaches

Responder
Avatar de Usuario
perpeju
vMate
vMate
Mensajes: 57
Registrado: 02 Ago 2006, 07:22

SHELL.Execute información

Mensaje por perpeju » 12 Jul 2007, 16:56

Hola a todos.
Me estoy peleando con la shell32.dll para borrar los archivos temporales que hemos generado con SDV en importaciones.

Con esto (la ayuda del foro) estoy atascado dado que no encuentro un manual de esta Shell, ¿ como se hace que ejecute comandos dos, pero sin crear ningun bat, que es lo que estoy haciendo.?

Adjunto captura.
Un saludo a todos...
Adjuntos
shell.jpg
Captura
(30.86 KiB) Descargado 213 veces

Avatar de Usuario
Fran
vCoach
vCoach
Mensajes: 6599
Registrado: 21 Sep 2005, 08:23
Ubicación: Madrid (España)
Contactar:

Mensaje por Fran » 12 Jul 2007, 16:58

Buenas tardes:

No he utilizado nunca esa función, pero en Velneo tenemos una función nativa para ejecutar comandos DOS. Copio de la ayuda:

Ejecutar comando DOS

Función común de lista y de ficha.

Ejecuta cualquier comando o aplicación de MS-DOS.

PARÁMETROS:
Comando:
Especificación del comando DOS a ejecutar (obligatorio).

Identificador variable donde dejar el valor de retorno del comando:
Variable en la cual se va a dejar el valor que retorne el comando ejecutado (opcional).

Ej.: RESTORE A: C:\GESTION\CONTACTOS.DAT

Autor: Velneo, S.A.
Un saludo,

Francisco Javier Pérez Novo
EfeUno Consultores de Gestión y Software, S.L.
fjpnovo@efeuno.org
http://www.efeuno.org
(+34) 91 519 44 86
Skype: Fran-EfeUno

Google Maps:
40.447943147972445, -3.6719655990600586

Avatar de Usuario
perpeju
vMate
vMate
Mensajes: 57
Registrado: 02 Ago 2006, 07:22

Mensaje por perpeju » 12 Jul 2007, 17:00

Gracias.
Simplemente utilizo esta para no presentar la ventada dos.
Me olvidé de comentarlo.

Avatar de Usuario
rgvigo
vAdviser
vAdviser
Mensajes: 633
Registrado: 29 Oct 2005, 01:42

Mensaje por rgvigo » 12 Jul 2007, 18:56

Hola Juan

Si pones el nombre del ejecutable en vez del .bat deberia funcionar, si no va prueba a cambiar directorio por defecto y ajustalo al directorio donde este el ejecutable, o bien copia el ejecutable en la carpeta del programa.

Espero que te sirva.

Un saludo

Avatar de Usuario
perpeju
vMate
vMate
Mensajes: 57
Registrado: 02 Ago 2006, 07:22

Mensaje por perpeju » 12 Jul 2007, 22:10

Un saudo a Vigo..
Cando facemos outra cena..

Un saludo a todos.
En cuanto a este tema de la Shell, la idea era ejecutar comandos dos a pelo, es decir, sin la orden ejecutar comando, con la shell32.dll y los prametros por ejemplo:
del *.jpg u otro comando, ipconfig /all, y alguna otra cosilla que ahora mismo hago con la shell32 pero creando un bat, dada que con esta libreria se puede ocultar la ventada de dos, y queda más elegante.

Gracias a todos.
Un saludo.

leo
vAdviser
vAdviser
Mensajes: 310
Registrado: 22 Mar 2006, 12:25
Ubicación: Argentina - Bs. As.

Mensaje por leo » 12 Jul 2007, 22:46

Hola te sirve esta definición?:
Obviamente pasala a Velneo como DLL kernel32

'Definición de la API eliminar el archivo
Function DeleteFile Lib "kernel32.dll" (ByVal lpFileName As String) As Long

resultado = DeleteFile(arch)

slds.

SJover
vMate
vMate
Mensajes: 30
Registrado: 28 Abr 2007, 22:18
Ubicación: Alicante (Esoaña)
Contactar:

Problema con shell32.dll

Mensaje por SJover » 12 Jul 2007, 23:37

Hola a todos:

Creo que lo mejor es que evaluaras el valor de retorno de la función que te mostrará el codigo de error.
La función ShellExecute, nos devuelve el manejador de la instancia de la aplicacion que va a ser ejecutada. Este valor falla devuelve un valor menor que 32.
Entonces puedes evaluar exactamente que error te está devolviendo.

La cabecera de ShellExecute es:
ShellExecute( hWnd: HWND;
Operation: PChar;
Filename: Pchar;
Parameters: PChar;
Directory: PChar;
ShowCmd: Integer): HINST; stdcall;
Si tienes alguna duda lo comentas.

Un saludo,
Salvador

SJover
vMate
vMate
Mensajes: 30
Registrado: 28 Abr 2007, 22:18
Ubicación: Alicante (Esoaña)
Contactar:

Mensaje por SJover » 12 Jul 2007, 23:47

Hola:
Olvidaba comentarte los distintos parametros, por si te ayuda:

hWnd: HWND; -> Handle de la ventana que recibe los mensajes de error (la que invoca la función -puede ser cero-

Operation: PChar; -> Puntero a cadena nula con la operacion a efectuar (puede tomar los valores 'open' 'print' o 'explore'. Si el parametro es vacio se toma por defecto 'open'
Filename: Pchar; -> Puntero a cadena nula con el nombre del fichero
Parameters: PChar; -> Puntero a cadena nula con los parametros (opcional)
Directory: PChar; ->Puntero a cadena nula con la ruta del directorio por defecto. Si está vacia se toma el directorio actual.
ShowCmd: Integer -> Como se mostrará la aplicacion lanzada. En este punto existen constantes que ahora mismo no tengo a mano los valores pero recuerdo que 0 no mostraria la ventana, 1 si la muestra. Existen mas:
SW_HIDE, SW_MINIMIZE, SW_RESTORE, SW_SHOW, SW_SHOWMAXIMIZED, etc...
puedes buscar sus valores en google.
Espero que te ayude.
Un saludo,

Salvador

Avatar de Usuario
rgvigo
vAdviser
vAdviser
Mensajes: 633
Registrado: 29 Oct 2005, 01:42

Mensaje por rgvigo » 13 Jul 2007, 09:01

Hola Juan

Otra cena cuando quieras, si no recuerdo mal en agosto viene Agustin por aqui, asi que ya sabes.

En cuanto a lo de usar el bat a mi me parece que es bastante efectivo ya que dejas los comandos y parametros preconfigurados, o puedes generar los bat desde la aplicación. Yo lo uso para envio de correos a socios de una ONG y genero el bat para cada socio y luego lo ejecuto, el resultado es bastante bueno.

Un saludo

Responder