




已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
VFP中調(diào)用其他應(yīng)用程序的方法在用VFP進(jìn)行應(yīng)用程序設(shè)計中,經(jīng)常需要調(diào)用其他的應(yīng)用程序。這時候我們立即會想到RUN命令。使用RUN命令只需知道應(yīng)用程序的文件名及其路徑即可。下面的示例是以最大化方式啟動Windows目錄下的圖畫板程序并同時打開c:windowsBubbles.bmp文件: RUN/n3 C:WindowsPbrush.exe c:windowsBubbles.bmpRUN命令的參數(shù)用法可以參考Visual FoxPro的幫助文件。但是令人失望的是,在實際開發(fā)時我們常常無法確定所需要啟動的應(yīng)用程序的文件名及其安裝的路徑。比如我們需要啟動用戶機(jī)器上的瀏覽器并連接到某一個網(wǎng)址,該機(jī)器可能安裝的是IE,也可能是NetScape,還有可能是其他的瀏覽器軟件,安裝的路徑更是無從確定。下面給出我在工作中找到的兩種解決方法,這兩種方法都是通過Win32 API函數(shù)來解決問題,因此其解決思路也可以用到其他編程語言中去。 (一)從注冊表中獲取被調(diào)用軟件的名稱及路徑。我們只需要提供被調(diào)用的軟件所處理的文件類型(由文件擴(kuò)展名來確定),即可通過查找注冊表中該軟件注冊的可以處理的文件類型的數(shù)據(jù)項來得到該軟件的文件名及安裝路徑。*主函數(shù)PROCEDURE lookregParameter filetype & 文件類型* 申明要用到的API 函數(shù)DECLARE Integer RegOpenKey IN Win32API ;Integer nHKey, String cSubKey,Integer nResultDECLARE Integer RegCloseKey IN Win32API ;Integer nHKeyDECLARE Integer RegQueryvalueEx IN Win32API ;Integer nHKey, String lpszvalueName,Integer dwReserved,;Integer lpdwType, String lpbData,Integer lpcbData#DEFINE HKEY_CLASSES_ROOT-2147483648#DEFINE C_EXTNOFOUND_LOC 查找失??!LOCAL cExtn,cAppKey,cAppName,nErrNumLOCAL oReg,regfilecAppKey = cAppName = nCurrentKey = 0nErrNum =GetAppPath(filetype,cAppKey,cAppName)* 確保去掉可執(zhí)行文件后的參數(shù)(如: C:EXCELEXCEL.EXE /e)IF ATC(.EXE,m.cAppName) #0m.cAppName= ALLTRIM(SUBSTR(m.cAppName,1,ATC(.EXE,m.cAppName)+3)IF ASC(LEFT(cAppName,1)=34& 去掉長文件名前多出的字符m.cAppName = SUBSTR(m.cAppName,2)ENDIFENDIFRetu LOWER(m.cAppName)ENDPROC* 打開注冊表PROCEDURE OpenKeyLPARAMETER cLookUpKeyLOCAL nSubKey,nErrCodenSubKey = 0m.nRegKey = HKEY_CLASSES_ROOTnErrCode = RegOpenKey(m.nRegKey,m.cLookUpKey,nSubKey)nCurrentKey = m.nSubKeyENDPROC* 關(guān)閉注冊表PROCEDURE CloseKey=RegCloseKey(nCurrentKey)nCurrentKey =0ENDPROC* 查詢注冊表PROCEDURE GetKeyvalueLPARAMETER cvalueName,cKeyvalueLOCAL lpdwReserved,lpdwType,lpbData,lpcbData,nErrCodeSTORE 0 TO lpdwReserved,lpdwTypeSTORE SPACE(256) TO lpbDataSTORE LEN(m.lpbData) TO m.lpcbDatam.nErrCode=RegQueryvalueEx(nCurrentKey,m.cvalueName,;m.lpdwReserved,lpdwType,lpbData,lpcbData)m.cKeyvalue = LEFT(m.lpbData,m.lpcbData-1)ENDPROCPROCEDURE GetAppPathLPARAMETER cExtension,cExtnKey,cAppKeyLOCAL cOptNamecOptName = * 得到要打開的文檔在注冊表中的名稱=OpenKey(.+m.cExtension)=GetKeyvalue(cOptName,cExtnKey)=CloseKey()RETURN GetApplication(cExtnKey,cAppKey)ENDPROC* 得到應(yīng)用程序的安裝路徑及名稱PROCEDURE GetApplicationPARAMETER cExtnKey,cAppKeyLOCAL cOptNamecOptName = =OpenKey(m.cExtnKey+ShellOpenCommand)=GetKeyvalue(cOptName,cAppKey)=CloseKey()ENDPROC- 在使用這段程序時,使用如下格式的語句:- fullpath=lookreg(doc) & 返回打開doc 文件的軟件名及安裝路徑-靈活運(yùn)用該段程序,可以大大豐富我們在軟件中的表現(xiàn)能力,例如應(yīng)用軟件的菜單中都有一項“關(guān)于本軟件”的功能,該功能調(diào)用的表單一般用來顯示有關(guān)系統(tǒng)資源及軟件版權(quán)的信息。如果我們要給其中的公司信息加上超文本鏈接使其可以直接訪問公司主頁。就可以在顯示公司信息的Label控件的 Click 事件中使用如下語句:fullpath=lookreg(htm)If allt(fullpath)= =messagebox( 無法找到瀏覽器以瀏覽公司主頁!,64,)retuElsefullpath=subst(fullpath,1,rat(.,fullpath)-1)+space(2)+;RUN/n3 &fullpathEndif- (二)利用Windows 的文檔關(guān)聯(lián)特性直接調(diào)用。-我們知道,Windows是一種面向文檔的操作系統(tǒng)。當(dāng)我們雙擊某個文件時,Windows就會自動啟動與該文件相關(guān)聯(lián)的應(yīng)用程序來對文件進(jìn)行處理。在這個過程中Windows主要使用了一個名為ShellExecute的Win32 API函數(shù)。我們可以通過這個函數(shù)來直接調(diào)用其他程序,徹底拋棄Run 命令的方式。Function shellstartParameters documentname* 聲明ShellExecute函數(shù)DECLARE INTEGER ShellExecute INshell32.DLL INTEGER HWND,;STRING lpszOP, ;STRING lpszFile, ;STRING lpszParams, ;STRING lpszDir, ;INTEGER fsshowcmd* 指定ShellExecute函數(shù)的輸出指向Windows桌面DECLARE INTEGER GetDesktopWindow IN win32apiHWND = GetDesktopWindow()*指定操作命令為打開方式lpszOP = open* 指定ShellExecute操作的對象為 documentnamelpszFile = documentnamelpszParams = * 指定ShellExecute的缺省目錄為c:templpszDir = c:tempfsshowcmd = 0* 執(zhí)行ShellExecute命令LNRETURN = ShellExecute(HWND, lpszOP,lpszFile, lps
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 頂崗老師班會課件模板
- 金屬冶煉負(fù)責(zé)人安管人員培訓(xùn)
- 音樂課國防教育課件
- 水肌酸產(chǎn)品項目運(yùn)營管理方案
- 電網(wǎng)側(cè)獨立儲能示范項目經(jīng)濟(jì)效益和社會效益分析報告
- 城鎮(zhèn)污水管網(wǎng)建設(shè)項目人力資源管理方案(模板范文)
- xx片區(qū)城鄉(xiāng)供水一體化項目建設(shè)管理方案
- 先進(jìn)金屬材料行動計劃
- 無人駕駛配送車輛定位精度提升
- 2025年井下多功能測振儀項目建議書
- 建筑工程文件歸檔管理明細(xì)表
- 如何解讀血常規(guī)報告
- 區(qū)域消防安全風(fēng)險評估規(guī)程DB50-T 1114-2021
- 免疫調(diào)節(jié)治療在腦卒中的運(yùn)用課件
- DB32∕T 186-2015 建筑消防設(shè)施檢測技術(shù)規(guī)程
- 機(jī)關(guān)檔案管理工作培訓(xùn)PPT課件
- 油輪、化學(xué)品船的基本知識
- 25T汽車吊檢驗報告
- 變頻空調(diào)中的永磁電機(jī)電感分析
- 高考??颊Z法填空詞性轉(zhuǎn)換匯總
- AOI自動光學(xué)檢測設(shè)備程序編寫
評論
0/150
提交評論