pcAnywhere使你能夠遠程控制PC機,如同使用當前計算機一樣的工具。它支持多種連接方式: IP連接,MODEM連接,串口電纜直接連接。除了操作外,它還可以進行文件傳輸、計算機同步等功能。它是計算機遠程控制的王中之王。
PCAnyWhere的使用非常簡單,它的使用方法在網上有非常詳細的介紹,我就不再多說,我介紹一下利用VB驅動PCAnyWhere的方法。
在我的一個項目中有特別的應用,有五個處于不同地方的計算機,有實時數據采集文件,我需要定時拔號上去,將上面的數據文件下載下來,這些數據文件隨時間的不同就有不同,所以沒有辦法做固定的自動文件傳輸,為此我分別研究了軟件提供script與OLE白皮書,最終決定選用OLE。
一、利用OLE進行遠程連接
在OLE白皮書上,將OLE驅動寫得十分明白,我只要將我的連接代碼帖上來,應該十分明白。
1、 檢查MODEM是否在使用,由于PCAnyWhere啟動后不能再由程序控制,我們必須檢查MODEM是否是空閑才能確保拔號可以順利外拔。檢查MODEM空閑可能通過打開MODEM所在的串口是否成功來判斷。
2、 生成RemoteDataManager對象
3、 進入C:Documents and SettingsAll UsersApplication DataSymantecpcAnywhere,由于PCAnyWhere安裝時將配置文件都放在這個目錄下,我們將運行路徑切換到這個目錄下,可以更方便地使用。
4、 生成RemoteData對象,這要求在配置文件路徑下有對應CHF文件上,這是在PCAnyWhere中配置的,只要名稱與連接方式相同就可以了。
5、 設置拔號的電話號碼,設置登錄的用戶名與密碼,設置進行自動傳輸的ATF文件,并將RunOnConnect設為TRUE,并將這此配置的修改進行保存。
6、 開始拔號并自動傳輸文件。
7、 延時,判斷MODEM是否空閑,空閑則這一次拔號、文件傳輸完畢(也有可能失敗)。判斷已下載的文件,如果修改時間已更新,則這次是成功的。否則是失敗的。
8、 將RemoteData、RemoteDataManager對象釋放。
9、 拔下一個點。
If checkMODEMIdle Then showBegin '顯示開始信息 'Create CRemoteDataManager object Set RemoteDataManager = CreateObject("WINAWSVR.RemoteDataManager") RemoteDataManager.ChangeDirectory "C:Documents and SettingsAll UsersApplication DataSymantecpcAnywhere" S = RemoteDataManager.CurrentDirectory() CHFile = xProfile.GetValue(WatchPoint(nowRunID), "CHFFILE") '用于拔號的配置 Set RemoteData = RemoteDataManager.RetrieveObject(CHFile, 2, 0) RemoteData.PhoneNumber = xProfile.GetValue(WatchPoint(nowRunID), "PHONENUM") RemoteData.AutoXferFile = filename RemoteData.AutoLoginName = xProfile.GetValue(WatchPoint(nowRunID), "USERNAME") RemoteData.AutoLoginPassword = xProfile.GetValue(WatchPoint(nowRunID), "PSW") RemoteData.RunOnConnect = True RemoteData.WriteObject (0) S = RemoteData.PhoneNumber RemoteData.Launch Sleep 30000 Do If checkMODEMIdle Then Exit Do DoEvents Sleep 5000 Loop '取文件結束,要進行轉存處理 moveDBFData localpath Set RemoteData = Nothing Set RemoteDataManager = Nothing nowRunID = nowRunID + 1 End If |
注意:一次完畢后必須將RemoteData、RemoteDataManager對象釋放,不然會出現錯亂的現象。
好了,拔號自動文件傳輸已經實現了,但這個文件傳輸是在PCANYWHERE中配置好的不變的自動文件傳輸,不能實現我要的根據時間不同下載不同文件的要求。