AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sperrprogramm

Ein Thema von Murdock · begonnen am 2. Jan 2006 · letzter Beitrag vom 2. Jan 2006
Antwort Antwort
Murdock

Registriert seit: 4. Okt 2005
Ort: Osnabrück
9 Beiträge
 
#1

Sperrprogramm

  Alt 2. Jan 2006, 12:30
Hallo und ein frohes neues Jahr.

Kaum hat das neue Jahr begonnen und schon eine Frage

Ich habe folgenden Gedanke für ein benötigtes Programm. Und zwar:

Da mein Sohn häufig am PC und im Internet am zocken ist und hierbei die Zeit vergisst, mochte ich ein Programm schreiben welches im Hintergrund läuft - sich nicht so einfach entdecken lässt - und dabei die Systemzeit mit einer von mir eingegebenen Zeit vergleicht - sollte die Zeit erreicht sein muss das Programm den Computer selbst runter fahren oder ein hochfahren kurz naach der Anmeldung bei XP verweigern und auch wieder runter fahren.

Da mir zur Zeit keine Ideen kommen dieses Projekt zu verwirklichen frage ich mal hier in die Runde ob der ein oder andere Brauchbare Ansätze hat.

Danke schon mal im voraus.

Gruß Murdock
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#2

Re: Sperrprogramm

  Alt 2. Jan 2006, 12:36
Herunterfahren

Die Funktion zum Herunterfahren:
Delphi-Quellcode:
function ExWindows(const AFlag: Word): Boolean;
var
  vi : TOSVersionInfo;
  hToken : THandle;
  tp : TTokenPrivileges;
  h : DWord;
begin
  result:= false;

  vi.dwOSVersionInfoSize:=SizeOf(vi);

  if GetVersionEx(vi) then
  begin
    if vi.dwPlatformId = VER_PLATFORM_WIN32_NT then
    begin
      if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES,hToken) then
      begin
        LookupPrivilegeValue(nil,'SeShutdownPrivilege',tp.Privileges[0].Luid);
        tp.PrivilegeCount := 1;
        tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
        h := 0;
        AdjustTokenPrivileges(hToken,False,tp,0,PTokenPrivileges(nil)^, h);
        CloseHandle(hToken);
        result := ExitWindowsEx(Aflag, 0);
      end;
    end
    else
    begin
      Result := ExitWindowsEx(Aflag, 0);
    end;
  end;
end;

// Aufruf

ExWindows(EWX_Poweroff OR EWX_FORCE);
EWX_Force ist wichtig, damit laufende Programme beendet werden. Es sollte aber noch eine Minute davor darauf hingewiesen werden.

Verweigerung der Anmeldung
Außerdem sollte das Programm ja beim Windows-Start geladen werden, also kann schon bei onFormCreate die Zeit überprüft werden, und wenn sie überschritten wurde, der Shutdown eingeleitet werden.

Unsichtbar
Code, damit man das Programm nicht sieht:
Application.ShowMainForm := false; //in FormCreate Dann würde ich aber den Einsatz eines tray-Icons empfehlen(CoolTrayIcon, JvTrayIcon von den Jedis oder Hier im Forum suchenTray-Icon)


Zeit
Die Zeit würde ich als TTime nehmen, sofern es sich um eine feste Uhrzeit handelt.
Delphi-Quellcode:
procedure TForm.Timer1Timer(Sender: TObject); // Interval = 60000 (=1 Minute)
begin
  if (Time = StrToTime('20:00:00')) then
  begin
    ...
  end;
end;
Oder soll es die Zeit sein, seit der der Rechner läuft?
Dann würde ich es so machen:
Delphi-Quellcode:
var Uptime : Cardinal;

procedure TForm.Timer1Timer(Sender: TObject); // Interval = 60000 (=1 Minute)
begin
  case Uptime of
    59: Showmessage('Noch eine Minute!');
    60: ExWindows(...);
    else: Inc(Uptime);
  end;
end;
Um ein erneutes Hochfahren in diesem Fall zu verhindern, könntest du den Tag des letzten Ausführens in einer INI-Datei speichern.Auf DSDT.Info gibt es ein gutes INI-Tutorial.
Delphi-Quellcode:
// FormCreate
if (StrToDate(INI.ReadString('Datum', 'LetzterStart', '01.01.2000') = Now) then
begin
  Showmessage('Heute wurde schon einmal gestartet!');
  ExWindows(...);
end
else
  INI.WriteString(DateToStr(Now));
Das dürfte fürs Erste reichen.

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Sperrprogramm

  Alt 2. Jan 2006, 12:42
Zitat von Murdock:
ein hochfahren kurz naach der Anmeldung bei XP verweigern und auch wieder runter fahren.
Warum willst Du so lange warten? Wenn Deine Anwendung als Service läuft, kannst Du den Rechner schon wieder runter fahren bevor Dein Sohn überhaupt die Möglichkeit hat sich am System anzumelden ... Der Nachteil wäre natürlich, dass auch du selbst nicht mehr an den Rechner heran kommst
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#4

Re: Sperrprogramm

  Alt 2. Jan 2006, 12:52
Ich denke mal, er hat einen eigenen Benutzer. Da kann das Programm ja nur unter dem gestartet werden.

Gruß,
ManuMF
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Sperrprogramm

  Alt 2. Jan 2006, 14:50
Du kannst auch den Benutzer sperren, nachdem das Limit überschritten wurde.

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
HERMES

Registriert seit: 29. Nov 2004
142 Beiträge
 
#6

Re: Sperrprogramm

  Alt 2. Jan 2006, 15:10
Man kann für benutzer ( allerdings nur unter Pro ) eine Zeittabelle anlegen, in der eingegstellt wird zu welchen Zeiten sich benutzer anmelden können. So kann man zb verhindern, dass er sich nach 18 Uhr noch anmelden kann.
Was passiert wenn sich ein benutzer vorher anmeldet und dann diese zeit erreicht wird weis ich nicht. Also für diesen fall wie bereits erwähnt einen Dienst installieren, den kann der kleine dann auch ohne admin rechte nicht killen.

mfg
  Mit Zitat antworten Zitat
cruso
(Gast)

n/a Beiträge
 
#7

Re: Sperrprogramm

  Alt 2. Jan 2006, 15:19
Es sollte auf jeden Fall ein Passwort für das Konto "Administrator" das XP automatisch erstellt gesetzt werden, denn sonst könnte man im abgesicherten Modus alle Passwörter ändern! Bei XP Prof. wird glaub ich schon bei der Installation ein Passwort eingerichtet bei Home muss man das noch umständlich selber machen.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#8

Re: Sperrprogramm

  Alt 2. Jan 2006, 15:22
Zitat von HERMES:
Man kann für benutzer ( allerdings nur unter Pro ) eine Zeittabelle anlegen, in der eingegstellt wird zu welchen Zeiten sich benutzer anmelden können. So kann man zb verhindern, dass er sich nach 18 Uhr noch anmelden kann.
Was passiert wenn sich ein benutzer vorher anmeldet und dann diese zeit erreicht wird weis ich nicht. Also für diesen fall wie bereits erwähnt einen Dienst installieren, den kann der kleine dann auch ohne admin rechte nicht killen.

mfg
Ich bin mir nicht ganz sicher, ab war es nicht möglich, das auch über einen Trick in Home zu machen? Irgendwas war da...
  Mit Zitat antworten Zitat
cruso
(Gast)

n/a Beiträge
 
#9

Re: Sperrprogramm

  Alt 2. Jan 2006, 15:26
Zitat von Daniel G:
Ich bin mir nicht ganz sicher, ab war es nicht möglich, das auch über einen Trick in Home zu machen? Irgendwas war da...
Stimmt! In der c't stand ja mal drin, wie man aus der Home Edition die Prof. machen kann. Mit dem 2Byte-Patch!


//Weiß jemand wo man den vllt noch findet? Hatte zwar diese Ausgabe finde sie aber nicht mehr!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz