home *** CD-ROM | disk | FTP | other *** search
- /*
- TASKQ.C -- Task Queue info
-
- From Chapter 5 of "Undocumented Windows" (Addison-Wesley 1992)
- by Andrew Schulman, Dave Maxey and Matt Pietrek
-
- Build using: WINIOBC TASKQ (for Borland C++ v3.00)
- WINIOMS TASKQ (for Microsoft C/SDK)
- */
-
- #include <windows.h>
- #include <stdlib.h>
- #include <dos.h>
- #include "winio.h"
-
- #ifndef __BORLANDC__
- #define MK_FP(a,b) ((void far *)(((unsigned long)(a) << 16) | (b)))
- #endif
-
- typedef struct {
- WORD wNext;
- HANDLE hTask;
- WORD wSize;
- WORD wNumMsgs;
- // ... other fields: see Task Queue ...
- } TASKQ;
-
- WORD FAR PASCAL GetTaskQueue(HANDLE hTask);
-
- main(int argc, char *argv[])
- {
- HANDLE hTaskQ;
- TASKQ far *fpTaskQ;
-
- winio_about("TASKQ"
- "\nTask Queue info"
- "\nUsage: TASKQ [window title]"
- "\n\nFrom Chapter 5 of"
- "\n\"Undocumented Windows\" (Addison-Wesley, 1992)"
- "\nby Andrew Schulman, David Maxey and Matt Pietrek"
- );
-
- if (argc < 2)
- hTaskQ = GetTaskQueue(0);
- else
- hTaskQ = GetTaskQueue(GetWindowTask(FindWindow(0L, argv[1])));
-
- if (! hTaskQ)
- fail("Can't locate Task Queue");
-
- fpTaskQ = MK_FP(hTaskQ, 0);
- printf("Task: %04x\n", fpTaskQ->hTask);
- printf("Number of pending messages: %u\n", fpTaskQ->wNumMsgs);
- return 0;
- }
-
-