Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Chiusura Acrobat da Vba Access 2007

    Buongiorno a tutti, ho letto diversi thread su questo argomento, ma non riesco a trovare la soluzione giusta per me.
    In pratica, io devo aprire il file da codice e stamparlo (e qui non ho problemi), il problema è che una volta stampato, rimane aperta la fastidiosissima finestra di acrobat.

    Tra tutte le guide lette, questo è quello che più si avvicina a quello che mi serve:

    Private Const WM_CLOSE = &H10
    Private Const INFINITE = &HFFFFFFFF


    Private Declare Function apiPostMessage _
    Lib "user32" Alias "PostMessageA" _
    (ByVal hwnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    lParam As Any) _
    As Long


    Private Declare Function apiFindWindow _
    Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, _
    ByVal lpWindowName As String) _
    As Long

    Private Declare Function apiWaitForSingleObject _
    Lib "kernel32" Alias "WaitForSingleObject" _
    (ByVal hHandle As Long, _
    ByVal dwMilliseconds As Long) _
    As Long

    Private Declare Function apiIsWindow _
    Lib "user32" Alias "IsWindow" _
    (ByVal hwnd As Long) _
    As Long

    Private Declare Function apiGetWindowThreadProcessId _
    Lib "user32" Alias "GetWindowThreadProcessId" _
    (ByVal hwnd As Long, _
    lpdwProcessID As Long) _
    As Long

    Function fCloseApp(lpClassName As String) As Boolean


    Dim lngRet As Long, hwnd As Long, pID As Long


    hwnd = apiFindWindow(lpClassName, vbNullString)
    If (hwnd) Then
    lngRet = apiPostMessage(hwnd, WM_CLOSE, 0, ByVal 0&)
    Call apiGetWindowThreadProcessId(hwnd, pID)
    Call apiWaitForSingleObject(pID, INFINITE)
    fCloseApp = Not (apiIsWindow(hwnd) = 0)
    End If
    End Function


    peccato che questo chiude tutte le finestre aperte (quindi anche eventuali altri pdf aperti).
    La domanda quindi è questa, oltre alla class, conosco anche la caption della finestra da chiudere, è possibile passare anche questo parametro?

    Grazie in anticipo

  2. #2
    Ho risolto da solo con poche righe di codice:

    Declare Function FindWindow _
    Lib "user32" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long

    Declare Function PostMessage _
    Lib "user32" Alias "PostMessageA" ( _
    ByVal hwnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long

    Public Function ClosePDF()
    Call PostMessage(FindWindow(vbNullString, "Adobe Reader"), _
    16, 0, 0)
    End Function

    Cosi chiude solo la fastidiosissima pagina di adobe reader che rimane aperta dopo la stampa, se invece hai aperto un pdf non fa nulla.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.