De flexibele en krachtige programmeertaal Visual Basic. NET, een van de speciaal ontwikkelde tools voor het ontwikkelen van applicaties voor het Microsoft. NET-platform, stelt u in staat om alle mogelijkheden ervan volledig te benutten. Met name de componenten van de System. Diagnostics-naamruimte stellen u in staat om te werken met processen, gebeurtenislogboeken en prestatiemeteritems. U kunt bijvoorbeeld een programma sluiten vanuit Visual Basic met behulp van de klasse Process.
Noodzakelijk
Microsoft Visual Studio
instructies:
Stap 1
Importeer de naamruimten System, System. Diagnostics en System. Threading. Voeg de volgende regels code toe aan het begin van de module:
Importsysteem
Importeert System. Diagnostics
Importeert System. Threading
Dit is alleen voor het gemak van het gebruik van de componenten die aan deze naamruimten zijn gekoppeld.
Stap 2
Verkrijg de gegevens van het af te sluiten proces. Gebruik het klasseobject System. Diagnostics. Process. Declareer een variabele van deze klasse:
Dim oProc als proces
Gebruik vervolgens een methode om het vereiste proces te vinden.
Stap 3
Als het programma, dat in de toekomst moet worden gesloten, wordt gestart door de applicatie die wordt ontwikkeld, sla dan eenvoudig het object op dat wordt geretourneerd door de Start-methode bij het opstarten:
oProc = Proces. Start ("app.exe")
Stap 4
Als u een proces met een bekende id moet sluiten, gebruikt u de statische GetProcessById-methode van de klasse Process om het bijbehorende object op te halen:
oProc = Process. GetProcessById (nID)
Waarbij nID de numerieke identificatie van het proces is.
Stap 5
Als slechts enkele kenmerken van het doelproces bekend zijn, zoek het dan op. Haal de lijst met processen op die op de lokale computer worden uitgevoerd als een array van objecten van de klasse Process. Gebruik de GetProcesses (retourneert alle processen) of GetProcessesByName (alleen processen met de opgegeven naam):
Dim aoAllProcesses As Process () = Process. GetProcesses ()
Dim aoProcsByName As Process () = Process. GetProcessesByName ("app.exe")
Maak een lijst van de array-objecten met behulp van een lus:
Dim oProc als proces
Voor elke oProc In aoAlle processen
'acties op oProc
Volgende
Loop door de eigenschappen MainModule, MainWindowTitle, ProcessName, etc. om het gewenste object te vinden.
Stap 6
Probeer het programma te beëindigen door een sluitbericht naar het hoofdvenster te sturen. Roep de methode CloseMainWindow aan van het object dat overeenkomt met het doelproces. Wacht indien nodig tot de aanvraag is voltooid door WaitForExit te bellen, bijvoorbeeld:
oProc. CloseHoofdvenster ()
oProc. WaitForExit ()
Deze methode garandeert niet de beëindiging van het programma, omdat het bericht voor het sluiten van het venster vaak wordt verwerkt en kan worden genegeerd.
Stap 7
Wacht even na het aanroepen van CloseMainWindow om er zeker van te zijn dat het programma wordt beëindigd. Gebruik de Sleep-methode van de klasse Thread. Controleer vervolgens de status van het proces door de eigenschap HasExited te onderzoeken en, als het nog niet is voltooid, de Kill-methode aan te roepen:
Draad. Slaap (6000)
oProc. Vernieuwen ()
Indien niet oProc. HasExited Then
oProc. Kill ()
Stop als
Indien gewenst kunt u de status van het proces in een lus opvragen, waarbij u de gebruiker periodiek vraagt om de toepassing te beëindigen zonder gegevens op te slaan. En alleen als je ermee instemt om Kill te bellen.
Stap 8
Maak systeembronnen vrij nadat het programma is voltooid met de methode Sluiten:
oProc. Sluiten ()
Stap 9
Om onverwachte fouten tijdens de uitvoering van de toepassing te voorkomen, plaatst u het volledige algoritme voor het sluiten van het programma in een Try-Catch-End Try-blok. Implementeer indien nodig een volwaardige afhandeling van uitzonderingen met diagnostische berichten.