Autor Beitrag
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Mi 13.01.10 22:33 
Habe z.Zt. Folgendes vor:
Damit mein Vater über Skype mit seinen Eltern telefonieren kann, richte ich auf deren PC Wake On LAN ein.
Jetzt kann ich mit einem einfach Delphi-Programm den anderen PC hochfahren. Skype wird gestartet, es klingelt, alles super.

Jetzt sind die aber mal nicht da, der PC läuft. Dumm. Also muss ich ihn wieder runterfahren.
Da ich für WOL schon einen Port durchleiten muss, wollte ich jetzt einfach ein Mini-Programm schreiben, dass im Hintergrund läuft und auf einen Schlüssel in einem Paket an dem Port lauscht und dann den PC runterfährt.

Eigendlich sollte dafür doch ein Konsolenprogramm und ein blockierendes UDP-Server-Socket reichen.
Also mit RecvFrom am Socket hängen und alle Pakete abfangen, prüfen, handeln.

Frage ist jetzt: Wie kriege ich es hin, dass kein Konsolenfenster mit der Meldung "Programm reagiert nicht mehr" offen bleibt? Im Hintergrund wäre es schön (man braucht nix sehen), aber wie geht das?
Dann wäre noch: Gibt es Timeouts o.ä. was mir den Spaß vermießen könnte? Und was ist beim normalen Herunterfahren des PCs? Bleibt der dann hängen, weil das Programm blockiert?
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mi 13.01.10 22:49 
Vorsichtig geantwortet:

Multithreadening?
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Mi 13.01.10 23:17 
eigendlich nicht nötig. Ich habe ja kein Problem damit, dass er blockiert. Er soll ja nix andres machen, außer horchen ^^
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mi 13.01.10 23:38 
Und wozu ein Blocking Socket nehmen? Würde das eher über ein Non-Blocking-Socket regeln ...

Ansonsten Über ein Sockeet-Timeout handhaben und immer beim Timeout App.ProcessMsgs aufrufen ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Astat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75
Erhaltene Danke: 1

Windows 2000
D6, D7, D2007, Lazarus
BeitragVerfasst: Do 14.01.10 10:12 
user profile iconFlamefire hat folgendes geschrieben:
Frage ist jetzt: Wie kriege ich es hin, dass kein Konsolenfenster mit der Meldung "Programm reagiert nicht mehr" offen bleibt?


Hi, lösch einfach in der *.dp deiner Console folgenden Eintrag.

ausblenden Delphi-Quelltext
1:
{$APPTYPE CONSOLE}					


lg. Astat

Moderiert von user profile iconNarses: Zitat repariert.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Do 14.01.10 11:14 
Wie liest du Daten aus dem Socket? Normalerweise kann man da noch nen Timeout angeben. Diesen dann auf 100ms oder so setzen, und das ganze regelmäßig ausführen.

user profile iconAstat hat folgendes geschrieben Zum zitierten Posting springen:
Hi, lösch einfach in der *.dp deiner Console folgenden Eintrag.
ausblenden Delphi-Quelltext
1:
{$APPTYPE CONSOLE}					

Naja.. dann bleibt halt ein Windows Fenster offen, dass nicht mehr reagiert.. :D
Ging ihm nicht um die Konsole, sondern wohl darum, dass die Software nicht mehr reagiert.

_________________
PROGRAMMER: A device for converting coffee into software.
Xearox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Do 14.01.10 15:54 
also, ich kenne mich mit Delphi so gut wie garnicht aus, aber nur so als Idee...
Wie wäre es denn mit einem, hmm...sagen wir mal, idle Programm...

Das Programm, wie auch der Bildschirm schoner, prüft, ob irgendetwas am pc gemacht wird.
Ob die Maus zu bewegen oder eine Taste zu drücken...
Falls nichts dergleichen Passiert, wird der PC einfach herunter gefahren, so wie das auch in der Energie verwaltung steht,...
bspw. nach 20min wird Bildschirm ausgemacht, nach 60min fährt der PC runter.

denn ich sag mal so, wenn man skyped, dann drückt man sicherlich irgendwann mal eine taste, oder berührt die maus...
oder man prüft, ob sich da sound technisch was tut...

also irgend sowas...
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Do 14.01.10 16:33 
naja, ich denke das der PC sozusagen nur als Ausgang ins Internet dient und der PC von dem sein Vater skyped per Netzwerk mit dem Ausgang verbunden ist. Also muss man weder Tasten drücken noch mäuse bewegen.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.