Foros del Web » Programación para mayores de 30 ;) » Programación General »

Como llamar otros archivos desde VB 6.0

Estas en el tema de Como llamar otros archivos desde VB 6.0 en el foro de Programación General en Foros del Web. Hola amigos! :) Necesito saber como llamo a un documento de word ya creado (con un contenido específico) desde Visual Basic 6.0, Igualmente como mando ...
  #1 (permalink)  
Antiguo 25/07/2002, 09:37
Avatar de Samaris  
Fecha de Ingreso: enero-2002
Mensajes: 280
Antigüedad: 22 años, 4 meses
Puntos: 0
Como llamar otros archivos desde VB 6.0

Hola amigos! :)
Necesito saber como llamo a un documento de word ya creado (con un contenido específico) desde Visual Basic 6.0,
Igualmente como mando a ejecutar Winzip

Gracias!!!! ;)
  #2 (permalink)  
Antiguo 25/07/2002, 10:12
 
Fecha de Ingreso: julio-2002
Ubicación: Albacete
Mensajes: 16
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: Como llamar otros archivos desde VB 6.0

Shell "C:\Archivos de programa\Microsoft Office\Office\winword c:\nombre_archivo.doc"

Con winzip será algo parecido. ;)
  #3 (permalink)  
Antiguo 25/07/2002, 12:34
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
Re: Como llamar otros archivos desde VB 6.0

Mira es buena opción ocupar el Shell, pero si quieres que te abra cualquier archivo, siempre y cuando tenga el programa para abrirlo claro, te recomiendo que ocupes una referencia al API ShellExecute.


Option Explicit
Const SW_SHOWNORMAL = 1
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()
ShellExecute Me.hwnd, "open", "Ruta\archivo.txt", "", App.Path, SW_SHOWNORMAL
End Sub

Con esto podras abrir cualquier tipo de archivo. (txt,exe,doc, etc)
Espero te haya servido.
Nos vemos.
  #4 (permalink)  
Antiguo 31/07/2002, 11:32
 
Fecha de Ingreso: julio-2001
Mensajes: 278
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: Como llamar otros archivos desde VB 6.0

Y si la aplicación esta corriendo pero no se ve su ventana asi que no puedo usar Send Keys ni detectarla por título ¿como la puedo detectar para cerrarla o para no hacer una segunda ejecución de la misma?


Gracias

<a href="http://www.ansiwebs.com"><img border="0" src="http://www.ansiwebs.com/img/agarciaa.jpg"></a>
  #5 (permalink)  
Antiguo 31/07/2002, 12:17
 
Fecha de Ingreso: abril-2002
Mensajes: 438
Antigüedad: 22 años
Puntos: 2
Re: Como llamar otros archivos desde VB 6.0

EnumWindows
GetWindowText
IsWindowVisible

Investiga tal y como me tocó a mí hace algún tiempo. Ten en cuenta que EnumWindows necesita de un &quot;puntero&quot; a una función callback.

Si no lo sacas pon tu mail y te mando el código que hice.

Saludos.
  #6 (permalink)  
Antiguo 07/08/2002, 13:41
 
Fecha de Ingreso: agosto-2002
Mensajes: 12
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: Como llamar otros archivos desde VB 6.0

te mando el codigo para ejecutar una aplicación, y esperar a que finalice, por ejemplo un archivo BAT, lo ejecuta y espera a que termine para proseguir con la siguiente instrucción.


VARIABLES
Private Type StartUpInfo
Cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Integer
hStdInput As Long
hstdOutput As Long
hSrdError As Long
End Type

Private Type Process_Information
hProcess As Long
hThread As Long
dwProceessID As Long
dwThreadID As Long
End Type

Private Declare Function WaitForSingleObject Lib &quot;Kernel32&quot; (ByVal hHandle As Long, ByVal _
dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib &quot;Kernel32&quot; (ByVal lpAplicationName As Long, ByVal _
lpCommandLine As String, ByVal lpProcessAttributes As Long, lpThreadAttributes As Long, ByVal _
bInherithandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal _
lpCurrentDirectory As Long, lpStartUpinfo As StartUpInfo, lpProcessInformation As Process_Information) As Long
Private Declare Function CloseHandle Lib &quot;Kernel32&quot; (ByVal hObject As Long) As Long
Private Const Normal_Priority_Class = &amp;H20&amp;
Private Const Inifile = -1&amp;



Y esta es la rutina


' Rutina que llama a una aplicación y espera a que finalice '
Public Sub WinExec(Cmdline$)
Dim Proc As Process_Information
Dim Star As StartUpInfo
'
Star.Cb = Len(Star)
'
ret&amp; = CreateProcessA(0&amp;, Cmdline$, 0&amp;, 0&amp;, 1&amp;, NormalPriorityClass, 0&amp;, 0&amp;, Star, Proc)
'
'Esperar a que la aplicación termine
'
ret&amp; = WaitForSingleObject(Proc.hProcess, Infinite)
ret&amp; = CloseHandle(Proc.hProcess)
End Sub
  #7 (permalink)  
Antiguo 07/08/2002, 13:45
Avatar de Samaris  
Fecha de Ingreso: enero-2002
Mensajes: 280
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: Como llamar otros archivos desde VB 6.0

GRACIAS!
SON UNOS AMORES!!
;)
  #8 (permalink)  
Antiguo 07/08/2002, 13:48
 
Fecha de Ingreso: agosto-2002
Mensajes: 12
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: Como llamar otros archivos desde VB 6.0

Esta es otra manera de ejecutar un archivo, en este caso abre un archivo URL, pero puede ser cualquiera

Public Sub OpenURL(Adress As String)
Dim nFile As Integer
nFile = FreeFile
'
Open App.Path &amp; &quot;\cifre.url&quot; For Output As #nFile
Print #nFile, &quot;[InternetShortCut]&quot;
Print #nFile, &quot;URL=&quot; &amp; Adress
Close #nFile
'
Shell &quot;rundll32.exe shdocvw.dll,OpenURL &quot; &amp; App.Path &amp; &quot;\cifre.url&quot;, vbMaximizedFocus
End Sub


Unicamente tienes que sustituir cifre.url, por el archivo que desees abrir, incluyendo el path en donde se encuentra
  #9 (permalink)  
Antiguo 08/08/2002, 02:58
 
Fecha de Ingreso: abril-2002
Mensajes: 438
Antigüedad: 22 años
Puntos: 2
Re: Como llamar otros archivos desde VB 6.0

AAgarcia,

Y una pregunta más que me lleva de cabeza, te cuento: ejecuto desde vb con ShellExecute un .bat que llama a un .exe, este .exe abre una ventana de msdos y se queda residente. Encontré una clase buenísima en una lista de VB que sirve para gestionar procesos en MSDOS desde VB (la he guardado como oro en paño), pero en ella al igual que tú mencionas se usan las apis waitforsingleobject y waitforinputidle, el caso es que no me sirven ninguna de las dos, te cuento: he instalado el programa en muchas TPV's, en algunas de ellas la aplicación funciona correctamente, pero en otras (no sé el motivo) me muestra el mensaje &quot;No se puede abrir el ....&quot;. El archivo que ejecuto es el servletrunner, es decir, es como si la siguiente instrucción de VB que sigue a la del ShellExecute del servletrunner se ejecutara sin que este programa hubiera terminado de arrancar, ojo, no puedo esperar a que acabe porque se queda luego residente, no es como abrir Word y detener la ejecución hasta que el usuario acabe con Word, no, no, simplemente tengo que esperar a que termine de ejecutarse, es decir, volviendo a Word (esperar el proceso desde que hace click hasta que aparece la ventana de Word). Yo pensaba que VB esperaba siempre a esto con ShellExecute, pero como he dicho se ha instalado el programa en muchas TPV's y en algunas de ellas (pocas por suerte), aparece el mensaje de error, el usuario entonces espera unos segundos a que el programa se ejecute y entonces ya cuando hacen click en un commandButton del form sí que llama correctamente al servlet. Curioso ¿no? No encuentro la explicación. Si alguien la encuentra bienvenida será. Solución le he encontrado tirando por otro camino, explicación NO.

  #10 (permalink)  
Antiguo 09/08/2002, 20:24
 
Fecha de Ingreso: agosto-2002
Mensajes: 12
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: Como llamar otros archivos desde VB 6.0

AAgarcia

Dentro del archivo de procesos por lotes, tienes alguna otra instrucción que necesites que se ejecute, o nada mas es el exe de MSDOS, porque si nada mas tienes el la aplicación ded DOS,pues mandala llamar directamente y sacala del archivo por lotes
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 04:17.