Minimiran program naj se pokaze

Odpiranje, tiskanje, pisanje v datoteke in drugo.
Odgovori
oton
Prispevkov: 84
Pridružen: 14.04.2005 12:12:11

Minimiran program naj se pokaze

Odgovor Napisal/-a oton » 14.02.2006 09:33:31

Program teče, vendar je minimiran. Ko uporabnik pozene isti program se enkrat, naj se ta ne zazene drugic, ampak poveca prej minimiran ?

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

Minimiran program naj se pokaze

Odgovor Napisal/-a odisej » 14.02.2006 09:41:29

Tole kodo mam v enem svojem unitu. Ne vem če je še aktualna.

Koda: Izberi vse

{
  Preveri, če ta aplikacija že teče.
  Če že teče vrne true sicer vrne false.
}
function PreviousInstanceRuning(MutexName: String): Boolean;
var
  r: Integer;
begin
  //poiskusi kreirate mutex
  r := CreateMutex(nil, false, PChar(MutexName));

  if r = 0 then raise Exception.Create('CreateMutex failed.');

  if GetLastError = ERROR_ALREADY_EXISTS then
    Result := true
  else
    Result := false;
end;

{
  Prejšnjo instanco te aplikacije pripelje na vrh.
}
function BringPreviousInstanceToFront(AppTitle: String): Boolean;
var
  WindowHandle: HWND;
begin
  //zapomni si handle te aplikacije, ki je ravno hotela štartati
  //WindowHandle := FindWindow(nil, strAppName);
  //ali
  WindowHandle := Application.Handle;

  //ime te aplikacije sedaj spremeni,
  //da FindWindow ne bo našel same sebe, ampak prvo instanco
  SetWindowText(WindowHandle, PChar(AppTitle + ' - second instance (closing...)'));

  //najdi sedaj okno prvega programa
  //WindowHandle := FindWindow(nil, strAppName);
  //ali
  WindowHandle := FindWindow(nil, PChar(AppTitle));

  if WindowHandle <> 0 then
  begin
    Result := true;
    //Application.MessageBox('Ta program že teče!', 'Pozor!', MB_OK + MB_ICONWARNING + MB_SYSTEMMODAL);

    if IsIconic(WindowHandle) then
      ShowWindow(WindowHandle, SW_RESTORE)
    else
      SetForegroundWindow(WindowHandle);
  end
  else
    Result := false;
end;

Miha-R
Prispevkov: 2155
Pridružen: 14.05.2001 21:29:53

Minimiran program naj se pokaze

Odgovor Napisal/-a Miha-R » 14.02.2006 09:48:19

Poglej si kodo v tej temi, ker bolje prepozna tudi več uporabnikov na mašini.
Vedno sem želel napisati prav tak odgovor.

oton
Prispevkov: 84
Pridružen: 14.04.2005 12:12:11

Minimiran program naj se pokaze

Odgovor Napisal/-a oton » 14.02.2006 11:31:09

Hvala, dela.

Odgovori