1 |
//********************************************************************************* |
2 |
// |
3 |
//Title: Terminal Services Window Clipper |
4 |
// |
5 |
//Author: Martin Wickett |
6 |
// |
7 |
//Date: 2004 |
8 |
// |
9 |
//********************************************************************************* |
10 |
|
11 |
#define VER_FILETYPE VFT_DLL |
12 |
#define VER_FILESUBTYPE VFT2_UNKNOWN |
13 |
#define VER_FILEDESCRIPTION_STR "Virtual Channel sample DLL" |
14 |
#define VER_INTERNALNAME_STR "sysinf_c.dll" |
15 |
#define VER_ORIGINALFILENAME_STR "sysinf_c.dll" |
16 |
|
17 |
#define STRICT |
18 |
#define _ |
19 |
|
20 |
#include <windows.h> |
21 |
#include <ntverp.h> |
22 |
#include "common.ver" |
23 |
|
24 |
#include <windows.h> |
25 |
#include <stdio.h> |
26 |
#include <wtsapi32.h> |
27 |
#include <tchar.h> |
28 |
#include <lmcons.h> |
29 |
|
30 |
#ifdef TSDLL |
31 |
|
32 |
#include <pchannel.h> |
33 |
#include <cchannel.h> |
34 |
|
35 |
#include <windows.h> |
36 |
#include <winuser.h> |
37 |
|
38 |
#endif |
39 |
|
40 |
#include "hash.h" |
41 |
#include "tokenizer.h" |
42 |
#include "WindowData.h" |
43 |
|
44 |
// |
45 |
// definitions |
46 |
// |
47 |
#define CHANNELNAME "CLIPPER" |
48 |
|
49 |
// |
50 |
// GLOBAL variables |
51 |
// |
52 |
|
53 |
LPHANDLE gphChannel; |
54 |
DWORD gdwOpenChannel; |
55 |
PCHANNEL_ENTRY_POINTS gpEntryPoints; |
56 |
|
57 |
hash_table m_ht; |
58 |
HRGN m_regionResult; |
59 |
HWND m_mainWindowHandle = NULL; |
60 |
int classAlreadyRegistered = 0; |
61 |
|
62 |
int const ALWAYS__CLIP = 0; //set this to 0 to turn off clipping when there are no windows |
63 |
int const HIDE_TSAC_WINDOW = 1; |
64 |
int const OUTPUT_DEBUG_INFO = 0; |
65 |
int const OUTPUT_WINDOW_TABLE_DEBUG_INFO = 0; |
66 |
|
67 |
// |
68 |
// declarations |
69 |
// |
70 |
void WINAPI VirtualChannelOpenEvent(DWORD openHandle, UINT event, |
71 |
LPVOID pdata, UINT32 dataLength, |
72 |
UINT32 totalLength, UINT32 dataFlags); |
73 |
VOID VCAPITYPE VirtualChannelInitEventProc(LPVOID pInitHandle, UINT event, |
74 |
LPVOID pData, UINT dataLength); |
75 |
BOOL VCAPITYPE VirtualChannelEntry(PCHANNEL_ENTRY_POINTS pEntryPoints); |
76 |
|
77 |
void DoClipping(int forceRedraw); |
78 |
void CreateRegionFromWindowData(char *, void *); |
79 |
|
80 |
void CreateAndShowWindow(CWindowData * wd); |
81 |
void DestroyTaskbarWindow(CWindowData * wd); |