2012-07-30 52 views
0

我使用「ShellExecuteEx」從我的C代碼中調用了「Rasphone.exe」來創建撥號連接。我在Windows XP和Windows 7上發現了不同的行爲。XP和Windows 7中的RASPHONE.exe行爲

Windows XP中的行爲: RASDial連接在沒有任何彈出窗口的情況下創建。

Windows 7中的行爲: 撥號窗口彈出要撥打的號碼。我沒有輸入任何號碼,並點擊「撥號」按鈕。連接被連接。以下是我在Windows 7中獲得的快照窗口?

enter image description here

什麼是行爲差異的原因?

回答

1

行爲不同的原因是什麼?

Windows 7是與Windows XP不同的操作系統。在Metro發明之前,Windows團隊沒有任何事情要做,所以他們圍坐在一堆舊代碼旁邊去看看是否有人注意到。看起來你已經找到了他們改變的東西之一。

不用擔心,但。你的代碼首先註定了。撥號網絡連接的正確方法不是啓動網絡撥號器應用程序,而是調用爲此提供的API。

你想要的API的名稱是WinINet,你會找到它的文檔here。尤其是,您會對Establishing a Dial-Up Connection to the Internet部分感興趣,其中提到了InternetDial function

當然,他們也改變了這一點。從Windows Vista開始,此功能在內部使用RAS API建立連接。通過直接撥打RasDialRasDialDlg函數跳過中間人。

+0

非常感謝您的回答科迪,它非常清楚。如果可能的話,你可以看看這篇文章嗎? http://stackoverflow.com/questions/11738156/dial-up-connection-issues-with-phonebook-pbk-file – 2vision2 2012-08-02 15:45:47

+0

由於時間的限制,需要堅持從我的c程序調用rasphone.exe,而不是使用RAS API的最佳方法。 從我的代碼中,當rasphone彈出一個撥號窗口給用戶時,如果用戶點擊取消按鈕,我不得不阻止另一組代碼。 最終,我需要處理rasphone返回來根據成功/失敗取消來控制我的代碼流。 如何做到這一點?另外,沒有任何彈出窗口的情況下是否還有其他可能的靜音撥號?我希望不會,正如它的討論。 – 2vision2 2012-08-03 08:33:01

相關問題