版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第第頁檢測打印機(jī)待打印文檔
306、如何得知某一臺(tái)網(wǎng)絡(luò)打印機(jī)尚有幾份等待打印的報(bào)表?
307、如何每天下載Internet上某一個(gè)網(wǎng)頁中的圖片來更換桌面的圖案?
308、如何呼叫系統(tǒng)的掌握面板?
309、如何完全模擬系統(tǒng)的掌握面板?
310、如何設(shè)定MsgBo*在假設(shè)干時(shí)間之后假設(shè)無回應(yīng)那么自動(dòng)關(guān)閉?
306、如何得知某一臺(tái)網(wǎng)絡(luò)打印機(jī)尚有幾份等待打印的報(bào)表?
當(dāng)我們要打印報(bào)表時(shí),假如打印機(jī)是本機(jī)的打印機(jī)的話,當(dāng)然立刻就會(huì)將報(bào)表打印出來,反正打印機(jī)就只有您一個(gè)人在運(yùn)用而已!但是假如是在一個(gè)人數(shù)許多的公司或企業(yè)時(shí),往往就需要許多人來共享某一部打印機(jī)了,而且打印機(jī)也不肯定就放在舉目可及之處!
當(dāng)您將報(bào)表丟到網(wǎng)絡(luò)打印機(jī)之后,由于不肯定看得到打印機(jī),您需要特別到擺放打印機(jī)的地方去拿報(bào)表,這時(shí)候您最關(guān)懷的,就是報(bào)表印了沒有,假如還沒有的話,那還有幾份還沒打印的報(bào)表排在您的報(bào)表之前呢?
下面這一段程序,可以讓您知道某一臺(tái)網(wǎng)絡(luò)打印機(jī)尚有幾份等待打印的報(bào)表?在您的程序丟出報(bào)表的同時(shí),您可以告知您的User,他的報(bào)表排在第幾份!
'在.bas文件中加入以下聲明及模組:
'ConstantsDefinition
PublicConstCCHDEVICENAME=32
PublicConstCCHFORMNAME=32
PublicConstPRINTER_ACCESS_ADMINISTER=H4
PublicConstPRINTER_ACCESS_USE=H8
'TypesDefinition
PublicTypeDEVMODE
dmDeviceNameAsString*CCHDEVICENAME
dmSpecVersionAsInteger
dmDriverVersionAsInteger
dmSizeAsInteger
dmDriverE*traAsInteger
dmFieldsAsLong
dmOrientationAsInteger
dmPaperSizeAsInteger
dmPaperLengthAsInteger
dmPaperWidthAsInteger
dmScaleAsInteger
dmCopiesAsInteger
dmDefaultSourceAsInteger
dmPrintQualityAsInteger
dmColorAsInteger
dmDuple*AsInteger
dmYResolutionAsInteger
dmTTOptionAsInteger
dmCollateAsInteger
dmFormNameAsString*CCHFORMNAME
dmUnusedPaddingAsInteger
dmBitsPerPelAsLong
dmPelsWidthAsLong
dmPelsHeightAsLong
dmDisplayFlagsAsLong
dmDisplayFrequencyAsLong
EndType
PublicTypePRINTER_DEFAULTS
pDatatypeAsString
pDevModeAsDEVMODE
DesiredAccessAsLong
EndType
'APIDeclarations
PublicDeclareFunctionOpenPrinterLibwinspool.drvAliasOpenPrinterA(ByValpPrinterNameAsString,phPrinterAsLong,pDefaultAsPRINTER_DEFAULTS)AsLong
PublicDeclareFunctionEnumJobsLibwinspool.drvAliasEnumJobsA(ByValHPrinterAsLong,ByValFirstJobAsLong,ByValNoJobsAsLong,ByValLevelAsLong,pJobAsByte,ByValcdBufAsLong,pcbNeededAsLong,pcReturnedAsLong)AsLong
PublicDeclareFunctionCloseHandleLibkernel32(B
yValhObjectAsLong)AsLong
'取得指定的打印機(jī),目前有多少Jobs(最大值為128)
'打印機(jī)的名稱可以是mapping的網(wǎng)絡(luò)路徑名稱,例如:\\myserver\myprinter
FunctionGet
PrinterQueue(PrinterNameAsString)AsLong
DimPrinterStructAsPRINTER_DEFAULTS
DimHPrinterAsLong
DimretAsBoolean
DimJobStruct(0To127)AsByte
DimpcbNeededAsLong
DimpcReturnedAsLong
DimTempByteAsByte
'設(shè)定Printerstructure初值
PrinterStruct.pDatatype=vbNullString
PrinterStruct.pDevMode.dmSize=Len(PrinterStruct.pDevMode)
PrinterStruct.DesiredAccess=PRINTER_ACCESS_USE
'取得打印機(jī)的Handle
ret=OpenPrinter(PrinterName,HPrinter,PrinterStruct)
'取得打印機(jī)的activejobs
ret=EnumJobs(HPrinter,0,127,1,TempByte,0,pcbNeeded,pcReturned)
IfpcbNeeded=0Then
GetPrinterQueue=0
Else
ret=EnumJobs(HPrinter,0,127,1,JobStruct(0),pcbNeeded,pcbNeeded,pcReturned)
GetPrinterQueue=pcReturned
EndIf
'關(guān)閉打印機(jī)
ret=CloseHandle(HPrinter)
EndFunction
'在表單中放一個(gè)CommandButton,程序碼如下:
PrivateSubCommand1_Click()
'測試預(yù)設(shè)打印機(jī)的Queue(Printer.DeviceName)
Msgbo*打印機(jī)中尚有GetPrinterQueue(Printer.DeviceName)份報(bào)表,64,訊息
EndSub
'好了,試試看吧!
307、如何每天下載Internet上某一個(gè)網(wǎng)頁中的圖片來更換桌面的圖案?
有些處理圖片的軟件,尤其是可以處理桌面圖片的軟件,會(huì)提供您每天自動(dòng)到Internet上的某一個(gè)網(wǎng)址,去下載它的網(wǎng)站所提供,每天更換的圖片,來更改桌面的底圖,這是一個(gè)很炫的功能,而我們用VB也可以很簡單的做到這樣的功能,您相信嗎?
這個(gè)主題會(huì)運(yùn)用到之前我們提過的幾個(gè)功能:
問題:如何讓程序在Windows啟動(dòng)時(shí)自動(dòng)執(zhí)行?
問題:如何從Internet上下載某一個(gè)網(wǎng)頁的內(nèi)容?
問題:如何移除或更改桌面背景的底色圖案(Wallpaper)?
讓我們徑直來練習(xí)吧!
'請?jiān)?BAS中加入以下聲明:
PrivateDeclareFunctionSystemParametersInfoLibuser32AliasSystemParametersInfoA(ByValuActionAsLong,ByValuParamAsLong,ByVallpvParamAsAny,ByValfuWinIniAsLong)AsLong
ConstSPI_SETDESKWALLPAPER=20
ConstSPIF_UPDATEINIFILE=H1
ConstSPIF_SENDWININICHANGE=H2
'請?jiān)诒韱沃蟹湃胍粋€(gè)Te*tBo*及一個(gè)InternetTransferControl
PrivateSubForm_Load()
DimPosAsInteger
DimPos2AsInteger
DimBilden()AsByte
DimNrStringAsString
Te*t1.Te*t=Inet1.OpenURL(/)'Downloadthepage.
Pos=InStr(1,Te*t1.Te*t,/preblem/61-80)
Pos2=InStr(Pos,Te*t1.Te*t,.gif)
NrString=Mid(Te*t1.Te*t,Pos,Pos2-Pos)
Te*t1.Te*t=+NrString+.gif'Debugfilename
Bilden()=Inet1.OpenURL(+NrString+.gif,icByteArray)'Downloadpicture.
OpenC:\dilbert.gifForBinaryAccessWriteAs#1'Savethefile.
Put#1,,Bilden()
Close#1
Picture1.Pi
cture=LoadPicture(c:\dilbert.gif)'ReloaditToPictureBo*
SavePicturePicture1.Picture,c:\dilbert.bmp'ConvertedTo
bmp..
CallSystemParametersInfo(SPI_SETDESKWALLPAPER,0,c:\dilbert.bmp,SPIF_UPDATEINIFILEOrSPIF_SENDWININICHANGE)'Changethewallpaper.
UnloadMe'E*itprogram
EndSub
至于其中的網(wǎng)址及圖片的文件名,請自行更改。假設(shè)是您徑直運(yùn)用以上的程序碼的話,也可以,您每天都可以看到一篇漫畫!!
308、如何呼叫系統(tǒng)的掌握面板?
在Windows的系統(tǒng)中,從許多地方,您有許多方式去叫出系統(tǒng)的掌握面板,例如從【我的電腦】、【資源管理器】或是【開始】功能表中的【設(shè)置】選項(xiàng)中都可以看到掌握面板。
運(yùn)用VB您也可以在程序中叫出掌握面板來運(yùn)用!而且程序碼很簡約,只要一行就可以了,如下:
PrivateSubCommand1_Click()
Shellrundll32.e*eshell32.dll,Control_RunDLL,vbNormalFocus
EndSub
上面的程序碼,不管您是運(yùn)用Windows95/98/NT都可以適用的!
309、如何完全模擬系統(tǒng)的掌握面板?
在上一個(gè)主題:如何呼叫系統(tǒng)的掌握面板?中,我們告知您如何徑直叫用系統(tǒng)的掌握面板,但是,假如您只是想要叫用掌握面板中的某一個(gè)單一功能設(shè)定畫面的話,您也可以做到的!
其實(shí),掌握面板的那么多的功能,是分別叫用您電腦中的一些擴(kuò)展文件名為.CPL的文件,這些文件在Windows95/98/NT中存放的位置有一些不同,分別說明如下:
Windows95/98:文件位置在c:\windows\system
WindowsNT:文件位置在c:\winnt\system32
下面的程序碼以Windows98為例來說明,假如您是在WindowsNT中,請自行略微修改。在表單上放一個(gè)CommandButton及一個(gè)FileListBo*,程序碼如下:
PrivateSubForm_Load()
File1.Pattern=*.CPL
File1.FileName=C:\WINdows\SYSTEM'假設(shè)是NT的話請改這里
EndSub
PrivateSubCommand1_Click()
Shellrundll32.e*eshell32.dll,Control_RunDLLFile1.FileName,vbNormalFocus
EndSub
好了,別驚異,程序碼就是這么短而已!請先在FileListBo*中選擇一個(gè)文件,每一個(gè)文件分別代表掌握面板中的某一個(gè)功能設(shè)定程序,然后按下Command1就可以執(zhí)行了!
310、如何設(shè)定MsgBo*在假設(shè)干時(shí)間之后假設(shè)無回應(yīng)那么自動(dòng)關(guān)閉?
在我們的印象中,VB所提供的MsgBo*是一個(gè)強(qiáng)制回應(yīng)的視窗,您肯定要按了其中的某一個(gè)CommandButton之后,它才會(huì)關(guān)閉!但是在某些軟體中,我們會(huì)看到,明明是運(yùn)用系統(tǒng)的MsgBo*,可是您假如不理它,幾秒鐘之后,它就自行關(guān)閉了!別人是如何做到的呢?這個(gè)問題偶而會(huì)涌現(xiàn)在
爭論區(qū)中,有的人會(huì)回答:
只要自己做一個(gè)類似MsgBo*的視窗,就可以自己用Timer來掌握這個(gè)視窗何時(shí)要關(guān)閉了!
但是,其實(shí)不用這么麻煩的,只要運(yùn)用系統(tǒng)的MsgBo*再加一個(gè)Timer就可以掌握了!
我們都知道MsgBo*可以設(shè)定成許多不同的樣子,
可以有許多不同的圖示,不同的按鈕,其中掌握按鈕的部份,可以設(shè)定的常數(shù)如下:
常數(shù)值說明
vbOKOnly0只顯示OK按鈕。
VbOKCancel1顯示OK及Cancel按鈕。
VbAbortRetryIgnore2顯示Abort、Retry及Ignore按鈕。
VbYesNoCancel3顯示Yes、No及Cancel按鈕。
VbYesNo4顯示Yes及No按鈕。
VbRetryCancel5顯示Retry及Cancel按鈕。
為什么要特別提到MsgBo*的常數(shù)呢?由于下面我們要告知您的方法,還是有一點(diǎn)點(diǎn)限制的!當(dāng)您設(shè)定的常數(shù)是VbAbortRetryIgnore或VbYesNo時(shí),下面的方法也是沒用的!
'在表單的聲明區(qū)中加入以下的聲明
PrivateDeclareFunctionFindWindowLibuser32AliasFindWindowA(ByVallpClassNameAsString,ByVallpWindowNameAsString)AsLong
PrivateDeclareFunctionSendMessageLibuser32AliasSendMessageA(ByValhWndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
PrivateConstWM_CLOSE=H10
PrivateConstMsgTitleAsString=TestMessage
'在表單中加入一個(gè)CommandButton及一個(gè)Timer掌握項(xiàng),加入以下程序碼:
PrivateSubCommand1_Click()
DimnRetAsLong
Timer1.Interval=3000
Timer1.Enabled=True
nRet=MsgBo*(假設(shè)您不回應(yīng)的話,3秒后此MsgBo*會(huì)自動(dòng)關(guān)閉,64,MsgTitle)
Timer1.Enabled=False
EndSub
PrivateSubTimer1_Timer()
DimhWndAsLong
hWnd=FindWindow(vbNullString,MsgTitle)
CallSendMessage(hWnd,WM_CLOSE,0,ByVal0)
EndSub
好了,很簡
單吧!您執(zhí)行程序時(shí),當(dāng)MsgBo*涌現(xiàn)3秒之后,就會(huì)自動(dòng)關(guān)閉了!
留意:此方法的限制說明:
1、當(dāng)常數(shù)設(shè)定為VbAbortRetryIgnore或VbYesNo時(shí),無效!
2、在DesignTime時(shí),無效,需要MakeE*E之后才有效!
306、如何得知某一臺(tái)網(wǎng)絡(luò)打印機(jī)尚有幾份等待打印的報(bào)表?
307、如何每天下載Internet上某一個(gè)網(wǎng)頁中的圖片來更換桌面的圖案?
308、如何呼叫系統(tǒng)的掌握面板?
309、如何完全模擬系統(tǒng)的掌握面板?
310、如何設(shè)定MsgBo*在假設(shè)干時(shí)間之后假設(shè)無回應(yīng)那么自動(dòng)關(guān)閉?
306、如何得知某一臺(tái)網(wǎng)絡(luò)打印機(jī)尚有幾份等待打印的報(bào)表?
當(dāng)我們要打印報(bào)表時(shí),假如打印機(jī)是本機(jī)的打印機(jī)的話,當(dāng)然立刻就會(huì)將報(bào)表打印出來,反正打印機(jī)就只有您一個(gè)人在運(yùn)用而已!但是假如是在一個(gè)人數(shù)許多的公司或企業(yè)時(shí),往往就需要許多人來共享某一部打印機(jī)了,而且打印機(jī)也不肯定就放在舉目可及之處!
當(dāng)您將報(bào)表丟到網(wǎng)絡(luò)打印機(jī)之后,由于不肯定看得到打印機(jī),您需要特別到擺放打印機(jī)的地方去拿報(bào)表,這時(shí)候您最關(guān)懷的,就是報(bào)表印了沒有,假如還沒有的話,那還有幾份還沒打印的報(bào)表排在您的報(bào)表之前呢?
下面這一段程序,可以讓您知道某一臺(tái)網(wǎng)絡(luò)打印機(jī)尚有幾份等待打印的報(bào)表?在您的程序丟出報(bào)表的同時(shí),您可以告知您的User,他的報(bào)表排在第幾份!
'在.bas文件中加入以下聲明及模組:
'ConstantsDefinition
PublicConstCCHDEVICENAME=32
PublicConstCCHFORMNAME=32
PublicConstPRINTER_ACCESS_ADMINISTER=H4
PublicConstPRINTER_ACCESS_USE=H8
'TypesDefinition
PublicTypeDEVMODE
dmDeviceNameAsString*CCHDEVICENAME
dmSpecVersionAsInteger
dmDriverVersionAsInteger
dmSizeAsInteger
dmDriverE*traAsInteger
dmFieldsAsLong
dmOrientationAsInteger
dmPaperSizeAsInteger
dmPaperLengthAsInteger
dmPaperWidthAsInteger
dmScaleAsInteger
dmCopiesAsInteger
dmDefaultSourceAsInteger
dmPrintQualityAsInteger
dmColorAsInteger
dmDuple*AsInteger
dmYResolutionAsInteger
dmTTOptionAsInteger
dmCollateA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年廢舊材料銷售框架合同
- 文書模板-裝卸貨高空作業(yè)合同
- 2024年建筑工程分包合同
- 玫瑰的課件教學(xué)課件
- 2024年人工智能教育平臺(tái)開發(fā)合同
- 2024醫(yī)療設(shè)備維修公司關(guān)于超聲波機(jī)器保修服務(wù)合同
- 停電停氣應(yīng)急預(yù)案(6篇)
- 2024年建筑工程機(jī)電安裝分包協(xié)議
- 2024年庫房租賃與無人機(jī)測試存放合同
- 2024年專業(yè)咨詢合作協(xié)議
- 市場營銷-農(nóng)夫山泉營銷策略研究
- 施工臨時(shí)用電定期檢查制度(匯編)
- 《公共藝術(shù)-音樂篇》教案
- 大同市云州區(qū)殯儀服務(wù)館和公益性骨灰堂建設(shè)項(xiàng)目環(huán)評報(bào)告
- 《一線帶班》讀書分享
- (完整版)政府項(xiàng)目申報(bào)及激勵(lì)管理辦法3
- 護(hù)士護(hù)理VTE相關(guān)知識(shí)考試試題及答案
- 連接器手冊(中文版)
- 中小學(xué)主題班會(huì)-《科普知識(shí)主題班會(huì)》課件
- 鈣(粉)化學(xué)品安全技術(shù)說明書MSDS
- 小兒麻醉并發(fā)癥
評論
0/150
提交評論