Budzenie kompa z bezczynności, jak?

0

Witam
Używam takiej funkcji do odliczania czasu bezczynności komputera:

function LastInput: String;
var
  LInput: TLastInputInfo;
  T:array[1..3] of Byte;
  S:array[1..3] of String;
  I:Integer;
begin
  LInput.cbSize := SizeOf(TLastInputInfo);
  GetLastInputInfo(LInput);
  I := (GetTickCount - LInput.dwTime) div 1000;
T[1]:=I div 3600; //Godziny
I:=I-(T[1]*3600);
T[2]:=I div 60; //Minuty
I:=I-(T[2]*60);
T[3]:=I;
S[1]:=inttostr(T[1]);S[2]:=inttostr(T[2]);S[3]:=inttostr(T[3]);
If T[1]<10 then S[1]:='0'+S[1];
If T[2]<10 then S[2]:='0'+S[2];
If T[3]<10 then S[3]:='0'+S[3];
Result:=S[1]+':'+S[2]+':'+S[3];
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Edit1.Text:=LastInput;
end;

Działa dobrze, jednak teraz zastanawiam się jak obudzić komputer z czasu bezczynności.

Oczywiście jak poruszę myszką czy klawiaturą to czas ten resetuje się do 0000, ale jak zrobić to bez mojej ingerencji w peryferia?

Ogólnie problem polega na tym, że posiadam kartę TV Leadtek, a tam jest taka debilna opcja w której po kilkunastu minutach oglądania tv i nie ruszania peryferii (leżąc na łóżku) wyłącza się monitor lub komputer. Od razu mówię że w Windowsie w opcjach zasilania mam wszystko na "Nigdy" i zawsze muszę kopać w biurko, aby się myszka poruszyła i zresetowała bezczynność. :)

Jak za pomocą powyższego kodu zrobić budzenie kompa co jakiś czas bez kopania w biurko? :)</delphi>

0

Aha, tej opcji w karcie nie można wyłączyć.
Budzić kompa z bezczynnosci chciałbym wykonywać np. co 10 minut.

Próbowałem napisac jakiegoś IF-a, np. przesuwając kursor myszki o 1 point X i Y. Ok przesuwa, ale czas bezczynnosci się nie resetuje, a komp śpi dalej sobie.

0

A symulowanie ruchów myszki przez Mouse_Event co jakiś czas lub w momencie kiedy na
przykład czas bezczynności dojdzie do jakiejś tam wartości - po ktorej wyłącza się Tobie w
ogóle monitor - nie pomoże? Bo ja bym tak spróbował i obszedł to wygaszanie, żeby to po
zasymulowaniu ruchu myszką przez Mouse_Event komputer myślał, że to Ty nią ruszyłeś.

0

Spróbuję znaleźć jakiś przykład z Mouse_Event, myślę że mi to pomoże. Dzięki.

0

a shellexecute nie wybudzi ?

0

Wybudzi, ale zrobiłem już coś takiego i zaraz to będę testował.

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Edit1.Text:=LastInput;
    if Edit1.Text = '00:10:00' then
     begin
     mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
  end;
end;
0

@Oglądacz TV: lepiej zrób coś takiego jak poniżej, bo symulując kliknięcie
możesz coś przestawić albo wywołać jakąs opcję, a poruszenie kursora też
powinno skutecznie przerwać zliczanie czasu bezczynności - przez system.

var
  C : TPoint;
begin
  C.X := 0;
  C.Y := 0;
  SetCursorPos(C.X, C.Y);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE, C.X, C.Y, 0, 0);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE, C.X, C.Y, 0, 0);
end;
0
Oglądacz TV napisał(a)

Ogólnie problem polega na tym, że posiadam kartę TV Leadtek, a tam jest taka debilna opcja w której po kilkunastu minutach oglądania tv i nie ruszania peryferii (leżąc na łóżku) wyłącza się monitor lub komputer.

nie uwierze:D po co to!?:D a update sterownikow jakis?

0

To nie od sterowników (mam najnowsze z Winfasta www, aplikację też) tylko popieprzona aplikacja PVR2, która ma Funkcję opóźnionego wyłączania, a do wyboru jest:

  • wyłącz monitor
  • wyloguj
  • wstrzymaj
  • wyłącz pc
  • hibernuj

Nie dorobili tylko "Aktywuj/dezaktywuj tą funkcję" heh i po to to. ;]

A uwierz mi, ze już mnie to wk** gdy oglądam film czy coś tam, a tu ci po 20 minutach bezczynności monitor się wyłącza lub komp. [rotfl]

0

ja bym sprobowal jednej rzeczy... watpie zeby zadzialalo ale czasem mozna sie zdziwic jak dziwnie ludzie pisza programy:
oprogramowanie gdzies zapisuje wybrane opcje - zapewne w rejestrze, no chyba zeby ini. sciagnij sobie regmon (registry monitor) i podejrzyj co i gdzie jest zapisywane w rejestrze. moze beda tam jakies ciekawe klucze.
mozna tez sprowbowac czegos takiego: zalozmy ze wybrana opcje (wylacz monitor, wyloguj itd..) program tzyma w rejestrze jako liczbe np (0,1,2...). wstaw tam jakas dzika wartosc i zobacz moze program zglupieje i nic nie zrobi ;]

0

Spoko, na razie działa to co napisałem. :)
Jak nie to w rejestrze znajdę wpisy od tego softu dziwnego i pomajstruję z wartościami.
Szukałem też w folderze Winfasta czegoś ciekawego, ale znalazłem tylko od pilota.

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