AGB  ·  Datenschutz  ·  Impressum  







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

Shutdown Programm

Ein Thema von paperboy · begonnen am 10. Jun 2009 · letzter Beitrag vom 10. Jun 2009
Antwort Antwort
paperboy

Registriert seit: 10. Jun 2009
71 Beiträge
 
RAD-Studio 2009 Arc
 
#1

Shutdown Programm

  Alt 10. Jun 2009, 08:11
hallo zusammen,

ich bin ein delphi programmierer in den kinderschuhen und hab nach ein paar knobelstunden nun mit mein erstes programm fertig.
zumindest dachte ich das. denn in der IDE läuft das programm einwandfrei genau so wie ich es mir vorgestellt habe.
doch leider ist nach dem compilieren der exe der wurm drin und ich hab wirklich keine ahnung woran das liegen kann.
mein programm startet eine prozedur als thread. diese soll den pc herunterfahren wenn eine vorher definierte zeit mit der aktuellen
systemzeit übereinstimmt.
hier mal der code der ausserhalb der ide probleme bereitet:

Delphi-Quellcode:
procedure ThreadShutDown.Execute;
var
SDPfad : String;
SystemPfad : Array[0..MAX_PATH] of Char;
begin
  while istZeit = False do
  begin
    if terminated then exit;
    if SDZeit = Time then istZeit := True;
  end;
GetSystemDirectory(SystemPfad, sizeof(SystemPfad));
SDPfad := SystemPfad + '\Shutdown.exe';
ShellExecute(Application.Handle,'open',PChar(SDPfad),PChar('-s -t 1'),PChar(ExtractFilePath(SDPfad)),SC_DEFAULT);
end;
wie gesagt das klappt hervorragend solange ich das programm von delphi aus starte. als separate exe streikt es.
ich habe nach der while schleife mal eine messagebox eingbaut und siehe da sie wird nicht angezeigt.. die schleife wird jedoch ausgeführt
(ebenfalls mit MessageBox getestet) nur scheint ausserhalb der IDE die variable "istZeit" nie auf true gesetzt zu werden?!

ich hoffe jemand weis hier rat denn es wurmt mich doch ganz schön das mein erster versuch daran scheiter das das programm ausserhalb von delphi
nicht rennen will
ich benutze übrigens Vista 32-bit und delphi 2009.

lg paperboy
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Shutdown Programm

  Alt 10. Jun 2009, 08:18
Ein exakter Vergleich kann ja auch kaum klappen, weil du mehr als auf die Nanosekunde genau zu dem Zeitpunkt testen müsstest, den du suchst... das kann nicht klappen.
Schau doch einfach, ob die Zeit bereits vorbei ist. Zudem solltest du ein Sleep einbauen, das jeweils einige Sekunden wartet, damit weniger Leistung verbraucht wird.

Dann zu deiner Schleife, wie wäre es eher so...
Delphi-Quellcode:
  while (SDZeit > Time) and not Terminated do
  Sleep(5000);
if Terminated then
  Exit;
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#3

Re: Shutdown Programm

  Alt 10. Jun 2009, 08:29
Ist allerdings verwunderlich, daß es in der IDE offenbar funktioniert...
Uwe Raabe
  Mit Zitat antworten Zitat
paperboy

Registriert seit: 10. Jun 2009
71 Beiträge
 
RAD-Studio 2009 Arc
 
#4

Re: Shutdown Programm

  Alt 10. Jun 2009, 08:43
vielen dank jaenicke...
das ganze funktioniert jetzt. und ist dazu noch sehr viel eleganter als mein boolean-spiel
hab mich irgendwie an der tatsache aufgehangen das es ja in der ide klappte.
aber wie uwe raabe schon sagte: verwunderlich das es in der ide funktioniert.
jetzt wo mir der fehler richitg bewusst geworden ist frage ich mich schon wieso er nur
ausserhalb delphis auftrat!

vllt weis ja jemand mehr.. wenn nicht auch nicht so wild.. der fehler ist gefunden
und meine laune damit wieder gehoben
schön das ich gleich ein forum gefunden hab in dem hilfsbereite leute aktiv sind...
das motiviert doch ungemein wenn man weis das man sich irgendwo kompetente hilfe holen kann

in diesem sinne nochmal vielen dank


lg paperboy
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#5

Re: Shutdown Programm

  Alt 10. Jun 2009, 09:16
Wenn Du es noch eleganter lösen möchtest ohne das Shellexecute, dann solltest Du Dir die beiden Links anschauen :

Link 1
Link 2
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
paperboy

Registriert seit: 10. Jun 2009
71 Beiträge
 
RAD-Studio 2009 Arc
 
#6

Re: Shutdown Programm

  Alt 10. Jun 2009, 09:39
hallo RWarnecke..

habs mir gleich angesehen... aber könntest du mir vllt erklären warum das die bessere löung ist?!
bin noch sehr unerfahren was programmieren angeht und hab keine ahnung welche nachteile sich aus
meiner variante ergeben könnten bwz welche vorteile die andere hat

lg paperboy
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Shutdown Programm

  Alt 10. Jun 2009, 09:43
Naja, damit brauchst du kein externes Tool. Das muss ja nicht vorhanden sein und muss auch nicht in allen Windowsversionen die selben Parameter erwarten, zudem ruft es selbst ja nur die Funktionen auf, die du auch gleich selbst verwenden kannst.

Außerdem kannst du es mit den direkten Funktionen einfacher steuern, weil du direkt die gewünschten Werte an die Funktionen übergeben kannst.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Shutdown Programm

  Alt 10. Jun 2009, 09:51
Ausserdem braucht man für die Shutdown.exe Administratorrechte.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
paperboy

Registriert seit: 10. Jun 2009
71 Beiträge
 
RAD-Studio 2009 Arc
 
#9

Re: Shutdown Programm

  Alt 10. Jun 2009, 11:47
danke für die hinweise...

das ist gut zu wissen mit den admin rechten da ich das prog auch an einer maschine nutzen will an der ich keine admin-rechte hab.
und dann muss ich natürlich auch auf kompatibilität achten (wobei der zweite rechner eine xp maschine ist unter der ShutDown.exe wohl keine
probs machen dürfte)
hab nun aber nichtsdestotrotz die InitiateSystemShutdown Funktion eingebaut denke sogar das mit den Privilegien verstanden zu haben obwohl das alles
neuland ist.

lg paperboy
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Shutdown Programm

  Alt 10. Jun 2009, 11:49
Stell dir mal vor, das Program würde keine admin-Privilegien benötigen und jeder könnte jeden beliebigen Rechner remote Herunterfahren.
Markus Kinzler
  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 00:14 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