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!!!! ;)
| |||
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. ;) |
| |||
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. |
| |||
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> |
| |||
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 "puntero" a una función callback. Si no lo sacas pon tu mail y te mando el código que hice. Saludos. |
| |||
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 "Kernel32" (ByVal hHandle As Long, ByVal _ dwMilliseconds As Long) As Long Private Declare Function CreateProcessA Lib "Kernel32" (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 "Kernel32" (ByVal hObject As Long) As Long Private Const Normal_Priority_Class = &H20& Private Const Inifile = -1& 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& = CreateProcessA(0&, Cmdline$, 0&, 0&, 1&, NormalPriorityClass, 0&, 0&, Star, Proc) ' 'Esperar a que la aplicación termine ' ret& = WaitForSingleObject(Proc.hProcess, Infinite) ret& = CloseHandle(Proc.hProcess) End Sub |
| |||
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 & "\cifre.url" For Output As #nFile Print #nFile, "[InternetShortCut]" Print #nFile, "URL=" & Adress Close #nFile ' Shell "rundll32.exe shdocvw.dll,OpenURL " & App.Path & "\cifre.url", vbMaximizedFocus End Sub Unicamente tienes que sustituir cifre.url, por el archivo que desees abrir, incluyendo el path en donde se encuentra |
| |||
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 "No se puede abrir el ....". 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. |
| |||
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 |