|
Программирование >> Автоматически обновляемые приложения
Как получить путь к папке, из которой запущено приложение? Не всегда нужно знать путь к исполняемому файлу, иногда требуется получить путь к папке, из которой запущено приложение. Теоретически можно из строки предыдущего примера убрать имя файла и получить, таким образом, путь к папке. Но есть готовое свойство 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) ;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |