1. Trang chủ
  2. » Công Nghệ Thông Tin

Các giải pháp lập trình CSharp- P45 docx

10 263 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 2,61 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khi người dùng chọn một item, một truy vấn đầy đủ hơn sẽ được thực hiện, và các chi tiết về tác vụ in này được hiển thị trong một TextBox.. Microsoft Agent là một kỹ thuật dùng để thêm

Trang 1

phép người dùng chọn thiết lập cho zoom (thu phóng trang).

Hình 8.12 Sử dụng PrintPreviewDialog để hiển thị print-preview trong một cửa sổ độc lập

Hình 8.13 Sử dụng PrintPreviewControl để hiển thị print-preview trong một cửa sổ tùy biến

Dưới đây là phần mã cho form:

using System;

using System.Windows.Forms;

using System.Drawing;

using System.Drawing.Printing;

public class PrintPreview : System.Windows.Forms.Form {

Trang 2

private System.Windows.Forms.PrintPreviewControl printPreviewControl; private System.Windows.Forms.Button cmdPreview;

private System.Windows.Forms.ListBox lstZoom;

private System.Windows.Forms.Label label1;

// (Bỏ qua phần mã designer.)

private PrintDocument doc;

// (Bỏ qua phần mã cho phương thức thụ lý sự kiện

// PrintDocument.PrintPage - Xem mục 8.14)

private void PrintPreview_Load(object sender, System.EventArgs e) {

// Thiết lập các zoom được phép

for (int i=1; i <= 10; i++) {

lstZoom.Items.Add((i * 10).ToString());

}

// Tạo văn bản gồm 100 dòng

string[] printText = new string[100];

for (int i=0; i < 100; i++) {

printText[i] = i.ToString();

printText[i] +=

": The quick brown fox jumps over the lazy dog.";

}

doc = new TextDocument(printText);

doc.PrintPage += new PrintPageEventHandler(this.Doc_PrintPage);

lstZoom.Text = "100";

printPreviewControl.Zoom = 1;

printPreviewControl.Document = doc;

printPreviewControl.Rows = 2;

Trang 3

private void cmdPreview_Click(object sender, System.EventArgs e) {

// Thiết lập zoom

printPreviewControl.Zoom = Single.Parse(lstZoom.Text) / 100;

// Hiển thị cả hai trang, trang này ở trên trang kia

printPreviewControl.Rows = 2;

// Gắn lại PrintDocument để làm tươi preview

printPreviewControl.Document = doc;

}

}

// (Bỏ qua phần mã cho lớp TextDocument - Xem mục 8.14)

17. Qu n lý tác v in Qu n lý tác v in ả ả ụ ụ

Bạn cần tạm dừng hoặc phục hồi một tác vụ in hoặc một hàng đợi in.

Sử dụng Windows Management Instrumentation Bạn có thể lấy thông tin từ

hàng đợi in bằng một truy vấn với lớp Win32_PrintJob, và bạn có thể sử dụng các phương thức PauseResume của các lớp Win32_PrintJobWin32_Printer để quản lý hàng đợi.

Windows Management Instrumentation (WMI) cho phép bạn lấy một lượng lớn các thông tin

hệ thống bằng một cú pháp giống truy vấn Một trong các công việc mà bạn có thể thực hiện

với WMI là lấy danh sách các tác vụ in đang chờ, cùng với thông tin về mỗi tác vụ Bạn cũng

có thể thực hiện các thao tác như in và phục hồi một tác vụ hoặc tất cả các tác vụ cho một máy

in Để sử dụng WMI, bạn cần thêm một tham chiếu đến System.Management.dll

Ứng dụng dưới đây thực hiện một truy vấn WMI để lấy danh sách tất cả các tác vụ in đang chờ trên máy tính và hiển thị ID cho mỗi tác vụ trong một ListBox Khi người dùng chọn một

item, một truy vấn đầy đủ hơn sẽ được thực hiện, và các chi tiết về tác vụ in này được hiển thị trong một TextBox Cuối cùng, người dùng có thể nhắp nút Pause và Resume sau khi chọn một tác vụ để thay đổi trạng thái của nó.

using System;

using System.Windows.Forms;

using System.Management;

using System.Collections;

Trang 4

public class PrintQueueTest : System.Windows.Forms.Form {

private System.Windows.Forms.ListBox lstJobs;

private System.Windows.Forms.Button cmdRefresh;

private System.Windows.Forms.TextBox txtJobInfo;

private System.Windows.Forms.Button cmdPause;

private System.Windows.Forms.Button cmdResume;

private System.Windows.Forms.Label label1;

private System.Windows.Forms.Label label2;

// (Bỏ qua phần mã designer.)

private void PrintQueueTest_Load(object sender, System.EventArgs e) {

cmdRefresh_Click(null, null);

}

private void cmdRefresh_Click(object sender, System.EventArgs e) {

// Chọn tất cả các tác vụ in đang chờ

string query = "SELECT * FROM Win32_PrintJob";

ManagementObjectSearcher jobQuery =

new ManagementObjectSearcher(query);

ManagementObjectCollection jobs = jobQuery.Get();

// Thêm các tác vụ trong hàng đợi vào ListBox

lstJobs.Items.Clear();

txtJobInfo.Text = "";

foreach (ManagementObject job in jobs) {

lstJobs.Items.Add(job["JobID"]);

}

}

// Phương thức này thực hiện truy vấn WMI và trả về

// tác vụ WMI cho item hiện đang được chọn trong ListBox

private ManagementObject GetSelectedJob() {

Trang 5

try {

// Chọn tác vụ in phù hợp

string query = "SELECT * FROM Win32_PrintJob " +

"WHERE JobID='" + lstJobs.Text + "'";

ManagementObjectSearcher jobQuery =

new ManagementObjectSearcher(query);

ManagementObjectCollection jobs = jobQuery.Get();

IEnumerator enumerator = jobs.GetEnumerator();

enumerator.MoveNext();

return (ManagementObject)enumerator.Current;

}catch (InvalidOperationException){

// Thuộc tính Current của enumerator không hợp lệ

return null;

}

}

private void lstJobs_SelectedIndexChanged(object sender,

System.EventArgs e) {

ManagementObject job = GetSelectedJob();

if (job == null) {

txtJobInfo.Text = "";

return;

}

// Hiển thị thông tin về tác vụ

string jobInfo = "Document: " + job["Document"].ToString();

jobInfo += Environment.NewLine;

jobInfo += "DriverName: " + job["DriverName"].ToString();

jobInfo += Environment.NewLine;

jobInfo += "Status: " + job["Status"].ToString();

jobInfo += Environment.NewLine;

jobInfo += "Owner: " + job["Owner"].ToString();

Trang 6

jobInfo += Environment.NewLine;

jobInfo += "PagesPrinted: " +

job["PagesPrinted"].ToString();

jobInfo += Environment.NewLine;

jobInfo += "TotalPages: " + job["TotalPages"].ToString();

if (job["JobStatus"] != null) {

txtJobInfo.Text += Environment.NewLine;

txtJobInfo.Text += "JobStatus: " +

job["JobStatus"].ToString();

}

if (job["StartTime"] != null) {

jobInfo += Environment.NewLine;

jobInfo += "StartTime: " + job["StartTime"].ToString(); }

txtJobInfo.Text = jobInfo;

}

private void cmdPause_Click(object sender, System.EventArgs e) {

if (lstJobs.SelectedIndex == -1) return;

ManagementObject job = GetSelectedJob();

if (job == null) return;

// Tạm dừng tác vụ

int returnValue = Int32.Parse(

job.InvokeMethod("Pause", null).ToString());

// Hiển thị thông tin về giá trị trả về

if (returnValue == 0) {

MessageBox.Show("Successfully paused job.");

}else {

MessageBox.Show(

"Unrecognized return value when pausing job.");

Trang 7

}

private void cmdResume_Click(object sender, System.EventArgs e) {

if (lstJobs.SelectedIndex == -1) return;

ManagementObject job = GetSelectedJob();

if (job == null) return;

if ((Int32.Parse(job["StatusMask"].ToString()) & 1) == 1) {

// Phục hồi tác vụ

int returnValue = Int32.Parse(

job.InvokeMethod("Resume", null).ToString());

// Hiển thị thông tin về giá trị trả về

if (returnValue == 0) {

MessageBox.Show("Successfully resumed job.");

}else if (returnValue == 5) {

MessageBox.Show("Access denied.");

}else {

MessageBox.Show(

"Unrecognized return value when resuming job.");

}

}

}

}

Trang 8

Hình 8.14 Lấy thông tin từ hàng đợi in

Nhớ rằng các quyền Windows có thể ngăn bạn tạm dừng hoặc gỡ bỏ một tác vụ in do một

người dùng khác tạo ra Thực ra, các quyền này còn có thể ngăn bạn lấy thông tin trạng thái

và có thể gây ra ngoại lệ.

Các phương thức WMI khác mà bạn có thể sử dụng trong một kịch bản in bao

gồm AddPrinterConnection, SetDefaultPrinter, CancelAllJobs, và PrintTestPage, tất cả đều làm việc với lớp Win32_Printer Để có thêm thông tin về WMI, bạn hãy tham khảo tài liệu MSDN tại địa chỉ [ http://msdn.microsoft.com/library/en-us/wmisdk/ wmi/computer_system_hardware_classes.asp ].

18. S d ng Microsoft Agent S d ng Microsoft Agent ử ụ ử ụ

Bạn muốn ứng dụng của mình có sự trợ giúp của những nhân vật hoạt hình như

trong Microsoft Word, Microsoft Excel

Sử dụng điều kiểm Microsoft Agent.

Microsoft Agent là một kỹ thuật dùng để thêm các nhân vật hoạt hình có tính tương tác vào

ứng dụng hay trang web Tính tương tác là chức năng chính yếu của kỹ thuật Microsoft Agent: các nhân vật Microsoft Agent có thể nói và đáp lại đầu vào của người dùng thông qua việc nhận dạng và tổng hợp giọng nói Microsoft sử dụng kỹ thuật này trong các ứng dụng như

Word, Excel, và PowerPoint; giúp người dùng tìm câu trả lời cho những câu hỏi và hiểu cách

thức hoạt động của ứng dụng Microsoft cung cấp thông tin về kỹ thuật Microsoft Agent tại

[www.microsoft.com/msagent]

Điều kiểm Microsoft Agent cho phép người dùng tương tác với các ứng dụng và trang web

thông qua giọng nói—dạng giao tiếp tự nhiên nhất của con người Khi người dùng nói vào micro, điều kiểm này sử dụng một bộ máy nhận dạng giọng nói—đây là ứng dụng dịch âm

thanh đầu vào từ micro thành ngôn ngữ mà máy tính hiểu được Điều kiểm Microsoft Agent

Trang 9

vào thành âm thanh có thể nghe được qua loa

Điều kiểm Microsoft Agent cho phép bạn truy xuất bốn nhân vật đã được định nghĩa sẵn—

Genie (vị thần), Merlin (thuật sĩ), Peedy (con vẹt) và Robby (người máy) Mỗi nhân vật có

một tập các hành động mà bạn có thể sử dụng trong ứng dụng nhằm minh họa các quan điểm

hay chức năng khác nhau Chẳng hạn, tập các hành động của Peedy gồm các dạng bay khác nhau mà bạn có thể sử dụng để dịch chuyển Peedy trên màn hình Bạn cũng có thể tự tạo cho mình các nhân vật hoạt hình với sự trợ giúp của Microsoft Agent Character Editor và

Microsoft Linguistic Sound Editing Tool (có trong đĩa CD đính kèm).

Ví dụ dưới đây minh họa cách xây dựng một ứng dụng đơn giản với điều kiểm Microsoft

Agent Ứng dụng này gồm hai ComboBox dùng để chọn một nhân vật và một hành động Khi người dùng chọn các ComboBox này, nhân vật được chọn sẽ xuất hiện và thực hiện hành động được chọn Ứng dụng này sử dụng việc nhận dạng và tổng hợp giọng nói để điều khiển các hành động của nhân vật: người dùng có thể bảo nhân vật thực hiện hành động bằng cách nhấn

phím [Scroll Lock] và rồi đọc tên hành động vào micro Ví dụ này cũng cho phép người dùng

chuyển sang một nhân vật mới bằng cách gọi tên nhân vật, và còn tạo thêm một lệnh tùy biến

là MoveToMouse Ngoài ra, nhân vật cũng sẽ đọc bất cứ text nào mà người dùng nhập vào

TextBox Trước khi chạy ví dụ này, bạn phải cài đặt điều kiểm Microsoft Agent, bộ máy nhận dạng giọng nói, bộ máy text-to-speech, và các định nghĩa nhân vật (có trong đĩa CD đính kèm)

Để có thể thêm điều kiểm Microsoft Agent vào dự án, bạn hãy nhắp phải vào hộp công cụ và chọn Add/Remove Items Kế đó, vào thẻ COM Components, và chọn Microsoft Agent 2.0 Như thế, Microsoft Agent sẽ được thêm vào vào hộp công cụ Khi bạn thả điều kiểm này lên form, các Interop Assembly cần thiết sẽ được sinh ra và được thêm vào dự án.

Hình 8.15 Chọn Microsoft Agent Control 2.0 trong cửa sổ Customize Toolbox

public class FrmAgent : System.Windows.Forms.Form

Trang 10

// (Bỏ qua phần mã designer.)

// Đối tượng agent hiện tại

private AgentObjects.IAgentCtlCharacter mSpeaker;

// Phương thức thụ lý sự kiện KeyDown của txtLocation

private void txtLocation_KeyDown(object sender,

System.Windows.Forms.KeyEventArgs e)

{

if (e.KeyCode == Keys.Enter)

{

// Thiết lập nơi lưu trữ nhân vật vào txtLocation

string location = txtLocation.Text;

// Khởi tạo các nhân vật

try

{

// Nạp các nhân vật vào đối tượng agent

mainAgent.Characters.Load("Genie", location & "Genie.acs") mainAgent.Characters.Load("Merlin", location + "Merlin.acs"); mainAgent.Characters.Load("Peedy", location & "Peedy.acs") mainAgent.Characters.Load("Robby", location & "Robby.acs")

// Vô hiệu txtLocation và kích hoạt các điều kiểm khác

txtLocation.Enabled = false;

txtSpeech.Enabled = true;

cmdSpeak.Enabled = true;

characterCombo.Enabled = true;

actionsCombo.Enabled = true;

// Thiết lập nhân vật hiện tại là Merlin và hiện nhân vật này mSpeaker = mainAgent.Characters["Merlin"];

GetAnimationNames(); // Thu lấy danh sách hành động

Ngày đăng: 08/07/2014, 17:20

HÌNH ẢNH LIÊN QUAN

Hình 8.13 Sử dụng PrintPreviewControl để hiển thị print-preview trong một cửa sổ tùy biến - Các giải pháp lập trình CSharp- P45 docx
Hình 8.13 Sử dụng PrintPreviewControl để hiển thị print-preview trong một cửa sổ tùy biến (Trang 1)
Hình 8.12 Sử dụng PrintPreviewDialog để hiển thị print-preview trong một cửa sổ độc lập - Các giải pháp lập trình CSharp- P45 docx
Hình 8.12 Sử dụng PrintPreviewDialog để hiển thị print-preview trong một cửa sổ độc lập (Trang 1)
Hình 8.14 Lấy thông tin từ hàng đợi in - Các giải pháp lập trình CSharp- P45 docx
Hình 8.14 Lấy thông tin từ hàng đợi in (Trang 8)
Hình 8.15 Chọn Microsoft Agent Control 2.0 trong cửa sổ Customize Toolbox - Các giải pháp lập trình CSharp- P45 docx
Hình 8.15 Chọn Microsoft Agent Control 2.0 trong cửa sổ Customize Toolbox (Trang 9)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN