国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

啟動(dòng)新的應(yīng)用程序

2019-11-17 05:33:22
字體:
供稿:網(wǎng)友

  在for DOS的C語(yǔ)言中,有一個(gè)system()函數(shù),其功能是執(zhí)行命令行程序,在VB中也有shell()函數(shù),在Windows程序設(shè)計(jì)中WinAPI也為我們提供了類似的函數(shù),它們就是WinExec()和ShellExecute(),下面就來討論一下這兩個(gè)函數(shù)的用法。
1)WinExec()
函數(shù)原型: UINT WinExec(LPCSTR lpCmdLine,UINT UCmdShow);
參數(shù)說明:(激活的意思是能接受焦點(diǎn),即標(biāo)題欄變成藍(lán)色)
lpCmdLine:以0結(jié)尾的字符串,命令行參數(shù)。
uCmdShow:新的應(yīng)用程序的運(yùn)行方式。其取值如下:
SW_HIDE隱藏
SW_MAXIMIZE最大化
SW_MINIMIZE最小化,并把Z order順序在此窗口之后(即窗口下一層)的窗口激活
SW_RESTORE激活窗口并還原為初始化大小
SW_SHOW以當(dāng)前大小和狀態(tài)激活窗口
SW_SHOWDEFAULT以默認(rèn)方式運(yùn)行
SW_SHOWMAXIMIZED激活窗口并最大化
SW_SHOWMINIMIZED激活窗口并最小化
SW_SHOWMINNOACTIVE最小化但不改變當(dāng)前激活的窗口
SW_SHOWNA以當(dāng)前狀態(tài)顯示窗口但不改變當(dāng)前激活的窗口
SW_SHOWNOACTIVATE以初始化大小顯示窗口但不改變當(dāng)前激活的窗口
SW_SHOWNORMAL激活并顯示窗口,假如是最大(小)化,窗口將會(huì)還原。第一次運(yùn)行程序 時(shí)應(yīng)該使用這個(gè)值

比如說,我想要用記事本打開"C:/HDC.TXT",以正常方式運(yùn)行:
WinExec("notepad c://hdc.txt",SW_SHOWNORMAL);
假如調(diào)用成功,這個(gè)函數(shù)會(huì)返回一個(gè)不小于31的值,否則調(diào)用失敗,其返回值的意義如下:
0系統(tǒng)內(nèi)存或資源不足
ERROR_BAD_FORMAT.EXE文件格式無(wú)效(比如不是32位應(yīng)用程序)
ERROR_FILE_NOT_FOUND指定的文件設(shè)有找到
ERROR_PATH_NOT_FOUND指定的路徑?jīng)]有找到

這個(gè)函數(shù)和system()非常類似,只能運(yùn)行.EXE文件,這樣在WINDOWS中有它不盡人意的地方,比如不能用此方法通過關(guān)聯(lián)的方法打開文件,例如WinExec("1.Html",SW_SHOWNA);就不能打開此文檔。
2)ShellExecute()
函數(shù)原型:
HINSTANCE ShellExecute( HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd );
參數(shù)說明:
hwnd窗口的句柄
lpOperation進(jìn)行的操作,如"open","PRint","eXPlore"分別對(duì)應(yīng)"打開","打印","游覽", 也可以為空(""),此時(shí)表示進(jìn)行默認(rèn)的操作。 lpFile 要操作的文件。
lpParameters假如lpFile指定的是一個(gè)可執(zhí)行文件則表示參數(shù)
lpDirectory操作進(jìn)行的目錄
nShowCmd程序的運(yùn)行方式,其取值見上例。


假如這個(gè)函數(shù)調(diào)用成功,將返回實(shí)例的句柄,假如不成功,返回值包含錯(cuò)誤信息,由于類型比較多,這里就不一一列舉了,詳見WinApi的幫助。
這樣,上面的例子就可以改變?yōu)?假設(shè)窗口的句柄為Handle)
ShellExecute(Handle,"open","notepad","c://hdc.txt","",SW_SHOWNORMAL);
其實(shí)不用那么復(fù)雜,因?yàn)?TXT的關(guān)聯(lián)程序就是記事本,所以只要這樣就可以了
ShellExecute(Handle,"","c://hdc.txt","","",SW_SHOWNORMAL);
這個(gè)函數(shù)和WIN9X中的命令行命令"start"類似,不光可以對(duì)文件進(jìn)行操作,還可以對(duì)HTTP、MAILTO等進(jìn)行操作。這樣我們就可以設(shè)計(jì)有超級(jí)鏈接風(fēng)格的程序了。

在Form中然后放置兩個(gè)Label,設(shè)置其屬性為:
Name         Caption
lbHomepage   http://www.ccrun.com
lbEMail      mailto:ccrun.com@163.com


并把字體改為藍(lán)色有下劃線,然后分別在兩個(gè)Label的Click事件中加入以下代碼:
ShellExecute(Handle,"",lbHomepage.Caption,"","",SW_SHOWNORMAL);
ShellExecute(Handle,"",lbEMail.Caption,"","",SW_SHOWNORMAL);
OK!試試看,如何?夠酷的吧!
從上面可看出,ShellExecute的功能要強(qiáng)得多,并且可以完全替代WinExec(),事實(shí)上,WinExec()也是為了和以前版本兼容而保留,所以,我們要盡量使用ShellExecute()。其實(shí)在WinAPI中,還有一個(gè)函數(shù)ShellExecuteEx() ,但其使用復(fù)雜,又不支持Windows NT,所以這里就不作介紹了,有愛好的可以自已查詢WinAPI幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鸡西市| 谷城县| 菏泽市| 龙州县| 安西县| 吉首市| 莱阳市| 潜山县| 永年县| 蒙自县| 城固县| 汤原县| 大悟县| 保靖县| 平度市| 龙里县| 青岛市| 马公市| 云南省| 义乌市| 永和县| 白水县| 米易县| 松桃| 卫辉市| 龙川县| 民勤县| 江山市| 建宁县| 合肥市| 本溪| 宝清县| 斗六市| 呼伦贝尔市| 遂宁市| 仙游县| 饶平县| 元朗区| 卢氏县| 济阳县| 莱州市|