 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 1 樓
|
發表於: 星期五 五月 23, 2003 7:39 pm 文章主題: 怎樣在 Visual FoxPro 中增加與去除網路聯接(轉貼) |
|
|
怎樣在 Visual FoxPro 中增加與去除網路聯接
2002-1-3
最後檢查日期: October 17, 1996
文號: Q138678
本文資訊應用於:
Microsoft Visual FoxPro for Windows, versions 3.0, 5.0
概述
在 FoxPro for Windows 2.x 中用 Foxtools.fll 和在 Visual FoxPro 中用 DECLARE DLL 命令定義相關的 Windows API(應用程式編程介面)函數, 可以在 FoxPro 中增加與去除網路聯接.
僅管 Visual FoxPro 仍然支持 FOXTOOLS 庫作為向後相容, DECLARE 命令是調用 DLL 函數的更好的方法.
更多資訊
以下章節包括 FoxPro 2.x 和 Visual FoxPro 用法約定.
FoxPro 2.x
在 FoxPro 2.x 中用 FOXTOOLS 庫, 按以下步驟添加和移除網路連接.
用以下命令載入庫:
SET LIBRARY TO SYS(2004)+'FOXTOOLS.FLL' ADDITIVE
註冊你要調用的 Windows API 函數. 在目前情況下我們要用到的是 WNetAddConnection() 和 WNetCancelConnection().
addconn=RegFn('WNetAddConnection','CCC','I')
delconn=RegFn('WNetCancelConnection','CI','I')
要連接到網路設備, 發佈以下命令:
=CallFn(addconn,"\\SERVER\SHARE","password","<drive>:")
要斷開網路連接, 發佈以下命令:
=CallFn(delconn,"<drive>:",0)
Visual FoxPro
使用 DECLARE DLL 命令定義要調用的 DLL 函數:
**-- DLL 定義
Declare integer WNetAddConnection in WIN32API string,string,string Declare integer Declare integer WNetCancelConnection in WIN32API String,integer
**-- 添加網路連接
=WNetAddConnection("\\SERVER\SHARE", "", "DriveLetter:")
**-- 移除網路連接
=WNetCancelConnection("DriveLetter:",0)
以下資訊提供了這兩個 API 調用的附加的參考材料.
WNetAddConnection()
WNetAddConnection() 函數重定向指定的本地設備 (磁片或列印埠) 為給定的共用設備或遠端設備. 它使用以下參數:
lpszNetPathName
指向以 null 結尾的字串,該字串指定了要連接的網路資源,如 \\Server\Share.
注意: 通常 Novell 用戶不使用 :: 符號來引用伺服器和目錄. 例如, 不要試著用以下方法來引用一個目錄:
\\server\volume::\mydirectory.
而應使用以下方法:
\\server\volume\mydirectory
lpszPassword
指向以 null 結尾的字串,該字串指定了要用來進行連接操作的口令. 該參數通常是與當前用戶相關的口令,如果該參數為 null ,那麼使用缺省口令. 如果該字串為空,則不使用口令(使用一介空串作為占位符):
=CallFn(addconn,"\\SERVER\SHARE","","<drive>:")
lpszLocalName
指向以 null 結尾的字串,該字串指定了要被重定向的本地設備.所有 lpszLocalName 串 (如 LPT1) 是要區分大小寫的. 只使用了設備名 A: 到 Z: 和 設備名 LPT1 到 LPT3.
WNetCancelConnection()
WNetCancelConnection() 函數取消網路連接.它使用以下參數:
lpszName
指向以 null 結尾的字串,該字串指定了重定向的本地設備名 (如 LPT1: 或 D:)或解除連接的遠端網路資源。當該參數指定了一個重定向的本地設備,則該指定的設備的重定向被解除。若該參數指定了 一個遠端網路資源,那麼只有該遠端資源的連接而不是設備被解除。
fForce
指定即使在連接上有打開的檔或任務時,是否任進行中斷連接。 如果該參數為 FALSE ,那麼在有打開的檔或任務時,調用該函數失敗.
參考
關於 WNetAddConnection() 和 WNetCancelConnection() API 調用的更多資訊, 請參閱 Microsoft Windows Software Development Kit (SDK) "程式師參考, 第二卷: 函數,".
注意: API 調用返回值不會被 FoxPro for Windows 轉換.
關於 Visual FoxPro DECLARE 命令細節, 請參閱 "DECLARE - DLL" 幫助主題
原作者: James |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 2 樓
|
發表於: 星期六 五月 24, 2003 6:34 am 文章主題: |
|
|
***********************
func networkinfo &&--傳來何種類別, 傳回可知道的登入網路資訊
* 也可使用 sys(0) 可傳回 : 電腦名稱 # 使用者名稱
Lpara mfunc , mdata1, mdata2
mfunc=lower( mfunc)
Local loNetwork
loNetwork = NewObject('wscript.network')
*使用 WSHom.Ocx
local mret
do case
case mfunc='computername' .or. mfunc='電腦名稱'
mret = loNetwork.ComputerName
case mfunc='domain' .or. mfunc='網域'
mret = loNetwork.UserDomain
case mfunc='username' .or. mfunc='使用者名稱'
mret = loNetwork.UserName
case mfunc='connectdiskid' .or. mfunc='連線磁碟機'
mret =loNetwork.EnumNetworkDrives(iif( ept( mdata1 ),0, mdata1 ) ) &&--第一台, mdata1=0
case mfunc='connectdiskpath' .or. mfunc='連線磁碟路徑'
mret =loNetwork.EnumNetworkDrives(iif( ept( mdata1 ),0, mdata1 )+1)
case mfunc='connectprnid' .or. mfunc='連線連接埠'
mret =loNetwork.EnumPrinterConnections(iif( ept( mdata1 ),0, mdata1 ) ) &&--第一台, mdata1=0
case mfunc='connectprnpath' .or. mfunc='連線連接名稱'
mret =loNetwork.EnumPrinterConnections(iif( ept( mdata1 ),0, mdata1 )+1)
case mfunc='mapdisk' .or. mfunc='設定磁碟機'
* exp : NetworkInfo('MapDisk','T:','\\ntsrv\trade' )
if !ept( mdata2)
mret =loNetwork.MapNetworkDrive( mdata1 , mdata2 )
else
mret =loNetwork.MapNetworkDrive( mdata1 )
endif
case mfunc='removedisk' .or. mfunc='中止磁碟機'
* exp : NetworkInfo('RemoveDisk','T:')
mret =loNetwork.RemoveNetworkDrive( mdata1 )
case mfunc='mapprn' .or. mfunc='設定印表機'
* exp : NetworkInfo('MapPrn','LPT1:','\\ntsrv\Epson' )
if !ept( mdata2)
mret =loNetwork.AddPrinterConnection( mdata1 , mdata2 )
else
mret =loNetwork.AddPrinterConnection( mdata1 )
endif
case mfunc='removeprn' .or. mfunc='中止印表機'
* exp : NetworkInfo('RemovePrn','LPT1:')
mret =loNetwork.RemovePrinterConnection( mdata1 )
case mfunc='defaultprn' .or. mfunc='預設印表機'
* exp : NetworkInfo('DefaultPrn','\\ntsrv\Epson') &&--無法用 LPT1:
mret =loNetwork.SetDefaultPrinter( mdata1 )
endcase
*Set WshNetwork = Wscript.CreateObject("Wscript.Network")
*WshNetwork.MapNetworkDrive "Z:", "\\Server\Share"
*WshNetwork.RemoveNetworkDrive "Z:"
*' No local name mapping, such as: &&--連線磁碟機, 但沒有磁碟代號
*' NET USE \\Server\ShareWshNetwork.RemoveNetworkDrive "\\Server\Share"
* WshNetwork.MapNetworkDrive "\\Server\Share"
* WshNetwork.RemoveNetworkDrive "\\Server\Share"
*!* WshNetwork.AddPrinterConnection "LPT1", "\\Server\Print1"
*!* ' Local name mapped to remote share
*!* WshNetwork.RemovePrinterConnection "LPT1:"
*!* ' No local name mapping. e.g. NET USE "\\Server\Printer1"
*!* WshNetwork.RemovePrinterConnection "\\Server\Printer1"
*!* WshNetwork.SetDefaultPrinter strPrinterName
*!* ' Parameters : strPrinterName
*!* Remote printer name to set as default, such as "\\Server\Printer1". Note that strPrinterName cannot be a local name such as "LPT1:".
Rele loNetwork
return mret _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 3 樓
|
發表於: 星期六 五月 24, 2003 4:39 pm 文章主題: |
|
|
另外一篇WNetAddConnection
在VFP要如何設計,讓使用者可以去 MAP 到一個網路的槽區?
By Visual Foxpro User Club
利用Win32 API中的函式,能夠讓我們在VFP來進行網路槽區的 Mapping。以下的程式碼假設您要讓 M: 對映至Server上的MyDirectory這個分享名稱上:
DECLARE integer WNetAddConnection IN win32api string,string,string
cShare_Name = "\\ServerName\MyDirectory"
nOK = WNetAddConnection(cShare_Name, .NULL., "M:")
IF nOK = 0
WAIT WINDOW cShare_Name +"連結成功!"
ELSE
WAIT WINDOW"無法連結至" + cShare_Name
ENDIF
如果要切斷與網路磁碟機的連結:
DECLARE integer WNetCancelConnection2 IN WIN32API string,INTEGER
IF WNetCancelConnection2("R:",1)
WAIT "網路磁碟機切斷成功!"
ENDIF _________________ #############################
快樂媽咪系列幸福宅配,喝十全雞湯~原來幸福那麼簡單!!
學會VFP使用者社區的搜尋,Code才會更有趣~
############################# |
|
回頂端 |
|
 |
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 4 樓
|
發表於: 星期五 六月 06, 2003 3:50 pm 文章主題: |
|
|
作者梅子
*---探测指定的网络是否有效
PROCEDURE Net_Conn
LOCAL 网络名称,共享数目,网络数组(1)
网络名称="\\zps_zm"
wait wind nowa noclear at (srow()-3)/2,(scol()-60)/2 chr(13)+" 正在与打印服务器建立连接,请稍候... "+chr(13)
共享数目=anetresources(网络数组,"&网络名称",1)
wait clear
retu m.共享数目>0 |
|
回頂端 |
|
 |
goto-dream
註冊時間: 2004-05-11 文章: 909
第 5 樓
|
|
回頂端 |
|
 |
Ruey
註冊時間: 2003-03-12 文章: 1698 來自: tunglo
第 6 樓
|
|
回頂端 |
|
 |
Abel
註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
第 7 樓
|
發表於: 星期五 七月 15, 2005 11:39 am 文章主題: |
|
|
請問各位大大,是否有方法除了知道登錄電腦名稱 # 使用者名稱 外
可以得知 LAN 的 IP 或 WAN 的 IP, 謝謝。 |
|
回頂端 |
|
 |
Abel
註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
第 8 樓
|
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|