2011-01-17 24 views
10

Tôi có hai ứng dụng khác nhau, cả hai ứng dụng gốc được viết bằng C++ Builder 2009, cả MDI và cả hai đều sử dụng cùng một mã tiện ích thanh tiến trình. Một trong số họ cập nhật đúng thanh tác vụ Windows 7 với tiến trình của nó. Người kia thì không.Tiến trình thanh tác vụ của Windows 7 hoạt động trong một ứng dụng nhưng không khác

Tôi không thể tìm thấy bất kỳ sự khác biệt rõ ràng nào giữa hai ứng dụng. Không có lỗi nào được báo cáo trong ứng dụng không thành công: các cuộc gọi đến ITaskbarList3::SetProgressValueITaskbarList3::SetProgressState trả lại S_OK, nhưng không có gì xảy ra trong thanh tác vụ của Windows 7.

Có bế tắc nào trong việc có thanh tiến trình thanh tác vụ Windows 7 hoạt động không? Bất kỳ yêu cầu nào mà tôi có thể bị thiếu?

+0

Chúng có đang chạy trên cùng một máy không? Bạn không đề cập đến điều đó. Nếu không, một máy có sử dụng các biểu tượng nhỏ cho thanh tác vụ và các biểu tượng lớn khác không? Bạn chỉ nhận được các lớp phủ (bao gồm cả thanh tiến trình) với các biểu tượng lớn. –

+0

@Kate: Có, chúng đang chạy trên cùng một máy và cả hai đều sử dụng các biểu tượng thanh tác vụ lớn. –

+0

Mã tiện ích này có nằm trong cùng một phần của cả hai ứng dụng của bạn hoặc có bất kỳ sự khác biệt nào (thậm chí là nhỏ nhất) không? Vì bạn đã đề cập rằng cả hai ứng dụng đều là MDI, hãy thử theo dõi đường dẫn mà các thông báo cửa sổ để cập nhật tiến trình phải đi trong cả hai trường hợp. Tôi đoán rằng trong trường hợp ứng dụng không hoạt động như dự định, các thông báo cập nhật tiến trình sẽ không nhận được vòng lặp tin nhắn chính (ứng dụng). Đây là, tuy nhiên, chỉ là một đoán, vì tôi không có kinh nghiệm thực tế với chức năng này. – LightBulb

Trả lời

0

Vấn đề của tôi có khả năng cụ thể đối với Trình tạo Delphi/C++ và là kết quả của sự khác biệt trong cách VCL xử lý cửa sổ cấp cao nhất của nó.

Nếu Application.MainFormOnTaskBar là đúng, thì ITaskbarList3 chỉ hoạt động nếu Application.MainFormHandle được sử dụng làm tham số HWND.

Nếu Application.MainFormOnTaskBar là sai, thì ITaskbarList3 chỉ hoạt động nếu Application.Handle được sử dụng làm tham số HWND.

Trong trường hợp của tôi, một dự án có MainFormOnTaskBar đúng và một dự án đã sai.

-1

Tôi chưa viết một ứng dụng bằng thanh tiến trình Windows 7 cụ thể nhưng tôi đã viết nhiều ứng dụng .Net yêu cầu cập nhật tiến trình bằng hoạt ảnh trực tiếp và hình ảnh xác thực lớn nhất từ ​​kinh nghiệm của tôi là đảm bảo bạn đang cập nhật thanh tiến trình chủ đề chính.

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