




已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VFP中調(diào)用其他應(yīng)用程序的方法在用VFP進(jìn)行應(yīng)用程序設(shè)計(jì)中,經(jīng)常需要調(diào)用其他的應(yīng)用程序。這時(shí)候我們立即會(huì)想到RUN命令。使用RUN命令只需知道應(yīng)用程序的文件名及其路徑即可。下面的示例是以最大化方式啟動(dòng)Windows目錄下的圖畫板程序并同時(shí)打開c:windowsBubbles.bmp文件: RUN/n3 C:WindowsPbrush.exe c:windowsBubbles.bmpRUN命令的參數(shù)用法可以參考Visual FoxPro的幫助文件。但是令人失望的是,在實(shí)際開發(fā)時(shí)我們常常無(wú)法確定所需要啟動(dòng)的應(yīng)用程序的文件名及其安裝的路徑。比如我們需要啟動(dòng)用戶機(jī)器上的瀏覽器并連接到某一個(gè)網(wǎng)址,該機(jī)器可能安裝的是IE,也可能是NetScape,還有可能是其他的瀏覽器軟件,安裝的路徑更是無(wú)從確定。下面給出我在工作中找到的兩種解決方法,這兩種方法都是通過(guò)Win32 API函數(shù)來(lái)解決問(wèn)題,因此其解決思路也可以用到其他編程語(yǔ)言中去。 (一)從注冊(cè)表中獲取被調(diào)用軟件的名稱及路徑。我們只需要提供被調(diào)用的軟件所處理的文件類型(由文件擴(kuò)展名來(lái)確定),即可通過(guò)查找注冊(cè)表中該軟件注冊(cè)的可以處理的文件類型的數(shù)據(jù)項(xiàng)來(lái)得到該軟件的文件名及安裝路徑。*主函數(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& 去掉長(zhǎng)文件名前多出的字符m.cAppName = SUBSTR(m.cAppName,2)ENDIFENDIFRetu LOWER(m.cAppName)ENDPROC* 打開注冊(cè)表PROCEDURE OpenKeyLPARAMETER cLookUpKeyLOCAL nSubKey,nErrCodenSubKey = 0m.nRegKey = HKEY_CLASSES_ROOTnErrCode = RegOpenKey(m.nRegKey,m.cLookUpKey,nSubKey)nCurrentKey = m.nSubKeyENDPROC* 關(guān)閉注冊(cè)表PROCEDURE CloseKey=RegCloseKey(nCurrentKey)nCurrentKey =0ENDPROC* 查詢注冊(cè)表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 = * 得到要打開的文檔在注冊(cè)表中的名稱=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- 在使用這段程序時(shí),使用如下格式的語(yǔ)句:- fullpath=lookreg(doc) & 返回打開doc 文件的軟件名及安裝路徑-靈活運(yùn)用該段程序,可以大大豐富我們?cè)谲浖械谋憩F(xiàn)能力,例如應(yīng)用軟件的菜單中都有一項(xiàng)“關(guān)于本軟件”的功能,該功能調(diào)用的表單一般用來(lái)顯示有關(guān)系統(tǒng)資源及軟件版權(quán)的信息。如果我們要給其中的公司信息加上超文本鏈接使其可以直接訪問(wèn)公司主頁(yè)。就可以在顯示公司信息的Label控件的 Click 事件中使用如下語(yǔ)句:fullpath=lookreg(htm)If allt(fullpath)= =messagebox( 無(wú)法找到瀏覽器以瀏覽公司主頁(yè)!,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)我們雙擊某個(gè)文件時(shí),Windows就會(huì)自動(dòng)啟動(dòng)與該文件相關(guān)聯(lián)的應(yīng)用程序來(lái)對(duì)文件進(jìn)行處理。在這個(gè)過(guò)程中Windows主要使用了一個(gè)名為ShellExecute的Win32 API函數(shù)。我們可以通過(guò)這個(gè)函數(shù)來(lái)直接調(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操作的對(duì)象為 documentnamelpszFile = documentnamelpszParams = * 指定ShellExecute的缺省目錄為c:templpszDir = c:tempfsshowcmd = 0* 執(zhí)行ShellExecute命令LNRETURN = ShellExecute(HWND, lpszOP,lpszFile, lps
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)會(huì)計(jì)學(xué)模擬題
- 自動(dòng)控制原理考試題
- 設(shè)施維護(hù)管理制度(9篇)
- 2024-2025學(xué)年冀教版八年級(jí)下學(xué)期英語(yǔ)期末試卷(含答案)
- 幼兒園《疫情防控安全》教案5篇
- 2023年電大開放教育貨幣銀行學(xué)網(wǎng)考題庫(kù)
- 2025年android自學(xué)教程!BAT等大廠必問(wèn)技術(shù)面試題BAT大廠面試總結(jié)-bat企業(yè)安卓課程
- 期末應(yīng)用題專項(xiàng)訓(xùn)練:分?jǐn)?shù)的加法和減法(含解析)-2024-2025學(xué)年數(shù)學(xué)五年級(jí)下冊(cè)人教版
- 建筑施工特種作業(yè)-建筑電工真題庫(kù)-9
- 日語(yǔ)聽力題目大全及答案
- GB/T 14832-2008標(biāo)準(zhǔn)彈性體材料與液壓液體的相容性試驗(yàn)
- GB/T 1185-2006光學(xué)零件表面疵病
- 工業(yè)管道工程工程量清單項(xiàng)目設(shè)置及計(jì)價(jià)
- 濟(jì)寧市城市介紹家鄉(xiāng)旅游攻略PPT
- 熊浩演講稿全
- 基于MATLAB的控制系統(tǒng)仿真及應(yīng)用-第5章-基于MATLABSimulink的控制系統(tǒng)建模與仿真課件
- 巡檢培訓(xùn)課件.ppt
- 北師大版五下書法《第6課戈字旁》課件
- 國(guó)家開放大學(xué)電大本科《設(shè)施園藝學(xué)》2023-2024期末試題及答案(試卷代號(hào):1329)
- 固廢中心廢氣處理方案
- 關(guān)于地理高考四大能力要求解讀
評(píng)論
0/150
提交評(píng)論