Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];




Вниз

Как заблокировать во время выполнения моей программы 


michael_B   (2002-03-30 20:21) [0]

Как заблокировать во время выполнения моей программы
запуск всех остальных и второй копии моей.
Мне нужно сделать полноэранный режим моей проги.



Song   (2002-03-30 21:02) [1]

"второй копии своей" - это несложно.
А вот "всех остальных"....



DenKop   (2002-03-30 23:37) [2]

Вот это проверка запущенной копии твоей программы:
(В принципе готовый модуль подключай и юзай)

Unit OneInstance32;

interface

implementation

uses
Forms;

var
g_hAppMutex: THandle;

function OneInstance: boolean;
var
g_hAppCritSecMutex: THandle;
dw: Longint;
begin
g_hAppCritSecMutex := CreateMutex( nil, true, PChar(Application.Title + ".OneInstance32.CriticalSection") );

// if GetLastError - лениво писать

g_hAppMutex := CreateMutex( nil, false, PChar(Application.Title + "OneInstance32.Default") );

dw := WaitForSingleObject( g_hAppMutex, 0 );

Result := (dw <> WAIT_TIMEOUT);

ReleaseMutex( g_hAppCritSecMutex ); // необязательно вследствие последующего закрытия
CloseHandle( g_hAppCritSecMutex );

end;

initialization

g_hAppMutex := 0;

finalization

if LongBool( g_hAppMutex ) then
begin
ReleaseMutex( g_hAppMutex); // необязательно
CloseHandle( g_hAppMutex );
end;

end.

В OnCreate добавляешь:
If Not(OneInstance) then Application.Terminate;{после этого никогда не увидишь второй копии своего творения}


А вот это получишь список всех запущенных:

procedure TForm1.Button1Click(Sender: TObject);
VAR
Wnd : hWnd;
buff: ARRAY [0..127] OF Char;
begin
ListBox1.Clear;
Wnd := GetWindow(Handle, gw_HWndFirst);
WHILE Wnd <> 0 DO
BEGIN {Не показываем:}
IF (Wnd <> Application.Handle) AND {-Собственное окно}
AND (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) {-Окна без заголовков}
THEN
BEGIN
GetWindowText(Wnd, buff, sizeof(buff));
ListBox1.Items.Add(StrPas(buff));
END;
Wnd := GetWindow(Wnd, gw_hWndNext);
END;
ListBox1.ItemIndex := 0;
end;

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




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.041 c
14-32946          novomod               2002-02-28 17:18  2002.04.11  
О главном.Программист - болезнь,работа,увлечение?


3-32676           SZap                  2002-03-20 18:45  2002.04.11  
Grid


14-32970          Senia2002             2002-03-04 12:28  2002.04.11  
Часики


1-32811           Adoon                 2002-04-01 11:33  2002.04.11  
1С и Delphi6


4-33012           kasper                2002-02-11 22:20  2002.04.11  
подскажите как удалять каталоги самые ранние по времени создания