Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247

    [vb6] errore hernel32.dll

    Salve a tutti spiego il mio problema.
    Ho creato un applicativo in Visual basic 6 e per uscire dal programma uso l'istruzione end nel metodo unload della form MDI principale.

    In versione debug nessun problema.

    In versione esguibile mi si presenta un errore nel momento della chiususa del file eseguibile, errore nel modulo kernel32.dll versione 5.1.2600.2180, indirizzo errore 0x0001eb33.

    Siccome non riesco a capire perchè mi dia questo problema, esiste un modo pulito e diverso dall'end per chiudere l'eseguibile? Prima di uscire, chiudo tutte le finestre quindi non è quello.

    Qualche idea in proposito?


    Grazie per l'aiuto.
    Andrea

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    59
    prova questo, uccide il processo in modo pulito potrebbe esserti utilie, dichiarala in un modulo e la usi quando vuoi all'interno della tua applicazione

    Public Sub killApp(ByVal hwnd As Long)

    Const PROCESS_ALL_ACCESS = &H1F0FFF
    Dim ThreadIDX As Long
    Dim PROCESSIDX As Long
    Dim EXCODE As Long
    Dim PROCESS As Long
    ThreadIDX = GetWindowThreadProcessId(hwnd, PROCESSIDX)
    PROCESS = OpenProcess(PROCESS_ALL_ACCESS, 0, PROCESSIDX)
    Call GetExitCodeProcess(PROCESS, EXCODE)
    Call TerminateProcess(PROCESS, EXCODE)
    Call CloseHandle(PROCESS)

    End Sub


    richiamala la funzione cosi:

    killApp (hwnd)


    ciao fammi sapere se funziona

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    121
    non puoi autokillarti

  4. #4

    Re: [vb6] errore hernel32.dll

    Originariamente inviato da quincy
    ... esiste un modo pulito e diverso dall'end per chiudere l'eseguibile?
    Che io sappia, e' sufficiente far precedere l'End dall'Unload di tutti i Forms per liberare correttamente tutte le risorse (oltre all'eventuale Close dei files utilizzati):
    codice:
    While Forms.Count
      Unload Forms(0)
    Wend
    End
    IceCube_HT (VB6 fan Club)

  5. #5
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Se hai fatto l'Unload Forms di tutte le finestre del prog., chiuso regolarmente le connessioni al DB, disattivati/e le librerie referenziate (ad esempio) con Set FSO = Nothing , ed il problema persiste ti segnalo che:
    "Alcune versioni della ComCtl32.DLL causano un arresto alla chiusura del programma quando sono caricati gli stili visivi di XP in un'applicazione. Ciò accade specialmente quando si usano i controlli utente di VB"
    Se ti trovi in questa situazione leggi qui e troverai il codice per superare lo stato d'errore.
    LM

  6. #6
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    quincy,
    per la precisione: seleziona "Suggerimenti" e poi click sulla voce "Prevenire i crash alla chiusura dell'applicazione".
    Spero che possa esserti utile.
    LM

  7. #7
    Utente di HTML.it L'avatar di quincy
    Registrato dal
    Aug 2003
    Messaggi
    247
    Grazie ragazzi per l'interessamento(avevo postato circa 5 mesi fà )

    Comunuqe avevo risolto a suo tempo con il kill dell'handle del programma e la cosa ha funzionato!

    Grazie ancora per i vostri consigli!


    Ciao
    Andrea

  8. #8
    Un ultima aggiunta: non bisognerebbe MAI usare l'istruzione End o autokillare il processo dell'applicazione, perché non viene eseguito il codice di cleanup delle classi e dei form, ed è potenziale causa di perdite di dati. Piuttosto bisogna usare un codice come questo:
    codice:
    While Forms.Count
      Unload Forms(0)
    Wend
    Unload Me
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

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.