VFP中調(diào)用其他應(yīng)用程序的方法_第1頁
VFP中調(diào)用其他應(yīng)用程序的方法_第2頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

VFP中調(diào)用其他應(yīng)用程序的方法在用VFP進(jìn)行應(yīng)用程序設(shè)計(jì)中,經(jīng)常需要調(diào)用其他的應(yīng)用程序。這時候我們立即會想到RUN命令。使用RUN命令只需知道應(yīng)用程序的文件名及其路徑即可。下面的示例是以最大化方式啟動Windows目錄下的圖畫板程序并同時打開c:\windows\Bubbles.bmp文件:RUN/n3C:\Windows\Pbrush.exec:\windows\Bubbles.bmpRUN命令的參數(shù)用法可以參考VisualFoxPro的幫助文件。但是令人失望的是,在實(shí)際開發(fā)時我們常常無法確定所需要啟動的應(yīng)用程序的文件名及其安裝的路徑。比如我們需要啟動用戶機(jī)器上的瀏覽器并連接到某一個網(wǎng)址,該機(jī)器可能安裝的是IE,也可能是NetScape,還有可能是其他的瀏覽器軟件,安裝的路徑更是無從確定。下面給出我在工作中找到的兩種解決方法,這兩種方法都是通過Win32API函數(shù)來解決問題,因此其解決思路也可以用到其他編程語言中去。(一)從注冊表中獲取被調(diào)用軟件的名稱及路徑。我們只需要提供被調(diào)用的軟件所處理的文件類型(由文件擴(kuò)展名來確定),即可通過查找注冊表中該軟件注冊的可以處理的文件類型的數(shù)據(jù)項(xiàng)來得到該軟件的文件名及安裝路徑。*主函數(shù)PROCEDURElookregParameterfiletype&&文件類型*申明要用到的API函數(shù)DECLAREIntegerRegOpenKeyINWin32API;IntegernHKey,String@cSubKey,Integer@nResultDECLAREIntegerRegCloseKeyINWin32API;IntegernHKeyDECLAREIntegerRegQueryvalueExINWin32APIIntegernHKey,StringlpszvalueName,IntegerdwReserved,;Integer@lpdwType,String@lpbData,Integer@lpcbData#DEFINEHKEY_CLASSES_ROOT-2147483648#DEFINEC_EXTNOFOUND_LOC"查找失?。?LOCALcExtn,cAppKey,cAppName,nErrNumLOCALoReg,regfilecAppKey=""cAppName=""nCurrentKey=0nErrNum=GetAppPath(filetype,@cAppKey,@cAppName)*確保去掉可執(zhí)行文件后的參數(shù)(如:C:\EXCEL\EXCEL.EXE/e)IFATC(".EXE",m.cAppName)#0m.cAppName=ALLTRIM(SUBSTR(m.cAppName,1,ATC(".EXE",m.cAppName)+3))IFASC(LEFT(cAppName,1))=34&&去掉長文件名前多出的"字符m.cAppName=SUBSTR(m.cAppName,2)ENDIFENDIFRetuLOWER(m.cAppName)ENDPROC*打開注冊表PROCEDUREOpenKeyLPARAMETERcLookUpKeyLOCALnSubKey,nErrCodenSubKey=0m.nRegKey=HKEY_CLASSES_ROOTnErrCode=RegOpenKey(m.nRegKey,m.cLookUpKey,@nSubKey)nCurrentKey=m.nSubKeyENDPROC*關(guān)閉注冊表PROCEDURECloseKey=RegCloseKey(nCurrentKey)nCurrentKey=0ENDPROC*查詢注冊表PROCEDUREGetKeyvalueLPARAMETERcvalueName,cKeyvalueLOCALlpdwReserved,lpdwType,lpbData,lpcbData,nErrCodeSTORE0TOlpdwReserved,lpdwTypeSTORESPACE(256)TOlpbDataSTORELEN(m.lpbData)TOm.lpcbDatam.nErrCode=RegQueryvalueEx(nCurrentKey,m.cvalueName,;m.lpdwReserved,@lpdwType,@lpbData,@lpcbData)m.cKeyvalue=LEFT(m.lpbData,m.lpcbData-1)ENDPROCPROCEDUREGetAppPathLPARAMETERcExtension,cExtnKey,cAppKeyLOCALcOptNamecOptName=*得到要打開的文檔在注冊表中的名稱=OpenKey("."+m.cExtension)=GetKeyvalue(cOptName,@cExtnKey)=CloseKey()RETURNGetApplication(cExtnKey,@cAppKey)ENDPROC*得到應(yīng)用程序的安裝路徑及名稱PROCEDUREGetApplicationPARAMETERcExtnKey,cAppKeyLOCALcOptNamecOptName=""=OpenKey(m.cExtnKey+"\Shell\Open\Command")=GetKeyvalue(cOptName,@cAppKey)=CloseKey()ENDPROC在使用這段程序時,使用如下格式的語句:fullpath=lookreg("doc")&&返回打開doc文件的軟件名及安裝路徑靈活運(yùn)用該段程序,可以大大豐富我們在軟件中的表現(xiàn)能力,例如應(yīng)用軟件的菜單中都有一項(xiàng)“關(guān)于本軟件”的功能,該功能調(diào)用的表單一般用來顯示有關(guān)系統(tǒng)資源及軟件版權(quán)的信息。如果我們要給其中的公司信息加上超文本鏈接使其可以直接訪問公司主頁。就可以在顯示公司信息的Label控件的Click事件中使用如下語句:fullpath=lookreg("htm")Ifallt(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的Win32API函數(shù)。我們可以通過這個函數(shù)來直接調(diào)用其他程序,徹底拋棄Run命令的方式。FunctionshellstartParametersdocumentname*聲明ShellExecute函數(shù)DECLAREINTEGERShellExecuteINshell32.DLLINTEGERHWND,;STRINGlpszOP,;STRINGlpszFile,;STRINGlpszParams,;STRINGlpszDir,;INTEGERfsshowcmd*指定ShellExecute函數(shù)的輸出指向Windows桌面DECLAREINTEGERGetDesktopWindowINwin32apiHWND=GetDesktopWindow()*指定操作命令為"打開"方式lpszOP="open"*指定ShellExecute操作的對象為documentnamelpszFile=documentnamelpszParams=""*指定ShellExecute的缺省目錄為c:\templpszDir="c:\temp"fsshowcmd=0*執(zhí)行ShellExecute命令LNRETURN=ShellExecute(HWND,lpszOP,lpszFile,lpszPara

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論