線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1998
推到 Plurk!
推到 Facebook!

如何新增數據機跟撥號連線

尚未結案
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-30 12:02:12 IP:220.130.xxx.xxx 未訂閱
請問大家, 要怎麼透過程式去新增一台 標準數據機 的裝置, 跟 新增一個 撥號連線 謝謝^___^ -------------------------- ~天下本無事 庸人自擾之~
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-01 10:29:01 IP:61.63.xxx.xxx 未訂閱
引言: 請問大家, 要怎麼透過程式去新增一台 標準數據機 的裝置, 跟 新增一個 撥號連線 謝謝^___^ -------------------------- ~天下本無事 庸人自擾之~
Windyboy你好: 無意中看到一本書中有用一些 href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/establishing_a_dial_up_connection_to_the_internet.asp">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/establishing_a_dial_up_connection_to_the_internet.asp title:WinINet Functions http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/wininet_functions.asp 可是我試了一下,有很奇怪的問題,就是這些function在BCB 5.0中run ok,可是BCB 6.0中run 卻總是說不認識這些function,即使我們include了 wininet.h或是 USELIB("wininet.lib");或是把 library路徑加指到\lib\Psdk…也都是一樣不行! 就是這樣,同機環境,只是5.0改6.0,source code完全照寫,6.0就是不行,很奇怪! 目前卡在這問題比較嚴重,所以就先不try那些function怎麼用了! 另外builder有什麼現成的元件可用,我就都不知道了,嘿嘿! 小小測試,參著參著!
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-01 10:43:11 IP:220.130.xxx.xxx 未訂閱
Hi m8815010: 謝謝你的回覆, 我還以為沒有人會回我這個問題說(因為已經好幾次我發問都沒人回我了@.@), 我昨天也有找到這些FUNCTION, 起初也很高興的去了解它的用法, 但是看了看後, 好像跟我的需求不同, 因為WININET的FUNC是用來建立連線, 而我要的不是去呼叫已建立好的撥號連線連到INTERNET, 而是要新增一個新的撥號連線,就像在Win2000下的 [網路和撥號連線]->[建立新連線] 這個動作, 但是是程式來做, 不是手動, 數據機裝置的新增也是, 其實說起來, 我想做的東西應該就類似Yahoo或Sina的撥接精靈, 附上該軟體的連結 http://www.artstudio.com.tw/project/YahooFreeISP/trafficRef.php?ref_code=download&goURL=software http://www.sinaplay.com.tw/visp/download/sinadial.exe 辛苦各位大大看完的問題, 再次感謝^____^ (希望有人回應我cc) -------------------------- ~天下本無事 庸人自擾之~
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-01 14:16:00 IP:61.221.xxx.xxx 未訂閱
1 regedit 自己偵測一下 其他的就利用API去處理AP相關動作
8866
中階會員


發表:27
回覆:147
積分:69
註冊:2002-10-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-01 14:23:44 IP:61.222.xxx.xxx 未訂閱
1. 新增一台 標準數據機 ??? Ans : DDK 有範例程式,請找看看. ( 以前的離職同事說的 ) ! 且 95, 98 與 ME , 200, XP 有不同寫法 ! 難度頗高 .
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-01 15:00:22 IP:220.130.xxx.xxx 未訂閱
引言: 1 regedit 自己偵測一下 其他的就利用API去處理AP相關動作
Hi conundrum: 剛試著監控登錄檔, 我新增一個撥號連線後, 登錄檔只有一個地方有變化, 但看不出來跟撥號有什麼關聯, HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\installer\userdata\s-1-5-18\products\4040820900063d11c8ef00054038389c\usage productnonbootfiles=int:826343493 -> int:826343494 很無奈, 我看不出個所以然.@.@ 我再去找找DDK的資料, 謝謝大家^_^ -------------------------- ~天下本無事 庸人自擾之~
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-01 15:09:35 IP:61.218.xxx.xxx 未訂閱
Windyboy您好    試試RAS API(Remote Access external API),但不能像你說的直接產生,還是有部分需要用Key-IN的,如電話號碼,連線名稱,如果要自動產生可能要動用到Registry了    
Unit1.h
//---------------------------------------------------------------------------    #ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include 
#include 
#include 
#include <Forms.hpp><font color=red>
#include 
#include     //---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:        // IDE-managed Components
        TButton *Button1;
        TListBox *ListBox1;
        TButton *Button2;
        void __fastcall btnCreatDialNameClick(TObject *Sender);
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall ListBox1Click(TObject *Sender);
private:        // User declarations
        void EnumEntries();
public:                // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif        Unit1.cpp
//---------------------------------------------------------------------------    #include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------    void __fastcall TForm1::btnCreatDialNameClick(TObject *Sender) //建立撥號連線
{
  RasCreatePhonebookEntryA(Application->Handle,0);      EnumEntries();        }
//---------------------------------------------------------------------------
void TForm1::EnumEntries() //列舉撥號連線
{
        // Enumerate the entries. This is the same
        // code used in the part 1 of the RAS
        // articles so it is not explained here.
        RASENTRYNAME* entries = new RASENTRYNAME[1];
         entries[0].dwSize = sizeof(RASENTRYNAME);
        DWORD numEntries;
        DWORD size = entries[0].dwSize;
        DWORD res = RasEnumEntries(
                0, 0, entries, &size, &numEntries);
        if (res == ERROR_BUFFER_TOO_SMALL) {
                // Allocate enough memory to get
                // all the phonebook entries.
                delete[] entries;
                entries = new RASENTRYNAME[numEntries];
                entries[0].dwSize = sizeof(RASENTRYNAME);
                res = RasEnumEntries(
                        0, 0, entries, &size, &numEntries);
                if (res) {
                        char buff[256];
                        RasGetErrorString(
                                res, buff, sizeof(buff));
                        ShowMessage(buff);
                }
        }
        ListBox1->Items->Clear();
        for (int i=0;i<(int)numEntries;i  )
                ListBox1->
                        Items->Add(entries[i].szEntryName);
        ListBox1->ItemIndex = 0;
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  EnumEntries();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListBox1Click(TObject *Sender) //編輯撥號連線
{
  char dialName[10];       strcpy( dialName , Trim(ListBox1->Items->Text).c_str());           RasEditPhonebookEntryA(Application->Handle, 0,dialName);    }
//---------------------------------------------------------------------------    
/*生活是一種藝術,用心生活享受生活*/
8866
中階會員


發表:27
回覆:147
積分:69
註冊:2002-10-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-01 15:11:38 IP:61.222.xxx.xxx 未訂閱
引言: 1. 新增一台 標準數據機 ??? Ans : DDK 有範例程式,請找看看. ( 以前的離職同事說的 ) ! 且 95, 98 與 ME , 200, XP 有不同寫法 ! 難度頗高 .
請看 setupapi.dll 相關的函數說明 .
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-10-01 17:11:39 IP:220.130.xxx.xxx 未訂閱
Dear all: 先謝過大家的建議, 但我還是實做不出來,因為要做出像YAHOO那個撥接精靈, 是不能像使用RAS一樣, 還會出現提示使用者的DIALOG, 而是要直接就新增一個撥接連線, 然後程式再去呼叫那個剛新增的連線, 撥號, 連上INTERNET, 再一個就是setupapi.dll, 我查了好一會了, 查不出個所以然, FUNCTION太多, 我看setupapi.h看到頭昏了, 呵呵!! 所以, 再研究研究囉!! 等我研究出來再跟大家報告, 要是還有誰有好的方法, 再提供一下唄!!^___^ -------------------------- ~天下本無事 庸人自擾之~
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-10-01 21:24:45 IP:61.64.xxx.xxx 未訂閱
1 偵測reg請用RegSpy http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47167 參考 http://www.geocities.com/Athens/Delphi/2998/speed.htm    2 你說的應不需寫ddk 因為不是寫驅動 只需呼應控制  (好加在 不然頭暈暈如8866所說) 3 控制RS232 序列埠通訊的非視覺化元件 很多 這個無源碼 http://vcl.vclxx.org/DELPHI/D32FREE/ASYNC32.ZIP 可在 Windows 95/98/ME/NT/2000 以多執行緒 ( Multi-Thread ) 控制 RS232 序列埠通訊的非視覺化元件 ( 1.82 版,無原始程式碼 Delphi 3.0/4.0/5.0 版適用 ),作者: Varian Software Services NL    在Delphi中怎樣控制 Modem http://www.china-askpro.com/msg26/qa95.shtml http://www.china-askpro.com/download/tcomm.txt    http://www.activedelphi.com.br/modules.php?op=modload&name=News&file=article&sid=7    http://www.efg2.com/Lab/Library/Delphi/IO/PortIO.htm    參考 如有 不準是正常ㄟ 當練身體    http://www.borland.co.jp/qanda/delphi/d0009399.html  
  procedure TForm1.Button1Click(Sender: TObject);
    var
       CommPort : String;
       hCommFile : THandle;
       ModemStat : DWord;
    begin
         CommPort := 'COM1';
    // Comm接口open
         hCommFile := CreateFile(PChar(CommPort),GENERIC_READ,
                                 0,nil,OPEN_EXISTING,
                                 FILE_ATTRIBUTE_NORMAL,0);
         if hCommFile = INVALID_HANDLE_VALUE then
         begin
              ShowMessage(CommPort 'open成果籬笆');
              Exit;
         end;
         if GetCommModemStatus(hCommFile, ModemStat) then
         begin
              if ModemStat and MS_CTS_ON <> 0 then
                 ShowMessage('CTS ON');
              if ModemStat and MS_DSR_ON <> 0 then
                 ShowMessage('DSR ON');
              if ModemStat and MS_RING_ON <> 0 then
                 ShowMessage('Ring ON');
              if ModemStat and MS_RLSD_ON <> 0 then
                 ShowMessage('RLSD ON');
         end;
         CloseHandle(hCommFile);
    end; 
【Delphi】【問題】請教...如何由程式直接控制撥號 http://delphi.ktop.com.tw/topic.php?topic_id=30105 此外, Turbopower 也有相關的 Modem 元件. 這才是我想要的 哈哈 看看 axsoft 版主應算解題了 哈哈 哈哈哈 發表人 - conundrum 於 2004/10/01 21:46:31
Windyboy
版主


發表:7
回覆:119
積分:210
註冊:2002-11-07

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-10-04 14:06:10 IP:220.130.xxx.xxx 未訂閱
Dear all: 終於, 解決了, 跟大家分享一下, 雖然,跟大家討論的好像不大一樣@.@, 但我最後還是找到了解決的方法... 就是找到了撥號連線的設定檔, 其實它就是一個INI檔, 存在於 C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\rasphone.pbk 在這裡檔家增加新的Section, 就等於是增加一個撥號連線 所以我想這一分還是從缺好了, 我覺得不是我吝嗇給這一分,而是 因為沒有人提到這個設定檔..呵呵 謝謝大家的協助^_^ 啊~~問題解決的感覺真是好啊!! -------------------------- ~天下本無事 庸人自擾之~
Rickpto
一般會員


發表:6
回覆:4
積分:2
註冊:2002-06-15

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-12-24 11:45:26 IP:211.23.xxx.xxx 未訂閱
可以使用TRAS元件,應該可達到你想做的功能,TRAS有點舊了元件不好找,這裡有新版的http://www.magsys.co.uk/delphi/,但是不確定BCB可不可裝(我裝不起來@_@),但是我之前有用過TRAS寫過。 TRAS *ras; ras->PhoneNumber = "12345678"; ras->UserName = "username"; ras->Password = "pwd"; ras->Connections; ras->GetConnectStatus(); ras->DisConnect(); ras->Connect(); ras->CurrentStatus();
系統時間:2024-11-22 20:45:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!