2008-08-02 21 views
31

Một phần công việc hàng ngày của tôi là duy trì và mở rộng các ứng dụng VB6 cũ. Một công cụ phổ biến được viết bằng C/C++ và VB6 sử dụng các chức năng này để cải thiện hiệu suất.Dỡ bỏ điều khiển COM khi làm việc trong VB6 IDE

Khi nói đến lập trình không đồng bộ, giao diện C không đủ và chúng tôi dựa vào điều khiển COM để kích hoạt sự kiện cho VB6.

Vấn đề của tôi là khi tôi đăng ký điều khiển trong VB6, VB tải điều khiển này trong bộ nhớ và không dỡ bỏ nó cho đến khi tôi thoát IDE VB6. Khi điều khiển được tải toàn bộ thời gian, tôi không thể biên dịch lại nó trong VC6, bởi vì các tập tin DLL bị khóa.

Giải pháp tôi tìm thấy không phải là để bật điều khiển trong VB nhưng sử dụng CreateObject() với tên đầy đủ của điều khiển của tôi. Vấn đề sau đó là tôi phải khai báo điều khiển của tôi như là một đối tượng bởi vì VB6 không biết gì về giao diện tôi đang sử dụng và tôi không có quyền truy cập vào IntelliSense, mà là một nỗi đau.

Bất kỳ ý tưởng nào về cách tôi có thể yêu cầu VB6 dỡ bỏ kiểm soát sau khi thoát ứng dụng hoặc trực tiếp trong IDE?

Trả lời

27

Tôi khá chắc chắn không có cách nào tốt để buộc VB6 dỡ bộ điều khiển.

Dưới đây là những gì tôi làm ... thay vì chạy Visual C và Visual Basic VB6 side-by-side, chạy dưới VC:

  1. tải lên VC
  2. Mở dự án chứa COM của bạn đối tượng
  3. chỉnh sửa, thay đổi, vv
  4. Trong VC, đặt ra Executable được VB6.EXE với đối số dòng lệnh thích hợp để tải workspace VB6
  5. Bây giờ chỉ cần nhấn F5 để khởi chạy IDE VB6 và tải dự án VB6 của bạn
  6. Khi bạn muốn thay đổi mã COM lần nữa, thoát VB6.EXE, thực hiện thay đổi của bạn và nhấn F5 lần nữa. Miễn là bạn lưu không gian làm việc của bạn VB6 sẽ nhớ những cửa sổ bạn đã mở và tất cả các thiết lập dự án của bạn.

Ưu điểm của phương pháp này:

  • Bạn có thể đặt breakpoint trong đối tượng COM và debug nó sử dụng một nguồn debugger đầy đủ
  • Bạn hạnh phúc có thể gỡ lỗi trong C và VB đồng thời
  • Bất cứ khi nào VB6 chạy nó luôn có phiên bản COM DLL mới nhất
+1

Điều đó rất thông minh, tôi sẽ cố gắng làm điều đó. Bây giờ tôi tự hỏi liệu tài khoản dựa trên cookie cũ của tôi có thể được hợp nhất với tài khoản dựa trên OpenId mới của tôi để tôi có thể đánh dấu câu trả lời này là câu trả lời hay không… –

+2

Điều này cũng hoạt động với các IDE khác ngoài VB. Tôi đã thực hiện thành công việc này với Delphi/VB6. –

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