Чтение онлайн

на главную - закладки

Жанры

Программирование КПК и смартфонов на .NET Compact Framework

Климов Александр Петрович

Шрифт:

Активация и закрытие приложения

Для активации запущенного приложения вызывается функция Windows API

SetForegroundWindow
, которая использует дескриптор окна. Для закрытия приложения используется функция
SendMessage
с соответствующим сообщением закрытия
WM_CLOSE
. Для закрытия сразу всех окон можно использовать функцию Windows API
SHCloseApps
, которая закрывает все запущенные программы, кроме самого Диспетчера задач. Код, выполняющий эти действия, приведен в листинге 7.26.

Листинг 7.26

public static void ActivateWindow(IntPtr hWnd) {

 //
Активируем приложение

 SetForegroundWindow(hWnd);

}

public static void CloseWindow(IntPtr hWnd) {

 // Закрываем приложение

 SendMessage(hWnd, WM_CLOSE, 0, 0);

}

public static void CloseApps {

 // Закрываем все приложения

 SHCloseApps(int.MaxValue);

}

Перечисление процессов

Для отображения списка процессов используется функция, код которой приведен в листинге 7.27.

Листинг 7.27

private void fillProcessList {

 Cursor.Current = Cursors.WaitCursor;

 // Получаем список запущенных процессов

 processes = Process.GetProcesses;

 // Заполняем ListView

 ListViewItem lvi;

 listView.BeginUpdate;

 listView.Items.Clear;

 foreach (Process p in processes) {

lvi = new ListViewItem(p.ProcessName);

//lvi.SubItems.Add("ID");

listView.Items.Add(lvi);

 }

 listView.EndUpdate;

 if (listView.Items.Count > 0) {

listView.Items[0].Selected = true;

listView.Items[0].Focused = true;

 }

 Cursor.Current = Cursors.Default;

}

Список активных процессов извлекается при помощи класса

Process
. Основой класса является метод
GetProcesses
, приведенный в листинге 7.28.

Листинг 7.28

public static Process[] GetProcesses {

 ArrayList procList = new ArrayList;

 IntPtr handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

 if ((int)handle > 0) {

try {

PROCESSENTRY32 peCurrent;

PROCESSENTRY32 pe32 = new PROCESSENTRY32;

byte[] peBytes = pe32.ToByteArray;

int retval = Process32First(handle, peBytes);

while(retval == 1) {

peCurrent = new PROCESSENTRY32(peBytes);

Process proc =

new Process(new IntPtr((int)peCurrent.PID), peCurrent.Name,

(int)peCurrent.ThreadCount, (int)peCurrent.BaseAddress);

procList.Add(proc);

retval = Process32Next(handle, peBytes);

}

} catch(Exception ex) {

throw new Exception("Exception: " + ex.Message);

}

CloseToolhelp32Snapshot(handle);

return (Process[])procList.ToArray(typeof(Process));

 } else {

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, так как устаревшая модель его карманного компьютера обладала малой емкостью памяти.

Поделиться:
Популярные книги

Газлайтер. Том 10

Володин Григорий
10. История Телепата
Фантастика:
боевая фантастика
5.00
рейтинг книги
Газлайтер. Том 10

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Хозяин Теней 4

Петров Максим Николаевич
4. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 4

Картофельное счастье попаданки

Иконникова Ольга
Фантастика:
фэнтези
5.00
рейтинг книги
Картофельное счастье попаданки

Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Корнев Павел Николаевич
Фантастика:
фэнтези
героическая фантастика
5.50
рейтинг книги
Экзорцист: Проклятый металл. Жнец. Мор. Осквернитель

Доктора вызывали? или Трудовые будни попаданки

Марей Соня
Фантастика:
юмористическая фантастика
попаданцы
5.00
рейтинг книги
Доктора вызывали? или Трудовые будни попаданки

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Сумеречный стрелок 7

Карелин Сергей Витальевич
7. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок 7

Жизнь под чужим солнцем

Михалкова Елена Ивановна
Детективы:
прочие детективы
9.10
рейтинг книги
Жизнь под чужим солнцем

Красноармеец

Поселягин Владимир Геннадьевич
1. Красноармеец
Фантастика:
боевая фантастика
попаданцы
4.60
рейтинг книги
Красноармеец