USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  VB6 X OFFICE
Ade
MACEIÓ
AL - BRASIL
ENUNCIADA !
Postada em 07/12/2004 12:41 hs            
Olá,
       Uso o vb6 com o propósito de gerar documento padrão no Word interagindo com o BD(uma espécie de mala direta), ocorre que por uma situação de erro qualquer ou interrupção e o programa seja fechado sem finalizar o word através do programa o winword.exe permanece na memória e ao executar o programa novamente e executa a rotina que gera o documento o programa é abortado porque o winword.exe já está em execução, alguém poderia me dizer como fazer para tratar quando existir o error e finalizar o winword.exe que está  na memória ou quando executar a rotina primeiro checar se winword.exe está carregado na memória e finalizar e ai então prosseguir rodando a rotina?
 
T+
 
   
Ade
MACEIÓ
AL - BRASIL
ENUNCIADA !
Postada em 14/12/2004 00:00 hs            
pô ninguém sabe?
   
Sandro
não registrado
Postada em 14/12/2004 00:13 hs   
Olá Ade,
 
Estou te enviando duas funções que eu uso em meus programas. Você pode adaptá-las no seu. Elas funcionam de modo complemetar. Você deverá usar a segunda (Fecha_Janela), passando o nome da janela. P.Ex.:
 
Call Fecha_Janela ("Documento1 - Microsoft Word")
 
Acho que isso pode ajudar.
OBS. Se a janela não existir em memória, o programa não gera erro, de forma que você pode chamá-la diretamente, sem realizar qualquer teste prévio.
 
Public Const GW_CHILD = 5
Public Const GW_HWNDNEXT = 2
 
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal aint As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Public Declare Function GetDesktopWindow Lib "user32" () As Long
 
'*******************************************************
'Esta função localiza uma janela aberta e retorna o seu
'manipulador (Hwnd).
'Se não localizar a Janela, retorna 0.
'********************************************************
Public Function Localiza_Janela(ByVal StrJanela As String) As Long
    On Error Resume Next
    Dim AntHwnd As Long, Classe As Long, JHwnd As Long, TamNome As Long
    Dim NomeClasse As String, NomeJanela As String
       
    NomeClasse = Space$(255)
   
    AntHwnd = GetDesktopWindow()
    JHwnd = GetWindow(AntHwnd, GW_CHILD)
   
    Do Until JHwnd = 0
        NomeJanela = Space$(255)
        TamNome = GetWindowText(JHwnd, NomeJanela, 128)
        NomeJanela = Left$(Trim$(NomeJanela), TamNome)
        If UCase$(Trim$(NomeJanela)) = UCase$(Trim$(StrJanela)) Then
            Exit Do
        Else
            AntHwnd = JHwnd
            JHwnd = GetWindow(AntHwnd, GW_HWNDNEXT)
        End If
    Loop
    Localiza_Janela = JHwnd
   
    If Err Then Err.Clear
   
End Function
'******************************************************************
'Esta procedure fecha uma janela aberta dentro do Windows.
'A janela pode ser um programa ou uma janela do próprio Windows.
'Esta procedure uma a Função Localiza_Janela deste mesmo módulo.
'
'Parâmetros:
'Janela: Título da janela a ser fechada.
'
'******************************************************************
Public Sub Fecha_Janela(ByVal NomeJanela As String)
    On Error Resume Next
   
    Const Fecha = &H10
    Dim Resp As Long, JHwnd As Long
   
    JHwnd = Localiza_Janela(NomeJanela)
   
    If JHwnd <> 0 Then
        Resp = PostMessage(JHwnd, Fecha, 0&, 0&)
    End If
   
    If Err Then Err.Clear
       
End Sub
um abraço,
Sandro.
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página