Форум: "Основная";
Поиск по всему сайту: 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.025 c
6-32913           Z                     2002-01-04 23:40  2002.04.11  
Как получить IP адрес компьютера?


1-32761           НОВИЧОККККК           2002-03-30 21:13  2002.04.11  
ПОМОГИТЕ(СРОЧНО)


3-32685           Seri                  2002-03-21 09:06  2002.04.11  
SQL Insert и Boolean


6-32921           Chris                 2002-01-26 15:46  2002.04.11  
Повтор вопроса. Как отправить HTML по почте?


6-32926           Gsn                   2002-01-29 12:54  2002.04.11  
Как узнать об активных соединениях с моим компом???