Newsgroup: it.comp.lang.visual-basic
Titolo: HANDLE

Come faccio a catturare l'handle di una finestra dos che lancio
da un programma VB?
E' possibile sapere facilmente se questa finestra dos si è chiusa o meno?
Ho trovato un articolo sul sito comune, ma non è esattamente quello che
cerco.
danilo
 
minerv...@inwind.it

 E' possibile sapere facilmente se questa finestra dos si è chiusa o meno?
se non c'è è chiusa

Franco ha scritto nel messaggio ...

Domanda falsa e tendenziosa... cosa vuoi fare realmente?
Ciao

 >Ho trovato un articolo sul sito comune, ma non č esattamente quello che


 wrote in message
news:95tsp4$t2k$1...@news.mclink.it...


 ha scritto nel messaggio
news:0jvg6.21134$eQ5.4...@twister2.tin.it...


dalla suddetta applicazione dos.
Ma non ti conviene scrivere una dll in C con le funzioni che ti servono e
chiamarle da un prog VB che espone solo l'interfaccia grafica?
Ciao

 ha scritto nel messaggio
news:mwAg6.21843$eQ5.4...@twister2.tin.it...


 > >dalla suddetta applicazione dos.
Ti posto il codice Vb per fare quello che ti serve. Crea una nuova classe ed
incolla il codice.
Ciao
Alfonso Moscato
Option Explicit
Private Type STARTUPINFO
        cb As Long
        lpReserved As String
        lpDesktop As String
        lpTitle As String
        dwX As Long
        dwY As Long
        dwXSize As Long
        dwYSize As Long
        dwXCountChars As Long
        dwYCountChars As Long
        dwFillAttribute As Long
        dwFlags As Long
        wShowWindow As Integer
        cbReserved2 As Integer
        lpReserved2 As Long
        hStdInput As Long
        hStdOutput As Long
        hStdError As Long
End Type
Private Type PROCESS_INFORMATION
        hProcess As Long
        hThread As Long
        dwProcessId As Long
        dwThreadId As Long
End Type
Private Const STATUS_PENDING = 259
Private Const SW_HIDE = 0
Private Const SW_SHOWNORMAL = 1
Private Const SW_NORMAL = 1
Private Const SW_SHOWMINIMIZED = 2
Private Const SW_SHOWMAXIMIZED = 3
Private Const SW_MAXIMIZE = 3
Private Const SW_SHOWNOACTIVATE = 4
Private Const SW_SHOW = 5
Private Const SW_MINIMIZE = 6
Private Const SW_SHOWMINNOACTIVE = 7
Private Const SW_SHOWNA = 8
Private Const SW_RESTORE = 9
Private Const SW_SHOWDEFAULT = 10
Private Const SW_MAX = 10
Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA"
(ByVal lpApplicationName As String, ByVal lpCommandLine As String, ByVal
lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal
bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As
Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO,
lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess
As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long)
As Long
Public Function EseguiSincrono(sDir As String, sComando As String, Optional
sTitolo As String = "Merqurio - Servizi Aggiuntivi", Optional bVisible As
Boolean = True) As Long
Dim Processo As PROCESS_INFORMATION
Dim Startup As STARTUPINFO
Dim bRetVal As Boolean
Dim lpExitCode As Long
Dim lRetVal As long
Startup.cb = 68
Startup.lpReserved = vbNullString
Startup.lpDesktop = vbNullString
Startup.lpTitle = sTitolo
Startup.dwX = 0
Startup.dwY = 0
Startup.dwXSize = 0
Startup.dwYSize = 0
Startup.dwXCountChars = 0
Startup.dwYCountChars = 0
Startup.dwFillAttribute = 0
Startup.dwFlags = 1
If bVisible Then
   Startup.wShowWindow = SW_NORMAL
Else
   Startup.wShowWindow = SW_HIDE
End If
Startup.cbReserved2 = 0
Startup.lpReserved2 = 0
   bRetVal = (CreateProcess(vbNullString, sComando, 0, 0, 0, 32, _
                 vbNullString, sDir, Startup, Processo) > 0)
   If bRetVal Then
     lpExitCode = STATUS_PENDING
     Do While lpExitCode = STATUS_PENDING
      GetExitCodeProcess Processo.hProcess, lpExitCode
      DoEvents
      Sleep (400)
     Loop
     CloseHandle (Processo.hProcess)
  Else
     lRetVal = Err.LastDllError
     lpExitCode = -1
  End If
EseguiSincrono = lpExitCode
End Function

Grazie lo stesso
Ma... non avevi detto che dovevi fare il programma in C?
E allora se non sai il C come fai?
Il tuo approccio è sicuramente più incasinato e complesso.
Ciao