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

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


Листинг 9.7. Открытие файла в ассоциированном приложении

using System.Diagnostics;

Получим путь к нужной папке string sysFolder =

Environment.GetFolderPath(Environment.SpecialFolder.System). Создадим новую структуру ProcessStartlnfo ProcessStartlnfo pinfo = new ProcessStai;-tInfo () ; Установим полный путь к имени файла pinfo. FileName = sysFolder + (a \eula. txt ;

Запуск программы по имени файла

Можно запускать не только исполняемый файл, но приложение, ассоциированное с расширением файла. Например, текстовый файл откроется Блокнотом, а графический рисунок с расширением bmp откроется в программе Paint.

Добавим в начале кода строчку

using System.Diagnostics;

Теперь необходимо установить данные для структуры ProcessStartlnfo.

Воспользуемся полем структуры, отвечающей за имя файла. Другое поле UseSheiiExecute задает процесс, который запустится на основе расширения файла или типа файла вместо исполняемого файла. Установите это свойство в значение true, string sysFolder =

Environment. GetFolderPath (Environment. SpecialFolder. System) ; ProcessStartlnfo pinfo = new ProcessStartlnfo(); pinfo.FileName = sysFolder + @ \eula.txt ; pInfo.UseSheiiExecute = true; Process p = Process.Start(pinfo);

Этот пример открывает файл eula.txt в программе, которая ассоциирована с текстовыми файлами. Как правило, это Блокнот (Notepad.exe). Вы можете изменить имя и тип файла, и он также будет открыт в соответствующем приложении.

Поскольку по умолчанию UseSheiiExecute равно true, В ЭТОМ случае НС обязательно использовать ProcessStartlnfo ДЛЯ запуска процесса. Можно за-пустить ассоциированное приложение с одной строчкой кода:

Process р = Process, start ((а С: \winnt\system32\eula.txt ) ;

Полный код приведен в листинге 9.7.



Как узнать число процессоров в системе?

Вы можете узнать число процессоров в системе при помощи свойства ProcessorAf f inity, как показано в листинге 9.8.

\ Листинг 9.8. Получение числа процессоров в системе

using System.Diagnostics;

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

int am = Process.GetCurrentProcess0 .ProcessorAffinity.ToInt320 ;

int processorCount = 0;

while (am != 0) {

processorCount++; am &= (am - 1) ;

MessageBox.Show(processorCount.ToString() ) ;

Впрочем, этот код устарел для .NET Framework 2.0, так как число процессоров можно узнать с помощью одной строчки кода (листинг 9.9) с использованием свойства Environment. ProcessorCount.

; Листинг 9.9. Второй способ получения процессоров в системе

По умолчанию UseShellExecute равно true.

В данном случае указываем это поле явно для иллюстрации.

pinfо.UseShellExecute = true;

Process р = Process.Start(pinfo);

Возможна ситуация, когда компьютер не имеет программ, ассоциированных с файлом. Поэтому неплохо бы использовать конструкцию try. . .catch для отлавливания подобных ошибок.



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

Если в вашей программе необходимо сделать паузу на несколько секунд, то самым лучшим решением (листинг 9.10) будет воспользоваться методом

Sleep из класса System. Threading. Thread.

j Листинг 9.10. Пауза в программе

Делаем паузу на 3 секунды System.Threading.Thread.Sleep(3000);

Ни в коем случае не используйте пустые циклы для создания пауз. Этим приемом часто пользовались программисты в играх несколько лет назад, чтобы заморозить выполнение программ. Но с ростом производительности компьютерных систем этот прием принес головную боль пользователям. Мощные процессоры так быстро прогоняли циклы, что играть становилось просто невозможно.

Примечание

Примеры находятся в папке Application на прилагаемом диске.

Как получить список всех процессов, запущенных в системе?

Класс Process из Пространства имен System. Diagnostics позволяет узнать множество информации о процессах. Например, с помощью метода Process.GetProcesses не составит труда получить СПИСОК всех запущенных процессов на локальной машине, как показано в листинге 9.11.

MessageBox.Show( String.Format( Число процессоров: {0} ,

Environment.ProcessorCount.ToString()));



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

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