|
<p>1、如何判断当前网络连接方式<br/>判断结果是MODEM、局域网或是代理服务器方式。<br/>uses wininet;<br/>Function ConnectionKind :boolean;<br/>var flags: dword;<br/>begin<br/>Result := InternetGetConnectedState(@flags, 0);<br/>if Result then<br/>begin<br/>if (flags and INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then<br/>begin<br/>showmessage('Modem');<br/>end;<br/>if (flags and INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then<br/>begin<br/>showmessage('LAN');<br/>end;<br/>if (flags and INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then<br/>begin<br/>showmessage('Proxy');<br/>end;<br/>if (flags and INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY then<br/>begin<br/>showmessage('Modem Busy');<br/>end;<br/>end;<br/>end;</p>
<p>2、判断系统是否连接INTERNET<br/>需要引入URL.DLL中的InetIsOffline函数。<br/>函数申明为:<br/>function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL';<br/>然后就可以调用函数判断系统是否连接到INTERNET<br/>if InetIsOffline(0) then ShowMessage('not connected!')<br/>else ShowMessage('connected!');<br/>该函数返回TRUE如果本地系统没有连接到INTERNET。<br/>附:<br/>大多数装有IE或OFFICE97的系统都有此DLL可供调用。<br/>InetIsOffline<br/>BOOL InetIsOffline(<br/>DWORD dwFlags,<br/>);</p>
<p>3、解析服务器IP地址<br/>uses winsock</p>
<p>function IPAddrToName(IPAddr : String): String;<br/>var<br/>SockAddrIn: TSockAddrIn;<br/>HostEnt: PHostEnt;<br/>WSAData: TWSAData;<br/>begin<br/>WSAStartup($101, WSAData);<br/>SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));<br/>HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);<br/>if HostEnt<>nil then result:=StrPas(Hostent^.h_name) else result:='';<br/>end;</p>
<p>4、取利主机的ip地址。<br/> uses winsock;<br/> procedure TForm1.Button1Click(Sender: TObject);<br/> var<br/> IP:string;<br/> IPstr:String;<br/> buffer:array[1..32] of char;<br/> i:integer;<br/> WSData:TWSAdata;<br/> Host HostEnt;<br/> begin<br/> if WSAstartup(2,WSData)<>0 then<br/> begin<br/> showmessage('WS2_32.DLL3?ê??ˉê§°ü.');<br/> exit;<br/> end;<br/> try<br/> if GetHostname(@buffer[1],32)<>0 then<br/> begin<br/> showmessage('??óDμ?μ??÷?ú??.');<br/> exit;<br/> end;<br/> except<br/> showmessage('??óD3é1|·μ???÷?ú??');<br/> exit;<br/> end;<br/> Host:=GetHostbyname(@buffer[1]);<br/> if Host=nil then<br/> begin<br/> showmessage('IPμ??·?a??.');<br/> exit;<br/> end<br/> else<br/> begin<br/> edit2.Text:=Host.h_name;<br/> edit3.Text:=chr(host.h_addrtype+64);<br/> for i:=1 to 4 do<br/> begin<br/> IP:=inttostr(ord(host.h_addr^[i-1]));<br/> if i<4 then<br/> ipstr:=ipstr+IP+'.'<br/> else<br/> edit1.Text:=ipstr+ip;<br/> end;<br/> end;<br/> WSACleanup;<br/> end;</p>
<p>5、取得计算机名。<br/> function tform1.get_name:string;<br/> var ComputerName: PChar; size: DWord;<br/> begin<br/> GetMem(ComputerName,255);<br/> size:=255;<br/> if GetComputerName(ComputerName,size)=False then<br/> result:=''<br/> else<br/> result:=ComputerName;<br/> FreeMem(ComputerName);<br/> end;<br/> procedure TForm1.Button1Click(Sender: TObject);<br/> begin<br/> label1.Caption:=get_name;<br/> end;</p>
<p>6、查找局域网上的sqlserver报务器。<br/> uses Comobj;<br/> procedure TForm1.Button1Click(Sender: TObject);<br/> var<br/> SQLServer:Variant;<br/> ServerList:Variant;<br/> i,nServers:integer;<br/> sRetValue:String;<br/> begin<br/> SQLServer := CreateOleObject('SQLDMO.Application');<br/> ServerList:= SQLServer.ListAvailableSQLServers;<br/> nServers:=ServerList.Count;<br/> for i := 1 to nservers do<br/> ListBox1.Items.Add(ServerList.Item(i));<br/> SQLServer:=NULL;<br/> serverList:=NULL;<br/> end;</p> |
|