Tôi đã viết một chương trình vẽ tiện ích con trên hình nền máy tính để bàn, dưới biểu tượng máy tính để bàn và tất cả đều tốt. Nhưng tôi tiết lộ một lỗi lạ - chương trình của tôi không hoạt động trên một số máy tính khác - chúng hiển thị cùng một máy tính mà không có tiện ích sau khi bắt đầu.vẽ theo biểu tượng trên máy tính để bàn
Vì vậy, có bất kỳ ai hết hạn, một số kiến thức trong lĩnh vực này không? Làm ơn giúp tôi! :)
(Tôi không thể tìm thấy bất kỳ máy tính gần, nơi phụ tùng không hoạt động, trong máy tính của tôi tất cả hoạt động tốt. tôi đã viết rất nhiều các chương trình kiểm tra, mà cố gắng vẽ bất cứ điều gì trên máy tính để bàn với hơn phương pháp, nhưng thử nghiệm hiển thị gì quá trong máy tính bạn bè của tôi)
phương pháp Vẽ:.
tôi đã viết một dll, người phát hiện cửa sổ máy tính để bàn (progman-> từ trẻ> trẻ em)) và tạo ra một cái móc và cài đặt thủ tục một cửa sổ riêng cho máy tính để bàn. Trong thủ tục cửa sổ i treo WM_ERASEBKGND:
case WM_ERASEBKGND:
HDC hdc = (HDC)wparam;
PaintDesktop(hdc);
WidgetPaint(hdc);
return 1;
// Tôi bỏ qua trong mã này nhận và thiết lập vùng cắt để vẽ nhanh. (Tôi đã thử tất cả các kết hợp với cắt và không cắt)
Và trong các thử nghiệm, tôi cũng cố gắng vẽ tiện ích trong tin nhắn WM_PAINT với cùng một kết quả - tất cả đã hoạt động với tôi, nhưng không hoạt động ở tất cả bạn bè của tôi.
cập nhật: Tôi đã giải quyết! :)
Mã của bạn có hoạt động trong Windows XP và * không * hoạt động trong Windows Vista hoặc Windows 7 không? – MusiGenesis
Có, mã của tôi hoạt động trong XP và Windows Vista. Nhưng hoàn toàn không hoạt động trong Windows 7. Trong Windows 7, tôi giả sử, cơ chế bảo vệ của nó. (Tôi thậm chí không thể liệt kê các tệp DLL được tải trong quá trình explorer.exe) – vsvasya
Ngoài sự tò mò, sửa lỗi là gì? – Brian