![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#4
|
|||
|
|||
|
Цитата:
Это для передачи сообщения первой копии. Вот мой код: Файл проекта. Код:
...
function AllowSetForegroundWindow(dwProcessId: DWORD): BOOL; stdcall; external 'user32.dll';
function IsSecondInstance : Boolean;
var
hMutex : THandle;
begin
Result := False;
WndMessage := RegisterWindowMessage(PChar(GetMessageName));
hMutex := CreateMutex(Nil, True, PChar(GetMutexName));
If hMutex<>0 Then
If GetLastError=ERROR_ALREADY_EXISTS Then
Begin
AllowSetForegroundWindow(DWORD(-1));
PostMessage(HWND_BROADCAST,WndMessage,0,0);
Result := True;
End;
end;
begin
If IsSecondInstance Then Halt(0);
Application.Initialize;
Application.Title := 'Window Switcher';
Application.CreateForm(TMainForm, MainForm);
Application.HookMainWindow(MainForm.HookMessageProc);
Application.Run;
end.MainForm.HookMessageProc: Код:
...
var
MainForm: TMainForm;
WndMessage : Cardinal;
implementation
function TMainForm.HookMessageProc(var Message: TMessage): Boolean;
begin
Result := False;
If Message.Msg = WndMessage Then
Begin
ActivateMainForm;
Result := True;
End;
end; |