Категория
Информатика
Тип
реферат
Страницы
3 стр.
Дата
26.03.2009
Формат файла
.rtf — Rich Text Format (Wordpad)
Архив
20568.zip — 5.39 kb
  • predotvrashhenie-zapuska-2-x-kopij-programmy_20568_1.rtf — 20.98 Kb
  • Readme_docus.me.txt — 125 Bytes
Рейтинг
10  из 10
Оценок
1
Оцените работу
Хорошо  или  Плохо


Текст работы

Предотвращение запуска 2-x копий программы
Известно, что Windows - многозадачная
система. Это конечно хорошо. Но обратной стороной многозадачности является то, что одновременно можно запустить несколько копий одного и того же приложения. Пользователь может это сделать не специально, да и вторая копия приложения может запуститься из-за ошибки в программе или же самой
OC. Из-за клона могут возникнуть некоторые проблемы, связанные с файловыми
операциями, операциями с реестром и т.п. Поэтому код поиска и закрытия собственной копии в программе совсем не лишний. Есть несколько методов выполнения нахождения копии. В этой статье я их вам продемонстрирую.
Поиск главной формы (окна)
Чтобы найти копию главного окна
можно воспользоваться функцией WinApi - FindWindow. В качестве параметра этой функции передается имя класса окна, которое использовалось при регистрации типа, определяющиего окно формы или в системе окон (WndClass) и заголовка окна. В Дельфи имя оконного класса WndClass совпадает с именем класса формы в Object Pascal (например TForm1). Функция возвращает 0, в случае если окна не существует, либо дескриптор окна, если окно существует. Основной код вашей программы должен быть написан так, что бы программа смогла запуститься, если результат функции
FindWindow равен нулю или завершиться в обратном случае. Следующий пример, если
вы собираетесь его использовать, нужно вставить в dpr-файл проекта (меню
Project - View Source). Пример :
program Project1;
uses
Forms,
Unit1 in 'Us' Form1;
$R *.res
var
HWnd : THanlde;
begin
HWnd := FindWindow ('TForm1', nil);
if HWnd 0 then
if not IsWindowVisible(HWnd) then
PostMessage(HWnd,



Ваше мнение



CAPTCHA