problem z wygaszaczem

0

Witam.
Napisałem prosty programik, na 4programers znalazłem jak przerobić kod programu żeby powstał wygaszacz, no i powstał taki kod:

program zegar;

{$D SCRNSAVE : Zegar} 

uses
  Forms, SysUtils,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
var
 Params: string;
begin
  if HPrevInst <> 0 then
    Exit;
  Params := UpperCase(ParamStr(1));
  if (Params = '/S') or (Params = '-S') then
  begin
   Application.Initialize;
   Application.CreateForm(TForm1, Form1);
  end;
  Application.Run;
end.

ale jest problem, gdy w systemie ustawie swój wygaszacz, to kiedy minie ustawiony czas bezczynności włącza sie dokładnie co 10 sekund (ten wygaszacz to zegar więc moge to dokładnie stwierdzić), i tak po 10 minutach mam włączone 60 wygaszaczy.
Dodam jeszcze że przy kompilacji pojawia się ostrzeżenie:

[Warning] zegar.dpr(13): Symbol 'HPrevInst' is deprecated

0

Ostrzeżenie to dotyczy tego, iż zmienna HPrevInst jest oznaczona jako przestarzała (deprecated). W Win32 została zachowana tylko dla celów kompatybilności z aplikacjami Win16, jej wartością jest zawsze 0. W celu wykrycia obecności innej instancji aplikacji musisz uciec się do innych metod, choćby do utworzenia muteksu (gdzieś powinno być coś na ten temat na forum albo w artykułach, poszukaj).

0

poszukałem troche o tym mutex-ie i zmodyfikowałem program, teraz wygląda tak:

program zegar;

{$D SCRNSAVE : Zegar}
uses
  Forms, SysUtils,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
var
 params : string;
 Mutex:THandle;
begin
  Mutex := CreateMutex(nil, True, 'wygaszacz');
  if (Mutex &lt&gt 0) and (GetLastError = 0) then
  begin
   Params := UpperCase(ParamStr(1));
   if (Params = '/S') or (Params = '-S') then
   begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
   end;
   Application.Run;
   if Mutex &lt&gt 0 then CloseHandle(Mutex);
  end;
end.

ale znowu pojawiają się błędy:
[Error] zegar.dpr(13): Undeclared identifier: 'CreateMutex'
[Error] zegar.dpr(14): Illegal character in input file: '&' ($26)
[Error] zegar.dpr(23): Illegal character in input file: '&' ($26)
[Error] zegar.dpr(29): Statement expected but end of file found

chyba ne bardzo zrozumiałem o co z tym mutexem chodzi

0
  1. uses Windows
  2. Zamień &lt&gt na <>
0

Tak czułem że w Uses trzeba coś dodać ale nie wiedziałem co, wielkie dzięki wygaszacz działa bez zarzutu :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1