Newsgroup: it.comp.appl.access
Titolo: applicazione access aperta

Ho necessità di sapere se un'applicazione access è aperta, come posso
testarlo.
 
Mi spiegho, ho un applicazione .adp/ade che apre un altra applicazione
di acces .adp/ade la quale potrebbe già essere aperta e quindi non la
devo aprire ma la devo solo attivare.
Come posso testare se un'applicazione di access è già aperta?
 
Grazie a chi mi da un aiuto.
 
Marco


o vai di API
oppure la prima soluzione che mi viene in mente:
quando viene aperta la seconda applicazione, crei un txt da qualche 
parte nel disco
quando l'applicazione viene chiusa, cancelli il txt
 
in questo modo dall'applicazione principale, testando l'esistenza di 
quel txt sai se l'applicazione è aperta o no
 
ciao
BFS


Mi viene da pensare che usando un file di testo o addirittura il
database collegato
possa esserci qualche problema quando l'applicazione si chiude o viene
chiusa accidentalmente.
Penso che le API se testano al momento se un'applicazione è aperta o
no sia la soluzione migliore.
Il problema è quale APi fa al caso mio?
 
Grazie per la risposta
 
Marco

 ...
 
If Dir("Percorso/NomeDellAltraApplicazione.ldb") > "" Then
    MsgBox "Già aperta!"
Else
    MsgBox "Aprila!"
End If
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 


Grazie mille Karl,
la soluzione fa al caso mio.
Mi manca solo di renderla attiva.
 
Posso usare  AppActivate per attivarla?
 
Grazie di nuovo
 
Marco


non mi risulta che gli adp/ade creino il file ldb
 
 
ciao
BFS
 
 
 
 

 non mi risulta che gli adp/ade creino il file ldb
 
*oops" hai ragione. Ho letto troppo veloce.



Grazie a tutti,
 
Ho parzialmente risolto il problema usando:
 
-----------------------------------------------------------------------------
   stDocName = """" & diraccess & """ """ & dirprog & nomeprog & "." &
estensione & """"
 
    On Error GoTo Err_Com19
    AppActivate "Titolo applicazione"
 
    Exit Sub
 
Err_Com19:
    Call Shell(stDocName, 1)
 
    Exit Sub
 
------------------------------------------------------------------------------
 
 
L'unico problema che mi rimane da risolvere è quello che,
nel caso l'applicazione da aprire è ridotta ad icona, la vorrei
ingrandire.
 
Non so,  posso usare il comando sendkey per visualizzarla sul desktop?
 
Grazie
 
Marco
 
 
 

 - Mostra testo citato -
 
Ho risolto il problema.
 
usando sendkeys invio il comando {F5},
 
che  collegato ad una macro mi lancia la funzione ingrandisci()
 
che contiene il comando :
    DoCmd.RunCommand acCmdAppMaximize
 
saluti
 
Marco

io uso questo....
in un modulo(riporto tale e quale ho trovato nel web):
 
'***********************************************************************
' As duas funções a seguir rodam em qualquer versão do Access e servem
' para checar se já existe uma instância do arquivo mdb aberta.
' Caso positivo, a função IsRunning() não permite a nova abertura
' do banco de dados.
'
' FUNÇÕES: IsRunning() e TestDDELink(ByVal strAppName$)
'
'***********************************************************************
 
Function IsRunning()
Dim DB As Database
Set DB = CurrentDb()
If TestDDELink(DB.Name) Then
MsgBox "Avviso:" & "@@ L'applicativo è già aperto" _
& vbCrLf & "@@ Questa instanza sarà chiusa!", vbCritical, "2ª Instanza"
Application.Quit acQuitSaveNone
End If
End Function
 
' Função Auxiliar de IsRunning()
Function TestDDELink(ByVal strAppName$) As Integer
 
Dim varDDEChannel
On Error Resume Next
Application.SetOption ("Ignore DDE Requests"), True
varDDEChannel = DDEInitiate("MSAccess", strAppName)
 
' When the app isn't already running this will error
If Err Then
TestDDELink = False
Else
TestDDELink = True
DDETerminate varDDEChannel
DDETerminateAll
End If
Application.SetOption ("Ignore DDE Requests"), False
 
End Function
 
 
 
e la richiamo da una macro Autoexec, così:
EseguiCodice
 IsRunning ()
 
 
 
 


Grazie per il suggerimento, ma ritengo che mia soluzione sia meno
complicata e funziona perfettamente.
 
Grazie a tutti
 
Marco