MyTetra Share
Делитесь знаниями!
Работа с процессами в VB .NET
23.03.2018
22:38
Текстовые метки: VB .NET
Раздел: VB

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

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

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

Показать


Visual Basic .NET

Process.Start("Test.txt")

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

Visual Basic .NET

Process.Start("calc.exe")

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

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

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


Visual Basic .NET

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

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


Visual Basic .NET

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

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

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


Visual Basic .NET

        Dim pr As New Process()

        pr.StartInfo.FileName = "calc.exe"

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

        pr.Start()

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

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


Visual Basic .NET

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

        Pr.WaitForExit()

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


Visual Basic .NET

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


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

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


Visual Basic .NET

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

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

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


Visual Basic .NET

    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

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

        MsgBox(Pr.MainModule.FileName)

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



Visual Basic .NET

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

        MsgBox(Pr.MainModule.ModuleName)

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


Visual Basic .NET

        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 — открыть картинку в программе просмотра изображений и факсов

 

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