2009-06-19 29 views
6

Tôi có một ứng dụng VB6 cũ sử dụng điều khiển ImageList từ COMCTL32.OCX ("Microsoft Windows Common Controls 5.0 (SP2)") để cung cấp biểu tượng cho TreeViews và ListViews .Sử dụng ImageList từ ứng dụng VB6 gây ra sự cố trên Windows 7.0 64-bit

Ứng dụng thậm chí sẽ không khởi chạy trên Windows 7.0 64 bit. Những phút nó cố gắng để tải các hình thức có ImageList trên nó, nó treo (tốt, thực sự, các ứng dụng nháy mắt ra, thoát mà không có một dấu vết).

Xóa ImageList khỏi biểu mẫu giải quyết vấn đề.

Bất kỳ ý tưởng nào?

+1

Không có ý tưởng nào ngoại trừ báo cáo cho Microsoft. Thứ hai, có thể thu hẹp một chút bằng cách chứng minh các tác phẩm hình ảnh đơn lẻ. –

Trả lời

8

Tôi giải quyết vấn đề này bằng cách thay thế tất cả các trường hợp của COMCTL32.OCX, đi kèm với VB5, với MSCOMCTL.OCX, đi kèm với VB6.

Bài viết Microsoft KB 190952 có hướng dẫn để thực hiện việc này. Nó đã được khá nhiều chỉ là một hoạt động tìm kiếm và thay thế toàn cầu.

1

Có thể bạn đang gặp sự cố với Bảo vệ thực thi dữ liệu (DEP). Hãy thử nghiệm bằng cách tắt DEP:

bcdedit.exe /set {current} nx AlwaysOff 

Khởi động lại sau khi nhập ở trên trong dòng lệnh. Hãy nhớ bật nó trở lại vì nó tương đương với việc chạy Windows với quần của bạn.

Chỉnh sửa: Lệnh trên hoạt động trên Vista. Tôi chưa thử nó trên Windows 7.

+0

+1 Âm thanh giống như DEP cổ điển, chắc chắn là cổng đầu tiên của cuộc gọi. – AnthonyWJones

1

Một tinh chỉnh DEP kém quyết liệt hơn vào hộp thoại hiệu suất máy tính (tab nâng cao thuộc tính hệ thống) và thêm ứng dụng exe vào danh sách ngoại lệ trên tab DEP.

BTW, bạn có chắc chắn điều này không thuộc về serverfault.com hay không. : P

2

Báo cáo lỗi cho Microsoft. Thời gian chạy VB6 là still supported trên Windows 64 bit 7. COMCTL32.ocx không được cài đặt với Windows 7, nhưng nó là explicitly listed như được hỗ trợ trên Windows 7.

2

Giải pháp của bạn là OK. Nhưng COMCTL32.OCX vẫn hoạt động tốt trên Win64 (Vista hoặc 7).

Chỉ cần một lời khuyên nhỏ:

Nếu sử dụng MSCOMCTL.OCX bạn sẽ không thể để áp dụng cho listview hoặc TreeView phong cách XP/Vista/7 và ứng dụng của bạn có thể trông xa lạ. Tệp kê khai sẽ không ảnh hưởng đến các điều khiển MSCOMCTL.OCX.

Giải pháp thay thế sẽ là phân lớp các điều khiển MSCOMCTL.OCX và vì chúng vẫn chứa tiêu đề COMCTL32.DLL, bạn có thể thao tác nó như thế nào.

(Tôi đã đăng dưới dạng nhận xét nhưng tôi vẫn không thể)

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