Newsgroup: it.comp.lang.visual-basic
Titolo: chiudere exe, riaprire exe

Ho la necessità di chiudere un eseguibile sempre attivo su un PC-Server
Win2K-SP4, eseguire il backup notturno al termine del quale rilanciare
l'exe.
Questo perché l'exe in questione *deve* sempre essere attivo, va chiuso
poichè il DB Access a cui si connette viene bypassato dal backup poiché
in uso.
Premetto che non so da dove iniziare, ho visto qualcosa con le API ma
sono poco pratico.
Grazie 1000 in anticipo
Mirko Parisi
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 sono poco pratico.
O usi un file batch per gestire la cosa oppure, nell'applicazione,
puoi controllare l'orario in cui parte il backup e chiudere
temporaneamente il db per poi riaprirlo.
Ciao!

 sono poco pratico.
Oltre a quello che già ti hanno detto esiste una Api che copia anche i file
in uso, quindi potresti copiare il file Access anche se aperto.
'Api per copiare un file in uso l'ultimo parametro se 1 non sovrascrive un
file già esistente se 0 sorascrive
Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal
lpExistingFileName As String, ByVal lpNewFileName As String, ByVal
bFailIfExists As Long) As Long
si usa così
Esito = CopyFile(strFile, strNewFile, 0)
-- 
Le persone non sono il proprio comportamento: devi sempre andare oltre,
essere flessibile, capire il punto di vista degli altri, interpretarne i
comportamenti ed intuirne le esigenze.
Per rispondere in privato elimina
dall'indirizzo "togliquesto"
MasterDavidex
David Ruscelli

mi sono spiegato male, il file exe é un eseguibile di cui non ho i
sorgenti, vorrei creare un'app vb che:
-apre il file exe a startup della macchina
-lo termina prima del backup
-lo riapre dopo il backup
es: 
1.
alle ore 23:00 l'app vb termina l'exe che é sicuramente in esecuzione
2.
alle 23:30 parte il backup standard di windows
3.
alle 06:00 l'app vb rilancia l'esecuzione dell'exe
non so se posso terminare un'app da batch, se sì non so come farlo ma
preferivo farlo con un'app vb
ciao e grazie


 preferivo farlo con un'app vb
Questa App č un servizio?
Se sě ti basta arrestare il servizio.

 -lo riapre dopo il backup
Non sono pratico del backup microzozz, ma, visto che hai l'applicazione in
startup, non puoi "semplicemente" far riavviare alla fine dell'operazione?
In questa maniera dovresti solo far terminare il programma alle 23:00
Ciao a tutti, da Nonlosoproprio


la tua app si può fermare all'ora stabilita mettendo un controllo timer che
verifica l'orario, e se sono passate le 23 fa un end.
puoi far partire l'app da "operazioni pianificate" di windows, che ogni
giorno la lancia alle 06.00

Si può fare nel seguente modo:
1-vedi se il task è attivo (c'è il post "palpare un eseguibile" su questo
ng)
2-termini il task attivo
3-fai il backup
4-riavii il programma
il codice di qualcosa che può esserti molto utile (poi lo rimaneggi a tuo
piacimento) lo trovi qui:
http://www.leonardobandini.it/frame2vbsecondapagina.htm
bye
-- 
Esistono 10 tipi di persone: chi conosce il binario e chi no.
www.nicolaottomano.it

 Ho la necessità di chiudere un eseguibile sempre attivo
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String)
As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As
Long, lParam As Any) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal
nMaxCount As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Const SW_SHOWNORMAL = 1
Const WM_CLOSE = &H10
Const gcClassnamePACT = "PactJumpToRegKey"
Const gcClassnameBabylon = "Babylon"
Const gcClassnameMSIExplorer = "IEFrame"
Const gcClassnameMSVBasic = "wndclass_desked_gsk"
Const gcClassnameNotePad = "Notepad"
Const gcClassnameMyVBApp = "ThunderForm"
Private Sub Form_Load()
    Dim WinWnd As Long, Ret As String, RetVal As Long, lpClassName As String
    WinWnd = FindWindow("Babylon", vbNullString)
    lpClassName = Space(256)
    RetVal = GetClassName(WinWnd, lpClassName, 256)
    PostMessage WinWnd, WM_CLOSE, 0&, 0&
'start esegui notepad (invio) e poi lancia questo
      WinWnd = FindWindow("Notepad", "Senza nome - Blocco note")
' WinWnd = FindWindow("PactJumpToRegKey", vbNullString)
    lpClassName = Space(256)
    RetVal = GetClassName(WinWnd, lpClassName, 256)
    PostMessage WinWnd, WM_CLOSE, 0&, 0&
End Sub
--
Fosco