線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2113
推到 Plurk!
推到 Facebook!

如何呼叫出控制台的印表機?

 
ok2002
一般會員


發表:3
回覆:8
積分:2
註冊:2002-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-06-19 14:02:28 IP:61.220.xxx.xxx 未訂閱
如何呼叫出控制台的印表機? 並不是印表列印! 謝謝!
jck1
一般會員


發表:53
回覆:67
積分:24
註冊:2002-05-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-06-20 11:44:20 IP:211.22.xxx.xxx 未訂閱
引言: 如何呼叫出控制台的印表機? 並不是印表列印! 謝謝!
陳寬達先生的書上有提到 用 winexec('rundll32.exe shell32.dll,Control_RunDLL xx.cpl,yy', SW_NORMAL); 其中xx是印表機的cpl yy是元件編號 但我找了一下winnt/system32下的cpl 好像找不到printer是屬於哪一個cpl哩 ????
ok2002
一般會員


發表:3
回覆:8
積分:2
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-06-21 00:59:34 IP:61.228.xxx.xxx 未訂閱
我也是曾經找過cpl,就是找不到? 還有其他的方法嗎?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-06-21 07:56:44 IP:211.22.xxx.xxx 未訂閱
如果是要呼加新增 Printer 的對話方塊
uses ShellApi;
begin
  ShellExecute(handle, nil, 'rundll32.exe', 
  'shell32.dll,SHHelpShortcuts_RunDLL AddPrinter', '',SW_SHOWNORMAL); 
end;
This piece of code was corrected from old code to call rundll32.exe to has compatibility with Win9x and WinNT.
ok2002
一般會員


發表:3
回覆:8
積分:2
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-06-21 21:49:30 IP:61.228.xxx.xxx 未訂閱
謝謝! 但我是想呼叫已有印表機的裝置,觀看印表機的內容
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-06-24 09:40:41 IP:211.22.xxx.xxx 未訂閱
找到了, 答案如下:
uses ShellApi, ShlObj;
procedure TForm1.Button5Click(Sender: TObject);
var
  PIDL:PItemIDList;
  Info:TShellExecuteInfo;
  pInfo:PShellExecuteInfo;
  WaitCode:DWord;
begin
  {Obtenemos PIDL de la carpeta virtual}
  {get PIDL of the virtual folder}
  SHGetSpecialFolderLocation(Handle,
                             CSIDL_PRINTERS,
                             PIDL);
  {Puntero a Info}
  {Pointer to Info}
  pInfo := @Info;
  {Rellenamos Info}
  {Fill info}
  With Info do begin
    cbSize := SizeOf(Info);
    fMask := SEE_MASK_NOCLOSEPROCESS 
             SEE_MASK_IDLIST;
    wnd := Handle;
    lpVerb := nil;
    lpFile := nil;
    {Parametros al ejecutable}
    {Executable parameters}
    lpParameters := nil;
    lpDirectory := nil;
    nShow := SW_ShowNormal;
    hInstApp := 0;
    lpIDList := PIDL;
  end;
  {Ejecutamos}
  {Execute}
  ShellExecuteEx(pInfo);
  {Esperamos que termine}
  {Wait to finish}
  repeat
    WaitCode := WaitForSingleObject(Info.hProcess, 500);
    Application.ProcessMessages;
  until (WaitCode <> WAIT_TIMEOUT);
end;
ok2002
一般會員


發表:3
回覆:8
積分:2
註冊:2002-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-06-24 22:27:40 IP:61.228.xxx.xxx 未訂閱
OK了!謝謝你! 幫我解惑也,感恩!
系統時間:2024-04-20 15:27:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!