Как закрыть программу из Visual basic?
3 ноября 2014 г. Просмотров: 1205
Гибкий и мощный язык программирования Visual Basic .NET, являясь одним из специально созданных средств разработки приложений для платформы Microsoft .NET, позволяет полностью использовать все ее возможности. В частности, компоненты пространства имен System.Diagnostics позволяют осуществлять взаимодействие с процессами, журналами событий и счетчиками производительности. Например, можно закрыть программу из Visual Basic, используя класс Process. Импортируйте пространства имен System, System.Diagnostics и System.Threading. В начало модуля добавьте следующие строки кода:Imports SystemImports System.DiagnosticsImports System.ThreadingЭто нужно просто для удобства использования компонентов, относящихся к данным пространствам имен. Получите данные процесса, который необходимо закрыть. Используйте объект класса System.Diagnostics.Process. Объявите переменную данного класса:Dim oProc As Process Затем используйте какой-либо метод для нахождения необходимого процесса. Если программа, которую в дальнейшем необходимо будет закрывать, запускается разрабатываемым приложением, то просто сохраните объект, возвращаемый методом Start при запуске:oProc = Process.Start("app.exe") Если необходимо закрыть процесс с известным идентификатором, используйте статический метод GetProcessById класса Process для получения соответствующего объекта:oProc = Process.GetProcessById(nID)Здесь nID – числовой идентификатор процесса. Если известны только некоторые характеристики целевого процесса, произведите его поиск. Получите список процессов, запущенных на локальной машине, в виде массива объектов класса Process. Используйте методы GetProcesses (возвращает все процессы) или GetProcessesByName (только процессы с заданным именем):Dim aoAllProcesses As Process() = Process.GetProcesses()Dim aoProcsByName As Process() = Process.GetProcessesByName("app.exe")Перечислите объекты массива при помощи цикла:Dim oProc As ProcessFor Each oProc In aoAllProcesses' действия над oProcNextВ цикле анализируйте свойства MainModule, MainWindowTitle, ProcessName, и т.д. для нахождения нужного объекта. Попытайтесь завершить программу при помощи отсылки сообщения закрытия ее главному окну. Вызовите метод CloseMainWindow объекта, соответствующего целевому процессу. При необходимости произведите ожидание завершения приложения путем вызова WaitForExit, например:oProc.CloseMainWindow()oProc.WaitForExit()Данный метод не гарантирует завершения программы, поскольку сообщение закрытия окна часто обрабатывается и может быть проигнорировано. При необходимости гарантированного завершения программы после вызова CloseMainWindow осуществите ожидание в течение небольшого промежутка времени. Используйте метод Sleep класса Thread. Затем проверьте состояние процесса, проанализировав свойство HasExited и, если он не завершен, вызовите метод Kill:Thread.Sleep(6000)oProc.Refresh()If not oProc.HasExited Then oProc.Kill()End IfПри желании можно осуществлять опрос состояния процесса в цикле, выдавая периодические запросы пользователю о необходимости завершения приложения без сохранения данных. И только в случае согласия вызвать Kill. Освободите системные ресурсы после завершения программы при помощи метода Close:oProc.Close() Для того чтобы избежать непредвиденных ошибок во время исполнения приложения, поместите весь алгоритм закрытия программы в блок Try-Catch-End Try. При необходимости реализуйте полноценную обработку исключений с выводом диагностических сообщений.
Оцените статью!
Вам понадобится
- - Microsoft Visual Studio.