Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Help Vb6: Timer

  1. #1

    Help Vb6: Timer

    Ciao...
    ecco il mio quesito:
    devo far chiudere il browser dopo X tempo, ho pensato di farlo associando un timer ma non sono riuscito ad andare oltre l'assegnazione dell'intervallo...
    Nell'esempio imposto il tempo indicato nella textbox
    quando viene premuto Command1 (form con: txtbox1, timer1, command1)
    -------- inizio codice ------------------
    Option Explicit
    Private Declare Function ShellExecute Lib "shell32.dll" 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
    Private Sub Command1_Click()
    Dim RetValue As Long
    Timer1.Interval = Text1
    RetValue = ShellExecute(Me.hwnd, "Open", "http://www.google.it", 0&, 0&, 0&)
    Select Case Timer1.Interval
    Case Is = 0
    MsgBox "Tempo Scaduto!"
    End Select
    End Sub
    :quote:
    ---------- fine codice -----------------
    Come fare???
    Grazie a tutti, please help me!

  2. #2
    Ciao ,
    la proprietà interval serve per indicare ogni quanto il timer esegue determinate operazioni che devi inserire all'interno dell'evento timer1_timer ( se non erro ) ed è li che devi inserire la chiusura del tuo processo .

    Ciao
    Cordiali saluti
    Red Roma

  3. #3
    Ok e l'ho fatto:
    svariate librerie e dichiarazioni
    ________Code_______________
    Option Explicit
    Private Type THREADENTRY32
    dwSize As Long
    cntUsage As Long
    th32ThreadID As Long
    th32OwnerProcessID As Long
    tpBasePri As Long
    tpDeltaPri As Long
    dwFlags As Long
    End Type
    Private Const TH32CS_SNAPTHREAD As Long = &H4&
    Private Const WM_QUIT As Long = &H12
    'Private Declare Function InternetGetConnectedState Lib "wininet" (ByRef dwFlags As Long, ByVal dwReserved As Long) As Long
    Private Declare Function ShellExecute Lib "shell32.dll" 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
    Private Declare Function FindWindow Lib "User32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function GetWindowThreadProcessId Lib "User32.dll" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32.dll" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
    Private Declare Function Thread32First Lib "Kernel32.dll" (ByVal HSnapShot As Long, ByRef EntryModule As THREADENTRY32) As Long
    Private Declare Function Thread32Next Lib "Kernel32.dll" (ByVal HSnapShot As Long, ByRef EntryModule As THREADENTRY32) As Long
    Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal hObject As Long) As Long
    Private Declare Function PostThreadMessage Lib "User32.dll" Alias "PostThreadMessageA" (ByVal idThread As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    ------------
    Private Sub Timer1_Timer()
    Text1.Text = Time
    If Text1.Text = Text2.Text Then
    CloseWindProc ("IEXPLORE")
    MsgBox "Browser Chiuso"
    End If
    End Sub
    -----------
    Private Sub CloseWindProc(sText As String)
    'Chiude la finestra specificata.
    Dim H As Long, ID As Long
    'Recupera l'handle della finestra.
    H = FindWindow(vbNullString, sText)
    'Recupera l'identificatore del thread associato alla finestra.
    Call GetWindowThreadProcessId(H, ID)
    If MsgBox("Chiudere '" & sText & "'?", vbInformation Or vbYesNo, "Chiudi Processo") = vbYes Then CloseProcess (ID)
    End Sub

    Function CloseProcess(pID As Long) As Boolean
    'Chiude tutti i thread del processo.
    Dim EntryThread As THREADENTRY32
    Dim HSnapShot As Long, RetVal As Long
    'Recupera tutti i thread del processo.
    HSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, pID)
    If HSnapShot <> -1 Then
    EntryThread.dwSize = Len(EntryThread)
    RetVal = Thread32First(HSnapShot, EntryThread)
    Do While RetVal
    If EntryThread.th32OwnerProcessID = pID Then
    'Invia il messaggio di chiusura.
    Call PostThreadMessage(EntryThread.th32ThreadID, WM_QUIT, 0, 0)
    End If
    RetVal = Thread32Next(HSnapShot, EntryThread)
    Loop
    Call CloseHandle(HSnapShot)
    End If
    End Function

    _____End Code_____________

    MsgBox "Browser Chiuso" (OK) Ma il browser rimane aperto!!)
    Perchè non funziona???

  4. #4
    Ciao solo una domanda che Sistema Operativo usi ?
    Cordiali saluti
    Red Roma

  5. #5
    windows 2000 professional, ma vorrei ovviamente che fosse utilizzabile anche e soprattutto in XP..
    Ciao e grazie per l'aiuto!
    M@tteo.

  6. #6
    Ciao Startac ,
    scusa se rispondo solo ora ?
    Tu hai già risolto il problema .
    Io sto facendo delle prove ... risultato mi chiude tutti i possibili programmi tranne IEXPLORE ...
    sto continuando a provare ... fammi sapere come sei messo !
    Ciao Red
    Cordiali saluti
    Red Roma

  7. #7
    ...non ho idea del perchè non funzioni...



    ...e comincia a farmi male la testa! :quote:

    Stò provando anch'io da un po' ma non trovo la fine del tunnel..
    Se ce la fai.. illuminami!
    Ciao e Grazie.
    M@tteo.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    36
    Ciao,
    non funziona perche' tu cerchi una finestra che abbia scritto sulla barra del titolo "IEXPLORER"...ovviamente non esiste (a meno che non la crei)!!!
    Prova invece a cercare il processo IEXPLORE e chiuderlo!

    Ad esempio, potresti fare una ricerca per nome del processo usando la funzione:
    ProcessFirst(....)

    Ma attenzione, potresti avere piu' istanze di IEXPLORE, quindi devi conoscere anche il titolo della finestra e potrebbe tornarti utile la funzione che hai usato:
    FindWindow(....)

    una volta trovato il processo che ha nome "IEXPLORE.EXE" con il titolo che cerchi, lo chiudi con la funzione:
    TerminateProcess(....)

    Spero ti sia stato d'aiuto!

  9. #9
    Ciao Batdan ,
    scusa se ti disturbo ma magari sai darmi qualche dritta .
    Sto provando anch'io a chiudere IEXPLORE.EXE .

    Dopo essermi creato lo snapshot :
    codice:
    HSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0)
    A questo punto ciclo all'interno dello snapshot fino a trovare IEXPLORE.EXE

    codice:
    If HSnapShot <> -1 Then
                T_Processo.dwSize = Len(T_Processo)
                RetVal = Process32First(HSnapShot, T_Processo)
                Do While RetVal
                    If UCase(T_Processo.szExeFile) = UCase(V_Processo) Then
                        TrovaProcess = T_Processo.th32ProcessID
                        CloseProcess(TrovaProcess)
                    End If
                    RetVal = Process32Next(HSnapShot, T_Processo)
                Loop
            End If
    A questo punto x ogni processo IEXPLORE.EXE trovato passo id x chiuderlo (CloseProcess(TrovaProcess))

    Al suo interno eseguo :
    codice:
           TerminateThread(EntryThread.th32ThreadID, 0)
           'TerminateProcess(EntryThread.th32OwnerProcessID, 0)
    ma non seccede nulla su altre istanze tipo notepad.exe con piu' finestre aperte riesco a chiuderle IEXPLORE no !!!!

    Scusa per il disturbo e grazie di tutto .
    Ciao
    Cordiali saluti
    Red Roma

  10. #10
    Scusa ho scritto una stupidaggine termino i processi nel seguente modo :

    codice:
     Call PostThreadMessage(EntryThread.th32ThreadID, WM_QUIT, 0, 0)

    PostThreadMessage lo dichiarato così :

    codice:
        Private Declare Function PostThreadMessage Lib "User32.dll" Alias "PostThreadMessageA" (ByVal idThread As Integer, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
    Scusate l'errore ciao
    Cordiali saluti
    Red Roma

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.