vc中shelleecute函式如何用預設印表機打湧

2022-03-06 10:18:29 字數 5940 閱讀 4731

1樓:沫沫容

1. 函式功能:

你可以給它任何檔案的名字,它都能識別出來並開啟它。

2.函式原型:

hinstance shellexecute(hwnd hwnd,

lpctstr lpoperation,

lpctstr lpfile,

lpctstr lpparameters,lpctstr lpdirectory,

int nshowcmd

);3.引數說明:

hwnd:

用於指定父視窗控制代碼。當函式呼叫過程出現錯誤時,它將作為windows訊息視窗的父視窗。

lpoperation:

用於指定要進行的操作。

「open」操作表示執行由lpfile引數指定的程式,或開啟由lpfile引數指定的檔案或資料夾;

「print」操作表示列印由lpfile引數指定的檔案;

「explore」操作表示瀏覽由lpfile引數指定的資料夾。

2樓:匿名使用者

使用shellexecute列印,它會通過副檔名呼叫預設的開啟程式進行列印。

換句話說,如果是doc文件,就會使用word列印,你的引數為show,還可以看到一個word的開啟過程(會自動關閉)。

而不使用預設印表機,就是因為要列印的文件或者檔案關聯程式指定了使用的印表機(這個和檔案格式有關,比如doc檔案格式中,是可以指定印表機的),所以,如果沒有指定,那麼一定會使用預設印表機,而不使用預設,和程式無關(也管理不了),只能看是文件問題還是關聯程式問題。

vc如何設定預設印表機首選項的預設引數?

3樓:淡忘來了

無法設定,推薦方法: 1、根據需要建立紙張型別:控制面板——印表機——檔案——伺服器屬性——新建格式,按照你的需要建立新的紙張格式; 2、將紙張格式設定為印表機的首選紙張。

3、在程式裡面直接呼叫印表機可 備註:我開發的程式都是這麼做的,因為大部分列印程式對紙張的要求都是相對固定的,不會經常變化。

c語言shellexecute函式的用法

4樓:豔陽高照的午後

shellexecute的功能是執行一個外部程式(或者是開啟一個已註冊的檔案、開啟一個目錄、列印一個檔案等等),並對外部程式有一定的控制。有幾個api函式都可以實現這些功能,但是在大多數情況下shellexecute是更多的被使用的,同時它並不是太複雜。

返回值:

執行成功會返回應用程式控制代碼

返回的hinstance可以將它轉換為一個整數(%d),並比較它的值大於還是小於32或比較它的錯誤**

返回值大於32表示執行成功

返回值小於32表示執行錯誤

返回值可能的錯誤有: = 0

error_file_not_found = 2;

error_path_not_found = 3;

error_bad_format = 11;

se_err_share = 26;

se_err_associncomplete = 27;

se_err_ddetimeout = 28;

se_err_ddefail = 29;

se_err_ddebusy = 30;

se_err_noassoc = 31;

示例:下面的示例演示如何啟動一個應用程式或將文件載入到其關聯的應用程式。windows api shellexecute() 函式是文件的不同於 visual basic shell() 函式,可以將 shellexecute() 函式傳遞的名稱,它將啟動關聯的應用程式,然後將檔名傳遞給應用程式。

在 visual basic 中開始一個新專案。預設情況下,將建立 form1。

將以下**新增到 form1 的通用宣告部分:

option explicit

private declare function shellexecute lib "shell32.dll" alias "shellexecutea" (byval hwnd as long, byval lpszop as string, byval lpszfile as string, byval lpszparams as string,byval lpszdir as string, byval fsshowcmd as long) as long

private declare function getdesktopwindow lib "user32" () as long

const sw_shownormal = 1

const se_err_fnf = 2&

const se_err_pnf = 3&

const se_err_accessdenied = 5&

const se_err_oom = 8&

const se_err_dllnotfound = 32&

const se_err_share = 26&

const se_err_associncomplete = 27&

const se_err_ddetimeout = 28&

const se_err_ddefail = 29&

const se_err_ddebusy = 30&

const se_err_noassoc = 31&

const error_bad_format = 11&

function startdoc(docname as string) as long

dim scr_hdc as long

scr_hdc = getdesktopwindow()

startdoc = shellexecute(scr_hdc, "open", docname, "", "c:\", sw_shownormal)

end function

private sub form_click()

dim r as long, msg as string

r = startdoc("c:\windows\arcade.bmp")

if r <= 32 then 'there was an error

select case r

case se_err_fnf

msg = "file not found"

case se_err_pnf

msg = "path not found"

case se_err_accessdenied

msg = "access denied"

case se_err_oom

msg = "out of memory"

case se_err_dllnotfound

msg = "dll not found"

case se_err_share

msg = "a sharing violation occurred"

case se_err_associncomplete

msg = "incomplete or invalid file association"

case se_err_ddetimeout

msg = "dde time out"

case se_err_ddefail

msg = "dde transaction failed"

case se_err_ddebusy

msg = "dde busy"

case se_err_noassoc

msg = "no association for file extension"

case error_bad_format

msg = "invalid exe file or error in exe image"

case else

msg = "unknown error"

end select

msgbox msg

end if

end sub

特殊用法:

如果將filename引數設定為「http:」協議格式,那麼該函式將開啟預設瀏覽器並連結到指定的url地址。若使用者機器中安裝了多個瀏覽器,則該函式將根據windows 9x/nt登錄檔中http協議處理程式(protocols handler)的設定確定啟動哪個瀏覽器。

格式一:http://**域名

www.neu.edu.cn", "", "", sw_shownormal);

格式二:http://**域名/網頁檔名

sw_shownormal);

如果將filename引數設定為「mailto:」協議格式,那麼該函式將啟動預設郵件客戶程式,如microsoft outlook(也包括microsoft outlook express)或netscape messanger。若使用者機器中安裝了多個郵件客戶程式,則該函式將根據windows 9x/nt登錄檔中mailto協議處理程式的設定確定啟動哪個郵件客戶程式。

格式一:mailto

如:shellexecute(handle,"open", "mailto:", "", "", sw_shownormal);開啟新郵件視窗。

格式二:mailto:使用者賬號@郵件伺服器地址

如:shellexecute(handle, "open"," mailto:who@mail.

neu.edu.cn", "", "", sw_shownormal);開啟新郵件視窗,並自動填入收件人地址。

若指定多個收件人地址,則收件人地址之間必須用分號或逗號分隔開(下同)。

格式三:mailto:使用者賬號@郵件伺服器地址

subject=郵件主題&body=郵件正文

如:shellexecute(handle, 『open』, 『 mailto:who@mail.

neu.edu.cn?

開啟新郵件視窗,並自動填入收件人地址、郵件主題和郵件正文。若郵件正文包括多行文字,則必須在每行文字之間加入換行轉義字元%0a。

例子(delphi):

在一個應用程式呼叫c:\project1.exe;

shellexecute(handle, 'open',"c:\project1.exe",'字串內容',"", sw_shownormal);

在project1.exe裡可以呼叫:

procedure tform1.formcreate(sender: tobject);

var i:integer;

begin

for i:=1 to paramcount do

if paramstr(i)<>'' then showmessage(paramstr(i));

end;

最後的那個引數,為視窗指定可視性方面的一個命令。

請用下述任何一個常數

sw_hide 隱藏視窗,活動狀態給另一個視窗

sw_minimize 最小化視窗,活動狀態給另一個視窗

sw_restore 用原來的大小和位置顯示一個視窗,同時令其進入活動狀態

sw_show 用當前的大小和位置顯示一個視窗,同時令其進入活動狀態

sw_showmaximized 最大化視窗,並將其啟用

sw_showminimized 最小化視窗,並將其啟用

sw_showminnoactive 最小化一個視窗,同時不改變活動視窗

sw_showna 用當前的大小和位置顯示一個視窗,不改變活動視窗

sw_shownoactivate 用最近的大小和位置顯示一個視窗,同時不改變活動視窗

sw_shownormal 與sw_restore相同

vc中winexec使用,VC 中如何呼叫exe

該函式只提供對16位機子的相容。應用程式應該使用createprocess函式。declare function winexec lib kernel32 alias winexec byval lpcmdline as string,byval ncmdshow as long as long 說...

oracle sql中count case函式運用

select a.lastname,isnull count 1 0 from hrmresource a,workflow currentoperator b where a.id b.userid group by a.lastname order by 2 desc 改成這個 select a...

在vc中巨集的作用是什麼,在vc中巨集的作用是什麼?

t使得編譯器會根據編譯目標環境選擇合適的 unicode還是ansi 字元處理方式。原型類似 ifdef unicode enclose constant strings and literal characters in the t macro to make them unicode const...