Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ejecutar un CLD(maximizado en primer plano) y un .EXE

Estas en el tema de Ejecutar un CLD(maximizado en primer plano) y un .EXE en el foro de Visual Basic clásico en Foros del Web. Hola tengo este codigo que me funciona pero no como necesitaria. El tema es que estoy tratando que el VB me ejecute dos archivos que ...
  #1 (permalink)  
Antiguo 08/09/2008, 03:53
 
Fecha de Ingreso: julio-2007
Mensajes: 79
Antigüedad: 16 años, 9 meses
Puntos: 0
Ejecutar un CLD(maximizado en primer plano) y un .EXE

Hola tengo este codigo que me funciona pero no como necesitaria. El tema es que estoy tratando que el VB me ejecute dos archivos que estan en el c: .
Tengo un programa que es de la impresora canon ip4500 que se usa para imprimir la superficie de los dvd printiables. Este programa usa la extension .CLD la cual logro correr desde el VB. Lo que necesito es imprimir el disco desde el VB porque son mas de 100 cada dia que tengo que imprimir. Para esto se me ocurrio usar un programar que se llama Jitbit Macro Recorder el cual me graba las secuncias que hago con el mouse(grabo el moviemiento de abrir el .CLD y luego ir a Archivo + Imprimir.
Osea tengo que poder abrir el archivo .CLD (en primer plano) y luego el .EXE que genere con Jitbit Macro Recorder y asi con el moviento que grabe se imprima. El tema que me abre el .CLD y me ejecuta el exe (que hace el movimiento) pero como no esta en primer plano ni tampoco esta maximizado no logro llegar a buen termino.



Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long



Private Sub Command1_click() 'ejecutar archivos externos'

ShellExecute hwnd, "open", "C:\Fotos\0018 Basilica\0018.cld", vbMaximizedFocus, 1, 1
ShellExecute hwnd, "open", "C:\Fotos\0018 Basilica\18 Disco.exe", vbNullString, vbNullString, 1
End Sub


intente ponerle vbMaximizedFocus pero no me lo maximiza. Tampoco entiendo bien los parametros ya que me pasaron por esta web el codigo.
Gracias.
  #2 (permalink)  
Antiguo 08/09/2008, 09:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Ejecutar un CLD(maximizado en primer plano) y un .EXE

Aquí tienes informacion sobre ShellExecute:
http://msdn.microsoft.com/en-us/libr...53(VS.85).aspx

El último parámetro es el que te permite abrir la ventana maximizada (pasándole la constante SW_MAXIMIZE).

Aunque hay varios problemas de hacerlo de esa manera, primera, que es posible que el segundo programa (que simula los movimientos) se ejecute antes de que la ventana responda a los eventos por lo que fracasaría la acción.

Segundo, que, por ejemplo si se cambiara la resolución o cualquier otra cosa haga que los elementos no estén en la misma posición.

Lo que te recomendaría es que usaras SendMessage para controlar la otra aplicación, de hecho hace poco hablamos sobre su uso en otro tema.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 08/09/2008, 14:19
 
Fecha de Ingreso: julio-2007
Mensajes: 79
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Ejecutar un CLD(maximizado en primer plano) y un .EXE

Si eso que me decis lo pense pero solo era para mi maquina que nunca le toco la configuracion. Estuve pensando que podria usar solo un programa ya que el de el mouse no logro hacerlo andar porque me queda el visual en primer plano cosa que se abre el programa de impresion de discos (maximizado) pero detras de la pantalla de VB donde programo y luego si se ejecuta el movimiento del mouse pero sobre el visual con lo cual no me gfunciona.
Estaba pensando en el programa que imprime DVD (CD-label-print) dandole CTRL+P impirmiria y luego cerrandolo me serviria.
Lo intente pero no doy con la manera de mejar el programa desde visual.

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


Private Sub Command1_click() 'ejecutar archivos externos'
ShellExecute hwnd, "open", "C:\Fotos\0018 Basilica\0018.cld", vbMaximizedFocus, 1, 1

¿aca tengo que poner el SendKeys "{ctrl+p}" ?

End Sub

Con la linea SendKeys "{ENTER}" mando lo que uno introciria en el tecldo pero no se como mandar una tecla con CRTL
Probre mandarle F1 pero luego de abrirme el programa no me mostro el help como tendria que hacer con F1. Gracias.
  #4 (permalink)  
Antiguo 08/09/2008, 14:47
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Ejecutar un CLD(maximizado en primer plano) y un .EXE

En este tema hablamos mucho de eso:
http://www.forosdelweb.com/f69/visua...-basic-616565/

En resumen, obtiene el hWnd de la ventana, haz que se convierta en la ventana activa, y envía la pulsación de teclas con keybd_event.

P.S.: No es vbMaximizedFocus, como ya te había dicho, el último parámetro debe recibir la constante SW_MAXIMIZE para que aparezca maximizada la ventana.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:53.