Читаем Программирование КПК и смартфонов на .NET Compact Framework полностью

  throw new Exception("Unable to get processes!");

 }

}

С помощью данного метода можно узнать детальную информацию о каждом процессе.

Закрытие процесса

Чтобы закрыть процесс, используется метод Kill, код которого приведен в листинге 7.29.

Листинг 7.29

public void Kill() {

 IntPtr hProcess;

 hProcess = OpenProcess(PROCESS_TERMINATE, false, (int) processId);

 if (hProcess != (IntPtr) INVALID_HANDLE_VALUE) {

  bool bRet;

  bRet = TerminateProcess(hProcess, 0);

  CloseHandle(hProcess);

 }

}

Данный метод также использует вызовы функций Windows API. Функция OpenProcess получает дескриптор процесса, который затем передается функции TerminateProcess для уничтожения процесса.

Код, отвечающий за внешний вид элемента управления ListView, полностью идентичен коду из предыдущего примера, поэтому его можно просто скопировать и не рассматривать отдельно. Теперь с помощью Диспетчера задач пользователь сможет узнать список запущенных программ и процессов и даже управлять ими.

Маленький блокнот

Однажды мой друг, далекий от программирования, попросил меня написать простенький текстовый редактор для карманного компьютера. Его не совсем устраивало приложение Word Mobile, которое используется для работы с текстовыми файлами в операционной системе Windows Mobile. Заказчик хотел получить только основные функции стандартного Блокнота из Windows XP, то есть копирование, вырезание, вставку и удаление текста. Также он хотел обойтись без установки .NET Compact Framework 2.0, так как устаревшая модель его карманного компьютера обладала малой емкостью памяти.

В рамках решения поставленной задачи и была написана программа Блокнотик, которая и будет рассматриваться в этом разделе главы.

Единственная сложность при написании данного текстового редактора состояла в том, что библиотека .NET Compact Framework 1.0 не поддерживает работу с буфером обмена на уровне управляемого кода. Поэтому пришлось прибегать к вызовам функций Windows API.

Данный пример можно использовать в качестве основы для тех, кто хочет написать свой текстовый редактор для .NET Compact Framework 1.0. Надо заметить, что если бы я стал писать свой пример с использованием .NET Compact Framework 2.0, то справиться с задачей было бы гораздо легче, так как вторая версия библиотеки поддерживает буфер обмена, который так необходим при операциях с текстом.

Первые шаги

После запуска Visual Studio .NET 2005 надо создать новый проект. При выборе типа проекта надо указать, что будет использоваться .NET Compact Framework 1.0. Для начала на форме следует разместить текстовое поле с именем txtEditor. Для свойства Multiline надо задать значение True, а свойство ScrollBars получит значение Both.

Так как текстовое поле обычно занимает все пространство формы, его нужно вручную растянуть до нужного размера. Учитывая, что я писал программу для конкретной модели мобильного устройства, большой ошибки в моих действиях не было. Но не будем забывать, что существуют другие устройства, размеры экрана у которых будут другими. Поэтому стоит устанавливать размеры элементов программно в соответствии с текущими размерами формы.

Также на первом этапе разработки надо указать позицию текстового поля и установить в нем фокус. Соответствующий код был добавлен в обработчик события Form_Load, что иллюстрирует листинг 7.30.

Листинг 7.30

private void MainForm_Load(object sender, EventArgs e) {

 // устанавливаем позицию текстового поля

 txtEditor.Location = new Point(0, 0);

 // Приравниваем размеры текстового поля к размерам формы

 txtEditor.Width = this.Width;

 txtEditor.Height = this.Height;

 // Устанавливаем фокус

 txtEditor.Focus();

}

Если бы программа создавалась для настольного компьютера, то написанный код не вызывал бы никаких сомнений. Но у КПК нет внешней клавиатуры, и для ввода текста используется панель ввода SIP. Поэтому на форму надо добавить элемент inputPanel. Так как при активации панель ввода закроет часть формы, то надо написать код для вычисления высоты текстового поля для этого случая и соответствующим образом изменить обработчик события Form_Load, как показано в листинге 7.31.

Листинг 7.31

private void MainForm_Load(object sender, EventArgs e) {

 ...

 // Высоту текстового поля устанавливаем в зависимости от SIP

Перейти на страницу:

Похожие книги

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных