zoukankan      html  css  js  c++  java
  • 判断窗口是否挂起

    // ishung.cpp (Windows 95/98/NT/2000)
    //
    // This example will show you how you can obtain the current status
    // of the application.
    //
    //
    // (c)1999 Ashot Oganesyan K, SmartLine, Inc
    // mailto:ashot@aha.ru, http://www.protect-me.com, http://www.codepile.com

    #include <windows.h>
    #include <stdio.h>


    // User32!IsHungAppWindow (NT specific!)
    //
    // The function retrieves the status (running or not responding) of the
    // specified application
    //
    // BOOL IsHungAppWindow(
    //   HWND hWnd,        // handle to main app's window
    // );
    typedef BOOL (WINAPI *PROCISHUNGAPPWINDOW)(HWND);


    // User32!IsHungThread (95/98 specific!)
    //
    // The function retrieves the status (running or not responding) of the
    // specified thread
    //
    // BOOL IsHungThread(
    //   DWORD dwThreadId, // The identifier of the main app's window thread
    // );
    typedef BOOL (WINAPI *PROCISHUNGTHREAD)(DWORD);


    PROCISHUNGAPPWINDOW   IsHungAppWindow;
    PROCISHUNGTHREAD   IsHungThread;


    void main(int argc, char* argv[])
    {
     if (argc<2)
     {
      printf("Usage:\n\nishung.exe hWnd\n");
      return;
     }

     HWND hWnd;
     sscanf(argv[1],"%lx",&hWnd);

     if (!IsWindow(hWnd))
     {
      printf("Incorrect window handle\n");
      return;
     }

     HMODULE hUser32 = GetModuleHandle("user32");
     if (!hUser32)
      return;

     IsHungAppWindow = (PROCISHUNGAPPWINDOW)
                                             GetProcAddress( hUser32,
                                                             "IsHungAppWindow" );

     IsHungThread = (PROCISHUNGTHREAD) GetProcAddress( hUser32,
                                                              "IsHungThread" );

     if (!IsHungAppWindow && !IsHungThread)
      return;

     OSVERSIONINFO osver;
     osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
     if (!GetVersionEx(&osver))
      return;

     BOOL IsHung;

     if (osver.dwPlatformId&VER_PLATFORM_WIN32_NT)
      IsHung = IsHungAppWindow(hWnd);
     else
      IsHung = IsHungThread(GetWindowThreadProcessId(hWnd,NULL));

     if (IsHung)
      printf("Not Responding\n");
     else
      printf("Running\n");
    }

  • 相关阅读:
    MSSQL慢查询查询与统计
    SQLServer统计采集数据库相关信息
    python3 安装pymssql失败 pip3 install pymssql
    CentOS7源码安装Python3
    python3 安装pyodbc失败 pip3 install pyodbc
    Django配置Mysql数据库 (Pycharm)
    DBArtist之Oracle入门第4步: Oracle创建数据库
    DBArtist之Oracle入门第3步: 安装配置PL/SQL Developer
    linux三剑客
    python + SMTP 发送邮件
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/332120.html
Copyright © 2011-2022 走看看