24. april 2003 - 20:39Der er
9 kommentarer og 1 løsning
WakeOnLan ??
Hvaaaa??? Hva'så?? nå ok...
OK, Here goes... jeg har et lille problem som jeg lige håbede i kunne hjælpe mig med (som altid)... :)
WOL... ringer der klokker?? det tænkte jeg nok :) WakeOnLan! hvordan er det lige jeg sender sådan en såkaldt "Magic Packet" med winsock for at kunne bruge min WOL funktion?? (jeg kender MAC adressen)
det burde vel ikke være noget problem lige a stykke et par linjer kode sammen vel ? :)
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; function CoCreateGuid(var guid: TGUID): HResult; stdcall; far external 'ole32.dll';
var Form1 : TForm1; const LEN_PHYSADDR = 6; var WSAData : TWSAData; MSocket : TSocket; SockAddrIn : TSockAddrIn; RetVal, OptVal, i : Integer; MacAddr : array[0..5] of Byte; MagicData : array[0..101] of Byte; SendPosition : Longint; SAddr : string;
implementation
{$R *.dfm}
function Get_MACAddress: string; var g : TGUID; i : Byte; begin Result := ''; CoCreateGUID(g); for i := 2 to 7 do Result := Result + IntToHex(g.D4[i], 2); end;
function CheckWinSockResult(ResultCode: Integer; const FuncName: string): Integer; begin if ResultCode <> 0 then begin Result := WSAGetLastError; Form1.Label4.Caption := (Format(#13#10'Windows socket error: %s (%d), on API ''%s''.', [SysErrorMessage(Result), Result, FuncName])); Halt; end else Result := 0; end;
procedure TForm1.Button1Click(Sender: TObject); begin try SAddr := Edit1.Text; if Length(SAddr) <> 17 then Abort; for i := 1 to Length(SAddr) do if i in [3, 6, 9, 12, 15] then if SAddr[i] <> '-' then Abort;
for i := 0 to High(MacAddr) do begin if Pos('-', SAddr) > 0 then MacAddr[i] := StrToInt(HexDisplayPrefix + Copy(SAddr, 1, Pos('-', SAddr) - 1)) else MacAddr[i] := StrToInt(HexDisplayPrefix + SAddr); Delete(SAddr, 1, Pos('-', SAddr)); end; except Label4.Caption := 'Invalid Ethernet address'; Halt; end;
while SendPosition < SizeOf(MagicData) do begin Move(MacAddr, Pointer(Longint(@MagicData) + SendPosition)^, LEN_PHYSADDR); Inc(SendPosition, LEN_PHYSADDR); end;
Jeg giver mine point til stoney da han/hun var den første med et korrekt svar :) Jeg takker og bukker dybt! meeeen vi ses jo nok en anden gang!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.