首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于判断未相应程序的解决方法

2012-03-05 
关于判断未相应程序的解决办法有个程序在资源管理器中显示为“未响应”,可是我使用WaitForInputIdle,来获得

关于判断未相应程序的解决办法
有个程序在资源管理器中显示为“未响应”,可是我使用WaitForInputIdle,来获得当前状态,得到的确实正常,这是什么原因,还有没有更好的办法。

function   IsBusy(ProcessId:   Integer):   Integer;
var
    Ph:   THandle;
begin
    Ph   :=   OpenProcess(PROCESS_ALL_ACCESS,   false,   ProcessId);
    if   Ph   <>   0   then
    begin
        if   WaitForInputIdle(Ph,   10*1000)   =   WAIT_TIMEOUT   then
            Result   :=   1
        else
            Result   :=   0;
        CloseHandle(Ph);
    end
    else
        Result   :=   -1;
end;

[解决办法]
好像你的只有你的办法比较容易实现了
[解决办法]
这样做已经不错了
[解决办法]
使用SendMessageTimeout看看它死没死


:)
[解决办法]
在User32.dll中(没有文档公开),Win2k/NT下的IsHungAppWindow和Win9X下的IsHungThread;前者是以一个窗口句柄作为参数,后者是以线程ID作为参数。可以通过VC开发工具的Depends查到这两个函数。
要使用这两个函数,必须先动态导入,如下:
if (m_hUser32 == NULL)
{
m_hUser32 = GetModuleHandle( "USER32.DLL ");
}
if (m_hUser32)
{
m_IsHungNT = (HUNG_FUNNT) GetProcAddress(m_hUser32, "IsHungAppWindow ");
m_IsHung9X = (HUNG_FUN9X) GetProcAddress(m_hUser32, "IsHungThread ");
}

热点排行