Newsgroup: it.comp.appl.access
Titolo: chiudere un processo di access in windows già aperto

siccome a volte access non si chiude questo pezzo di codice sembra che 
scorra i processi di windows alla ricerca di access e se aperto utilizza 
quel processo anzichč aprirne un altro.
solo che a volte non mi funziona apre comunque piu processi senza terminrli 
correttamente
qualcuno di voi saprebbe modificare questo codice per far terminare un 
eventuale processo di access ancora aperto in windows prima di aprire 
nuovamente access? Grazie.
--- CODE -------
Public Function winCheckMultipleInstances(Optional fConfirm As Boolean = 
True) As Boolean
Dim fSwitch As Boolean, sMyCaption As String
Dim hWndApp As Long, hWndDb As Long
On Error GoTo ProcErr
  sMyCaption = winGetTitle(winGetHWndDB())
  hWndApp = apiGetWindow(apiGetDesktopWindow(), GW_CHILD)
  Do Until hWndApp = 0
    If hWndApp <> Application.hWndAccessApp Then
      hWndDb = winGetHWndDB(hWndApp)
      If hWndDb <> 0 Then
        If sMyCaption = winGetTitle(hWndDb) Then Exit Do
      End If
    End If
    hWndApp = apiGetWindow(hWndApp, GW_HWNDNEXT)
  Loop
  If hWndApp = 0 Then Exit Function
  If fConfirm Then
    If MsgBox(sMyCaption & " is already open@" _
      & "Do you want to open a second instance of this database?@", _
      vbYesNo Or vbQuestion Or vbDefaultButton2) = vbYes Then Exit Function
  End If
  apiSetActiveWindow hWndApp
  If apiIsIconic(hWndApp) Then
    apiShowWindowAsync hWndApp, SW_RESTORE
  Else
    apiShowWindowAsync hWndApp, SW_SHOW
  End If
  Application.Quit
ProcEnd:
  Exit Function
ProcErr:
  MsgBox Err.Description
  Resume ProcEnd
End Function

 
Non sň cos'č quella sbrodolata di Codice.....!!
'Killare un processo
Private Sub Form_Load()
    Dim obj As Object
    For Each obj In GetObject("winmgmts:").ExecQuery("SELECT * FROM
Win32_Process WHERE Name='calc.exe'")
        If obj.Name ="MSACCESS.EXE" Then obj.Terminate
    Next
End Sub
Io userei uno SCRIPT.
Ciao
@ALex.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


il codice funziona lo messo in apertura db però mi chiude tutto anche il
processo che sto aprendo, posso evitare di selezionare quello in corso fra i
processi e far chiudere solo gli altri msaccess.exe?
ho modificato calc.exe che credo fosse un esempio
se metto questo codice prima di uscire dal db il processo rimane aperto
    Dim obj As Object
    For Each obj In GetObject("winmgmts:").ExecQuery("SELECT * FROM
Win32_Process WHERE Name='MSACCESS.EXE'")
        If obj.Name = "MSACCESS.EXE" Then obj.Terminate
    Next
Grazie.

 Grazie in anticipo
E' ovvio.
Premetto che secondo me hai qualche cosa da rivedere nel codice, in quanto
non è posibile che ti rimanga aperta una sessione di Access, vedi anche
i consigli che ti hanno dato nel Post precedente........!
Ti ho consigliato di usare uno SCRIPT apposta per evitare il problema.
Nello script esegui la Routine che ti ho indicato, quindi apri il tuo
Applicativo con la Shell.
Se devi usare un Collegamento sul DESKTOP usa quello allo SCRIPT.....!!
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

Perchè ti complichi la vita.....??
Non devi far eseguire un EXE, devi far eseguire un file.vbs
Nel file .VBS(o script) inserisci il Codice che ti ho passato
opportunamente formattato per i File Script in VBS che
KILLA Access nel caso sia Attivo, poi Esegue il tuo Applicativo:
Esempio :
1)Copia questo codice in un File di Testo, quindi rinomina l'Estensione in
VBS
    For Each obj In GetObject("winmgmts:").ExecQuery("SELECT * FROM
Win32_Process WHERE Name='MSACCESS.EXE'")
        obj.Terminate
    Next
2)Apri Access
3)Fai DOPPIO CLICK sul file.VBS
Come per magia ACCESS si è chiuso.
Ora inserisci all'interno del File.VBS la chiamata alla shell per aprire
l'applicativo.
Quando lo SCRIPT è finito lancialo......!


 @Alex (Alessandro Baraldi)
ok grazie mille. 

 quel processo anzichč aprirne un altro.
Facci capire come riprodurre il problema (magari con northwind.mdb).
In alternativa mandami in e-mail un tuo .mdb Demo afflitto da questa
anomalia.
A me queste cose non succedono, perň mi hai incuriosito.
Saluti.


questo è un bug famoso per access a me succede ma non in tutti i miei db
in questo si ma non ho fatto nulla di papparentemente diverso dagli altri.
booo!

 in questo si ma non ho fatto nulla di papparentemente diverso dagli altri.
E' un bug famoso, ma altrettanto famose sono le buone norme per prevenirlo!
;-)
Forse per questo non c'ho mai sbattuto il muso contro.
Ti capita anche dopo aver creato l'MDE?
Saluti.


Si mi capita, il mio db è abbastanza vasto sono sincero ma di recorset 
aperti
non so dove andare a trovarlo 


a chi fosse interessato gli mando una piccola parte del mio db che comunque 
presenta il problema lo stesso
se siete interessati fatemelo sapere. 

 se siete interessati fatemelo sapere.
Perfetto: sono interessato.
Saluti.