Windows API SendMessage để đóng băng màn hình trong Excel VBA

Windows API SendMessage để đóng băng màn hình trong Excel VBA

Tôi có một số quy trình trong Excel khiến màn hình nhấp nháy, giật và cập nhật liên tục. Tôi cần dừng nó lại và trước khi ai đó đề xuất, tôi xin nói rõ: Application.SreenUpdating=False không hiệu quả với sự cố này.

Tôi đang sử dụng thứ gì đó vượt quá khả năng của tôi nhưng GẦN như có tác dụng. Tôi đang sử dụng:

 # If VBA7 Or Win64 Then Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" ( ByVal hwnd As LongPtr , ByVal wMsg As LongPtr , ByVal wParam As LongPtr , lParam As Any ) As LongPtr # Else Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( ByVal hwnd As Long , ByVal wMsg As Long , ByVal wParam As Long , lParam As Any ) As Long # End If

sau đó để đóng băng màn hình:

 SendMessage Application . hwnd , WM_SETREDRAW , 1 &, 0 &

sau đó tôi chạy mã của mình và để Bỏ đóng băng màn hình:

 SendMessage Application . hwnd , WM_SETREDRAW , 0 &, 0 &

Nhưng vấn đề là khi nó đang chạy, màn hình lại trở về ảnh chụp màn hình từ rất lâu trước đó thay vì đóng băng màn hình như hiện tại. Làm thế nào để nó đóng băng màn hình hiện tại?

Cảm ơn




Trả lời:

Hãy thử cách này thay thế:

#Nếu Win64 Thì
Khai báo riêng tư PtrSafe Function LockWindowUpdate Lib "user32" (ByVal hWndLock As LongPtr) As Long
#Khác
Khai báo riêng tư Hàm LockWindowUpdate Lib "user32" (ByVal hWndLock As Long) As Long
#Kết thúc nếu

Andreas.



Trả lời:

Xin chào, cảm ơn Andreas đã trả lời, tôi nên nói vậy, nhưng tôi đã sử dụng LockWindowUpdate nhưng mặc dù nó hoạt động tốt trên máy của tôi, nhưng nó lại không có tác dụng gì trên máy của đồng nghiệp tôi và máy của anh ấy vẫn tiếp tục nhấp nháy liên tục.



Trả lời:

trên máy của tôi, nó không có tác dụng gì trên máy của đồng nghiệp tôi và máy của anh ấy vẫn nhấp nháy liên tục.

Trong trường hợp này, Window Handle bị sai, hãy thử dùng 0 làm handle để vô hiệu hóa toàn bộ màn hình. (Hoặc sử dụng GetForeGroundWindow tương ứng với FindWindow để lấy handle cửa sổ chính xác).

Andreas.

Comments

Popular posts from this blog

Khẩn cấp - File Excel chứa các ký tự đặc biệt ở họ và tên liên hệ

Excel 2016 - mở tất cả các tệp trong MỘT phiên bản

Điều tôi muốn làm trong Excel 2010 là tạo một nút tùy chỉnh và gắn nó vào thanh công cụ Truy nhập nhanh và chạy một macro cụ thể.