AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Wake On Lan (WOL) für Delphi 2007 / Indy
Thema durchsuchen
Ansicht
Themen-Optionen

Wake On Lan (WOL) für Delphi 2007 / Indy

Ein Thema von berens · begonnen am 2. Jul 2007 · letzter Beitrag vom 7. Sep 2016
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
441 Beiträge
 
Delphi 10.4 Sydney
 
#1

Re: Wake On Lan (WOL) für Delphi 2007 / Indy

  Alt 3. Jul 2007, 10:43
Habe das Problem lösen können, unter anderem mit Hilfe von http://www.swissdelphicenter.ch/torr...de.php?id=1556 .

Hier die komplette Unit, vielleicht mag das ja mal jemand als Aktualisierung in die Library hinzufügen:

Delphi-Quellcode:
unit uWakeOnLan;

interface

uses
  WinTypes, Messages, SysUtils, Classes, IdBaseComponent,
  IdComponent, IdUDPBase, IdUDPClient, IdGlobal;

procedure WakeUPComputer(aMacAddress: string);

implementation

procedure WakeUPComputer(aMacAddress: string);
var
  Data: string;
  temp: string;
  k, n: integer;
  idUDPClient: TIdUDPClient;
begin
  try

    SetLength(Data, 255);
    for k := 0 to 5 do
    begin
      Data := Data + Chr(StrToInt('$FF')); // 6x add a FF / 6x ein FF hinzufügen
    end;
    temp := StringReplace(aMacAddress, '-', '', [rfReplaceAll]);
    for k := 0 to 15 do
    begin
      temp := StringReplace(aMacAddress, '-', '', [rfReplaceAll]);
      for n := 0 to 5 do
      begin
        // 16x add Target-Mac-Adress / 16x die Ziel-Macadresse hinzufügen
        Data := Data + Chr(StrToInt('$' + temp[1] + temp[2]));
        Delete(temp, 1, 2);
      end;
    end;

    try
      idUDPClient := TIdUDPClient.Create(NIl);
      idUDPClient.BroadcastEnabled := true;
      idUDPClient.Host := '255.255.255.255';
      idUDPClient.Port := 80;
      idUDPClient.Send(Data);
    finally
      FreeAndNil(idUDPClient);
    end;
  except
  end;
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.556 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wake On Lan (WOL) für Delphi 2007 / Indy

  Alt 5. Mai 2014, 13:57
So richtig gut wurde aber nicht von Torry abgeschrieben.
Am Anfang die 255 Zeichen waren da noch nicht drin.

Das Create gehört gefälligst vor das Try und das erste Temp := ist auch nutzlos.
Da hat wohl jemand nicht auf das gehört, das der Compiler einem zu sagen hat.


----------------

Ursache: http://www.delphipraxis.net/180255-w...n-problem.html

Code für Indy 10 und Unicode-Delphis:
Delphi-Quellcode:
procedure WakeOnLAN(MacAddr: string; Port: TIdPort=80; Host: string='255.255.255.255');
var
  MacAddr: string;
  Data: TIdBytes;
  Temp: array[0..5] of Byte;
  i: Integer;
begin
  MacAddr := StringReplace(MacAddr, '-', '', [rfReplaceAll]);
  Assert(Length(MacAddr) = 6 * 2);
  SetLength(Data, (1 + 16) * 6);

  FillChar(Temp, 6, $FF);
  Move(Temp, Data[0], 6); // 6x FF (1x FFFFFFFFFFFF)

  HexToBin(PChar(MacAddr), Temp, 6);
  for i := 1 to 16 do
    Move(Temp, Data[i * 6], 6); // 16x Target-MAC-Adress

  IdUDPClient1.SendBuffer(MacAddr, Port, Data);
end;
(ich hoffe mal der funktioniert auch, da blind dahingetippt und ungetestet)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Mai 2014 um 14:01 Uhr)
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Wake On Lan (WOL) für Delphi 2007 / Indy

  Alt 6. Sep 2016, 21:05
Hallo,

ich grabe mal den Thread hier aus, da das WakeOnLan bei mir nicht mehr funktioniert.
Im letztem Codebeispiel habe ich den kleinen Vertipper
IdUDPClient1.SendBuffer(MacAddrHost, Port, Data);
korrigiert, leider startet der Rechner nicht.

Gegeben:
Delphi 10.1 Enterprise
Win10 Pro 64 bit
Schnellstart deaktiviert
BIOS und Energieeinstellungen überprüft.

Über die FritzBox kann ich den Rechner per WOL starten, leider nicht mit Delphi.
Kennt jemand das Problem, liegt es ggf. am 64 Bit System?
Philip
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#4

AW: Wake On Lan (WOL) für Delphi 2007 / Indy

  Alt 7. Sep 2016, 08:22
Im letztem Codebeispiel habe ich den kleinen Vertipper
IdUDPClient1.SendBuffer(MacAddrHost, Port, Data);
korrigiert, leider startet der Rechner nicht.
Und du siehst da keinen Zusammenhang?

WOL funktioniert nur mit MAC Adressen. Aber Wie Himitsu schon sagte, er hat es nicht getestet. Und ich glaub es fehlt auch was. Du müsstest den oberen Code um seine Ergänzungen erweitern/ändern. dann sollte das klappen.

Ich verwende seit Jahren diese Unit aus meiner persönlichen Codesammlung erfolgreich. Ich glaub die stammt auch aus der DP. Möglich, dass ich dran herum optimiert hab. Das sähe mir ähnlich. Falls der Autor sie wieder erkennt: Dickes, dickes Dankeschön!

Gruß,

Toni
Angehängte Dateien
Dateityp: pas WOL.pas (3,6 KB, 171x aufgerufen)
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?

Geändert von Tonic1024 ( 7. Sep 2016 um 08:33 Uhr) Grund: gruseliges deutsch beseitigt
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Wake On Lan (WOL) für Delphi 2007 / Indy

  Alt 7. Sep 2016, 14:22
Hast Du auch eine Crossplattform-Lösung?
Philip
  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 14:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz