System and method for monitoring application response and providing visual treatment

A system and method are provided for determining the status of an application and altering the corresponding application window if necessary in order to convey information to the user and improve the user experience. The system and method of the invention allow visual treatment to be applied to a last active state of an application. The system and method further detect hidden dialogs that are shown in response to an application closing or exit request. The system and method additionally trap applications that respond to messages but ignore close commands and detect applications that do not provide visual feedback in response to user requests to close. Through these functions, a user is able to more readily distinguish between a non-responsive application and an improperly functioning application window.

CROSS-REFERENCE TO RELATED APPLICATIONS

TECHNICAL FIELD

Embodiments of the present invention relate to tracking of application responsiveness and more specifically to improving the visual experience for a user by providing improved visual feedback.

BACKGROUND OF THE INVENTION

When interacting with a computer application, users may be confronted with a situation in which an application fails to appropriately respond. The application may appear to the user to be “hung” or non-responsive. Applications that appear to the user to be non-responsive may in some instances be legitimately non-responsive, but in other instances may simply fail to provide sufficient feedback to the user, when in fact the application remains operational.

In the Microsoft Windows operating system, produced by the Microsoft Corporation of Redmond Wash., applications that stop responding to messages sent by the operating system are classified as non-responsive. Other applications continue to respond to messages sent by the operating system but do not provide sufficient visual feedback to the users. As set forth above, both of these scenarios give users the impression that applications are hung.

Typically, operating systems have a mechanism for reacting to an application that is non-responsive. When the application fails to respond to messages sent by the operating system, the user can terminate the application through the operating system. A white space or ghosted screen typically appears in the window where the application was shown. Thus, visual treatments for non-responsive applications are not descriptive and do not provide sufficient visual feedback to the user.

Furthermore, no solution exists for tracking poorly behaved applications that, although they are responsive, provide insufficient visual feedback to users. A poorly behaved application may be sending messages to the operating system and receiving messages from the operating system, but fail to show a user prompt or dialog box in a manner that will appropriately alert the user that a response is required.

Accordingly, a solution is needed for determining whether an application is non-responsive or is merely awaiting user input. Furthermore a solution is needed for improving the visual treatment applied to application windows that are either non-responsive or that are operating normally but fail to provide a user with sufficient visual feedback to enable the user to continue working with the application. Furthermore, a solution is needed that enables a user to distinguish between a non-responsive and a poorly behaved application.

BRIEF SUMMARY OF THE INVENTION

Embodiments of the present invention are directed to a method for ensuring, from a computer operating system, that a responsive application is providing sufficient visual feedback to a user. The method includes determining whether the application is showing a dialog to the user and determining whether any shown dialog is visible to the user. The method additionally includes repositioning any dialog not visible to the user so that the repositioned dialog becomes visible to the user.

In an additional aspect of the invention, a method provides visual feedback to a user from a computer operating system to indicate non-responsive application status. The method includes determining a non-responsive application state by finding one of a ghosted application window and lack of an application dialog. The method further includes capturing an application window state and applying a visual treatment to each application window for the application using the captured application window state.

In yet a further aspect of the invention, a method for monitoring application status and responding with visual feedback from an operating system is provided. The method includes determining if an application window is ghosted and sending a message to an application if the application window is not ghosted. The method additionally includes waiting for a response from the application for a pre-set time period and determining whether the application is showing a dialog if the application provides a response within the pre-set time period. The method additionally includes applying a visual treatment to the application window if the application window is ghosted and applying a visual treatment if the application is not showing a dialog.

In yet a further aspect of the invention, a system is provided for monitoring application status and responding with visual feedback from an operating system. The system includes an application state monitoring component for determining whether an application is responsive, a window state capture component for capturing a state of a non-responsive application, and window appearance control components for altering an appearance of a non-responsive application window using the captured state.

In yet an additional aspect of the invention, a system is provided for monitoring application status and responding with visual feedback from an operating system. The system includes an application state monitoring component for determining whether an application is responsive and whether an application is showing a dialog. The system additionally includes a dialog manipulation component for re-positioning the dialog for a responsive application that provides a dialog that is not visible to the user. The system additionally includes window appearance control components for altering an appearance of a non-responsive application window.

DETAILED DESCRIPTION OF THE INVENTION

I. System Overview

Embodiments of the invention include a method and system for monitoring an application and providing suitable visual treatment in accordance with a hung or non-responsive application status.FIG. 1illustrates a system including an operating system10, applications20,30,40, a user interface50, and application windows60. The operating system10includes an application window monitoring and correction system200.

The application window monitoring and correction system200operates within the operating system10to monitor states of the applications20,30, and40and application windows60. A user interacts with the operating system10and applications20,30,40through application windows60provided on the user interface50.

The applications20,30,40may include any type of application including, but not limited to word processing applications, spreadsheet applications, Internet browsers, etc. The application window monitoring and correction system200may be included in any type of operating system including Microsoft Windows.

FIG. 2illustrates an embodiment of the application window monitoring and correction system200in accordance with an embodiment of the invention. The monitoring and correction system200may include a window appearance monitoring component210, a dialog manipulation component220, a window state capture component230, window appearance control components240, and an application state monitoring component250. In combination, these components determine the status of an application and alter the corresponding application window if necessary in order to convey information to the user and improve the user experience. Each of the components will be further described below in conjunction with a method of the invention.

The system and method of the invention allow visual treatment to be applied to a last active state of applications. The visual treatment is preferably in the form of a frosting. However, other visual treatments may also be utilized. Any of a number of visual treatments that will allow a user to distinguish a responsive application window from a non-responsive application window may be used.

The system and method further detect hidden dialogs that are shown in response to an application closing or exit request. The system and method additionally trap applications that respond to messages but ignore close commands and detect applications that do not provide visual feedback in response to user requests to close. Through these functions, a user is able to more readily distinguish between a non-responsive application and an improperly functioning application window.

II. Exemplary Operating Environment

FIG. 3illustrates an example of a suitable computing system environment100on which the application window monitoring and correction system200may be implemented. The computing system environment100is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing environment100be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment100.

With reference toFIG. 3, the exemplary system100for implementing the invention includes a general purpose-computing device in the form of a computer110including a processing unit120, a system memory130, and a system bus121that couples various system components including the system memory to the processing unit120.

The computer110in the present invention will operate in a networked environment using logical connections to one or more remote computers, such as a remote computer180. The remote computer180may be a personal computer, and typically includes many or all of the elements described above relative to the computer110, although only a memory storage device181has been illustrated inFIG. 3. The logical connections depicted inFIG. 3include a local area network (LAN)171and a wide area network (WAN)173, but may also include other networks.

Although many other internal components of the computer110are not shown, those of ordinary skill in the art will appreciate that such components and the interconnection are well known. Accordingly, additional details concerning the internal construction of the computer110need not be disclosed in connection with the present invention.

III. System and Method of the Invention

As set forth above,FIG. 2illustrates the application window monitoring and correction system200in accordance with an embodiment of the invention. The application state monitoring component250determines whether an application is non-responsive or whether it is operating normally. The window appearance monitoring component210may assist in state determination by determining if a window is ghosted, thus indicating a non-responsive state. In cases in which the application is operational, but the user is not receiving sufficient information to continue utilizing the application, the dialog manipulation component220may move the dialog presented to the user to a visible location if the system determines that it has been hidden. In instances in which the application state monitoring component250determines that the application is non-responsive, the window state capture component230may capture the state of the application window in order to maintain it for user viewing. In both instances in which the application is responsive and non-responsive, the window appearance control components240may change the appearance of the application window as will be described below in conjunction with the method of the invention. In combination, these components determine the status of an application and alter the corresponding application window if necessary in order to convey information to the user and improve the user experience.

FIG. 4is a flowchart illustrating a method in accordance with an embodiment of the invention. A first scenario, in which an operating system is aware that an application is non-responsive, is shown in steps A02-A08. A second scenario, in which the operating system is uncertain as to whether the application is non-responsive, is shown in steps B02-B32.

In the first scenario, the application window monitoring and correction system200monitors the application window to determine if the application window is a ghosted window. As explained above, a ghosted window is an effect that is typically shown when an application is not responding. The system knows that an application is not responding if the ghosted window is present. If the window is ghosted, the user interacts with the application in step A04, and the application window monitoring and correction system applies a visual treatment such as frosting to the application window in step A08and offers an application termination dialog.

In the second scenario, after a user interacts with an application in step B02, the application window monitoring and correction system200determines if the application window is ghosted in step B04.

If the application window is ghosted in step B04, then the application is non-responsive and the process continues to step B30, in which the application window monitoring and correction system200applies a visual treatment such as frosting to all application windows in the process set. In step B32, the system begins the reporting process.

If the application window is not ghosted in step B04, the application window monitoring and correction system does not know if the application is healthy and accordingly takes steps to determine if the application is non-responsive. In step B06, the application monitoring and correction system sends “WM_Close” messages to the application to determine if application is healthy.

If the application does not respond within a pre-set threshold of “N” seconds in step B08, the system determines that the application is not responsive and begins to forcibly terminate the application. The system proceeds to step B30to apply an appropriate visual treatment such as frosting to all windows in the process set.

Alternatively, if the application does respond within the pre-set time threshold in step B08, the system determines that since the application has responded, the application is healthy. Thereafter the system will determine whether the application has responded in an acceptable manner.

In step B10, the system determines if the application is showing a dialog. If the application is not showing the dialog in step B10, the system captures the state of the current window in step B18. After waiting a predetermined number of seconds in step B20, the system determines if the application closed in step B22. If the application does not provide any feedback to the user after a certain amount of time, the invention prompts the user to forcefully terminate, even though the application is still sending messages. If the application closed in step B22, the system enables related windows in step B4. If the application did not close in step B22, the system determines if the application changed its application window state in step B28. If the application did not change its application window state in step B28, the system applies the appropriate visual treatment, such as frosting, to all windows in the process set in step B30and begins the reporting process in step B32. If the application did change its window state in step B28, the system enables related windows in step B24.

Returning to step B10, if the application is showing the dialog in step B10, the system examines whether the application shows a dialog that is visible to the user. The system determines whether the dialog is hidden in step B12. For instance, the dialog may be buried in the z-order and may not be visible on the user screen. If the dialog is not hidden in step B12, the application is behaving properly and all related windows are enabled in step B24. If the dialog is hidden in step B12, the system moves the dialog to a visible position for the user in step B14. In step B16, the system returns the window to its normal state by unfrosting or unghosting and the application proceeds to operate normally. All related windows are enabled in step B24and the process is complete in step B26.

FIG. 5Ais a screen shot showing a responsive application window having a title bar500, a menu510, a tool bar520, and a display portion530.FIG. 5Billustrates the same application window in a non-responsive state. In the title bar, a non-responsive indicator540is provided. Furthermore, to prompt the user, a highlighted close button550is provided. A display portion560is lightened so that it appears disabled. Furthermore, random frost bitmaps562,564, and566are distributed across the window.

The application window shows a bitmap that replaces a hole in an application that would normally appear when an application ceases to respond. When applications become non-responsive, the last active visual representation for those application windows is captured and superimposed with a visual treatment thus identifying those windows as non-responsive.

The visual treatment referred to as “frosting” can be accomplished using a series of steps. These steps include boosting RGB values and alpha blending them with captured windows. The frosting process may then segment captured windows into sections. One or more stored frosting bitmaps may then be combined through a randomization function to distribute frosting bitmaps. The process then superimposes a frosted window with a saturated application window.

FIG. 6illustrates a task bar600including a start button602and a plurality of minimized applications604,608, and610. The task bar further includes an “X” that allows the user to close an application. This “X” may be supplied when the window is not visible to the user and is buried in the z-order. Users often use taskbar icons to access a window and some applications do not have a standard window frame with a close button. When one of these applications becomes non-responsive, users have no capability to terminate the application. Accordingly, provision of an “X” on the taskbar provides users with a termination tool.

In summary, the system of the invention determines if an application is non-responsive and applies a visual treatment to non-responsive application windows in order to give better feedback to computer users. The system also traps poorly behaved applications that respond to messages from the operating system but do not provide UI feedback to the user.

The system and method of the invention provide a highly visible technique for identifying and displaying non-responsive applications. Non-responsive applications are a frequent problem for computer users and this technique will allow operating systems to provide a better user experience for the non-responsive application problem. The technique for detecting poorly behaved applications addresses new classes of scenarios that other operating systems currently overlook. Prevention of data loss occurs by notifying user that an application that appears to be hung is actually still responsive.

While particular embodiments of the invention have been illustrated and described in detail herein, it should be understood that various changes and modifications might be made to the invention without departing from the scope and intent of the invention. The embodiments described herein are intended in all respects to be illustrative rather than restrictive. Alternate embodiments will become apparent to those skilled in the art to which the present invention pertains without departing from its scope. From the foregoing it will be seen that this invention is one well adapted to attain all the ends and objects set forth above, together with other advantages, which are obvious and inherent to the system and method. It will be understood that certain features and sub-combinations are of utility and may be employed without reference to other features and sub-combinations. This is contemplated and within the scope of the appended claims.