팁에서 참고를 했는데요.
자꾸 Access violation 에러가 나네요.
어디서 부터 수정을 해야 할지 뭐가 잘못되었는지 잘 모르겠습니다.
고수님들의 조언 부탁드립니다.
참고로 저는 use절에 IdWinsock을 포함했습니다.
수고하십시오.
function IsOnline: Boolean;
var
Size: Integer;
PC: array[0..4] of Char;
Key: hKey;
function IsIPPresent: Boolean;
type
TaPInAddr = array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array[0..63] of Char;
I: Integer;
GInitData: TWSAData;
IP: string;
begin
WSAStartup($101, GInitData);
Result := False;
GetHostName(Buffer, SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
while pPtr^[I] <> nil do
begin
IP := inet_ntoa(pptr^[I]^);
Inc(I);
end;
WSACleanup;
Result := (IP <> '') and (IP <> '127.0.0.1');
end;
begin
if RegOpenKey(HKEY_LOCAL_MACHINE, 'SystemCurrentControlSetServicesRemoteAccess', Key) = ERROR_SUCCESS then
begin
Size := 4;
if RegQueryValueEx(Key, 'Remote Connection', nil, nil, @PC, @Size) = ERROR_SUCCESS then
Result := PC[0] = #1
else
Result := IsIPPresent;
RegCloseKey(Key);
end
else
Result := IsIPPresent;
end;
제대로 동작을 안한다고 들었습니다.. 확실한건 지는 모르겠지만..
저 같은면,, 그냥 ping 을 이용해서 할 수 있을것 같은데요..
주요 공개 서버 (엠파스 등..) 를 한 10개 지정해 놓고 ping 을 쳐보는거져
되면 인터넷 되는 겁닏..
-_-;; ㅎㅎ