以下的代碼在XP系統執行可以得到上網時的動態IP,但在VISTA執行得到的卻只是內網的IP(169.254...),請問如何解決?先在uses處加入winsock,在form中加入一個button及edit
加入以下function原始碼
=========================================================
function LocalIP : string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;
begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then
begin
Exit;
end;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do
begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
加入以下function原始碼
=========================================================
function LocalIP : string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;
begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then
begin
Exit;
end;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do
begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
代码网上到处是,自己找一个看看
我是以admin的身份登入vista,也試過'以系統管理員的身入執行'程序,但問題依舊.
在安裝控件時會提示:
access violation at address 0088180c in module coreide70.bpl,read of address 00000008
這是同一個問題嗎?
我剛安裝上的vista+delphi 6,一切還很生疏,煩請指教,謝謝.
使用Win+R,调出“运行”对话框,输入 control userpasswords2 (最后的2不能少) ,这样启动了“用户帐户”设置对话框,选择“高级”选项卡,在“高级用户管理”中,单击“高级”按钮。接下来就会打开lusrmgr (本地用户和组) ,在左边的树图中选择“用户”,在右边选中“administrator”,单击鼠标右键,在弹出快捷菜单中选择“属性”。最后,我们把“帐户已禁用”前的钩去除,单击“确定”即可
先这么试试,如果行得话再写提权的代码