|
밑에 소스는 김영대님의 홈에서 갖고온거구요..
// 이 기능을 사용하려면 IE4.0 이상에서 사용하는 wininet.dll 의 함수의
// prototype 중 빠진 부분을 Source\RTL\Win 에 있는 wininet.pas 에 추가해야 합니다
// wininet.pas 을 컴파일하여 wininet.dcu 를 Lib 디렉토리에 놓으세요
// 아래 내용을 단계별로 작업하세요
[1]. wininet.pas의 interface 에 아래 부분을 추가하세요
{dwFlag for InternetAutodial}
const
INTERNET_AUTODIAL_FORCE_ONLINE = 1; //Forces an online Internet connection.
INTERNET_AUTODIAL_FORCE_UNATTENDED = 2; //Forces an unattended Internet dial-up.
INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4;
{dwFlags for InternetDial}
const
INTERNET_DIAL_UNATTENDED = $8000; //Connects to the Internet through a modem, without displaying a user interface.
{dwFlags for InternetGetConnectedState}
const
INTERNET_CONNECTION_MODEM = 1; // Local system uses a modem to connect to the Internet.
INTERNET_CONNECTION_LAN = 2; // Local system uses a local area network to connect to the Internet.
INTERNET_CONNECTION_PROXY = 4; // Local system uses a proxy server to connect to the Internet.
INTERNET_CONNECTION_MODEM_BUSY = 8; // Local system's modem is busy with a non-Internet connection.
{dwState for InternetSetDialState}
const
INTERNET_DIALSTATE_DISCONNECTED = 1;
function InternetAutodial(dwFlags : DWORD; dwReserved : DWORD) : boolean; stdcall;
function InternetAutodialHangup(dwReserved : DWORD) : boolean; stdcall;
function InternetDial(hwndParent : HWND; lpszConnectionId : PChar; dwFlags : DWORD;
lpdwConnection : Pointer; dwReserved : DWORD) : DWORD; stdcall;
function InternetGetConnectedState(lpdwFlags : Pointer; dwReserved : DWORD) : boolean; stdcall;
function InternetGoOnline(lpszUrl : PChar; hwndParent : HWND; dwReserved : DWORD) : boolean; stdcall;
function InternetSetDialState(lpszConnectionID : PChar; dwState : DWORD; dwReserved : DWORD) : boolean; stdcall;
[2] implementation 에 아래 부분을 추가하세요
function InternetAutodial; external winetdll name 'InternetAutodial';
function InternetAutodialHangup; external winetdll name 'InternetAutodialHangup';
function InternetDial; external winetdll name 'InternetDial';
function InternetGetConnectedState; external winetdll name 'InternetGetConnectedState';
function InternetGoOnline; external winetdll name 'InternetGoOnline';
function InternetSetDialState; external winetdll name 'InternetSetDialState';
[3] 아래 예제를 컴파일해서 실행하세요
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, WinInet;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
dwConnectionTypes: DWORD;
begin
if InternetGetConnectedState(@dwConnectionTypes, 0) then // 정상적으로 검사됨
begin
if (dwConnectionTypes and INTERNET_CONNECTION_MODEM) <> 0 then
ShowMessage('Modem으로 인터넷 사용중...');
if (dwConnectionTypes and INTERNET_CONNECTION_LAN) <> 0 then
ShowMessage('LAN으로 인터넷 사용중...');
if (dwConnectionTypes and INTERNET_CONNECTION_PROXY) <> 0 then
ShowMessage('Proxy로 인터넷 사용중...');
if (dwConnectionTypes and INTERNET_CONNECTION_MODEM_BUSY) <> 0 then
ShowMessage('Modem을 다른 용도로 사용중');
end
else
begin
ShowMessage('검사할 수 없습니다');
end;
end;
end.
이걸 씨빌더에서 쓰려고 하는데 잘안되는군요..
빌더에 내장된 wininet.pas를 살펴보았는데 고칠게 없는거 같아요..
그래서 c로 컴버트해서 컴파일 하니까 자꾸
linker error가 나는군요.. 그래서 잘돌아가는 delphi5 wininet.pas를
갖다쓰려니까(아예 프로젝트에 포함시켜서..) 그것도 안되고...
어찌하오리까..
다들 마지막 말은 이렇게 쓰더군요..
즐거운 하루 되세요...
글구요..하나 임프님께 부탁드릴께요..
방대한 자료가 있슴에도 여기서 자료 찾기란 대단히
힘들어요.. 제가 search를 잘못해서 그런가요?
어쨌든 강력한 search와 section별로 구분이 됬슴해요..
빌더애용자 조로 드림~~
|