Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi PC über Netzwerk starten (https://www.delphipraxis.net/19725-pc-ueber-netzwerk-starten.html)

celinaw 7. Apr 2004 20:46

Re: PC über Netzwerk starten
 
Hi Phoenix

Ja, ich denke das ist es was ich dafür brauche. Aber jetzt kommt mein Problem! Wie wende ich den Code an :gruebel:
Ich bin leider noch nicht so Fit in Delphi :oops:

Kannst du mir da ein paar Tips oder ein Beispiel geben :gruebel: Wäre echt super Lieb von dir!

Gruß CelinaW

Phoenix 7. Apr 2004 20:52

Re: PC über Netzwerk starten
 
Du suchst erstmal die Indy-Komponenten und installierst die.
Danach packst Du den Code aus dem Post in eine eigene Datei und nennst diese z.B. WakeOnLan.pas.

In deinem Programm (z.B. normale Form) schreibst Du oben in die Uses-Klausel dann WakeOnLan mit rein, und im Code schreibst Du dann irgendwo (z.B. in einer ButtonClick - Methode)
Code:
WakeUPComputer('AABBCCDDEEFF');
Wobei AABBCCDDEEFF dann halt für die MAC-Adresse des aufzuweckenden Rechners steht.

Das wars dann schon.

NicoDE 7. Apr 2004 20:52

Re: PC über Netzwerk starten
 
WakeUPComputer('00023F7F710E'); // 00-02-3F-7F-71-0E

Die physikalische Adresse (MAC) wird zum Beispiel angezeigt, wenn Du unter Windows XP in einer Konsole 'ipconfig -all' eingibst.

celinaw 7. Apr 2004 21:02

Re: PC über Netzwerk starten
 
WoW :thuimb: :thuimb: :thuimb:

Ihr seit echt Super. Ich versuche mal ob ich das hin bekomme. Ansonstan frage ich halt nochmal nach!

Vielen Vielen Vielen Dank!

Wenn das klappt habt ihr mir echt sehr geholfen!


Gruß CelinaW

celinaw 7. Apr 2004 21:32

Re: PC über Netzwerk starten
 
Mh...... Irgendwie klappt das bei mir nicht! Indys sind Installiert. Ich bekomme die Fehlermeldung "Interface" erwartet aber "Uses" gefunden.
Kann mir da mal jemand ein Beispiel coden :gruebel: :oops: :oops: :oops:


Gruß Celina

celinaw 7. Apr 2004 22:00

Re: PC über Netzwerk starten
 
Hi....

Kann sich mal jemand diese Unit ansehen?
Ich bekomme immer unzählige Fehlermeldungen. :wall: :wall:

Kann da jemand vielleicht mal ein Beispiel von erstellen. :gruebel: :oops: :oops:

Vielen Dank

kiar 7. Apr 2004 22:03

Re: PC über Netzwerk starten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
unit wakeonlan

interface

uses
das muss noch hin

ausser den uses

raik

celinaw 7. Apr 2004 23:37

Re: PC über Netzwerk starten
 
Hi@all


Habe das Problem leider immer noch nicht in griff bekommen. :wall:

Kann mir aus dem Code mal jemand ein laufendes Beispiel zaubern?


Gruß Celina

celinaw 7. Apr 2004 23:55

Re: PC über Netzwerk starten
 
Also hier mal der Code:

Unit1:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses WakeOnLan;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   wakeonlan('000C76719CEA');
end;

end.

WakeOnLan:
Delphi-Quellcode:
unit WakeOnLan;

interface

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


Function HexToInt(S:String): LongInt;
const
  DecDigits: Set Of '0'..'9' = ['0'..'9'];
  HexVals: Array [0..$F] Of Integer = (0, 1, 2, 3, 4, 5, 6, 7,
     8, 9, $A, $B, $C, $D, $E, $F);
  UpCaseHexLetters: Set Of 'A'..'F' = ['A'..'F'];
  LowCaseHexLetters: Set Of 'a'..'f' = ['a'..'f'];
var
  v: LongInt;
  i: integer;
  LookUpIndex: integer;
begin
  if length(S) <= 8 then begin
    v := 0;
    for i := 1 to length(S) do begin
       {$R-} 
         v := v Shl 4;
       {$R+} 
       if S[i] in DecDigits then begin
          LookUpIndex := Ord(S[i]) - Ord('0');
       end
       else begin
          if S[i] in UpCaseHexLetters then begin
             LookUpIndex := Ord(S[i]) - Ord('A') + $A;
          end
          else begin
             if S[i] in LowCaseHexLetters then begin
                LookUpIndex := Ord(S[i]) - Ord('a') + $A;
             end
             else begin
                LookUpIndex := 0;
             end;
          end;
       end;
       v := v Or HexVals[LookUpIndex];
    end;
    result := v;
  end
  else begin
    result := 0;
  end;
end;

procedure WakeUPComputer(aMacAddress: string);
var
  i, j: Byte;
  lBuffer: array[1..116] of Byte;
  lUDPClient: TIUDPClient;
begin
  try
    for i := 1 to 6 do begin
      lBuffer[i] := HexToInt(aMacAddress[(i * 2) - 1] + 
         aMacAddress[i * 2]);
    end;
    lBuffer[7] := $00;
    lBuffer[8] := $74;
    lBuffer[9] := $FF;
    lBuffer[10] := $FF;
    lBuffer[11] := $FF;
    lBuffer[12] := $FF;
    lBuffer[13] := $FF;
    lBuffer[14] := $FF;
    for j := 1 to 16 do begin
      for i := 1 to 6 do begin
        lBuffer[15 + (j - 1) * 6 + (i - 1)] := lBuffer[i];
      end;
    end;
    lBuffer[116] := $00;
    lBuffer[115] := $40;
    lBuffer[114] := $90;
    lBuffer[113] := $90;
    lBuffer[112] := $00;
    lBuffer[111] := $40;
    try
      lUDPClient := TIdUDPClient.Create(nil);
      lUDPClient.BroadcastEnabled := true;
      lUDPClient.Host := '255.255.255.255';
      lUDPClient.Port := 2050;
      lUDPClient.SendBuffer(lBuffer, 116);
      writeln('Trying to wake-up remote host: ' + aMacAddress);
    finally
      lUDPClient.Free;
    end;
  except
   on E: Exception do writeln('There was an error');
  end;
end;

Und hier die Fehlermeldungen:


Erzeugen
[Fehler] WakeOnLan.pas(21): Anweisungen sind im Interface-Teil nicht erlaubt
[Fehler] WakeOnLan.pas(22): Undefinierter Bezeichner: 'S'
[Fehler] WakeOnLan.pas(24): Inkompatible Typen
[Fehler] WakeOnLan.pas(46): Undefinierter Bezeichner: 'result'
[Fehler] WakeOnLan.pas(55): Bezeichner redefiniert: 'i'
[Fehler] WakeOnLan.pas(57): Undefinierter Bezeichner: 'TIUDPClient'
[Fehler] WakeOnLan.pas(58): Anweisungen sind im Interface-Teil nicht erlaubt
[Fehler] WakeOnLan.pas(61): Undefinierter Bezeichner: 'aMacAddress'
[Fehler] WakeOnLan.pas(62): Inkompatible Typen: 'String' und 'Integer'
[Fehler] WakeOnLan.pas(85): Operator oder Semikolon fehlt
[Fehler] WakeOnLan.pas(86): Operator oder Semikolon fehlt
[Fehler] WakeOnLan.pas(87): Operator oder Semikolon fehlt
[Fehler] WakeOnLan.pas(88): Operator oder Semikolon fehlt
[Fehler] WakeOnLan.pas(91): Operator oder Semikolon fehlt
[Fehler] WakeOnLan.pas(98): Deklaration erwartet, aber Dateiende gefunden
[Fehler] WakeOnLan.pas(10): Ungenügende Forward- oder External-Deklaration: 'HexToInt'
[Fehler] WakeOnLan.pas(53): Ungenügende Forward- oder External-Deklaration: 'WakeUPComputer'
[Fataler Fehler] Unit1.pas(24): Verwendete Unit '..\..\..\..\..\..\Wolf\Programme\Borland\Delphi7\ Projects\Wakeup\WakeOnLan.pas' kann nicht compiliert werden



Wer kann mir Helfen :gruebel: :gruebel:

Gruß SelinaW

Luckie 8. Apr 2004 00:00

Re: PC über Netzwerk starten
 
Code:
interface

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

[b]implementation[/b]

Function HexToInt(S:String): LongInt;
const
  DecDigits: Set Of '0'..'9' = ['0'..'9'];
Und dann sehen wir mal weiter. Aber wenn du noch nicht mal weißt, wie eine Delphi Unit aufgebaut ist, solltest du eventuell mit ein paar Grundlagen anfangen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:34 Uhr.
Seite 2 von 4     12 34      

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