CVS: seamlessrdp/ServerExe/HookDll hookdll.cpp,1.6,1.7
Peter Åstrand <[email protected]>
| Newsgroups | gmane.network.rdesktop.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/rdesktop/seamlessrdp/ServerExe/HookDll
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12409/ServerExe/HookDll
Modified Files:
hookdll.cpp
Log Message:
Imported changes from nxclipper-1.5.0-9
Index: hookdll.cpp
===================================================================
RCS file: /cvsroot/rdesktop/seamlessrdp/ServerExe/HookDll/hookdll.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** hookdll.cpp 28 Aug 2005 12:56:38 -0000 1.6
--- hookdll.cpp 28 Aug 2005 13:06:05 -0000 1.7
***************
*** 26,37 ****
bool bHooked2 = false;
bool bHooked3 = false;
! HHOOK hhook = 0; //cbt
! HHOOK hhook2 = 0; //shell
! HHOOK hhook3 = 0; //wnd proc
HINSTANCE hInst = 0;
HANDLE m_vcHandle = 0;
! BOOL APIENTRY DllMain( HINSTANCE hinstDLL, DWORD ul_reason_for_call,
! LPVOID lpReserved )
{
switch ( ul_reason_for_call ) {
--- 26,36 ----
bool bHooked2 = false;
bool bHooked3 = false;
! HHOOK hhook = 0; //cbt
! HHOOK hhook2 = 0; //shell
! HHOOK hhook3 = 0; //wnd proc
HINSTANCE hInst = 0;
HANDLE m_vcHandle = 0;
! BOOL APIENTRY DllMain( HINSTANCE hinstDLL, DWORD ul_reason_for_call, LPVOID lpReserved )
{
switch ( ul_reason_for_call ) {
***************
*** 68,71 ****
--- 67,71 ----
};
HWND windowHandle = NULL;
+ HWND windowHandle2 = NULL;
char result[ 255 ] = { ""
};
***************
*** 74,81 ****
LONG b, t, l, r;
! char strB[ 5 ];
! char strT[ 5 ];
! char strL[ 5 ];
! char strR[ 5 ];
RECT rect;
--- 74,81 ----
LONG b, t, l, r;
! char strX[ 5 ];
! char strY[ 5 ];
! char strW[ 5 ];
! char strH[ 5 ];
RECT rect;
***************
*** 84,87 ****
--- 84,129 ----
switch ( details->message ) {
case WM_SIZING:
+ windowHandle = details->hwnd;
+ //get win name
+ GetWindowText( windowHandle, windowTitle, 150 );
+
+ //get an id for it
+ itoa( ( int ) windowHandle, strWindowId, 10 );
+
+ //get coords
+ GetWindowRect( windowHandle, &rect );
+ b = rect.bottom;
+ t = rect.top;
+ l = rect.left;
+ r = rect.right;
+ ltoa( b - t, strH, 10 );
+ ltoa( t, strY, 10 );
+ ltoa( r - l, strW, 10 );
+ ltoa( l, strX, 10 );
+
+ ////setup return string
+ strcat( result, "MSG=CALLWNDPROC_WM_SIZING;OP=6;" );
+ strcat( result, "ID=" );
+ strcat( result, strWindowId );
+ strcat( result, ";" );
+ strcat( result, "TITLE=" );
+ strcat( result, windowTitle );
+ strcat( result, ";" );
+ strcat( result, "X=" );
+ strcat( result, strX );
+ strcat( result, ";" );
+ strcat( result, "Y=" );
+ strcat( result, strY );
+ strcat( result, ";" );
+ strcat( result, "H=" );
+ strcat( result, strH );
+ strcat( result, ";" );
+ strcat( result, "W=" );
+ strcat( result, strW );
+ strcat( result, "." );
+
+ buffer = result;
+
+ break;
case WM_MOVING:
***************
*** 99,109 ****
l = rect.left;
r = rect.right;
! ltoa( b, strB, 10 );
! ltoa( t, strT, 10 );
! ltoa( r, strR, 10 );
! ltoa( l, strL, 10 );
////setup return string
! strcat( result, "MSG=CALLWNDPROC_WM_MOVING;" );
strcat( result, "ID=" );
strcat( result, strWindowId );
--- 141,151 ----
l = rect.left;
r = rect.right;
! ltoa( b - t, strH, 10 );
! ltoa( t, strY, 10 );
! ltoa( r - l, strW, 10 );
! ltoa( l, strX, 10 );
////setup return string
! strcat( result, "MSG=CALLWNDPROC_WM_MOVING;OP=2;" );
strcat( result, "ID=" );
strcat( result, strWindowId );
***************
*** 112,124 ****
strcat( result, windowTitle );
strcat( result, ";" );
! strcat( result, "POS=" );
! strcat( result, strL );
! strcat( result, "~" );
! strcat( result, strT );
! strcat( result, "~" );
! strcat( result, strR );
! strcat( result, "~" );
! strcat( result, strB );
strcat( result, ";" );
buffer = result;
--- 154,261 ----
strcat( result, windowTitle );
strcat( result, ";" );
! strcat( result, "X=" );
! strcat( result, strX );
strcat( result, ";" );
+ strcat( result, "Y=" );
+ strcat( result, strY );
+ strcat( result, ";" );
+ strcat( result, "H=" );
+ strcat( result, strH );
+ strcat( result, ";" );
+ strcat( result, "W=" );
+ strcat( result, strW );
+ strcat( result, "." );
+
+ buffer = result;
+
+ break;
+
+
+ case WM_WINDOWPOSCHANGING:
+
+ windowHandle = details->hwnd;
+ //windowHandle2 = details->hwndInsertAfter;
+ //get win name
+ GetWindowText( windowHandle, windowTitle, 150 );
+
+ //get an id for it
+ itoa( ( int ) windowHandle, strWindowId, 10 );
+
+ //get coords
+ GetWindowRect( windowHandle, &rect );
+ b = rect.bottom;
+ t = rect.top;
+ l = rect.left;
+ r = rect.right;
+ ltoa( b - t, strH, 10 );
+ ltoa( t, strY, 10 );
+ ltoa( r - l, strW, 10 );
+ ltoa( l, strX, 10 );
+
+ ////setup return string
+ strcat( result, "MSG=CALLWNDPROC_WM_WINDOWPOSCHANGING;OP=7;" );
+ strcat( result, "ID=" );
+ strcat( result, strWindowId );
+ strcat( result, ";" );
+ strcat( result, "TITLE=" );
+ strcat( result, windowTitle );
+ strcat( result, ";" );
+ strcat( result, "X=" );
+ strcat( result, strX );
+ strcat( result, ";" );
+ strcat( result, "Y=" );
+ strcat( result, strY );
+ strcat( result, ";" );
+ strcat( result, "H=" );
+ strcat( result, strH );
+ strcat( result, ";" );
+ strcat( result, "W=" );
+ strcat( result, strW );
+ strcat( result, "." );
+
+ buffer = result;
+
+ break;
+ case WM_WINDOWPOSCHANGED:
+
+ windowHandle = details->hwnd;
+ //windowHandle2 = details->hwndInsertAfter;
+ //get win name
+ GetWindowText( windowHandle, windowTitle, 150 );
+
+ //get an id for it
+ itoa( ( int ) windowHandle, strWindowId, 10 );
+
+ //get coords
+ GetWindowRect( windowHandle, &rect );
+ b = rect.bottom;
+ t = rect.top;
+ l = rect.left;
+ r = rect.right;
+ ltoa( b - t, strH, 10 );
+ ltoa( t, strY, 10 );
+ ltoa( r - l, strW, 10 );
+ ltoa( l, strX, 10 );
+
+ ////setup return string
+ strcat( result, "MSG=CALLWNDPROC_WM_WINDOWPOSCHANGED;OP=8;" );
+ strcat( result, "ID=" );
+ strcat( result, strWindowId );
+ strcat( result, ";" );
+ strcat( result, "TITLE=" );
+ strcat( result, windowTitle );
+ strcat( result, ";" );
+ strcat( result, "X=" );
+ strcat( result, strX );
+ strcat( result, ";" );
+ strcat( result, "Y=" );
+ strcat( result, strY );
+ strcat( result, ";" );
+ strcat( result, "H=" );
+ strcat( result, strH );
+ strcat( result, ";" );
+ strcat( result, "W=" );
+ strcat( result, strW );
+ strcat( result, "." );
buffer = result;
***************
*** 159,169 ****
LONG b, t, l, r;
! char strB[ 5 ];
! char strT[ 5 ];
! char strL[ 5 ];
! char strR[ 5 ];
RECT rect;
! int i = 0; //tmp
switch ( nCode ) {
--- 296,306 ----
LONG b, t, l, r;
! char strW[ 5 ];
! char strY[ 5 ];
! char strX[ 5 ];
! char strH[ 5 ];
RECT rect;
! int i = 0; //tmp
switch ( nCode ) {
***************
*** 192,199 ****
l = rect.left;
r = rect.right;
! ltoa( b, strB, 10 );
! ltoa( t, strT, 10 );
! ltoa( r, strR, 10 );
! ltoa( l, strL, 10 );
//get name
--- 329,336 ----
l = rect.left;
r = rect.right;
! ltoa( b - t, strW, 10 );
! ltoa( t, strY, 10 );
! ltoa( r - l, strH, 10 );
! ltoa( l, strX, 10 );
//get name
***************
*** 201,205 ****
////setup return string
! strcat( result, "MSG=HCBT_MINMAX;" );
strcat( result, "ID=" );
strcat( result, strWindowId );
--- 338,345 ----
////setup return string
! strcat( result, "MSG=HCBT_MINMAX;OP=4;" );
!
! // SW_SHOWNOACTIVATE=4 SW_SHOW=5 SW_MINIMIZE=6 SW_SHOWMINNOACTIVE=7 SW_SHOWNA=8 SW_RESTORE=9
! // SW_SHOWDEFAULT=10 SW_FORCEMINIMIZE=11 SW_MAX=11
strcat( result, "ID=" );
strcat( result, strWindowId );
***************
*** 208,246 ****
strcat( result, windowTitle );
strcat( result, ";" );
! strcat( result, "POS=" );
! strcat( result, strL );
! strcat( result, "~" );
! strcat( result, strT );
! strcat( result, "~" );
! strcat( result, strR );
! strcat( result, "~" );
! strcat( result, strB );
strcat( result, ";" );
strcat( result, "TYPE=" );
strcat( result, type );
! strcat( result, ";" );
//-------------------------------------------------------------------------------------------------
// code to prevent minimising windows (can be removed once minimise has been implemented)
! i = ( int ) lParam;
//if (i==0 || i==2 || i==6 || i==7 || i==8 || i==11)
! if ( i == 2 || i == 6 ) {
! MessageBox( 0,
! "Minimising windows is not allowed in this version. Sorry!",
! "TS Window Clipper", MB_OK );
! return 1;
! }
//-----------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
// code to prevent maximising windows (can be removed once maximise has been implemented)
! i = ( int ) lParam;
//if (i==3 || i==9 || i==11)
! if ( i == 3 || i == 11 ) {
! MessageBox( 0,
! "Maximising windows is not allowed in this version. Sorry!",
! "TS Window Clipper", MB_OK );
! return 1;
! }
//-----------------------------------------------------------------------------------------
--- 348,387 ----
strcat( result, windowTitle );
strcat( result, ";" );
! strcat( result, "X=" );
! strcat( result, strX );
! strcat( result, ";" );
! strcat( result, "Y=" );
! strcat( result, strY );
! strcat( result, ";" );
! strcat( result, "H=" );
! strcat( result, strH );
! strcat( result, ";" );
! strcat( result, "W=" );
! strcat( result, strW );
strcat( result, ";" );
strcat( result, "TYPE=" );
strcat( result, type );
! strcat( result, "." );
//-------------------------------------------------------------------------------------------------
// code to prevent minimising windows (can be removed once minimise has been implemented)
! //i = (int)lParam;
//if (i==0 || i==2 || i==6 || i==7 || i==8 || i==11)
! //if ( i==2 || i==6 )
! //{
! // MessageBox(0,"Minimising windows is not allowed in this version. Sorry!","TS Window Clipper", MB_OK);
! // return 1;
! //}
//-----------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
// code to prevent maximising windows (can be removed once maximise has been implemented)
! //i = (int)lParam;
//if (i==3 || i==9 || i==11)
! //if (i==3 || i==11)
! //{
! // MessageBox(0,"Maximising windows is not allowed in this version. Sorry!","TS Window Clipper", MB_OK);
! // return 1;
! //}
//-----------------------------------------------------------------------------------------
***************
*** 264,271 ****
l = rect.left;
r = rect.right;
! ltoa( b, strB, 10 );
! ltoa( t, strT, 10 );
! ltoa( r, strR, 10 );
! ltoa( l, strL, 10 );
//get name
--- 405,412 ----
l = rect.left;
r = rect.right;
! ltoa( b - t, strH, 10 );
! ltoa( t, strY, 10 );
! ltoa( r - l, strW, 10 );
! ltoa( l, strX, 10 );
//get name
***************
*** 273,277 ****
////setup return string
! strcat( result, "MSG=HCBT_MOVESIZE;" );
strcat( result, "ID=" );
strcat( result, strWindowId );
--- 414,418 ----
////setup return string
! strcat( result, "MSG=HCBT_MOVESIZE;OP=5;" );
strcat( result, "ID=" );
strcat( result, strWindowId );
***************
*** 280,292 ****
strcat( result, windowTitle );
strcat( result, ";" );
! strcat( result, "POS=" );
! strcat( result, strL );
! strcat( result, "~" );
! strcat( result, strT );
! strcat( result, "~" );
! strcat( result, strR );
! strcat( result, "~" );
! strcat( result, strB );
strcat( result, ";" );
buffer = result;
--- 421,436 ----
strcat( result, windowTitle );
strcat( result, ";" );
! strcat( result, "X=" );
! strcat( result, strX );
! strcat( result, ";" );
! strcat( result, "Y=" );
! strcat( result, strY );
strcat( result, ";" );
+ strcat( result, "H=" );
+ strcat( result, strH );
+ strcat( result, ";" );
+ strcat( result, "W=" );
+ strcat( result, strW );
+ strcat( result, "." );
buffer = result;
***************
*** 327,334 ****
char strWindowId[ 25 ];
LONG b, t, l, r;
! char strB[ 5 ];
! char strT[ 5 ];
! char strL[ 5 ];
! char strR[ 5 ];
RECT rect;
--- 471,478 ----
char strWindowId[ 25 ];
LONG b, t, l, r;
! char strW[ 5 ];
! char strY[ 5 ];
! char strX[ 5 ];
! char strH[ 5 ];
RECT rect;
***************
*** 346,353 ****
l = rect.left;
r = rect.right;
! ltoa( b, strB, 10 );
! ltoa( t, strT, 10 );
! ltoa( r, strR, 10 );
! ltoa( l, strL, 10 );
//get name
--- 490,497 ----
l = rect.left;
r = rect.right;
! ltoa( b - t, strH, 10 );
! ltoa( t, strY, 10 );
! ltoa( r - l, strW, 10 );
! ltoa( l, strX, 10 );
//get name
***************
*** 355,359 ****
////setup return string
! strcat( result, "MSG=HSHELL_WINDOWCREATED;" );
strcat( result, "ID=" );
strcat( result, strWindowId );
--- 499,503 ----
////setup return string
! strcat( result, "MSG=HSHELL_WINDOWCREATED;OP=0;" );
strcat( result, "ID=" );
strcat( result, strWindowId );
***************
*** 362,374 ****
strcat( result, windowTitle );
strcat( result, ";" );
! strcat( result, "POS=" );
! strcat( result, strL );
! strcat( result, "~" );
! strcat( result, strT );
! strcat( result, "~" );
! strcat( result, strR );
! strcat( result, "~" );
! strcat( result, strB );
strcat( result, ";" );
buffer = result;
--- 506,521 ----
strcat( result, windowTitle );
strcat( result, ";" );
! strcat( result, "X=" );
! strcat( result, strX );
strcat( result, ";" );
+ strcat( result, "Y=" );
+ strcat( result, strY );
+ strcat( result, ";" );
+ strcat( result, "H=" );
+ strcat( result, strH );
+ strcat( result, ";" );
+ strcat( result, "W=" );
+ strcat( result, strW );
+ strcat( result, "." );
buffer = result;
***************
*** 382,390 ****
itoa( ( int ) windowHandle, strWindowId, 10 );
//get name
GetWindowText( windowHandle, windowTitle, 150 );
////setup return string
! strcat( result, "MSG=HSHELL_WINDOWDESTROYED;" );
strcat( result, "ID=" );
strcat( result, strWindowId );
--- 529,548 ----
itoa( ( int ) windowHandle, strWindowId, 10 );
+ //get coords
+ GetWindowRect( windowHandle, &rect );
+ b = rect.bottom;
+ t = rect.top;
+ l = rect.left;
+ r = rect.right;
+ ltoa( b - t, strH, 10 );
+ ltoa( t, strY, 10 );
+ ltoa( r - l, strW, 10 );
+ ltoa( l, strX, 10 );
+
//get name
GetWindowText( windowHandle, windowTitle, 150 );
////setup return string
! strcat( result, "MSG=HSHELL_WINDOWDESTROYED;OP=1;" );
strcat( result, "ID=" );
strcat( result, strWindowId );
***************
*** 393,396 ****
--- 551,566 ----
strcat( result, windowTitle );
strcat( result, ";" );
+ strcat( result, "X=" );
+ strcat( result, strX );
+ strcat( result, ";" );
+ strcat( result, "Y=" );
+ strcat( result, strY );
+ strcat( result, ";" );
+ strcat( result, "H=" );
+ strcat( result, strH );
+ strcat( result, ";" );
+ strcat( result, "W=" );
+ strcat( result, strW );
+ strcat( result, "." );
buffer = result;
***************
*** 412,431 ****
{
if ( !bHooked ) {
! hhook =
! SetWindowsHookEx( WH_CBT, ( HOOKPROC ) CbtProc, hInst, ( DWORD ) NULL );
bHooked = true;
}
if ( !bHooked2 ) {
! hhook2 =
! SetWindowsHookEx( WH_SHELL, ( HOOKPROC ) ShellProc, hInst,
! ( DWORD ) NULL );
bHooked2 = true;
}
if ( !bHooked3 ) {
! hhook3 =
! SetWindowsHookEx( WH_CALLWNDPROC, ( HOOKPROC ) CallWndProc, hInst,
! ( DWORD ) NULL );
bHooked3 = true;
}
--- 582,596 ----
{
if ( !bHooked ) {
! hhook = SetWindowsHookEx( WH_CBT, ( HOOKPROC ) CbtProc, hInst, ( DWORD ) NULL );
bHooked = true;
}
if ( !bHooked2 ) {
! hhook2 = SetWindowsHookEx( WH_SHELL, ( HOOKPROC ) ShellProc, hInst, ( DWORD ) NULL );
bHooked2 = true;
}
if ( !bHooked3 ) {
! hhook3 = SetWindowsHookEx( WH_CALLWNDPROC, ( HOOKPROC ) CallWndProc, hInst, ( DWORD ) NULL );
bHooked3 = true;
}
***************
*** 457,464 ****
int OpenVirtualChannel()
{
! m_vcHandle =
! WTSVirtualChannelOpen( WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION,
! CHANNELNAME );
!
if ( m_vcHandle == NULL ) {
return 0;
--- 622,627 ----
int OpenVirtualChannel()
{
! m_vcHandle = WTSVirtualChannelOpen( WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, CHANNELNAME );
!
if ( m_vcHandle == NULL ) {
return 0;
***************
*** 495,502 ****
PULONG pBytesWritten = 0;
! BOOL result =
! WTSVirtualChannelWrite( m_vcHandle, buffer, ( ULONG ) strlen( buffer ),
! pBytesWritten );
!
if ( result ) {
return 1;
--- 658,663 ----
PULONG pBytesWritten = 0;
! BOOL result = WTSVirtualChannelWrite( m_vcHandle, buffer, ( ULONG ) strlen( buffer ), pBytesWritten );
!
if ( result ) {
return 1;
-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf