Як закрити програму з Visual basic


 

Гнучкий та потужний мову програмування Visual Basic. NET, будучи одним із спеціально створених засобів розробки додатків для платформи Microsoft. NET, дозволяє повністю використовувати всі її можливості. Зокрема, компоненти простору імен System.Diagnostics дозволяють здійснювати взаємодію з процесами, журналами подій та лічильниками продуктивності. Наприклад, можна закрити програму з Visual Basic, використовуючи клас Process.


Вам знадобиться

— Microsoft Visual Studio.

Інструкція

  1. Імпортуйте простору імен System, System.Diagnostics і System.Threading. На початок модуля додайте наступні рядки коду:

    Imports System
    Imports System.Diagnostics
    Imports System.Threading

    Це потрібно просто для зручності використання компонентів, що відносяться до даних просторів імен.
        

  2. Отримайте дані процесу, який необхідно закрити. Використовуйте об’єкт класу System.Diagnostics.Process. Оголосіть змінну даного класу:

    Dim oProc As Process

    Потім використовуйте будь метод для знаходження необхідного процесу.
        

  3. Якщо програма, яку в подальшому необхідно буде закривати, запускається розробляються додатком, то просто збережіть об’єкт, що повертається методом Start при запуску:

    oProc = Process.Start («app.exe»)
        

  4. Якщо необхідно закрити процес з відомим ідентифікатором, використовуйте статичний метод GetProcessById класу Process для отримання відповідного об’єкта:

    oProc = Process.GetProcessById (nID)

    Тут nID — числовий ідентифікатор процесу.
        

  5. Якщо відомі тільки деякі характеристики цільового процесу, зробіть його пошук. Отримайте список процесів, запущених на локальній машині, у вигляді масиву об’єктів класу Process. Використовуйте методи GetProcesses (повертає всі процеси) або GetProcessesByName (тільки процеси з заданим ім’ям):

    Dim aoAllProcesses As Process () = Process.GetProcesses ()
    Dim aoProcsByName As Process () = Process.GetProcessesByName («app.exe»)

    Перерахуйте об’єкти масиву за допомогою циклу:

    Dim oProc As Process
    For Each oProc In aoAllProcesses
    ‘Дії над oProc
    Next

    У циклі аналізуйте властивості MainModule, MainWindowTitle, ProcessName, і т.д. для знаходження потрібного об’єкта.
        

  6. Спробуйте завершити програму за допомогою відсилання повідомлення закриття її головному вікна. Викличте метод CloseMainWindow об’єкта, що відповідає цільовим процесу. При необхідності зробіть очікування завершення програми шляхом виклику WaitForExit, наприклад:

    oProc.CloseMainWindow ()
    oProc.WaitForExit ()

    Даний метод не гарантує завершення програми, оскільки повідомлення закриття вікна часто обробляється і може бути проігноровано.
        

  7. При необхідності гарантованого завершення програми після виклику CloseMainWindow здійсните очікування протягом невеликого проміжку часу. Використовуйте метод Sleep класу Thread. Потім перевірте стан процесу, проаналізувавши властивість HasExited і, якщо він не завершений, викличте метод Kill:

    Thread.Sleep (6000)
    oProc.Refresh ()
    If not oProc.HasExited Then
    oProc.Kill ()
    End If

    При бажанні можна здійснювати опитування стану процесу в циклі, видаючи періодичні запити користувачеві про необхідність завершення програми без збереження даних. І тільки в разі згоди викликати Kill.
        

  8. Звільніть системні ресурси після завершення програми за допомогою методу Close:

    oProc.Close ()

  9. Для того щоб уникнути непередбачених помилок під час виконання програми, помістіть весь алгоритм закриття програми в блок Try-Catch-End Try. При необхідності реалізуйте повноцінну обробку винятків з висновком діагностичних повідомлень.