152 lines
3.9 KiB
C++
152 lines
3.9 KiB
C++
//
|
|
// Shared Window List
|
|
//
|
|
|
|
#ifndef _H_SWL
|
|
#define _H_SWL
|
|
|
|
|
|
//
|
|
// Max # of entries we can send in SWL packet; backwards compat thing.
|
|
// Also, we keep a bunch of static arrays around so we know if stuff has
|
|
// changed.
|
|
//
|
|
#define SWL_MAX_WINDOWS 100
|
|
|
|
|
|
//
|
|
// Return codes.
|
|
//
|
|
|
|
#define SWL_RC_ERROR 0
|
|
#define SWL_RC_SENT 1
|
|
#define SWL_RC_NOT_SENT 2
|
|
|
|
|
|
|
|
|
|
//
|
|
// CONSTANTS
|
|
//
|
|
|
|
//
|
|
// Window property flags
|
|
//
|
|
#define SWL_PROP_INVALID 0x00000000
|
|
#define SWL_PROP_COUNTDOWN_MASK 0x00000003
|
|
#define SWL_PROP_INITIAL 0x00000004
|
|
#define SWL_PROP_TAGGABLE 0x00000020
|
|
#define SWL_PROP_TASKBAR 0x00000040
|
|
#define SWL_PROP_SHADOW 0x00000100
|
|
#define SWL_PROP_IGNORE 0x00000200
|
|
#define SWL_PROP_HOSTED 0x00000400
|
|
#define SWL_PROP_TRANSPARENT 0x00000800
|
|
#define SWL_PROP_SAVEBITS 0x00001000
|
|
|
|
|
|
//
|
|
// We still need this SWL token stuff for backwards compatibility (<= NM 2.1)
|
|
// Those systems treat the shared apps from all the different participants
|
|
// in a global fashion.
|
|
//
|
|
// Even so, back level systems may not be able to keep up if a lot of NM 3.0
|
|
// systems are sharing--but that happens even among an all 2.1 conference.
|
|
// With collisions, zordering, etc. a sharer may back off or drop packets.
|
|
//
|
|
#define SWL_SAME_ZORDER_INC 1
|
|
#define SWL_NEW_ZORDER_INC 2
|
|
#define SWL_NEW_ZORDER_ACTIVE_INC 3
|
|
#define SWL_NEW_ZORDER_FAKE_WINDOW_INC 4
|
|
#define SWL_EXIT_INC 5
|
|
|
|
#define SWL_MAKE_TOKEN(index, inc) (TSHR_UINT16)(((index) << 4) | (inc))
|
|
|
|
#define SWL_GET_INDEX(token) ((token) >> 4)
|
|
#define SWL_MAX_TOKEN_INDEX 0x0FFF
|
|
|
|
#define SWL_GET_INCREMENT(token) ((token) & 0x000F)
|
|
|
|
|
|
|
|
|
|
//
|
|
// This is the number of times we must consecutively see a window as
|
|
// invisible before we believe it is - see comments in aswlint.c explaining
|
|
// why we must do this.
|
|
//
|
|
#define SWL_BELIEVE_INVISIBLE_COUNT 2
|
|
|
|
|
|
//
|
|
// Name of the SWL Global Atom
|
|
//
|
|
#define SWL_ATOM_NAME "AS_StateInfo"
|
|
|
|
|
|
//
|
|
// For each sharer in the conference, we remember the last shared list
|
|
// they sent us--the HWNDs (on their machine, no meaning on ours), the
|
|
// state information, and the position.
|
|
//
|
|
// We use this for several purposes:
|
|
// (1) 2.x compatibility
|
|
// 2.x sharers, when they send SWL lists, do not fill in the position
|
|
// of shadows representing other remote app windows. Those will appear
|
|
// in the list if they obscure parts of shared windows on the 2.x host. The
|
|
// old 2.x code would look up the last position info in the global shared
|
|
// list, and use that. We need the position info to accurately compute
|
|
// the obscured regions for a particular host. 3.0 sharers don't have
|
|
// shadows, they never send incomplete info.
|
|
//
|
|
// (2) For better UI in the host view
|
|
// We can remember where the window on top is, where the active window
|
|
// is (if a 3.0 host), if a window is minimized, etc. Since we don't have
|
|
// independent fake windows floating with tray buttons you can manipulate
|
|
// on a remote to manipulate the host, minimized windows will disappear.
|
|
// Only Alt-Tabbing (when controlling) can activate and restore them.
|
|
//
|
|
|
|
|
|
//
|
|
// DESKTOP types
|
|
//
|
|
enum
|
|
{
|
|
DESKTOP_OURS = 0,
|
|
DESKTOP_WINLOGON,
|
|
DESKTOP_SCREENSAVER,
|
|
DESKTOP_OTHER
|
|
};
|
|
|
|
#define NAME_DESKTOP_WINLOGON "Winlogon"
|
|
#define NAME_DESKTOP_SCREENSAVER "Screen-saver"
|
|
#define NAME_DESKTOP_DEFAULT "Default"
|
|
|
|
#define SWL_DESKTOPNAME_MAX 64
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
// Things we need for enumeration of top level windows
|
|
typedef struct tagSWLENUMSTRUCT
|
|
{
|
|
class ASHost * pHost;
|
|
BOOL fBailOut;
|
|
UINT transparentCount;
|
|
UINT count;
|
|
LPSTR newWinNames;
|
|
PSWLWINATTRIBUTES newFullWinStruct;
|
|
}
|
|
SWLENUMSTRUCT, * PSWLENUMSTRUCT;
|
|
|
|
#endif // __cplusplus
|
|
|
|
|
|
BOOL CALLBACK SWLDestroyWindowProperty(HWND, LPARAM);
|
|
|
|
|
|
BOOL CALLBACK SWLEnumProc(HWND hwnd, LPARAM lParam);
|
|
|
|
|
|
#endif // _H_SWL
|