2009-10-08 23 views
5

Tôi muốn (có lập trình) các tài liệu in các loại khác nhau, bằng cách yêu cầu Windows làm việc đó (sử dụng ứng dụng được liên kết mặc định). Làm thế nào tôi có thể thực hiện điều này (trong .NET hoặc C++/Win32 API)?Tôi làm cách nào để yêu cầu Windows in tài liệu?

Ví dụ: nếu tôi đã cài đặt MS Office và Acrobat Reader trên máy, tệp PDF phải được Acrobat Reader in và các tệp DOC sẽ được in bằng MS Word. Nhưng nếu tôi không cài đặt MS Office, các tệp DOC sẽ được in bằng Wordpad hoặc OpenOffice.org Writer nếu sau này được cài đặt hoặc bất kỳ ứng dụng nào hiện là liên kết mặc định cho loại tệp đó.

Trả lời

6

Thử sử dụng chức năng ShellExecute.

Ví dụ, trong C:

ShellExecute(my_window_handle, "print", path_to_file, NULL, NULL, SW_SHOW); 
+0

Cảm ơn bạn về ví dụ. –

5

Gọi ShellExecute. Sử dụng "in" cho tham số lpOperation.

+2

Không phải tất cả các file có thể được in theo cách này. Xác nhận quyền sở hữu là nó thường hoạt động cho các tệp có trình đơn ngữ cảnh "in" trong Windows Explorer. Trên hệ thống của tôi, không bao gồm HTML và DOC - Tôi không có MS Office, nhưng tôi có Open Office * và * MS Word Reader. Tuy nhiên, nó có thể là tốt như bạn có thể làm, viết tắt một cái gì đó mà "kịch bản" ứng dụng bằng cách gửi tin nhắn bàn phím và chuột giả. – Steve314

+0

Cảm ơn bạn đã cung cấp thông tin. –

+1

Steve, nếu Open Office và Word Reader không đăng ký bản thân như có thể xử lý động từ "in", thì đó là một thiếu sót của * những chương trình * đó. Chúng tôi không thể dự kiến ​​viết các cách ứng dụng cụ thể để in tài liệu, đặc biệt là các định dạng phức tạp như HTML hoặc Word. –

4

Dưới đây là một số mã cho C#:

public void ShellExecute(string filename, string verb) 
    { 
     System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo(); 
     si.UseShellExecute = true; 
     si.FileName = filename; 
     si.Verb = verb; 
     System.Diagnostics.Process.Start(si); 
    } 
+0

Cảm ơn bạn về ví dụ C#. –

Các vấn đề liên quan