開發網路應用程式時,常需判斷是否已連上網際網路、自動撥號連線,或直接啟動瀏覽器開啟指定網址。本文整理三個在 C++ Builder 環境下常用且實用的技巧,並提供核心程式碼片段供參考。
利用 NetMasters PowerSock 元件的 LocalIP 屬性:若傳回 "0.0.0.0" 代表尚未取得有效 IP,即未連線。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (PowerSock1->LocalIP == "0.0.0.0")
ShowMessage("未連線");
else
ShowMessage("已連線,本機 IP:" + PowerSock1->LocalIP);
}
注意:需先在表單放置 PowerSock 元件並設定 Active = true。
Windows Telephony API (TAPI) 提供完整撥號流程控制,核心步驟如下:
| API 函式 | 用途 |
|---|---|
lineInitializeEx() | 初始化 TAPI 子系統 |
lineOpen() | 取得可用電話線裝置控制代碼 |
lineMakeCall() | 發起撥號連線 |
lineDrop() / lineDeallocateCall() / lineClose() | 結束通話、釋放呼叫資源、關閉線路 |
lineShutdown() | 關閉 TAPI 子系統 |
資料傳輸部分則在 TAPI 外部透過 Winsock 或序列埠自行實作。完整流程涉及回呼函式與狀態機,建議參考 MSDN TAPI 範例再整合至專案中。
呼叫 Shell API ShellExecute 即可,無需知道瀏覽器安裝路徑:
#include <shellapi.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShellExecute(Application->Handle, "open",
"https://www.example.com", NULL, NULL, SW_SHOW);
}
參數說明:lpVerb="open" 表示用預設處理程式開啟;lpFile 為網址;nShowCmd=SW_SHOW 正常顯示視窗。
將這三招組合,即可打造具備「偵測→撥號→開網頁」完整流程的網路應用程式。