如何实现自动拨号连接? 如何实现自动拨号连接? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 winexec('rundll32.exe rnaui,rnadial'+'你创建的拨号程序名称',9);可以结贴了后面的请不要继续补充了,已经很充分了 不行啊,出现加载rnaui.dll错误啊!!说找不到该模板请再详细说明,谢谢,一定给分! 转过N遍了首先要建立两个Unit文件1、unit Ras;interfaceuses Windows;const{$IFDEF WINVER400} RAS_MaxEntryName = 256;{$ELSE} RAS_MaxEntryName = 20;{$ENDIF} rasapi32 = 'rasapi32.dll';type TRASENTRYNAME = packed record dwSize : DWORD; szEntryName : array [0..RAS_MaxEntryName] of char; szPadding : array [0..2] of Char; end; PRASENTRYNAME = ^TRASENTRYNAME;implementationend.2、unit libRasDial;interfaceuses Windows, SysUtils, Registry, WinSock, WinInet, Ras;function _IsConnectedToInternet: Boolean;function _DoConnect(hwndParent:HWND): Boolean;function _GetRasConnNum: Integer;procedure _DoNew(hwndParent:HWND);function RasEnumEntriesA(Reserved: Pointer; szPhonebook: PChar; lpRasEntryName: PRASENTRYNAME; lpcb : PDWORD; lpcEntries : PDWORD ): DWORD; stdcall;function RasGetErrorStringA(uErrorValue : DWORD; szErrorString : PChar; cBufSize : DWORD ): DWORD; stdcall;function RasCreatePhonebookEntryA(hWndParent : HWND; lpszPhonebook : PChar ) : DWORD; stdcall;var Conn: DWORD;implementationconst INTERNET_CONNECTION_MODEM = 1; INTERNET_CONNECTION_LAN = 2; INTERNET_CONNECTION_PROXY = 4; INTERNET_CONNECTION_MODEM_BUSY = 8;function InternetGetConnectedState(lpdwFlags: LPDWORD; dwReserved: DWORD): BOOL; stdcall; external 'WININET.DLL';function _IsConnectedToInternet: Boolean;var dwConnectionTypes: Integer;begin try dwConnectionTypes := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY; if InternetGetConnectedState(@dwConnectionTypes, 0) then Result := true else Result := false; except Result := false; end;end;function _DoConnect(hwndParent:HWND):Boolean;begin Result:= false; if _GetRasConnNum=0 then _DoNew(hwndParent); if _GetRasConnNum=0 then exit; InternetDial(hwndparent, '', INTERNET_AUTODIAL_FORCE_ONLINE, @Conn, 0); if Conn<>0 then Result:=true;end;function _GetRasConnNum: Integer;var Entries : array [0..15] of TRASENTRYNAME; cb : DWORD; cEntries : DWORD; dwRet : DWORD; Buf : array [0..127] of char;begin FillChar(Entries, SizeOf(Entries), 0); Entries[0].dwSize := SizeOf(TRASENTRYNAME); cb := SizeOf(Entries); cEntries := 0; dwRet := RasEnumEntriesA(NIL, NIL, @Entries[0], @cb, @cEntries); if dwRet <> 0 then RasGetErrorStringA(dwRet, @Buf[0], SizeOf(Buf)); Result:= cEntries;end;procedure _DoNew(hwndParent:HWND);var dwRet: DWORD; Buf : Array [0..127] of char;begin dwRet := RasCreatePhonebookEntryA(hwndParent, nil); if dwRet <> 0 then RasGetErrorStringA(dwRet, @Buf[0], SizeOf(Buf));end;function RasEnumEntriesA; external rasapi32 name 'RasEnumEntriesA';function RasGetErrorStringA; external rasapi32 name 'RasGetErrorStringA';function RasCreatePhonebookEntryA; external rasapi32 name 'RasCreatePhonebookEntryA';end.然后你就可以调用这些函数了procedure TMainForm.Buttn1Click(Sender: TObject);begin _DoConnect(0);//拨号end;procedure TMainForm.Buttn1Click(Sender: TObject);begin if Conn <> 0 then InternetHangUp(Conn,0);//断开end; 用delphi开发webservice服务器端如何定义全局对象 ADOConnection连接SQLServer数据库,超时时间已经设置为2,可是不起作用啊 DBGrid的几个问题(有点难度) 代碼出錯,請指教(在線等)! 随机算法怎么写 谁能解决这个dll 的问题 随机数的产生问题 我的小问题,看看...... 新年礼物,大家快来 为什么那个程序不能用???快看看!!! 怎么得出TREEVIEW里面被选节点的所有子节点(包括子节点的子节点)的个数??? 我看到别人的程序不用odbc就可访问access数据库,请问什么技术可以代替odbc?
请再详细说明,谢谢,一定给分!
1、unit Ras;
interface
uses
Windows;
const
{$IFDEF WINVER400}
RAS_MaxEntryName = 256;
{$ELSE}
RAS_MaxEntryName = 20;
{$ENDIF}
rasapi32 = 'rasapi32.dll';
type
TRASENTRYNAME = packed record
dwSize : DWORD;
szEntryName : array [0..RAS_MaxEntryName] of char;
szPadding : array [0..2] of Char;
end;
PRASENTRYNAME = ^TRASENTRYNAME;
implementation
end.
2、
unit libRasDial;
interface
uses
Windows, SysUtils, Registry, WinSock, WinInet, Ras;
function _IsConnectedToInternet: Boolean;
function _DoConnect(hwndParent:HWND): Boolean;
function _GetRasConnNum: Integer;
procedure _DoNew(hwndParent:HWND);
function RasEnumEntriesA(Reserved: Pointer;
szPhonebook: PChar;
lpRasEntryName: PRASENTRYNAME;
lpcb : PDWORD;
lpcEntries : PDWORD
): DWORD; stdcall;
function RasGetErrorStringA(uErrorValue : DWORD;
szErrorString : PChar;
cBufSize : DWORD
): DWORD; stdcall;
function RasCreatePhonebookEntryA(hWndParent : HWND;
lpszPhonebook : PChar
) : DWORD; stdcall;
var Conn: DWORD;
implementation
const
INTERNET_CONNECTION_MODEM = 1;
INTERNET_CONNECTION_LAN = 2;
INTERNET_CONNECTION_PROXY = 4;
INTERNET_CONNECTION_MODEM_BUSY = 8;
function InternetGetConnectedState(lpdwFlags: LPDWORD;
dwReserved: DWORD): BOOL; stdcall; external 'WININET.DLL';
function _IsConnectedToInternet: Boolean;
var
dwConnectionTypes: Integer;
begin
try
dwConnectionTypes := INTERNET_CONNECTION_MODEM +
INTERNET_CONNECTION_LAN +
INTERNET_CONNECTION_PROXY;
if InternetGetConnectedState(@dwConnectionTypes, 0) then
Result := true
else
Result := false;
except
Result := false;
end;
end;
function _DoConnect(hwndParent:HWND):Boolean;
begin
Result:= false;
if _GetRasConnNum=0 then _DoNew(hwndParent);
if _GetRasConnNum=0 then exit;
InternetDial(hwndparent,
'',
INTERNET_AUTODIAL_FORCE_ONLINE,
@Conn,
0);
if Conn<>0 then Result:=true;
end;
function _GetRasConnNum: Integer;
var
Entries : array [0..15] of TRASENTRYNAME;
cb : DWORD;
cEntries : DWORD;
dwRet : DWORD;
Buf : array [0..127] of char;
begin
FillChar(Entries, SizeOf(Entries), 0);
Entries[0].dwSize := SizeOf(TRASENTRYNAME);
cb := SizeOf(Entries);
cEntries := 0;
dwRet := RasEnumEntriesA(NIL, NIL, @Entries[0], @cb, @cEntries);
if dwRet <> 0 then RasGetErrorStringA(dwRet, @Buf[0], SizeOf(Buf));
Result:= cEntries;
end;
procedure _DoNew(hwndParent:HWND);
var
dwRet: DWORD;
Buf : Array [0..127] of char;
begin
dwRet := RasCreatePhonebookEntryA(hwndParent, nil);
if dwRet <> 0 then RasGetErrorStringA(dwRet, @Buf[0], SizeOf(Buf));
end;
function RasEnumEntriesA; external rasapi32 name 'RasEnumEntriesA';
function RasGetErrorStringA; external rasapi32 name 'RasGetErrorStringA';
function RasCreatePhonebookEntryA; external rasapi32 name 'RasCreatePhonebookEntryA';
end.
然后你就可以调用这些函数了
procedure TMainForm.Buttn1Click(Sender: TObject);
begin
_DoConnect(0);//拨号
end;
procedure TMainForm.Buttn1Click(Sender: TObject);
begin
if Conn <> 0 then
InternetHangUp(Conn,0);//断开
end;