Newsgroup: it.comp.lang.visual-basic
Titolo: X Chiudere App.DOS in VB

Ciao a tutti del NG
Ho bisogno d'aiuto:
Per chiudere un'applicazione DOS aperta con una SHELL
Grazie a quanti mi aiuteranno
paolo
--
ELETTRONIC SYSTEM
VIA FRATTE 55
35010 SANTA GIUSTINA IN COLLE
PADOVA
SISTEMI DI SICUREZZA
WEB: 
www.elettronicsystem.com
email: 
in...@elettronicsystem.com

 ha scritto nel messaggio
news:p6Tt5.25245$_U1.4...@news.infostrada.it...


 wrote in message
p6Tt5.25245$_U1.4...@news.infostrada.it...


 e rimane lě ed e lě che io vorrei che si chiudesse da sola.
Allora:
    Shell "
command.com
 /cCopia", vbNormalFocus
Hai provato?



Ciao,
Alessandro

collegamento .PIF e imposta tra le opzioni "Chiudi all'uscita"
troppo rozza?  ;)
--
ciao
- Xaero -
"Un'idea che non sia pericolosa non
merita affatto di essere chiamata idea"
                Oscar Wilde


Ho provato la tua sequenza ma non funziona (uso VB5):
In primis il titolo della finestra e' : "Esecuzione terminata - nome
applicazione"
Inoltre anche superando il do loop l'istruzione di chiusura non ha alcun
effetto.
Come mai?
Giorgio Siliprandi ha scritto nel messaggio ...


Come ti ho detto questo codice funzionava prima delle modifiche.
In effetti in precedenza il codice era:
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd
As Long, ByVal wMsg As Long, ByVal wParam As Long, lparam As Any) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As String) As Long
Public Const WM_CLOSE = &H10
  Dim WinHwnd As Long
  Dim retval As Long
  ............................
  'lancio il programma DOS
  WinHwnd = Shell("C:\MyPath\MyPrg.bat", vbMinimizedNoFocus)
  Do
    'cerco l'handle della finestra in cui sia terminata l'esecuzione
    WinHwnd = FindWindow(vbNullString, "Esecuzione terminata - MyPrg.bat")
  Loop While WinHwnd = 0
  'chiudo la finestra
  retval = PostMessage(WinHwnd, WM_CLOSE, 0&, 0&)
  ...............................
Ma questo codice mi blocca l'esecuzione di tutte le task. Ora, ame questo
sta bene ma le modifiche le avevo fatte per rispongere ad un altro msg senza
però provarle.
Scusa, Giorgio

 Shell "
command.com
 /c" & Copia, vbNormalFocus
Oops!...


Grazie a quanti hanno risposto al mio quesito, sembra che la funzione
migliore sia comunque l'utilizzo delle api.
SE qualcuno ne avesse o fosse a conoscenza di dove poter recuperare api che
mi possano aiutare per il problema in oggetto
lo ringrazio veramente.
ciao e grazie a tttuuuttttooooo il NG
paolo
Maurizio Borrelli <Please...@To.Newsgroup> wrote in message
8palt1$qoo$6...@nslave2.tin.it...


 SE qualcuno ne avesse o fosse a conoscenza di dove poter
recuperare api che mi possano aiutare per il problema in
oggetto lo ringrazio veramente.
Sono andato a riguardarmi tutto il thread e, in definitiva, le
soluzioni sono due:
. impostare la chiusura al termine dell'esecuzione per i file
lnk o pif;
. eseguire mediante Shell "
command.com
 /c" & Copia,
vbNormalFocus
Entrambe fanno chiudere la finestra al termine. Probabilmente
sbaglio ma funzioni dell'API che facciano lo stesso credo non
ce ne siano perche' non ce n'e` bisogno. Occhio che non stiamo
parlando di chiudere una finestra aperta ma di chiudere una
finestra dos al termine "naturale" dell'esecuzione.
Forse ti riferisci alla seguente:
' HINSTANCE ShellExecute(
'   HWND    hWnd,         // handle to parent window
'   LPCTSTR lpOperation,  // pointer to string that specifies
'                         //    operation to perform
'   LPCTSTR lpFile,       // pointer to filename string
'   LPTSTR  lpParameters, // pointer to string that specifies
'                         //    executable-file parameters
'   LPCTSTR lpDirectory,  // pointer to string that specifies
'                         //    default directory
'   INT     nShowCmd      // whether file is shown when opened
' );
Private Const SW_SHOWNORMAL As Long = 1
Private Declare Function ShellExecute _
  Lib "shell32" _
  Alias "ShellExecuteA" ( _
    ByVal hWnd As Long _
  , ByVal lpOperation As String _
  , ByVal lpFile As String _
  , ByVal lpParameters As String _
  , ByVal lpDirectory As String _
  , ByVal nShowCmd As Long _
  ) As Long
Uso:
    lngRet _
    = ShellExecute( _
      hWnd:=Me.hWnd _
    , lpOperation:="open" _
    , lpFile:=Copia _
    , lpParameters:=vbNullString _
    , lpDirectory:=vbNullString _
    , nShowCmd:=SW_SHOWNORMAL)
ma il problema non cambierebbe, credo. Opinioni diverse?
Ma tu, dimmi, per cortesia, con le due soluzioni di cui dicevo
in apertura, che problemi hai? E perche'?


ciao Maurizio,
In pratica quando avvio XCOPY.EXE per la copia di una directory e
sottodirectory e tutti i file da un disco all'altro.
misi apre la finestra dos di xcopy e volevo chiuderla al ttermine della
applicazione in modo automatico da codice vb.
La soluzione più spartana sarebbe quella di mettere nella proprietà del file
xcopy.exe "chiudi in chiusura" però volevo vedere se si poteve fare da
codice.
se hai qualche idea in merito di ringrazio ancora
a buon rendere
ciao
paolo
Maurizio Borrelli <Please...@To.Newsgroup> wrote in message
8pcqdg$nta$1...@nslave2.tin.it...


 se hai qualche idea in merito di ringrazio ancora
  Shell _
    "
command.com
 /cxcopy c:\pippo c:\pluto\ /s/y" _
  , vbHide
(Pero` potresti leggere con piu` attenzione cio` che ti si
scrive, scusa...)
