TLIST.C
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /******************************************************************************
  2. *       This is a part of the Microsoft Source Code Samples. 
  3. *   Copyright (C) 1994-1995 Microsoft Corporation.
  4. *       All rights reserved. 
  5. *       This source code is only intended as a supplement to 
  6. *       Microsoft Development Tools and/or WinHelp documentation.
  7. *       See these sources for detailed information regarding the 
  8. *       Microsoft samples programs.
  9. ******************************************************************************/
  10. /*++
  11. Copyright (c) 1994  Microsoft Corporation
  12. Module Name:
  13.     tlist.c
  14. Abstract:
  15.     This module implements a task list application.
  16. --*/
  17. #include <windows.h>
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #include <string.h>
  21. #include "common.h"
  22. #define MAX_TASKS           256
  23. #define PrintTask(idx) 
  24.         printf( "%4d %-16s", tlist[idx].dwProcessId, tlist[idx].ProcessName ); 
  25.         if (tlist[idx].hwnd) { 
  26.             printf( "  %s", tlist[idx].WindowTitle ); 
  27.         } 
  28.         printf( "n" );
  29. DWORD numTasks;
  30. TASK_LIST tlist[MAX_TASKS];
  31. VOID Usage(VOID);
  32. int _cdecl
  33. main(
  34.     int argc,
  35.     char *argv[]
  36.     )
  37. /*++
  38. Routine Description:
  39.     Main entrypoint for the TLIST application.  This app prints
  40.     a task list to stdout.  The task list include the process id,
  41.     task name, ant the window title.
  42. Arguments:
  43.     argc             - argument count
  44.     argv             - array of pointers to arguments
  45. Return Value:
  46.     0                - success
  47. --*/
  48. {
  49.     DWORD             i;
  50.     TASK_LIST_ENUM    te;
  51.     BOOL              fTree;
  52.     OSVERSIONINFO     verInfo = {0};
  53.     LPGetTaskList     GetTaskList;
  54.     LPEnableDebugPriv EnableDebugPriv;
  55.     if (argc > 1 && (argv[1][0] == '-' || argv[1][0] == '/') && argv[1][1] == '?') {
  56.         Usage();
  57.     }
  58.     //
  59.     // Determine what system we're on and do the right thing
  60.     //
  61.     verInfo.dwOSVersionInfoSize = sizeof (verInfo);
  62.     GetVersionEx(&verInfo);
  63.     switch (verInfo.dwPlatformId)
  64.     {
  65.     case VER_PLATFORM_WIN32_NT:
  66.        GetTaskList     = GetTaskListNT;
  67.        EnableDebugPriv = EnableDebugPrivNT;
  68.        break;
  69.     case VER_PLATFORM_WIN32_WINDOWS:
  70.        GetTaskList = GetTaskList95;
  71.        EnableDebugPriv = EnableDebugPriv95;
  72.        break;
  73.     default:
  74.        printf ("tlist requires Windows NT or Windows 95n");
  75.        return 1;
  76.     }
  77.     fTree = FALSE;
  78.     //
  79.     // Obtain the ability to manipulate other processes
  80.     //
  81.     EnableDebugPriv();
  82.     //
  83.     // get the task list for the system
  84.     //
  85.     numTasks = GetTaskList( tlist, MAX_TASKS );
  86.     //
  87.     // enumerate all windows and try to get the window
  88.     // titles for each task
  89.     //
  90.     te.tlist = tlist;
  91.     te.numtasks = numTasks;
  92.     GetWindowTitles( &te );
  93.     //
  94.     // print the task list
  95.     //
  96.     for (i=0; i<numTasks; i++) {
  97. PrintTask( i );
  98.     }
  99.     //
  100.     // end of program
  101.     //
  102.     return 0;
  103. }
  104. VOID
  105. Usage(
  106.     VOID
  107.     )
  108. /*++
  109. Routine Description:
  110.     Prints usage text for this tool.
  111. Arguments:
  112.     None.
  113. Return Value:
  114.     None.
  115. --*/
  116. {
  117.     fprintf( stderr, "Microsoft (R) Windows NT (TM) Version 3.5 TLISTn" );
  118.     fprintf( stderr, "Copyright (C) 1994-1995 Microsoft Corp. All rights reservednn" );
  119.     fprintf( stderr, "usage: TLISTn" );
  120.     ExitProcess(0);
  121. }