167 lines
2.9 KiB
C++
167 lines
2.9 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 2000 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
RemoteDesktopClientEventSink
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This listens to the events from the IRemoteDesktopClient so
|
||
|
we can find out when the server connects.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Marc Reyhner 7/11/2000
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
|
||
|
#ifdef TRC_FILE
|
||
|
#undef TRC_FILE
|
||
|
#endif
|
||
|
|
||
|
#define TRC_FILE "rcrdces"
|
||
|
|
||
|
#include "rcontrol.h"
|
||
|
#include "RemoteDesktopClientSession.h"
|
||
|
#include "RemoteDesktopClientEventSink.h"
|
||
|
#include "Resource.h"
|
||
|
|
||
|
|
||
|
|
||
|
CRemoteDesktopClientEventSink::CRemoteDesktopClientEventSink(
|
||
|
IN OUT CRemoteDesktopClientSession *obj
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Create a new event sink and save the pointer back to the
|
||
|
CRemoteDesktopClientSession we are monitoring.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
obj - The CRemoteDesktopClientSession we are monitoring events for
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
None
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
DC_BEGIN_FN("CRemoteDesktopClientEventSink::CRemoteDesktopClientEventSink");
|
||
|
m_Obj = obj;
|
||
|
DC_END_FN();
|
||
|
}
|
||
|
|
||
|
|
||
|
VOID __stdcall
|
||
|
CRemoteDesktopClientEventSink::OnConnected(
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
We are connected to the server so we want to remote control the desktop.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
None
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
None
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
DC_BEGIN_FN("CRemoteDesktopClientEventSink::OnConnected");
|
||
|
|
||
|
m_Obj->ConnectRemoteDesktop();
|
||
|
|
||
|
DC_END_FN();
|
||
|
}
|
||
|
|
||
|
|
||
|
VOID __stdcall
|
||
|
CRemoteDesktopClientEventSink::OnDisconnected(
|
||
|
IN LONG reason
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
We've been disconnected. We currently don't do
|
||
|
anything here.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
reason - Why we were disconnected.
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
None
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
TCHAR dlgTitle[MAX_STR_LEN];
|
||
|
TCHAR dlgText[MAX_STR_LEN];
|
||
|
|
||
|
DC_BEGIN_FN("CRemoteDesktopClientEventSink::OnDisconnected");
|
||
|
|
||
|
if (reason != S_OK) {
|
||
|
TRC_ERR((TB,TEXT("We were disconnected with code 0x%0X"),reason));
|
||
|
}
|
||
|
LoadStringSimple(IDS_CLIENTREMOTEDISCONNECT,dlgText);
|
||
|
LoadStringSimple(IDS_CLIENTWNDTITLE,dlgTitle);
|
||
|
MessageBox(m_Obj->m_hWnd,dlgText,dlgTitle,MB_OK);
|
||
|
DestroyWindow(m_Obj->m_hWnd);
|
||
|
|
||
|
DC_END_FN();
|
||
|
}
|
||
|
|
||
|
VOID __stdcall
|
||
|
CRemoteDesktopClientEventSink::OnRemoteControlRequestComplete(
|
||
|
IN LONG status
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This never gets called so we can't do anything here.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
status - The status of our request.
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
None
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
TCHAR dlgTitle[MAX_STR_LEN];
|
||
|
TCHAR dlgText[MAX_STR_LEN];
|
||
|
|
||
|
DC_BEGIN_FN("CRemoteDesktopClientEventSink::OnRemoteControlRequestComplete");
|
||
|
|
||
|
if (status != S_OK) {
|
||
|
TRC_ERR((TB,TEXT("Remote control failed with code 0x%0X"),status));
|
||
|
|
||
|
LoadStringSimple(IDS_CLIENTWNDTITLE,dlgTitle);
|
||
|
LoadStringSimple(IDS_CLIENTREMOTEFAIL,dlgText);
|
||
|
MessageBox(m_Obj->m_hWnd,dlgText,dlgTitle,MB_OK|MB_ICONWARNING);
|
||
|
DestroyWindow(m_Obj->m_hWnd);
|
||
|
} else {
|
||
|
// this isn't getting called but it should be.
|
||
|
m_Obj->m_ApprovalDlg.DestroyDialog();
|
||
|
}
|
||
|
|
||
|
DC_END_FN();
|
||
|
}
|