MyTetra Share
Делитесь знаниями!
Работа с процессами в VB.NET
26.05.2018
15:17
Раздел: VB

Работа с процессами в VB .NET

Опубликовано Январь 2, 2016 автором Памирыч

Как открыть файл программой по умолчанию

Показать

Visual Basic .NET

1

        Process.Start("Test.txt")

Запустить исполняемый файл

Visual Basic .NET

1

Process.Start("calc.exe")

Разумеется, так можно открыть все файлы, у которых есть ассоциации с программами.
Таким образом, этот код откроет Html-страницы и ссылки браузером по умолчанию.

 Как запустить файл с параметрами

Допустим, потребовалось открыть Яндекс именно в Internet Explorer. Передаем ему в качестве параметра ссылку:

Visual Basic .NET

1

Process.Start("iexplore.exe", "www.ya.ru")

Как отправить письмо при помощи установленной по умолчанию в системе почтовой программы (если она, конечно, есть)

Visual Basic .NET

1

Process.Start("mailto:dyadyavanya@mail.ru?Subject=Приглашение &Body=Дядя Ваня, приезжай на шашлыки!")

При выполнении этого кода откроется почтовая программа с готовым к отправке письмом.

Как запустить приложение свернутым, развернутым, скрытым и с обычным размером окна

Visual Basic .NET

1

2

3

4

        Dim pr As New Process()

        pr.StartInfo.FileName = "calc.exe"

        pr.StartInfo.WindowStyle = ProcessWindowStyle.Normal 'Hidden, Maximized, Minimized

        pr.Start()

Приостановить работу своего приложения, пока работает запущенная программа

В следующем примере мы запускаем калькулятор, и пока он открыт, наша программа недоступна:

Visual Basic .NET

1

2

        Dim Pr As Process = Process.Start("calc.exe")

        Pr.WaitForExit()

Как завершить процесс

Visual Basic .NET

1

        Process.GetProcessesByName("WindowsApplication2")(0).Kill()

Как закрыть программу «мягко»

Под «мягко» я имею ввиду выполнение в программе кода, что находится в ее закрытии, ведь при завершении процесса программа «умирает» внезапно

Visual Basic .NET

1

Process.GetProcessesByName("WindowsApplication2")(0).CloseMainWindow()

Хотелось бы провести аналогию с диспетчером задач.
Убиваем процесс на вкладке «процессы»
«Мягко» закрываем на вкладке «Приложения»

Как отловить завершение стороннего процесса

Visual Basic .NET

1

2

3

4

5

6

7

8

9

    Dim WithEvents Pr As Process

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Pr = Process.GetProcessesByName("Calc")(0)

        Pr.EnableRaisingEvents = True

    End Sub

    Private Sub ProcEx() Handles Pr.Exited

        MsgBox("Процесс завершен")

    End Sub

Узнать имя модуля процесса и путь к нему

Visual Basic .NET

1

2

        Dim Pr As Process = Process.GetProcessesByName("Calc")(0)

        MsgBox(Pr.MainModule.FileName)

Имя модуля без полного пути:

Visual Basic .NET

1

2

        Dim Pr As Process = Process.GetProcessesByName("Calc")(0)

        MsgBox(Pr.MainModule.ModuleName)

Имя процесса:

Visual Basic .NET

1

2

        Dim Pr As Process = Process.GetProcessesByName("Calc")(0)

        MsgBox(Pr.ProcessName)

Получить имя продукта, компанию, версию, описание и т.д. программы по процессу

Visual Basic .NET

1

2

3

4

5

        Dim Pr As Process = Process.GetProcessesByName("Calc")(0)

        MsgBox(Pr.MainModule.FileVersionInfo.ProductName)

        MsgBox(Pr.MainModule.FileVersionInfo.CompanyName)

        MsgBox(Pr.MainModule.FileVersionInfo.ProductVersion)

        MsgBox(Pr.MainModule.FileVersionInfo.FileDescription)

Получить заголовок главного окна

Visual Basic .NET

1

2

        Dim Pr As Process = Process.GetProcessesByName("Calc")(0)

        MsgBox(Pr.MainWindowTitle)

Получить все модули процесса

Visual Basic .NET

1

2

3

4

        Dim Pr As Process = Process.GetProcessesByName("Calc")(0)

        For I As Integer = 0 To Pr.Modules.Count - 1

            MsgBox(Pr.Modules(I).FileName)

        Next

Получить время старта процесса

Visual Basic .NET

1

2

        Dim Pr As Process = Process.GetProcessesByName("Calc")(0)

        MsgBox(Pr.StartTime)

Узнать занимаемую процессом память

Visual Basic .NET

1

2

        Dim Pr As Process = Process.GetProcessesByName("Calc")(0)

        MsgBox(Pr.WorkingSet64 \ 1024)

Использование класса Process для работы с библиотеками

Показать

Чтобы получить доступ к компонентам библиотек, воспользуемся rundll32.exe и методом Start

Некоторые диалоги:

Свойства мыши:

Visual Basic .NET

1

Process.Start("rundll32", "shell32,Control_RunDLL main.cpl @0")

Клавиатуры:

Visual Basic .NET

1

Process.Start("rundll32", "shell32,Control_RunDLL main.cpl @1")

Панель управления:

Visual Basic .NET

1

Process.Start("rundll32", "shell32,Control_RunDLL")

Принтеры:

Visual Basic .NET

1

        Process.Start("rundll32", "shell32,Control_RunDLL main.cpl @2")

Свойства модема:

Visual Basic .NET

1

        Process.Start("rundll32", "SHELL32,Control_RunDLL modem.cpl, add")

Дата и время

Visual Basic .NET

1

        Process.Start("rundll32", "shell32,Control_RunDLL timedate.cpl")

Открыть с помощью…

Visual Basic .NET

1

        Process.Start("rundll32", "shell32,OpenAs_RunDLL")

Информация о системе:

Visual Basic .NET

1

        Process.Start("rundll32", "shell32,ShellAboutA HACKZONE.RU")

Распечатать тестовую страницу:

Visual Basic .NET

1

        Process.Start("rundll32", "SHELL32,SHHelpShortcuts_RunDLL PrintTestPage")

По поводу запуска библиотек через RunDll32.exe:

Показать

rundll32 rnaui.dll,RnaWizard — вызов мастера «Удаленный доступ к сети».

rundll32 rnaui.dll,RnaWizard /1 — вызов мастера «Удаленный доступ к сети» без отображения начального окна.

rundll32 shell,ShellExecute — открыть Проводник (папка «Рабочий стол»).

rundll32 shell32,Control_RunDLL — открыть в Проводнике папку «Панель управления».

rundll32 shell32,Control_RunDLL main.cpl @0 — открыть диалог «Свойства мыши».

rundll32 shell32,Control_RunDLL main.cpl @1 — открыть диалог «Свойства клавиатуры».

rundll32 shell32,Control_RunDLL main.cpl @2 — открыть папку «Принтеры».

rundll32 shell32,Control_RunDLL main.cpl @3 — открыть папку «Шрифты».

rundll32 SHELL32,Control_RunDLL modem.cpl, add — открыть диалог «Свойства модема».

rundll32 shell32,Control_RunDLL timedate.cpl — открыть диалог «Дата и время». *

rundll32 shell32,OpenAs_RunDLL — вызвать диалог «Открыть с помощью…».

rundll32 shell32,ShellAboutA — информация о версии Windows.

rundll32 shell32,SHExitWindowsEx 0 — закрыть все программы, перегрузить оболочку.

rundll32 shell32, SHExitWindowsEx 1 — выключить ПК.

rundll32 shell32, SHExitWindowsEx 2 — перегрузить ПК.

rundll32 shell32,SHExitWindowsEx 4 — принудительно закрыть все программы.

rundll32 shell32,SHExitWindowsEx 8 — выход из Windows и выключение ATX-совместимого ПК.

rundll32 shell32,SHFormatDrive — вызов диалога форматирования диска А:.

rundll32 SHELL32,SHHelpShortcuts_RunDLL AddPrinter — запуск «Мастера установки принтера».

rundll32 shell32,SHHelpShortcuts_RunDLL Connect — запуск мастера подключения сетевого диска.

rundll32 SHELL32,SHHelpShortcuts_RunDLL PrintTestPage — распечатать тестовую страницу.

rundll32 sysdm.cpl,InstallDevice_Rundll — вызов мастера установки оборудования.

rundll32 url.dll,FileProtocolHandler %1 — открыть веб-страницу, где %1 — URL сайта (включая http://).

rundll32 url.dll,MailToProtocolHandler %1 — создать новое письмо, где %1 — e-mail адресата.

rundll32 user,CASCADECHILDWINDOWS — расположить все окна каскадом.

rundll32 user,TILECHILDWINDOWS — расположить все окна по экрану.

rundll32 user,disableoemlayer — сбой системы (!) — выключить все функции ввода-вывода (клавиатура, дисплей, мышь). В результате будет черный экран с курсором и ни на что не реагирующая система, однако Windows продолжает работать.

rundll32 user,ExitWindowsExec — быстрая перезагрузка Windows.

rundll32 user,WNetDisconnectDialog — вызов диалога «Отключение сетевого диска».

rundll32 AppWiz.Cpl,NewLinkHere %1 — запуск мастера создания нового ярлыка, где %1 — путь к исходному файлу.

rundll32 shell32.dll,Control_RunDLL hotplug.dll — диалоговое окно Отключение или извлечение аппаратного устройства

rundll32 мсprint2.dll,RUNDLL_PrintTestPage — распечатать тестовую страницу на принтере.

rundll32 netplwiz.dll,AddNetPlaceRunDll — вызов мастера подключения нового сетевого ресурса «Добавление в сетевое окружение».

rundll32 user,RepaintScreen — выполнить команду «Обновить».

rundll32 user,SetCaretBlinkTime n — задать частоту мигания курсора, соответствующую значению параметра n.

rundll32 user,SetCursorPos — переместить курсор мыши в верхний левый угол экрана.

rundll32 user,SetDoubleClickTime n — задать скорость двойного нажатия левой кнопки мыши (Double Click), соответствующую параметру n.

rundll32 user,SwapMouseButton — поменять местами клавиши мыши (обратная смена невозможна).

rundll32 user,WNetConnectDialog — вызов диалога «Подключение сетевого диска».

rundll32.exe», «shimgvw.dll, ImageView_Fullscreen C:\1.jpg — открыть картинку в программе просмотра изображений и факсов

 





Запись опубликована в рубрике Полезные коды на Visual Basic .NET, VB .NET FAQ. Добавьте в закладки постоянную ссылку.

← Я подожду (Андрей Державин Cover)

Как написать простейший сервис (Службу Windows) на VB .NET →

 



Что еще можно почитать

Создать коллекцию, содержащую только уникальные элементы (Декабрь 8, 2015)

Применение атрибутов файла (Декабрь 4, 2015)

В траве сидел кузнечик (Remix) (Декабрь 2, 2015)

Сделать скриншот экрана (Декабрь 4, 2015)

Получить список программ автозагрузки в ключах реестра (Декабрь 7, 2015)

 

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования