Программирование >>  Автоматически обновляемые приложения 

1 ... 87 88 89 [ 90 ] 91 92 93 ... 170


Как получить путь к папке,

из которой запущено приложение?

Не всегда нужно знать путь к исполняемому файлу, иногда требуется получить путь к папке, из которой запущено приложение. Теоретически можно из строки предыдущего примера убрать имя файла и получить, таким образом, путь к папке. Но есть готовое свойство BaseDirectory, которым гораздо проще воспользоваться для решения этой задачи. А есть еще свойство Application.statupPath, которое также возвращает путь к папке, но без косой черты в конце строки. Использование этих методов показано в листинге 9.2. Несмотря на сходство, эти свойства имеют некоторые различия, и бывают ситуации, когда можно применять только одно из них.

Листинг 9.2. Получение пути к папке, из которого запущено приложение

private void butBaseDirectory Click(object sender, EventArgs e) {

Выводим путь к папке, откуда запущено приложение MessageBox. Show (System. AppDomam. CurrentDomam.BaseDirectory) ;

Другой способ

MessageBox.Show(Application.StartupPath);

Как запустить другой исполняемый файл из своего приложения?

Чтобы из своего приложения запустить другую программу, используйте

класс Process пространства имен System.Diagnostics (ЛИСТИНГ 9.3).

Примечание

в NET Compact Framework свойство ExecutablePath не поддерживается. Вам придется воспользоваться другим способом, описанным в моей книге Программирование КПК и смартфонов на .NET Compact Framework .



I Листинг 9.4. Запуск приложения с параметрами

Запускаем Блокнот с файлом test.txt Process.Start( notepad.exe , test.txt );

Запускаем браузер с заданным адресом

Process.Start( iexplore.exe , netsources.narod.ru );

Бывает и такая ситуация, когда нужно запустить другое приложение из своей программы и не дать пользователю возможности закрыть нашу программу. В этом случае код немного усложнится (листинг 9.5).

; Листинг 9.5. Запуск приложениях запретом на закрытие своего приложения

private void butRunNotepad2 Click(object sender, EventArgs e) {

Устанавливаем информацию

ProcessStartlnfo start info = new ProcessStartlnfo ((3 C: \windows\system32\notepad. exe ) ;

start info.UseShellExecute = false; start info.CreateNoWindow = true; создаем новый процесс Process proc = new Process();

\ Листинг 9.3. Запуск другого приложения

using System.Diagnostics;

создаем новый процесс Process proc = new Process(); Запускаем Блокнот

proc.StartInfo.FileName = @ Notepad.exe ; proc.Startlnfo.Arguments = ; proc.Start 0;

В этом примере мы запускаем пустой текстовый редактор. Если вы хотите запустить Блокнот с открытым файлом, или же любую другую программу с параметрами, то используйте перегруженную версию метода start. Например, для запуска Блокнота с указанным файлом или для запуска Internet Explorer с определенным адресом используйте код, приведенный в листинге 9.4.



Как закрыть все копии Блокнота?

Впрочем, с помощью класса Process МОЖНО НС ТОЛЬКО запускать приложения, НО и закрывать их. Предположим, мы хотим закрыть все запущенные копии текстового редактора Блокнот. Тогда можно воспользоваться кодом, представленным в листинге 9.6.

:;щиртинг 9.6 Закрытие всех копий программы Блокнот

using System.Diagnostics; protected Process[] procs;

private void butCloseNotepad Click(object sender, EventArgs e) {

procs = Process.GetProcessesByName( Notepad ) ; int i = 0;

while (i != procs.Length) {

procs[i] .Kill 0; i++;

MessageBox.Show( Всего : + i.ToString());

При этом все экземпляры Блокнота будут закрыты без вывода диалогового окна о необходимости сохранить данные. Поэтому этим способом следует пользоваться осторожно. Естественно, этим приемом можно пользоваться, чтобы закрыть все экземпляры браузера Internet Explorer и другие программы.

proc.Startlnfo = start info; Запускаем процесс proc.Start();

Ждем, пока Блокнот запущен proc.WaitForExit();

MessageBox.Show( Код завершения: + proc.ExitCode, Завершение + Код , MessageBoxButtons.OK, MessageBoxIcon.Information) ;



1 ... 87 88 89 [ 90 ] 91 92 93 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика