通过局域网实现远程唤醒功能Ddelphi实现代码(100分)

  • 主题发起人 主题发起人 浮云一号
  • 开始时间 开始时间

浮云一号

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位大虾给出通过局域网实现远程唤醒功能的Ddelphi实现代码?
 
远程唤醒你的delpi程序?还是其他?
 
关注。。。。。从提问的方式看,估计是唤醒delphi编写的可执行程序。
 
好像除了程序,其他的也唤不醒吧?
 
应该是属于远程控制一类了哦,你不在对方的电脑上安装一个控制端,怎么都唤不醒
 
估计是说用delphi实现远程开机的功能
 
估计是说用delphi实现远程开机的功能
 
这也得要对方机器支持远程唤醒........
应该可以实现~~
估计蛮底层,我不会做~
 
哈哈,远程开机?离谱了吧,如果别人把电源给关了,你还能开嘛?这个不是软件能解决的哦,而且硬件也未必能解决哦.
 
解决办法已找到:
//调用循环(实现开多台)
procedure TMainForm.BtnWakeClick(Sender: TObject);
var
I,varEnd:integer;
varCommandStr:string;
begin
with ListView1.Items do
For I:=0 to Count-1 do
begin
if item.checked and (item.SubItems.Count>1) then
if pri_FunWakeUpComputer(pchar(item.caption),pchar(item.SubItems.Strings[1])) then
MemoState.Lines.Add(item.SubItems.Strings[1]+' 发送成功! -- '+ DateTimeToStr(Now()))
else
MemoState.Lines.Add(item.SubItems.Strings[1]+' 发送失败! -- '+ DateTimeToStr(Now()));
end;

MemoState.Lines.SaveToFile(ExtractFiledir(ParamStr(0))+'/'+'thinkingWakerSate.Txt');
if CkBoxDate.Checked then close;
end;

//开机代码---网上大虾提供,略做修改
//WSocket是ICS的控件
function TMainForm.pri_FunWakeUpComputer(AMacAddr, AIPAddr : PChar) : Boolean; stdcall;
var
MagicStr, BroadcastAddr : string;
i, Dot : Integer;
strMacAddr, strIPAddr : string;
WSocket : TWSocket;
begin
MagicStr := '';
strMacAddr := StrPas(AMacAddr);
strIPAddr := StrPas(AIPAddr);
for i := 1 to 16 do
begin
MagicStr := MagicStr + string(Char(StrToInt('0x' + Copy(strMacAddr, 1, 2))))
+ string(Char(StrToInt('0x' + Copy(strMacAddr, 3, 2))))
+ string(Char(StrToInt('0x' + Copy(strMacAddr, 5, 2))))
+ string(Char(StrToInt('0x' + Copy(strMacAddr, 7, 2))))
+ string(Char(StrToInt('0x' + Copy(strMacAddr, 9, 2))))
+ string(Char(StrToInt('0x' + Copy(strMacAddr, 11, 2))));
end;
MagicStr := StringOfChar(#255,6) + MagicStr;

BroadcastAddr := '';
for i := 0 to 2 do
begin
Dot := Pos('.', strIPAddr);
BroadcastAddr := BroadcastAddr + Copy(strIPAddr, 1, Dot);
Delete(strIPAddr, 1, Dot);
end;
BroadcastAddr := BroadcastAddr + '255';

//dmShare.UDPSendStr(BroadcastAddr, C_IsActivePort, MagicStr);
WSocket := TWSocket.Create(nil);
try
with WSocket do
begin
Close;
Proto := 'UDP';
Port := '7911';
Addr := BroadcastAddr;
Connect;
SendStr(MagicStr);
end;
finally
WSocket.Close;
WSocket.Free;
end;

Result := True;
end;

//前提:电脑主板支持LAN唤醒,并在BIOS设置生效.
 
好心人,正需要找这方面的资料
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部