Newsgroup: it.comp.lang.visual-basic
Titolo: [LUNGHINO] Terminare un processo... e altro...

 Dubbi ulteriori <
se anche, nel mio caso particolare, dovessi riuscire a terminare il
processo, immagino che in qualche caso potrei avere dei problemi di
autorizzazioni... o no?
Qualcuno sa darmi delle risposte?
In calce al mio post, allego un estratto del codice che ho utilizzato.
Grazissime ancora e a presto!
    Alex
----------------------------------------------------------
Il mio progetto comprende un modulo e un form:
il modulo contiene dichiarazioni di API e funzioni pubbliche, oltre alla
dichiarazioni di due variabili pubbliche:
Public mWnd As Long
Public PidExe As Long
il codice riportato di seguito e', invece, quello contenuto nel form:
Dim strPathExe As String
Dim strPathTxt As String
Dim strExe As String
Dim strTxt As String
Private Sub Form_Load()
    '---------------------------------------------
    'inizializza var. percorsi e nomi file ed exe
    strPathExe = PercorsoEseguibile
    strPathTxt = App.Path
    If (Right$(Trim$(strPathTxt), 1) <> "\") Then
        strPathTxt = strPathTxt & "\"
    End If
    strExe = "MioProg.exe"
    strTxt = "MioFile.txt"
    'inizializza il timer
    Me.Timer1.Enabled = False
    Me.Timer1.Interval = 200
    'inizializza stato dei controlli del form
    Me.Semaforo(0).Visible = True       'semaforo rosso
    Me.Semaforo(1).Visible = False
    '
    Me.lblContenutoFile.Caption = ""
    Me.lblDescrContenutoFile.Visible = False    'nasconde descrizione
    Me.lblDaFare.Visible = True   'mostra le istruzioni x l'utente
    '---------------------------------------------
    'Lancia il programma e imposta il form
    'come "parent" (codice adattato da AllAPI.net)
    'Lock the window update
    LockWindowUpdate GetDesktopWindow
    'Execute strExe
    PidExe = Shell(strPathExe & strExe, vbNormalFocus)
    If PidExe = 0 Then MsgBox "Error starting the app"
    'retrieve the handle of the window
    mWnd = InstanceToWnd(PidExe)
    'Set the exe parent
    SetParent mWnd, Me.hwnd
    'Put the focus on exe
    Putfocus mWnd
    'Unlock windowupdate
    LockWindowUpdate False
    'fa partire il timer: ogni 200 millisecondi
    'controllo se il file "MioFile.txt" e' stato
    'prodotto
    Me.Timer1.Enabled = True
    '---------------------------------------------
End Sub
Private Sub Timer1_Timer()
Dim nFileTxt As Integer, strAppo As String
    strAppo = ""
    If (Dir(strPathTxt & strTxt, vbNormal) <> "") Then  'se il programma ha
prodotto il file atteso...
        If (Me.Semaforo(0).Visible) Then        'se semaforo rosso...
(controllo superfluo, ma... crepi l'avarizia... ;) )
            'imposta semaforo a verde
            Me.Semaforo(0).Visible = False
            Me.Semaforo(1).Visible = True
            'apre il file e legge il risultato
            nFileTxt = FreeFile
            Open strPathTxt & strTxt For Input Shared As #nFileTxt
            Input #nFileTxt, strAppo
            Close #nFileTxt
            'reimposta opportunamente i controlli sul form
            Me.lblContenutoFile.Caption = ""
            Me.lblDescrContenutoFile.Visible = False
            Me.lblDaFare.Visible = True   'mostra le istruzioni x l'utente
            Me.lblDaFare.Visible = False  'nasconde le istruzioni
            Me.lblContenutoFile.Caption = strAppo    'mostra il contenuto
del file
            Me.lblDescrContenutoFile.Visible = True  'visualizza descrizione
            Me.Timer1.Enabled = False   'spegne il timer
        End If
    End If
End Sub
Private Sub Command1_Click()
    'faccio delle cose...
    '....................
    '....................
    '...e scarico il form
    Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'codice adattato da AllAPI.net
    'Unload strExe
    DestroyWindow mWnd
    'se faccio solo "DestroyWindow", rimane comunque
    'un processo "appeso" che continuo a trovare nel TaskManager:
    'provo a terminare il processo usando l'API TerminateProcess
    'e a passarle il pid del programma lanciato (restituito da Shell)
    TerminateProcess PidExe, 0
    'End this program
    TerminateProcess GetCurrentProcess, 0
End Sub

 form, mentre questi compare una volta massimizzato il form [...]
A presto!
    Alex

Altri aggiornamenti.
Circa il problema n. 1, ho fatto delle prove su pc XP e 98: su XP sembra
funzionare tutto correttamente, mentre su 2 pc 98 si verifica il problema.
Che fare...? :((
    Alex

Intanto che resto in attesa di risposte ;)) , continuo a postare dubbi:
forzando la chiusura di un processo (come visto sopra), si mette in
difficolta' il sistema?
Grazissime e... che dire? Se non ci si legge prima... buon onomastico a
tutti!! ;))
    Alex