Tôi đang cố gắng tự động hóa GUI của ứng dụng bên ngoài bằng C# /. NET 4.0Xác định xem ứng dụng có bị chặn/bận không?
Ứng dụng đang được tự động (AUT) là một ứng dụng VB6.
Khi thực hiện hành động hoặc nhấp vào nút, AUT đôi khi dành rất nhiều thời gian chờ DB trả lời. Khi ứng dụng đang chờ kết quả DB, bản thân ứng dụng không hoạt động (không đăng ký nhiều CPU), nhưng nó bị chặn (bạn không thể nhấp hoặc tương tác với nó).
-Đến nay, tôi đã thử nhìn vào con trỏ chuột (đồng hồ cát) làm chỉ báo, nhưng đôi khi ứng dụng bị chặn nhưng con trỏ là bình thường. Vì vậy, điều này không đáng tin cậy.
-Tôi đã thử xem quy trình chính của AUT cho TotalProcessorTime (biện pháp này nếu ứng dụng là IDLE hoặc BUSY), nhưng như tôi đã nói, đôi khi ứng dụng là IDLE và vẫn bị chặn.
Vì vậy, tôi muốn đưa băng vào ngăn xếp trải nghiệm của đám đôngBộ lọc để xem liệu có ai đã biết cách xử lý điều đó hay không và/hoặc nếu bạn có bất kỳ ý tưởng nào về cách đạt được điều này.
Cảm ơn
EDIT:
Tôi đã chơi xung quanh, và chỉ phát hiện ra điều gì đó.
Trong khi AUT bị chặn, nó không đáp ứng với đầu vào bàn phím hoặc chuột. Tuy nhiên, nếu tôi gửi tin nhắn WM_LBUTTONCLICK đến cửa sổ, tôi có thể xác nhận rằng các thư đang được xử lý (và giao diện người dùng thay đổi).
Vì vậy, tôi đoán rằng họ đang cố ý chặn ứng dụng trong khi thực hiện cuộc gọi DB.
Giao diện người dùng có bị vô hiệu hóa không? Chuỗi giao diện người dùng chính có bị chặn trên chuỗi công việc không? Bạn có thấy cửa sổ bóng mờ nếu bạn cố gắng tương tác với các ứng dụng? –
Bạn không thể tương tác với giao diện người dùng chính, tuy nhiên tôi không nghĩ rằng chuỗi giao diện người dùng chính đang chặn, vì bạn không thấy bất kỳ "Bóng mờ" nào khi bạn cố gắng tương tác với giao diện người dùng đó. Nó không làm gì cả. Và tất cả các điều khiển/giao diện người dùng vẫn "bật". – DanyO
Kiểm tra với Spy ++ xem cửa sổ chính có bị tắt hay không. Nếu hàng đợi tin nhắn đang được bơm, và bạn không thể gọi các hành động UI, thì một cái gì đó trong AUT phải được vô hiệu hóa tôi đoán. –