Trong số ra tháng 3 năm 2007 của tờ báo TGVT, có một câu hỏi về việc gửi thông báo lỗi chương trình được viết bằng VB6 qua e-mail. Trên thực tế, vấn đề này có thể được hoàn thành để giúp người dùng cuối không phải giảm thời gian màn hình. Yếu tố đầu tiên để giải quyết là bắt lỗi thời gian chạy trong chương trình. VB đã có cấu trúc On Error … để làm cho nó hoạt động chính xác. Tuy nhiên, VB6 không thể ghi lại tất cả các lỗi thời gian chạy và TGVT nói: “Nếu lỗi thời gian chạy khiến thông báo lỗi được hiển thị, hầu hết các thông báo lỗi là do thư viện hoặc mã Windows gây ra, không phải là mã bạn đã viết. Bạn không thể thay đổi hành vi lỗi này. “Nhưng điều này không có nghĩa là chúng tôi phải xử lý các lỗi GPF (Lỗi bảo vệ chung). Lỗi GPF “đóng” chương trình đều đặn, điều này cũng giúp làm phiền người dùng và lập trình viên để không bị mất mặt. Điều này được thực hiện bởi nhiều người bằng cách sử dụng hàm API SetUnhandledExceptionFilter và hàm CopyMemory API để có được cấu trúc. Cấu trúc EXCEPTION_RECORD (xuất bản lần đầu trên Tạp chí lập trình Visual Basic vào tháng 5 năm 1999). Nếu chúng ta đào sâu hơn, chúng ta sẽ biết rằng các lỗi như “chia cho 0” là do xử lý VB. Quản lý EXCEPTION_INT_DIVIDE_BY_ZERO từ Windows và chuyển đổi nó thành một lỗi có thể phục hồi. Trong trường hợp EXCEPTION_ACCESS_VIO LATION, VB sẽ chỉ chuyển nó sang trình xử lý lỗi Windows (trình xử lý ngoại lệ mặc định), do đó, nó sẽ đưa ra thông báo lỗi “hoạt động bất hợp pháp” (đôi khi còn mời cả người bạn nổi tiếng của Tiến sĩ Watson, thám tử Sherlock Holmes Theo dõi -Record). Để không lãng phí thời gian của bạn, tôi muốn đề xuất một chương trình nguồn có thể tải xuống miễn phí (ngay cả khi nó chưa được đăng ký): http://www.developerfusion.co.uk/res/content/3132/doad/Doad.zip Lưu ý: Ngoài Ngoài việc đưa ra các thông báo lỗi như trong ví dụ chương trình ở trên, bạn cũng có thể sáng tạo hơn, chẳng hạn như in các giá trị của biến chương trình, công việc được thực hiện trước lỗi, thông tin về môi trường thực thi (bộ nhớ, phiên bản thư viện, …), nhưng Nó nằm ngoài phạm vi của bài viết này. Yếu tố thứ hai cần giải quyết là gửi email tự động. Điều này rất đơn giản, tôi chỉ muốn chỉ ra một vài phương thức: -Phương pháp gọi Outlook đầu tiên (đơn giản nhất cho lập trình viên): chọn menu “Project” | tham khảo và kiểm tra thư viện đối tượng Microsoft Outlook XX và viết mã, vui lòng làm theo Ví dụ này: Private Sub Form_Load () Dim objOutlookApp As Outlook.ApplicationDim objNameSpace As Outlook.NameSpaceDim objMail As Outlook.MailItemset objOutlookApp = Outlook .Subject = “Tin nhắn được gửi bởi Visual Basic”. Chủ đề = “Thông báo này được tạo bởi Auto Outlook! “SendE .Logoffset objMail = Không có gì Sau đó tham khảo ví dụ trong MSDN. (Có thể tải xuống từ http://freevbcode.com/code/vbSendMail.zip, trong đó có hai chương trình mẫu và tài liệu chi tiết.) Nguyễn Anh Tuấn124VươngThua Vũ, Hà Nội