1
0
mirror of https://github.com/DxWnd/DxWnd.reloaded synced 2024-12-30 09:25:35 +01:00

v2_03_63_src

Former-commit-id: 3425022d6ca2eb98a114b9d083d71db2119c6d89
This commit is contained in:
gho tik 2016-04-17 12:45:41 -04:00 committed by Refael ACkermann
parent 7eefee644a
commit fc82f0a055
41 changed files with 446 additions and 142 deletions

View File

@ -150,7 +150,7 @@
#define DIABLOTWEAK 0x00000001 // ... ??? ... #define DIABLOTWEAK 0x00000001 // ... ??? ...
#define CLEARTARGET 0x00000002 // forces a D3D clean on target surface upon each BeginScene invocation #define CLEARTARGET 0x00000002 // forces a D3D clean on target surface upon each BeginScene invocation
#define NOWINPOSCHANGES 0x00000004 // suppress WM_WINDOWPOSCHANGING/CHANGED messages (RollerCoaster Tycoon...) #define NOWINPOSCHANGES 0x00000004 // suppress WM_WINDOWPOSCHANGING/CHANGED messages (RollerCoaster Tycoon...)
//#define NOSYSTEMMEMORY 0x00000008 // forces suppression of DDSCAPS_SYSTEMMEMORY capability on surfaces #define ANSIWIDE 0x00000008 // by default uses Widechar version of API intead od ANSI
#define NOBLT 0x00000010 // suppress blit to primary surface #define NOBLT 0x00000010 // suppress blit to primary surface
//#define NOSYSTEMEMULATED 0x00000020 // forces suppression of DDSCAPS_SYSTEMMEMORY capability on emulated front & backbuffer surfaces //#define NOSYSTEMEMULATED 0x00000020 // forces suppression of DDSCAPS_SYSTEMMEMORY capability on emulated front & backbuffer surfaces
#define DOFASTBLT 0x00000040 // use FastBlt to primary surface #define DOFASTBLT 0x00000040 // use FastBlt to primary surface

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:c352a420894e9be21d4b1a04c665e7e463d533be4c54b70201c90db2702ef994 oid sha256:537e48142d49baefcb73703effbe1cbdf7577aa64e9326adac8f4fe6dfe99958
size 643584 size 644096

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:b9bf619ccedb715b22ab6deee04a4182be6f76f31f702ac1e2ff1bb172447e49 oid sha256:9f4fdbf4310c5fd473a72b37e4fcc5c30f5f12f4537a238748890b2b9ce38b43
size 556032 size 557056

View File

@ -27,3 +27,9 @@ notes0=
flagj0=128 flagj0=128
winver0=0 winver0=0
maxres0=0 maxres0=0
registry0=
flagk0=65536
flagl0=0
flagm0=0
swapeffect0=0
maxddinterface0=7

View File

@ -7,10 +7,10 @@ opengllib0=
notes0= notes0=
ver0=1 ver0=1
coord0=0 coord0=0
flag0=683687970 flag0=683687978
flagg0=2013265920 flagg0=2013265920
flagh0=20 flagh0=20
flagi0=675282948 flagi0=138412036
flagj0=4224 flagj0=4224
tflag0=0 tflag0=0
initx0=0 initx0=0
@ -30,3 +30,6 @@ maxres0=-1
registry0= registry0=
flagk0=65536 flagk0=65536
swapeffect0=0 swapeffect0=0
flagl0=0
flagm0=0
maxddinterface0=7

View File

@ -0,0 +1,29 @@
[target]
title0=Drakan Order of the Flame (10th anniversary)
path0=D:\Games\drakan\drakan.exe
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
coord0=0
flag0=740311126
flagg0=1476395008
flagh0=20
flagi0=203423748
flagj0=4224
flagk0=268500994
flagl0=0
flagm0=0
tflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7

View File

@ -6,9 +6,9 @@ opengllib0=
ver0=1 ver0=1
coord0=0 coord0=0
flag0=134217762 flag0=134217762
flagg0=1744830464 flagg0=1207959552
flagh0=20 flagh0=20
flagi0=4194308 flagi0=71303172
tflag0=0 tflag0=0
initx0=0 initx0=0
inity0=0 inity0=0

View File

@ -4,12 +4,12 @@ path0=D:\Games\Fifa 99\fifa99.exe
launchpath0= launchpath0=
module0= module0=
opengllib0= opengllib0=
ver0=7 ver0=0
coord0=0 coord0=0
flag0=671105058 flag0=671105058
flagg0=1207959552 flagg0=1207959552
flagh0=20 flagh0=20
flagi0=138412036 flagi0=205520900
flagj0=128 flagj0=128
tflag0=0 tflag0=0
initx0=0 initx0=0
@ -30,3 +30,6 @@ notes0=
flagk0=65536 flagk0=65536
swapeffect0=0 swapeffect0=0
registry0= registry0=
flagl0=0
flagm0=0
maxddinterface0=7

View File

@ -6,11 +6,11 @@ module0=
opengllib0= opengllib0=
ver0=0 ver0=0
coord0=0 coord0=0
flag0=134218272 flag0=134218274
flagg0=1207959552 flagg0=1207959552
flagh0=20 flagh0=20
flagi0=138412036 flagi0=138412036
flagj0=128 flagj0=67108992
tflag0=0 tflag0=0
initx0=0 initx0=0
inity0=0 inity0=0
@ -26,3 +26,10 @@ maxfps0=0
initts0=0 initts0=0
winver0=0 winver0=0
maxres0=-1 maxres0=-1
notes0=
registry0=
flagk0=65536
flagl0=0
flagm0=0
swapeffect0=0
maxddinterface0=7

View File

@ -5,7 +5,7 @@ module0=
opengllib0= opengllib0=
ver0=0 ver0=0
coord0=0 coord0=0
flag0=134218272 flag0=134218274
flagg0=1207959552 flagg0=1207959552
flagh0=20 flagh0=20
flagi0=4194308 flagi0=4194308
@ -27,5 +27,9 @@ maxres0=-1
launchpath0= launchpath0=
notes0= notes0=
flagj0=128 flagj0=128
flagk0=0 flagk0=65536
swapeffect0=0 swapeffect0=0
registry0=
flagl0=0
flagm0=0
maxddinterface0=7

View File

@ -9,7 +9,7 @@ flag0=134217762
flagg0=1207959552 flagg0=1207959552
flagh0=20 flagh0=20
flagi0=4194308 flagi0=4194308
tflag0=6402 tflag0=0
initx0=0 initx0=0
inity0=0 inity0=0
minx0=0 minx0=0
@ -27,5 +27,9 @@ maxres0=-1
launchpath0= launchpath0=
notes0= notes0=
flagj0=128 flagj0=128
flagk0=0 flagk0=65536
swapeffect0=0 swapeffect0=0
registry0=
flagl0=0
flagm0=0
maxddinterface0=7

View File

@ -0,0 +1,29 @@
[target]
title0=Grand Theft Auto 3: Vice City
path0=D:\Games\GTA3ViceCity\gta-vc.exe
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
coord0=0
flag0=-2011168218
flagg0=1207959552
flagh0=20
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=0
flagm0=0
tflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7

View File

@ -0,0 +1,29 @@
[target]
title0=Gunbound
path0=D:\Games\GunBound\GunGame.gme
launchpath0=D:\Games\GunBound\Launcher.exe
module0=
opengllib0=
notes0=
registry0=
ver0=0
coord0=0
flag0=136314922
flagg0=1207959552
flagh0=20
flagi0=138412036
flagj0=4224
flagk0=65536
flagl0=0
flagm0=0
tflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7

View File

@ -0,0 +1,29 @@
[target]
title0=Mechwarrior 3
path0=D:\Games\Mechwarrior 3 (full)\Mech3.exe
launchpath0=
module0=
opengllib0=
notes0=
registry0=\n[HKEY_LOCAL_MACHINE\Software]\n[HKEY_LOCAL_MACHINE\Software\MicroProse]\n[HKEY_LOCAL_MACHINE\Software\MicroProse\MechWarrior 3 EP1]\n[HKEY_LOCAL_MACHINE\Software\MicroProse\MechWarrior 3 EP1\1.0]\n"Program"="..\\"\n"Version"="1.0"\n"InstallOptions"=dword:00050707\n\n[HKEY_LOCAL_MACHINE\Software\Microsoft]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay\Applications]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay\Applications\MechWarrior 3 EP1]\n"Guid"="{FA96C421-18DD-11D3-95AF-0060089877F0}"\n"File"="Mech3.exe"\n"CommandLine"="\n"Path"=".\\"\n"CurrentDirectory"=".\\"\n\n
ver0=0
coord0=0
flag0=136331398
flagg0=1207959552
flagh0=9236
flagi0=1277165574
flagj0=4224
flagk0=65600
flagl0=0
flagm0=0
tflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7

View File

@ -12,7 +12,7 @@ flagg0=1744830592
flagh0=20 flagh0=20
flagi0=138412036 flagi0=138412036
flagj0=4224 flagj0=4224
tflag0=6403 tflag0=0
initx0=0 initx0=0
inity0=0 inity0=0
minx0=0 minx0=0
@ -27,3 +27,9 @@ maxfps0=0
initts0=0 initts0=0
winver0=0 winver0=0
maxres0=-1 maxres0=-1
registry0=
flagk0=65536
flagl0=0
flagm0=0
swapeffect0=0
maxddinterface0=7

View File

@ -8,9 +8,9 @@ notes0=
registry0= registry0=
ver0=0 ver0=0
coord0=0 coord0=0
flag0=136314912 flag0=136331296
flagg0=1207959552 flagg0=1207959552
flagh0=20 flagh0=262164
flagi0=138412038 flagi0=138412038
flagj0=266368 flagj0=266368
flagk0=65536 flagk0=65536

View File

@ -0,0 +1,29 @@
[target]
title0=Tomb Raider - Anniversary Demo
path0=D:\Games\Tomb Raider - Anniversary Demo\tra.exe
launchpath0=
module0=
opengllib0=
notes0=
registry0=
ver0=0
coord0=0
flag0=136314914
flagg0=1207959552
flagh0=20
flagi0=134217732
flagj0=4232
flagk0=65536
flagl0=0
flagm0=0
tflag0=0
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7

View File

@ -6,11 +6,11 @@ module0=
opengllib0= opengllib0=
ver0=0 ver0=0
coord0=0 coord0=0
flag0=134218272 flag0=134218274
flagg0=1207959552 flagg0=1207959552
flagh0=20 flagh0=20
flagi0=4194308 flagi0=4194308
tflag0=64 tflag0=0
initx0=0 initx0=0
inity0=0 inity0=0
minx0=0 minx0=0
@ -26,3 +26,10 @@ initts0=0
winver0=0 winver0=0
maxres0=-1 maxres0=-1
flagj0=4224 flagj0=4224
notes0=
registry0=
flagk0=0
flagl0=0
flagm0=0
swapeffect0=0
maxddinterface0=7

35
build/exports/dxwnd.ini Normal file
View File

@ -0,0 +1,35 @@
[window]
posx=981
posy=578
sizx=320
sizy=200
exportpath=D:\DxWnd\exports\
[target]
title0=Imperialism
path0=D:\Games\Imperialism\Imperialism.exe
launchpath0=
module0=
opengllib0=
notes0=Note:\nMap zooming is currently not workind. Do not click on the magnifying glass, \nor the game will crash.
registry0=
ver0=0
coord0=0
flag0=1746935851
flagg0=1207959553
flagh0=20
flagi0=4194308
flagj0=128
flagk0=262144
flagl0=4
flagm0=0
tflag0=-2147477245
posx0=50
posy0=50
sizx0=800
sizy0=600
maxfps0=0
initts0=0
winver0=0
maxres0=-1
swapeffect0=0
maxddinterface0=7

View File

@ -1081,5 +1081,11 @@ fix: added CDS_UPDATEREGISTRY to the ChangeDisplaySettings modes to be neutraliz
v2.03.62 v2.03.62
fix: flag "Intercept Alt-F4 key" now working also alone with no need to set "Enable hot keys" fix: flag "Intercept Alt-F4 key" now working also alone with no need to set "Enable hot keys"
fix: file open dialogs initialization on WinXP platform fix: file open dialogs initialization on WinXP platform
fix: hooked ANSI & WIDECHAR version of DirectInput8Create: makes "Gooka the Mystery of Janatris" working. fix: hooked ANSI & WIDECHAR version of DirectInput8CreateDevice: makes "Gooka the Mystery of Janatris" working.
fix: rebuild up-to-date dxwnd proxies fix: rebuild up-to-date dxwnd proxies
v2.03.63
fix: saved config changes in case DxWnd is restarted for acquiring admin caps
fix: duplicated several function pointers in D3D8/9 wrappers: fix some GTA3 crashes and reduce the need to suppress Reset operation
add: flag "Widechar program vs. ANSI" to replace default ansi calls with widechar equivalents: fixes "Tomb Raider Anniversary" mouse problems

Binary file not shown.

View File

@ -3978,13 +3978,13 @@ HRESULT WINAPI extSetPalette(SetPalette_Type pSetPalette, LPDIRECTDRAWSURFACE lp
HRESULT WINAPI extSetPalette1(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpddp) HRESULT WINAPI extSetPalette1(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpddp)
{ return extSetPalette(pSetPalette1, lpdds, lpddp); } { return extSetPalette(pSetPalette1, lpdds, lpddp); }
HRESULT WINAPI extSetPalette2(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpddp) HRESULT WINAPI extSetPalette2(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpddp)
{ return extSetPalette(pSetPalette1, lpdds, lpddp); } { return extSetPalette(pSetPalette2, lpdds, lpddp); }
HRESULT WINAPI extSetPalette3(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpddp) HRESULT WINAPI extSetPalette3(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpddp)
{ return extSetPalette(pSetPalette1, lpdds, lpddp); } { return extSetPalette(pSetPalette3, lpdds, lpddp); }
HRESULT WINAPI extSetPalette4(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpddp) HRESULT WINAPI extSetPalette4(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpddp)
{ return extSetPalette(pSetPalette1, lpdds, lpddp); } { return extSetPalette(pSetPalette4, lpdds, lpddp); }
HRESULT WINAPI extSetPalette7(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpddp) HRESULT WINAPI extSetPalette7(LPDIRECTDRAWSURFACE lpdds, LPDIRECTDRAWPALETTE lpddp)
{ return extSetPalette(pSetPalette1, lpdds, lpddp); } { return extSetPalette(pSetPalette7, lpdds, lpddp); }
HRESULT WINAPI extSetEntries(LPDIRECTDRAWPALETTE lpddp, DWORD dwflags, DWORD dwstart, DWORD dwcount, LPPALETTEENTRY lpentries) HRESULT WINAPI extSetEntries(LPDIRECTDRAWPALETTE lpddp, DWORD dwflags, DWORD dwstart, DWORD dwcount, LPPALETTEENTRY lpentries)
{ {

View File

@ -29,6 +29,8 @@ dxwCore dxw;
dxwSStack dxwss; dxwSStack dxwss;
dxwWStack dxwws; dxwWStack dxwws;
dxwSDC sdc; dxwSDC sdc;
GetWindowLong_Type pGetWindowLong;
SetWindowLong_Type pSetWindowLong;
extern LRESULT CALLBACK MessageHook(int, WPARAM, LPARAM); extern LRESULT CALLBACK MessageHook(int, WPARAM, LPARAM);
@ -99,7 +101,7 @@ static char *Flag4Names[32]={
}; };
static char *Flag5Names[32]={ static char *Flag5Names[32]={
"DIABLOTWEAK", "CLEARTARGET", "NOWINPOSCHANGES", "**", "DIABLOTWEAK", "CLEARTARGET", "NOWINPOSCHANGES", "ANSIWIDE",
"NOBLT", "**", "DOFASTBLT", "AEROBOOST", "NOBLT", "**", "DOFASTBLT", "AEROBOOST",
"QUARTERBLT", "NOIMAGEHLP", "BILINEARFILTER", "REPLACEPRIVOPS", "QUARTERBLT", "NOIMAGEHLP", "BILINEARFILTER", "REPLACEPRIVOPS",
"REMAPMCI", "TEXTUREHIGHLIGHT", "TEXTUREDUMP", "TEXTUREHACK", "REMAPMCI", "TEXTUREHIGHLIGHT", "TEXTUREDUMP", "TEXTUREHACK",
@ -564,8 +566,8 @@ void CalculateWindowPos(HWND hwnd, DWORD width, DWORD height, LPWINDOWPOS wp)
RECT UnmappedRect; RECT UnmappedRect;
UnmappedRect=rect; UnmappedRect=rect;
dwStyle=(*pGetWindowLongA)(hwnd, GWL_STYLE); dwStyle=(*pGetWindowLong)(hwnd, GWL_STYLE);
dwExStyle=(*pGetWindowLongA)(hwnd, GWL_EXSTYLE); dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE);
// BEWARE: from MSDN - If the window is a child window, the return value is undefined. // BEWARE: from MSDN - If the window is a child window, the return value is undefined.
hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd); hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd);
AdjustWindowRectEx(&rect, dwStyle, (hMenu!=NULL), dwExStyle); AdjustWindowRectEx(&rect, dwStyle, (hMenu!=NULL), dwExStyle);
@ -624,7 +626,7 @@ void HookWindowProc(HWND hwnd)
if(dxw.dwFlags6 & NOWINDOWHOOKS) return; if(dxw.dwFlags6 & NOWINDOWHOOKS) return;
pWindowProc = (WNDPROC)(*pGetWindowLongA)(hwnd, GWL_WNDPROC); pWindowProc = (WNDPROC)(*pGetWindowLong)(hwnd, GWL_WNDPROC);
// don't hook twice .... // don't hook twice ....
if ((pWindowProc == extWindowProc) || if ((pWindowProc == extWindowProc) ||
(pWindowProc == extChildWindowProc) || (pWindowProc == extChildWindowProc) ||

View File

@ -137,6 +137,12 @@ void dxwCore::InitTarget(TARGETMAP *target)
if (dwFlags2 & GDISTRETCHED) GDIEmulationMode = GDIMODE_STRETCHED; if (dwFlags2 & GDISTRETCHED) GDIEmulationMode = GDIMODE_STRETCHED;
if (dwFlags3 & GDIEMULATEDC) GDIEmulationMode = GDIMODE_EMULATED; if (dwFlags3 & GDIEMULATEDC) GDIEmulationMode = GDIMODE_EMULATED;
if (dwFlags6 & SHAREDDC) GDIEmulationMode = GDIMODE_SHAREDDC; if (dwFlags6 & SHAREDDC) GDIEmulationMode = GDIMODE_SHAREDDC;
extern GetWindowLong_Type pGetWindowLong;
extern SetWindowLong_Type pSetWindowLong;
// made before hooking !!!
pGetWindowLong = (dwFlags5 & ANSIWIDE) ? GetWindowLongW : GetWindowLongA;
pSetWindowLong = (dwFlags5 & ANSIWIDE) ? SetWindowLongW : SetWindowLongA;
} }
void dxwCore::SetScreenSize(void) void dxwCore::SetScreenSize(void)
@ -1516,7 +1522,7 @@ void dxwCore::FixWindowFrame(HWND hwnd)
OutTraceDW("FixWindowFrame: hwnd=%x\n", hwnd); OutTraceDW("FixWindowFrame: hwnd=%x\n", hwnd);
nOldStyle=(*pGetWindowLongA)(hwnd, GWL_STYLE); nOldStyle=(*pGetWindowLong)(hwnd, GWL_STYLE);
if (!nOldStyle){ if (!nOldStyle){
OutTraceE("FixWindowFrame: GetWindowLong ERROR %d at %d\n",GetLastError(),__LINE__); OutTraceE("FixWindowFrame: GetWindowLong ERROR %d at %d\n",GetLastError(),__LINE__);
return; return;
@ -1553,7 +1559,7 @@ void dxwCore::FixStyle(char *ApiName, HWND hwnd, WPARAM wParam, LPARAM lParam)
lpSS->styleNew= WS_OVERLAPPEDWINDOW; lpSS->styleNew= WS_OVERLAPPEDWINDOW;
} }
if (dxw.dwFlags1 & LOCKWINSTYLE){ // set to current value if (dxw.dwFlags1 & LOCKWINSTYLE){ // set to current value
lpSS->styleNew= (*pGetWindowLongA)(hwnd, GWL_STYLE); lpSS->styleNew= (*pGetWindowLong)(hwnd, GWL_STYLE);
} }
if (dxw.dwFlags1 & PREVENTMAXIMIZE){ // disable maximize settings if (dxw.dwFlags1 & PREVENTMAXIMIZE){ // disable maximize settings
if (lpSS->styleNew & WS_MAXIMIZE){ if (lpSS->styleNew & WS_MAXIMIZE){
@ -1569,7 +1575,7 @@ void dxwCore::FixStyle(char *ApiName, HWND hwnd, WPARAM wParam, LPARAM lParam)
lpSS->styleNew= 0; lpSS->styleNew= 0;
} }
if (dxw.dwFlags1 & LOCKWINSTYLE){ // set to current value if (dxw.dwFlags1 & LOCKWINSTYLE){ // set to current value
lpSS->styleNew= (*pGetWindowLongA)(hwnd, GWL_EXSTYLE); lpSS->styleNew= (*pGetWindowLong)(hwnd, GWL_EXSTYLE);
} }
if ((dxw.dwFlags1 & PREVENTMAXIMIZE) && (hwnd==hWnd)){ // disable maximize settings if ((dxw.dwFlags1 & PREVENTMAXIMIZE) && (hwnd==hWnd)){ // disable maximize settings
if (lpSS->styleNew & WS_EX_TOPMOST){ if (lpSS->styleNew & WS_EX_TOPMOST){

View File

@ -372,3 +372,5 @@ typedef enum {
typedef HRESULT (WINAPI *ColorConversion_Type)(int, LPDIRECTDRAWSURFACE, RECT, LPDIRECTDRAWSURFACE *); typedef HRESULT (WINAPI *ColorConversion_Type)(int, LPDIRECTDRAWSURFACE, RECT, LPDIRECTDRAWSURFACE *);
extern ColorConversion_Type pColorConversion; extern ColorConversion_Type pColorConversion;
extern void ToggleAcquiredDevices(BOOL); extern void ToggleAcquiredDevices(BOOL);
extern GetWindowLong_Type pGetWindowLong;
extern SetWindowLong_Type pSetWindowLong;

View File

@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "TlHelp32.h" #include "TlHelp32.h"
#define VERSION "2.03.62.fix2" #define VERSION "2.03.63"
#define DDTHREADLOCK 1 #define DDTHREADLOCK 1
//#define LOCKTHREADS //#define LOCKTHREADS

Binary file not shown.

View File

@ -3,6 +3,7 @@
#include <windows.h> #include <windows.h>
#include <d3d9.h> #include <d3d9.h>
#include <d3d8caps.h>
#include <D3D10_1.h> #include <D3D10_1.h>
#include <D3D10Misc.h> #include <D3D10Misc.h>
#include <D3D11.h> #include <D3D11.h>
@ -56,7 +57,8 @@ typedef HRESULT (WINAPI *CheckDeviceFormat_Type)(void *, UINT, D3DDEVTYPE, D3DFO
typedef HRESULT (WINAPI *CheckDeviceMultiSampleType_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, BOOL, D3DMULTISAMPLE_TYPE, DWORD *); typedef HRESULT (WINAPI *CheckDeviceMultiSampleType_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, BOOL, D3DMULTISAMPLE_TYPE, DWORD *);
typedef HRESULT (WINAPI *CheckDepthStencilMatch_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, D3DFORMAT); typedef HRESULT (WINAPI *CheckDepthStencilMatch_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, D3DFORMAT);
typedef HRESULT (WINAPI *CheckDeviceFormatConversion_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT); typedef HRESULT (WINAPI *CheckDeviceFormatConversion_Type)(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT);
typedef HRESULT (WINAPI *D3DGetDeviceCaps_Type)(void *, UINT, D3DDEVTYPE, D3DCAPS9 *); typedef HRESULT (WINAPI *D3DGetDeviceCaps8_Type)(void *, UINT, D3DDEVTYPE, D3DCAPS8 *);
typedef HRESULT (WINAPI *D3DGetDeviceCaps9_Type)(void *, UINT, D3DDEVTYPE, D3DCAPS9 *);
typedef HMONITOR (WINAPI *GetAdapterMonitor_Type)(void *, UINT); typedef HMONITOR (WINAPI *GetAdapterMonitor_Type)(void *, UINT);
typedef HRESULT (WINAPI *CreateDevice_Type)(void *, UINT, D3DDEVTYPE, HWND, DWORD, void *, void **); typedef HRESULT (WINAPI *CreateDevice_Type)(void *, UINT, D3DDEVTYPE, HWND, DWORD, void *, void **);
typedef HRESULT (WINAPI *CreateDeviceEx_Type)(void *, UINT, D3DDEVTYPE, HWND, DWORD, void *, D3DDISPLAYMODEEX *, void **); typedef HRESULT (WINAPI *CreateDeviceEx_Type)(void *, UINT, D3DDEVTYPE, HWND, DWORD, void *, D3DDISPLAYMODEEX *, void **);
@ -73,10 +75,11 @@ HRESULT WINAPI extCheckDeviceFormat(void *, UINT, D3DDEVTYPE, D3DFORMAT, DWORD,
HRESULT WINAPI extCheckDeviceMultiSampleType(void *, UINT, D3DDEVTYPE, D3DFORMAT, BOOL, D3DMULTISAMPLE_TYPE, DWORD *); HRESULT WINAPI extCheckDeviceMultiSampleType(void *, UINT, D3DDEVTYPE, D3DFORMAT, BOOL, D3DMULTISAMPLE_TYPE, DWORD *);
HRESULT WINAPI extCheckDepthStencilMatch(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, D3DFORMAT); HRESULT WINAPI extCheckDepthStencilMatch(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT, D3DFORMAT);
HRESULT WINAPI extCheckDeviceFormatConversion(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT); HRESULT WINAPI extCheckDeviceFormatConversion(void *, UINT, D3DDEVTYPE, D3DFORMAT, D3DFORMAT);
HRESULT WINAPI extD3DGetDeviceCaps8(void *, UINT, D3DDEVTYPE, D3DCAPS9 *); HRESULT WINAPI extD3DGetDeviceCaps8(void *, UINT, D3DDEVTYPE, D3DCAPS8 *);
HRESULT WINAPI extD3DGetDeviceCaps9(void *, UINT, D3DDEVTYPE, D3DCAPS9 *); HRESULT WINAPI extD3DGetDeviceCaps9(void *, UINT, D3DDEVTYPE, D3DCAPS9 *);
HMONITOR WINAPI extGetAdapterMonitor(void *, UINT); HMONITOR WINAPI extGetAdapterMonitor(void *, UINT);
HRESULT WINAPI extCreateDevice(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, void **); HRESULT WINAPI extCreateDevice8(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, void **);
HRESULT WINAPI extCreateDevice9(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, void **);
HRESULT WINAPI extCreateDeviceEx(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, D3DDISPLAYMODEEX *, void **); HRESULT WINAPI extCreateDeviceEx(void *, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS *, D3DDISPLAYMODEEX *, void **);
RegisterSoftwareDevice_Type pRegisterSoftwareDevice = 0; RegisterSoftwareDevice_Type pRegisterSoftwareDevice = 0;
@ -90,7 +93,8 @@ CheckDeviceFormat_Type pCheckDeviceFormat = 0;
CheckDeviceMultiSampleType_Type pCheckDeviceMultiSampleType = 0; CheckDeviceMultiSampleType_Type pCheckDeviceMultiSampleType = 0;
CheckDepthStencilMatch_Type pCheckDepthStencilMatch = 0; CheckDepthStencilMatch_Type pCheckDepthStencilMatch = 0;
CheckDeviceFormatConversion_Type pCheckDeviceFormatConversion = 0; CheckDeviceFormatConversion_Type pCheckDeviceFormatConversion = 0;
D3DGetDeviceCaps_Type pD3DGetDeviceCaps = 0; D3DGetDeviceCaps8_Type pD3DGetDeviceCaps8 = 0;
D3DGetDeviceCaps9_Type pD3DGetDeviceCaps9 = 0;
GetAdapterMonitor_Type pGetAdapterMonitor = 0; GetAdapterMonitor_Type pGetAdapterMonitor = 0;
CreateDevice_Type pCreateDevice8 = 0; CreateDevice_Type pCreateDevice8 = 0;
CreateDevice_Type pCreateDevice9 = 0; CreateDevice_Type pCreateDevice9 = 0;
@ -133,7 +137,8 @@ void WINAPI extSetCursorPosition9(void *, int, int, DWORD);
void WINAPI extSetCursorPosition8(void *, int, int, DWORD); void WINAPI extSetCursorPosition8(void *, int, int, DWORD);
BOOL WINAPI extShowCursor8(void *, BOOL); BOOL WINAPI extShowCursor8(void *, BOOL);
BOOL WINAPI extShowCursor9(void *, BOOL); BOOL WINAPI extShowCursor9(void *, BOOL);
HRESULT WINAPI extCreateAdditionalSwapChain(void *, D3DPRESENT_PARAMETERS *, IDirect3DSwapChain9 **); HRESULT WINAPI extCreateAdditionalSwapChain8(void *, D3DPRESENT_PARAMETERS *, IDirect3DSwapChain9 **);
HRESULT WINAPI extCreateAdditionalSwapChain9(void *, D3DPRESENT_PARAMETERS *, IDirect3DSwapChain9 **);
HRESULT WINAPI extGetSwapChain(void *, UINT, IDirect3DSwapChain9**); HRESULT WINAPI extGetSwapChain(void *, UINT, IDirect3DSwapChain9**);
UINT WINAPI extGetNumberOfSwapChains(void *); UINT WINAPI extGetNumberOfSwapChains(void *);
HRESULT WINAPI extBeginStateBlock8(void *); HRESULT WINAPI extBeginStateBlock8(void *);
@ -158,7 +163,8 @@ SetCursorPosition9_Type pSetCursorPosition9 = 0;
SetCursorPosition8_Type pSetCursorPosition8 = 0; SetCursorPosition8_Type pSetCursorPosition8 = 0;
ShowCursor8_Type pShowCursor8 = 0; ShowCursor8_Type pShowCursor8 = 0;
ShowCursor9_Type pShowCursor9 = 0; ShowCursor9_Type pShowCursor9 = 0;
CreateAdditionalSwapChain_Type pCreateAdditionalSwapChain = 0; CreateAdditionalSwapChain_Type pCreateAdditionalSwapChain8 = 0;
CreateAdditionalSwapChain_Type pCreateAdditionalSwapChain9 = 0;
GetSwapChain_Type pGetSwapChain = 0; GetSwapChain_Type pGetSwapChain = 0;
GetNumberOfSwapChains_Type pGetNumberOfSwapChains = 0; GetNumberOfSwapChains_Type pGetNumberOfSwapChains = 0;
BeginStateBlock_Type pBeginStateBlock8 = 0; BeginStateBlock_Type pBeginStateBlock8 = 0;
@ -239,12 +245,14 @@ HRESULT WINAPI extEnumAdapterModes8(void *, UINT, UINT , D3DDISPLAYMODE *);
HRESULT WINAPI extEnumAdapterModes9(void *, UINT, D3DFORMAT, UINT , D3DDISPLAYMODE *); HRESULT WINAPI extEnumAdapterModes9(void *, UINT, D3DFORMAT, UINT , D3DDISPLAYMODE *);
HRESULT WINAPI extGetAdapterDisplayMode8(void *, UINT, D3DDISPLAYMODE *); HRESULT WINAPI extGetAdapterDisplayMode8(void *, UINT, D3DDISPLAYMODE *);
HRESULT WINAPI extGetAdapterDisplayMode9(void *, UINT, D3DDISPLAYMODE *); HRESULT WINAPI extGetAdapterDisplayMode9(void *, UINT, D3DDISPLAYMODE *);
HRESULT WINAPI extPresent(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *); HRESULT WINAPI extPresent8(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *);
HRESULT WINAPI extPresent9(void *, CONST RECT *, CONST RECT *, HWND, CONST RGNDATA *);
HRESULT WINAPI extSetRenderState(void *, D3DRENDERSTATETYPE, DWORD); HRESULT WINAPI extSetRenderState(void *, D3DRENDERSTATETYPE, DWORD);
HRESULT WINAPI extGetRenderState(void *, D3DRENDERSTATETYPE, DWORD); HRESULT WINAPI extGetRenderState(void *, D3DRENDERSTATETYPE, DWORD);
HRESULT WINAPI extGetViewport(void *, D3DVIEWPORT9 *); HRESULT WINAPI extGetViewport(void *, D3DVIEWPORT9 *);
HRESULT WINAPI extSetViewport(void *, D3DVIEWPORT9 *); HRESULT WINAPI extSetViewport(void *, D3DVIEWPORT9 *);
HRESULT WINAPI extReset(void *, D3DPRESENT_PARAMETERS *); HRESULT WINAPI extReset8(void *, D3DPRESENT_PARAMETERS *);
HRESULT WINAPI extReset9(void *, D3DPRESENT_PARAMETERS *);
void WINAPI extSetGammaRamp(void *, UINT, DWORD, D3DGAMMARAMP *); void WINAPI extSetGammaRamp(void *, UINT, DWORD, D3DGAMMARAMP *);
void WINAPI extGetGammaRamp(void *, UINT, D3DGAMMARAMP *); void WINAPI extGetGammaRamp(void *, UINT, D3DGAMMARAMP *);
ULONG WINAPI extAddRef9(void *); ULONG WINAPI extAddRef9(void *);
@ -286,7 +294,8 @@ EnumAdapterModes8_Type pEnumAdapterModes8 = 0;
EnumAdapterModes9_Type pEnumAdapterModes9 = 0; EnumAdapterModes9_Type pEnumAdapterModes9 = 0;
GetAdapterDisplayMode_Type pGetAdapterDisplayMode8 = 0; GetAdapterDisplayMode_Type pGetAdapterDisplayMode8 = 0;
GetAdapterDisplayMode_Type pGetAdapterDisplayMode9 = 0; GetAdapterDisplayMode_Type pGetAdapterDisplayMode9 = 0;
Present_Type pPresent = 0; Present_Type pPresent8 = 0;
Present_Type pPresent9 = 0;
SetRenderState_Type pSetRenderState = 0; SetRenderState_Type pSetRenderState = 0;
GetRenderState_Type pGetRenderState = 0; GetRenderState_Type pGetRenderState = 0;
GetViewport_Type pGetViewport = 0; GetViewport_Type pGetViewport = 0;
@ -300,7 +309,8 @@ BeginScene_Type pBeginScene8 = 0;
EndScene_Type pEndScene8 = 0; EndScene_Type pEndScene8 = 0;
BeginScene_Type pBeginScene9 = 0; BeginScene_Type pBeginScene9 = 0;
EndScene_Type pEndScene9 = 0; EndScene_Type pEndScene9 = 0;
Reset_Type pReset = 0; Reset_Type pReset8 = 0;
Reset_Type pReset9 = 0;
SetTexture8_Type pSetTexture8 = 0; SetTexture8_Type pSetTexture8 = 0;
SetTexture9_Type pSetTexture9 = 0; SetTexture9_Type pSetTexture9 = 0;
@ -486,9 +496,9 @@ void HookD3DDevice8(void** ppD3Ddev8)
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 32), extGetDisplayMode8, (void **)&pGetDisplayMode8, "GetDisplayMode(D8)"); SetHook((void *)(**(DWORD **)ppD3Ddev8 + 32), extGetDisplayMode8, (void **)&pGetDisplayMode8, "GetDisplayMode(D8)");
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 44), extSetCursorPosition8, (void **)&pSetCursorPosition8, "SetCursorPosition(D8)"); SetHook((void *)(**(DWORD **)ppD3Ddev8 + 44), extSetCursorPosition8, (void **)&pSetCursorPosition8, "SetCursorPosition(D8)");
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 48), extShowCursor8, (void **)&pShowCursor8, "ShowCursor(D8)"); SetHook((void *)(**(DWORD **)ppD3Ddev8 + 48), extShowCursor8, (void **)&pShowCursor8, "ShowCursor(D8)");
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D8)"); SetHook((void *)(**(DWORD **)ppD3Ddev8 + 52), extCreateAdditionalSwapChain8, (void **)&pCreateAdditionalSwapChain8, "CreateAdditionalSwapChain(D8)");
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 56), extReset, (void **)&pReset, "Reset(D8)"); SetHook((void *)(**(DWORD **)ppD3Ddev8 + 56), extReset8, (void **)&pReset8, "Reset(D8)");
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 60), extPresent, (void **)&pPresent, "Present(D8)"); SetHook((void *)(**(DWORD **)ppD3Ddev8 + 60), extPresent8, (void **)&pPresent8, "Present(D8)");
if(dxw.dwFlags2 & DISABLEGAMMARAMP){ if(dxw.dwFlags2 & DISABLEGAMMARAMP){
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 72), extSetGammaRamp, (void **)&pSetGammaRamp, "SetGammaRamp(D8)"); SetHook((void *)(**(DWORD **)ppD3Ddev8 + 72), extSetGammaRamp, (void **)&pSetGammaRamp, "SetGammaRamp(D8)");
SetHook((void *)(**(DWORD **)ppD3Ddev8 + 76), extGetGammaRamp, (void **)&pGetGammaRamp, "GetGammaRamp(D8)"); SetHook((void *)(**(DWORD **)ppD3Ddev8 + 76), extGetGammaRamp, (void **)&pGetGammaRamp, "GetGammaRamp(D8)");
@ -528,11 +538,11 @@ void HookD3DDevice9(void** ppD3Ddev9)
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 32), extGetDisplayMode9, (void **)&pGetDisplayMode9, "GetDisplayMode(D9)");
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 44), extSetCursorPosition9, (void **)&pSetCursorPosition9, "SetCursorPosition(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 44), extSetCursorPosition9, (void **)&pSetCursorPosition9, "SetCursorPosition(D9)");
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 48), extShowCursor9, (void **)&pShowCursor9, "ShowCursor(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 48), extShowCursor9, (void **)&pShowCursor9, "ShowCursor(D9)");
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 52), extCreateAdditionalSwapChain, (void **)&pCreateAdditionalSwapChain, "CreateAdditionalSwapChain(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 52), extCreateAdditionalSwapChain9, (void **)&pCreateAdditionalSwapChain9, "CreateAdditionalSwapChain(D9)");
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 56), extGetSwapChain, (void **)&pGetSwapChain, "GetSwapChain(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 56), extGetSwapChain, (void **)&pGetSwapChain, "GetSwapChain(D9)");
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 60), extGetNumberOfSwapChains, (void **)&pGetNumberOfSwapChains, "extGetNumberOfSwapChains(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 60), extGetNumberOfSwapChains, (void **)&pGetNumberOfSwapChains, "extGetNumberOfSwapChains(D9)");
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 64), extReset, (void **)&pReset, "Reset(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 64), extReset9, (void **)&pReset9, "Reset(D9)");
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 68), extPresent, (void **)&pPresent, "Present(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 68), extPresent9, (void **)&pPresent9, "Present(D9)");
if(dxw.dwFlags2 & DISABLEGAMMARAMP){ if(dxw.dwFlags2 & DISABLEGAMMARAMP){
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 84), extSetGammaRamp, (void **)&pSetGammaRamp, "SetGammaRamp(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 84), extSetGammaRamp, (void **)&pSetGammaRamp, "SetGammaRamp(D9)");
SetHook((void *)(**(DWORD **)ppD3Ddev9 + 88), extGetGammaRamp, (void **)&pGetGammaRamp, "GetGammaRamp(D9)"); SetHook((void *)(**(DWORD **)ppD3Ddev9 + 88), extGetGammaRamp, (void **)&pGetGammaRamp, "GetGammaRamp(D9)");
@ -595,8 +605,8 @@ void HookDirect3D8(void *lpd3d)
SetHook((void *)(*(DWORD *)lpd3d + 20), extGetAdapterIdentifier8, (void **)&pGetAdapterIdentifier8, "GetAdapterIdentifier(D8)"); SetHook((void *)(*(DWORD *)lpd3d + 20), extGetAdapterIdentifier8, (void **)&pGetAdapterIdentifier8, "GetAdapterIdentifier(D8)");
SetHook((void *)(*(DWORD *)lpd3d + 28), extEnumAdapterModes8, (void **)&pEnumAdapterModes8, "EnumAdapterModes(D8)"); SetHook((void *)(*(DWORD *)lpd3d + 28), extEnumAdapterModes8, (void **)&pEnumAdapterModes8, "EnumAdapterModes(D8)");
SetHook((void *)(*(DWORD *)lpd3d + 32), extGetAdapterDisplayMode8, (void **)&pGetAdapterDisplayMode8, "GetAdapterDisplayMode(D8)"); SetHook((void *)(*(DWORD *)lpd3d + 32), extGetAdapterDisplayMode8, (void **)&pGetAdapterDisplayMode8, "GetAdapterDisplayMode(D8)");
SetHook((void *)(*(DWORD *)lpd3d + 52), extD3DGetDeviceCaps8, (void **)&pD3DGetDeviceCaps, "GetDeviceCaps(D8)"); SetHook((void *)(*(DWORD *)lpd3d + 52), extD3DGetDeviceCaps8, (void **)&pD3DGetDeviceCaps8, "GetDeviceCaps(D8)");
SetHook((void *)(*(DWORD *)lpd3d + 60), extCreateDevice, (void **)&pCreateDevice8, "CreateDevice(D8)"); SetHook((void *)(*(DWORD *)lpd3d + 60), extCreateDevice8, (void **)&pCreateDevice8, "CreateDevice(D8)");
} }
BOOL WINAPI extDisableD3DSpy(void) BOOL WINAPI extDisableD3DSpy(void)
@ -629,8 +639,8 @@ void HookDirect3D9(void *lpd3d, BOOL ex)
SetHook((void *)(*(DWORD *)lpd3d + 20), extGetAdapterIdentifier9, (void **)&pGetAdapterIdentifier9, "GetAdapterIdentifier(D9)"); SetHook((void *)(*(DWORD *)lpd3d + 20), extGetAdapterIdentifier9, (void **)&pGetAdapterIdentifier9, "GetAdapterIdentifier(D9)");
SetHook((void *)(*(DWORD *)lpd3d + 28), extEnumAdapterModes9, (void **)&pEnumAdapterModes9, "EnumAdapterModes(D9)"); SetHook((void *)(*(DWORD *)lpd3d + 28), extEnumAdapterModes9, (void **)&pEnumAdapterModes9, "EnumAdapterModes(D9)");
SetHook((void *)(*(DWORD *)lpd3d + 32), extGetAdapterDisplayMode9, (void **)&pGetAdapterDisplayMode9, "GetAdapterDisplayMode(D9)"); SetHook((void *)(*(DWORD *)lpd3d + 32), extGetAdapterDisplayMode9, (void **)&pGetAdapterDisplayMode9, "GetAdapterDisplayMode(D9)");
SetHook((void *)(*(DWORD *)lpd3d + 56), extD3DGetDeviceCaps9, (void **)&pD3DGetDeviceCaps, "GetDeviceCaps(D9)"); SetHook((void *)(*(DWORD *)lpd3d + 56), extD3DGetDeviceCaps9, (void **)&pD3DGetDeviceCaps9, "GetDeviceCaps(D9)");
SetHook((void *)(*(DWORD *)lpd3d + 64), extCreateDevice, (void **)&pCreateDevice9, "CreateDevice(D9)"); SetHook((void *)(*(DWORD *)lpd3d + 64), extCreateDevice9, (void **)&pCreateDevice9, "CreateDevice(D9)");
if(ex) SetHook((void *)(*(DWORD *)lpd3d + 80), extCreateDeviceEx, (void **)&pCreateDeviceEx, "CreateDeviceEx(D9)"); if(ex) SetHook((void *)(*(DWORD *)lpd3d + 80), extCreateDeviceEx, (void **)&pCreateDeviceEx, "CreateDeviceEx(D9)");
//if (!(dxw.dwTFlags & OUTPROXYTRACE)) return; //if (!(dxw.dwTFlags & OUTPROXYTRACE)) return;
//SetHook((void *)(*(DWORD *)lpd3d + 12), extRegisterSoftwareDevice, (void **)&pRegisterSoftwareDevice, "RegisterSoftwareDevice(D9)"); //SetHook((void *)(*(DWORD *)lpd3d + 12), extRegisterSoftwareDevice, (void **)&pRegisterSoftwareDevice, "RegisterSoftwareDevice(D9)");
@ -751,13 +761,14 @@ static char *ExplainSwapEffect(DWORD f)
return s; return s;
} }
HRESULT WINAPI extReset(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam) static HRESULT WINAPI extReset(int dwD3DVersion, void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam)
{ {
HRESULT res; HRESULT res;
DWORD param[64], *tmp; DWORD param[64], *tmp;
D3DDISPLAYMODE mode; D3DDISPLAYMODE mode;
DWORD Windowed; DWORD Windowed;
void *pD3D; void *pD3D;
Reset_Type pReset;
memcpy(param, pPresParam, (dwD3DVersion == 9)?56:52); memcpy(param, pPresParam, (dwD3DVersion == 9)?56:52);
dxw.SetScreenSize(param[0], param[1]); dxw.SetScreenSize(param[0], param[1]);
@ -784,6 +795,7 @@ HRESULT WINAPI extReset(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam)
} }
Windowed = (dwD3DVersion == 8) ? param[7] : param[8]; Windowed = (dwD3DVersion == 8) ? param[7] : param[8];
pReset = (dwD3DVersion == 8) ? pReset8 : pReset9;
if(dxw.Windowize){ if(dxw.Windowize){
if(Windowed) { if(Windowed) {
// do not attempt to reset when returning to windowed mode: it is useless (you are windowed already) // do not attempt to reset when returning to windowed mode: it is useless (you are windowed already)
@ -876,7 +888,12 @@ HRESULT WINAPI extReset(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam)
return D3D_OK; return D3D_OK;
} }
HRESULT WINAPI extPresent(void *pd3dd, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion) HRESULT WINAPI extReset8(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam)
{ return extReset(8, pd3dd, pPresParam); }
HRESULT WINAPI extReset9(void *pd3dd, D3DPRESENT_PARAMETERS* pPresParam)
{ return extReset(9, pd3dd, pPresParam); }
static HRESULT WINAPI extPresent(Present_Type pPresent, void *pd3dd, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion)
{ {
HRESULT res; HRESULT res;
RECT RemappedSrcRect, RemappedDstRect; RECT RemappedSrcRect, RemappedDstRect;
@ -916,6 +933,11 @@ HRESULT WINAPI extPresent(void *pd3dd, CONST RECT *pSourceRect, CONST RECT *pDes
return res; return res;
} }
HRESULT WINAPI extPresent8(void *pd3dd, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion)
{ return extPresent(pPresent8, pd3dd, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion); }
HRESULT WINAPI extPresent9(void *pd3dd, CONST RECT *pSourceRect, CONST RECT *pDestRect, HWND hDestWindowOverride, CONST RGNDATA *pDirtyRegion)
{ return extPresent(pPresent9, pd3dd, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion); }
HRESULT WINAPI extGetDisplayMode8(void *lpd3d, D3DDISPLAYMODE *pMode) HRESULT WINAPI extGetDisplayMode8(void *lpd3d, D3DDISPLAYMODE *pMode)
{ {
HRESULT res; HRESULT res;
@ -1045,14 +1067,14 @@ HWND FixD3DWindowFrame(HWND hFocusWin)
return hRetWnd; return hRetWnd;
} }
HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype, static HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype,
HWND hfocuswindow, DWORD behaviorflags, D3DPRESENT_PARAMETERS *ppresentparam, void **ppd3dd) HWND hfocuswindow, DWORD behaviorflags, D3DPRESENT_PARAMETERS *ppresentparam, void **ppd3dd, int dwD3DVersion)
{ {
HRESULT res; HRESULT res;
DWORD param[64], *tmp; DWORD param[64], *tmp;
D3DDISPLAYMODE mode; D3DDISPLAYMODE mode;
OutTraceD3D("CreateDevice: D3DVersion=%d lpd3d=%x adapter=%x hFocusWnd=%x behavior=%x, size=(%d,%d)\n", OutTraceD3D("CreateDevice(%d): lpd3d=%x adapter=%x hFocusWnd=%x behavior=%x, size=(%d,%d)\n",
dwD3DVersion, lpd3d, adapter, hfocuswindow, behaviorflags, ppresentparam->BackBufferWidth, ppresentparam->BackBufferHeight); dwD3DVersion, lpd3d, adapter, hfocuswindow, behaviorflags, ppresentparam->BackBufferWidth, ppresentparam->BackBufferHeight);
memcpy(param, ppresentparam, (dwD3DVersion == 9)?56:52); memcpy(param, ppresentparam, (dwD3DVersion == 9)?56:52);
@ -1180,6 +1202,12 @@ HRESULT WINAPI extCreateDevice(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype,
return 0; return 0;
} }
HRESULT WINAPI extCreateDevice8(void *lpd3d, UINT adapter, D3DDEVTYPE dt, HWND hfw, DWORD bf, D3DPRESENT_PARAMETERS *ppp, void **ppd3dd)
{ return extCreateDevice(lpd3d, adapter, dt, hfw, bf, ppp, ppd3dd, 8); }
HRESULT WINAPI extCreateDevice9(void *lpd3d, UINT adapter, D3DDEVTYPE dt, HWND hfw, DWORD bf, D3DPRESENT_PARAMETERS *ppp, void **ppd3dd)
{ return extCreateDevice(lpd3d, adapter, dt, hfw, bf, ppp, ppd3dd, 9); }
HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype, HRESULT WINAPI extCreateDeviceEx(void *lpd3d, UINT adapter, D3DDEVTYPE devicetype,
HWND hfocuswindow, DWORD behaviorflags, D3DPRESENT_PARAMETERS *ppresentparam, D3DDISPLAYMODEEX *pFullscreenDisplayMode, void **ppd3dd) HWND hfocuswindow, DWORD behaviorflags, D3DPRESENT_PARAMETERS *ppresentparam, D3DDISPLAYMODEEX *pFullscreenDisplayMode, void **ppd3dd)
{ {
@ -1335,13 +1363,20 @@ HRESULT WINAPI extSetViewport(void *pd3dd, D3DVIEWPORT9 *pViewport)
return (*pSetViewport)(pd3dd, pViewport); return (*pSetViewport)(pd3dd, pViewport);
} }
HRESULT WINAPI extCreateAdditionalSwapChain(void *lpd3dd, D3DPRESENT_PARAMETERS *pPresentationParameters, IDirect3DSwapChain9 **ppSwapChain) static HRESULT WINAPI extCreateAdditionalSwapChain(int dwD3DVersion, void *lpd3dd, D3DPRESENT_PARAMETERS *pPresentationParameters, IDirect3DSwapChain9 **ppSwapChain)
{ {
HRESULT res, res2; HRESULT res, res2;
DWORD param[64], *tmp; DWORD param[64], *tmp;
D3DDISPLAYMODE mode; D3DDISPLAYMODE mode;
CreateAdditionalSwapChain_Type pCreateAdditionalSwapChain;
Reset_Type pReset;
GetAdapterDisplayMode_Type pGetAdapterDisplayMode;
OutTraceD3D("CreateAdditionalSwapChain: d3d=%x\n", lpd3dd); OutTraceD3D("CreateAdditionalSwapChain(%d): d3d=%x\n", dwD3DVersion, lpd3dd);
pCreateAdditionalSwapChain = (dwD3DVersion == 8) ? pCreateAdditionalSwapChain8 : pCreateAdditionalSwapChain9;
pReset = (dwD3DVersion == 8) ? pReset8 : pReset9;
pGetAdapterDisplayMode = (dwD3DVersion == 8) ? pGetAdapterDisplayMode8 : pGetAdapterDisplayMode9;
memcpy(param, pPresentationParameters, (dwD3DVersion == 9)?56:52); memcpy(param, pPresentationParameters, (dwD3DVersion == 9)?56:52);
dxw.SetScreenSize(param[0], param[1]); dxw.SetScreenSize(param[0], param[1]);
@ -1368,10 +1403,8 @@ HRESULT WINAPI extCreateAdditionalSwapChain(void *lpd3dd, D3DPRESENT_PARAMETERS
OutTrace(" PresentationInterval = 0x%x\n", *(tmp ++)); OutTrace(" PresentationInterval = 0x%x\n", *(tmp ++));
} }
if (dwD3DVersion == 9) res2=(*pGetAdapterDisplayMode)(lpd3dd, D3DADAPTER_DEFAULT, &mode);
res2=(*pGetAdapterDisplayMode9)(lpd3dd, D3DADAPTER_DEFAULT, &mode);
else
res2=(*pGetAdapterDisplayMode8)(lpd3dd, D3DADAPTER_DEFAULT, &mode);
if(res2==DD_OK){ if(res2==DD_OK){
OutTraceD3D(" Current Format = 0x%x\n", mode.Format); OutTraceD3D(" Current Format = 0x%x\n", mode.Format);
OutTraceD3D(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height); OutTraceD3D(" Current ScreenSize = (%dx%d)\n", mode.Width, mode.Height);
@ -1431,6 +1464,11 @@ HRESULT WINAPI extCreateAdditionalSwapChain(void *lpd3dd, D3DPRESENT_PARAMETERS
return res; return res;
} }
HRESULT WINAPI extCreateAdditionalSwapChain8(void *lpd3dd, D3DPRESENT_PARAMETERS *pPresentationParameters, IDirect3DSwapChain9 **ppSwapChain)
{ return extCreateAdditionalSwapChain(8, lpd3dd, pPresentationParameters, ppSwapChain); }
HRESULT WINAPI extCreateAdditionalSwapChain9(void *lpd3dd, D3DPRESENT_PARAMETERS *pPresentationParameters, IDirect3DSwapChain9 **ppSwapChain)
{ return extCreateAdditionalSwapChain(9, lpd3dd, pPresentationParameters, ppSwapChain); }
// to do: // to do:
// hook SetCursorPosition ShowCursor to handle cursor // hook SetCursorPosition ShowCursor to handle cursor
@ -1952,7 +1990,12 @@ HRESULT WINAPI extD3DGetDeviceCaps(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceT
{ {
HRESULT res; HRESULT res;
OutTraceD3D("GetDeviceCaps(%d): d3d=%x adapter=%d devtype=%x(%s)\n", version, lpd3d, Adapter, DeviceType, ExplainD3D9DeviceType(DeviceType)); OutTraceD3D("GetDeviceCaps(%d): d3d=%x adapter=%d devtype=%x(%s)\n", version, lpd3d, Adapter, DeviceType, ExplainD3D9DeviceType(DeviceType));
res=(*pD3DGetDeviceCaps)(lpd3d, Adapter, DeviceType, pCaps);
if(version == 8)
res=(*pD3DGetDeviceCaps8)(lpd3d, Adapter, DeviceType, (D3DCAPS8 *)pCaps);
else
res=(*pD3DGetDeviceCaps9)(lpd3d, Adapter, DeviceType, pCaps);
if(res){ if(res){
OutTraceE("GetDeviceCaps: ERROR: err=%x\n", res); OutTraceE("GetDeviceCaps: ERROR: err=%x\n", res);
} }
@ -2091,12 +2134,12 @@ HRESULT WINAPI extD3DGetDeviceCaps(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceT
return res; return res;
} }
HRESULT WINAPI extD3DGetDeviceCaps8(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) HRESULT WINAPI extD3DGetDeviceCaps8(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS8 *pCaps)
{ {
return extD3DGetDeviceCaps(lpd3d, Adapter, DeviceType, pCaps, 8); return extD3DGetDeviceCaps(lpd3d, Adapter, DeviceType, (D3DCAPS9 *)pCaps, 8);
} }
HRESULT WINAPI extD3DGetDeviceCaps9(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9* pCaps) HRESULT WINAPI extD3DGetDeviceCaps9(void *lpd3d, UINT Adapter, D3DDEVTYPE DeviceType, D3DCAPS9 *pCaps)
{ {
return extD3DGetDeviceCaps(lpd3d, Adapter, DeviceType, pCaps, 9); return extD3DGetDeviceCaps(lpd3d, Adapter, DeviceType, pCaps, 9);
} }

View File

@ -488,11 +488,11 @@ void dxwFixWindowPos(char *ApiName, HWND hwnd, LPARAM lParam)
RECT client, full; RECT client, full;
LONG dwStyle, dwExStyle; LONG dwStyle, dwExStyle;
HMENU hMenu; HMENU hMenu;
extern GetWindowLong_Type pGetWindowLongA; extern GetWindowLong_Type pGetWindowLong;
(*pGetClientRect)(hwnd, &client); (*pGetClientRect)(hwnd, &client);
full=client; full=client;
dwStyle=(*pGetWindowLongA)(hwnd, GWL_STYLE); dwStyle=(*pGetWindowLong)(hwnd, GWL_STYLE);
dwExStyle=(*pGetWindowLongA)(hwnd, GWL_EXSTYLE); dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE);
hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd); hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd);
AdjustWindowRectEx(&full, dwStyle, (hMenu!=NULL), dwExStyle); AdjustWindowRectEx(&full, dwStyle, (hMenu!=NULL), dwExStyle);
if (hMenu && (hMenu != (HMENU)-1)) __try {CloseHandle(hMenu);} __except(EXCEPTION_EXECUTE_HANDLER){}; if (hMenu && (hMenu != (HMENU)-1)) __try {CloseHandle(hMenu);} __except(EXCEPTION_EXECUTE_HANDLER){};
@ -531,8 +531,8 @@ void dxwFixWindowPos(char *ApiName, HWND hwnd, LPARAM lParam)
HMENU hMenu; HMENU hMenu;
int minx, miny; int minx, miny;
wrect = dxw.GetScreenRect(); wrect = dxw.GetScreenRect();
dwStyle=(*pGetWindowLongA)(hwnd, GWL_STYLE); dwStyle=(*pGetWindowLong)(hwnd, GWL_STYLE);
dwExStyle=(*pGetWindowLongA)(hwnd, GWL_EXSTYLE); dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE);
hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd); hMenu = (dwStyle & WS_CHILD) ? NULL : GetMenu(hwnd);
AdjustWindowRectEx(&wrect, dwStyle, (hMenu!=NULL), dwExStyle); AdjustWindowRectEx(&wrect, dwStyle, (hMenu!=NULL), dwExStyle);
minx = wrect.right - wrect.left; minx = wrect.right - wrect.left;
@ -724,7 +724,7 @@ LONG WINAPI extGetWindowLongW(HWND hwnd, int nIndex)
return extGetWindowLong(pGetWindowLongW, "GetWindowLongW", hwnd, nIndex); return extGetWindowLong(pGetWindowLongW, "GetWindowLongW", hwnd, nIndex);
} }
LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLong_Type pSetWindowLong) LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLong_Type pSetWindowLong, GetWindowLong_Type pGetWindowLong)
{ {
LONG res; LONG res;
@ -735,11 +735,11 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon
if(dxw.dwFlags1 & LOCKWINSTYLE){ if(dxw.dwFlags1 & LOCKWINSTYLE){
if(nIndex==GWL_STYLE){ if(nIndex==GWL_STYLE){
OutTraceDW("SetWindowLong: Lock GWL_STYLE=%x\n", dwNewLong); OutTraceDW("SetWindowLong: Lock GWL_STYLE=%x\n", dwNewLong);
return (*pGetWindowLongA)(hwnd, nIndex); return (*pGetWindowLong)(hwnd, nIndex);
} }
if(nIndex==GWL_EXSTYLE){ if(nIndex==GWL_EXSTYLE){
OutTraceDW("SetWindowLong: Lock GWL_EXSTYLE=%x\n", dwNewLong); OutTraceDW("SetWindowLong: Lock GWL_EXSTYLE=%x\n", dwNewLong);
return (*pGetWindowLongA)(hwnd, nIndex); return (*pGetWindowLong)(hwnd, nIndex);
} }
} }
@ -781,7 +781,7 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon
} }
// end of GPL fix // end of GPL fix
OldProc = (WNDPROC)(*pGetWindowLongA)(hwnd, nIndex); OldProc = (WNDPROC)(*pGetWindowLong)(hwnd, nIndex);
// v2.02.70 fix // v2.02.70 fix
if((OldProc==extWindowProc) || if((OldProc==extWindowProc) ||
(OldProc==extChildWindowProc)|| (OldProc==extChildWindowProc)||
@ -790,11 +790,11 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon
dxwws.PutProc(hwnd, (WNDPROC)dwNewLong); dxwws.PutProc(hwnd, (WNDPROC)dwNewLong);
res=(LONG)OldProc; res=(LONG)OldProc;
SetLastError(0); SetLastError(0);
lres=(WNDPROC)(*pSetWindowLongA)(hwnd, nIndex, (LONG)extWindowProc); lres=(WNDPROC)(*pSetWindowLong)(hwnd, nIndex, (LONG)extWindowProc);
if(!lres && GetLastError())OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__); if(!lres && GetLastError())OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__);
} }
else { else {
res=(*pSetWindowLongA)(hwnd, nIndex, dwNewLong); res=(*pSetWindowLong)(hwnd, nIndex, dwNewLong);
} }
OutTraceDW("SetWindowLong: hwnd=%x, nIndex=%x, Val=%x, res=%x\n", hwnd, nIndex, dwNewLong, res); OutTraceDW("SetWindowLong: hwnd=%x, nIndex=%x, Val=%x, res=%x\n", hwnd, nIndex, dwNewLong, res);
@ -803,12 +803,12 @@ LONG WINAPI extSetWindowLong(HWND hwnd, int nIndex, LONG dwNewLong, SetWindowLon
LONG WINAPI extSetWindowLongA(HWND hwnd, int nIndex, LONG dwNewLong) LONG WINAPI extSetWindowLongA(HWND hwnd, int nIndex, LONG dwNewLong)
{ {
return extSetWindowLong(hwnd, nIndex, dwNewLong, pSetWindowLongA); return extSetWindowLong(hwnd, nIndex, dwNewLong, pSetWindowLongA, pGetWindowLongA);
} }
LONG WINAPI extSetWindowLongW(HWND hwnd, int nIndex, LONG dwNewLong) LONG WINAPI extSetWindowLongW(HWND hwnd, int nIndex, LONG dwNewLong)
{ {
return extSetWindowLong(hwnd, nIndex, dwNewLong, pSetWindowLongW); return extSetWindowLong(hwnd, nIndex, dwNewLong, pSetWindowLongW, pGetWindowLongW);
} }
BOOL WINAPI extSetWindowPos(HWND hwnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags) BOOL WINAPI extSetWindowPos(HWND hwnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags)
@ -832,7 +832,7 @@ BOOL WINAPI extSetWindowPos(HWND hwnd, HWND hWndInsertAfter, int X, int Y, int c
r.right = X + cx; r.right = X + cx;
r.top = Y; r.top = Y;
r.bottom = Y + cy; r.bottom = Y + cy;
if ((*pGetWindowLongA)(hwnd, GWL_STYLE) & WS_CHILD){ if ((*pGetWindowLong)(hwnd, GWL_STYLE) & WS_CHILD){
r = dxw.MapClientRect(&r); r = dxw.MapClientRect(&r);
} }
else { else {
@ -884,8 +884,8 @@ BOOL WINAPI extSetWindowPos(HWND hwnd, HWND hWndInsertAfter, int X, int Y, int c
RECT rect; RECT rect;
rect.top=rect.left=0; rect.top=rect.left=0;
rect.right=cx; rect.bottom=cy; rect.right=cx; rect.bottom=cy;
dwCurStyle=(*pGetWindowLongA)(hwnd, GWL_STYLE); dwCurStyle=(*pGetWindowLong)(hwnd, GWL_STYLE);
dwExStyle=(*pGetWindowLongA)(hwnd, GWL_EXSTYLE); dwExStyle=(*pGetWindowLong)(hwnd, GWL_EXSTYLE);
// BEWARE: from MSDN - If the window is a child window, the return value is undefined. // BEWARE: from MSDN - If the window is a child window, the return value is undefined.
hMenu = (dwCurStyle & WS_CHILD) ? NULL : GetMenu(hwnd); hMenu = (dwCurStyle & WS_CHILD) ? NULL : GetMenu(hwnd);
AdjustWindowRectEx(&rect, dwCurStyle, (hMenu!=NULL), dwExStyle); AdjustWindowRectEx(&rect, dwCurStyle, (hMenu!=NULL), dwExStyle);
@ -1386,7 +1386,7 @@ static void HookChildWndProc(HWND hwnd, DWORD dwStyle, LPCTSTR ApiName)
if(dxw.dwFlags6 & NOWINDOWHOOKS) return; if(dxw.dwFlags6 & NOWINDOWHOOKS) return;
pWindowProc = (WNDPROC)(*pGetWindowLongA)(hwnd, GWL_WNDPROC); pWindowProc = (WNDPROC)(*pGetWindowLong)(hwnd, GWL_WNDPROC);
if((pWindowProc == extWindowProc) || if((pWindowProc == extWindowProc) ||
(pWindowProc == extChildWindowProc) || (pWindowProc == extChildWindowProc) ||
(pWindowProc == extDialogWindowProc)){ // avoid recursions (pWindowProc == extDialogWindowProc)){ // avoid recursions
@ -1402,11 +1402,11 @@ static void HookChildWndProc(HWND hwnd, DWORD dwStyle, LPCTSTR ApiName)
dxwws.PutProc(hwnd, pWindowProc); dxwws.PutProc(hwnd, pWindowProc);
if(dwStyle & WS_CHILD){ if(dwStyle & WS_CHILD){
OutTraceDW("%s: Hooking CHILD hwnd=%x father WindowProc %x->%x\n", ApiName, hwnd, pWindowProc, extChildWindowProc); OutTraceDW("%s: Hooking CHILD hwnd=%x father WindowProc %x->%x\n", ApiName, hwnd, pWindowProc, extChildWindowProc);
res=(*pSetWindowLongA)(hwnd, GWL_WNDPROC, (LONG)extChildWindowProc); res=(*pSetWindowLong)(hwnd, GWL_WNDPROC, (LONG)extChildWindowProc);
} }
else { // must be dwStyle & WS_DLGFRAME else { // must be dwStyle & WS_DLGFRAME
OutTraceDW("%s: Hooking DLGFRAME hwnd=%x father WindowProc %x->%x\n", ApiName, hwnd, pWindowProc, extDialogWindowProc); OutTraceDW("%s: Hooking DLGFRAME hwnd=%x father WindowProc %x->%x\n", ApiName, hwnd, pWindowProc, extDialogWindowProc);
res=(*pSetWindowLongA)(hwnd, GWL_WNDPROC, (LONG)extDialogWindowProc); res=(*pSetWindowLong)(hwnd, GWL_WNDPROC, (LONG)extDialogWindowProc);
} }
if(!res) OutTraceE("%s: SetWindowLong ERROR %x\n", ApiName, GetLastError()); if(!res) OutTraceE("%s: SetWindowLong ERROR %x\n", ApiName, GetLastError());
} }
@ -1612,8 +1612,8 @@ static HWND WINAPI extCreateWindowCommon(
if ((!isValidHandle) && dxw.IsFullScreen()){ if ((!isValidHandle) && dxw.IsFullScreen()){
dxw.SethWnd(hwnd); dxw.SethWnd(hwnd);
extern void AdjustWindowPos(HWND, DWORD, DWORD); extern void AdjustWindowPos(HWND, DWORD, DWORD);
(*pSetWindowLongA)(hwnd, GWL_STYLE, (dxw.dwFlags2 & MODALSTYLE) ? 0 : WS_OVERLAPPEDWINDOW); (*pSetWindowLong)(hwnd, GWL_STYLE, (dxw.dwFlags2 & MODALSTYLE) ? 0 : WS_OVERLAPPEDWINDOW);
(*pSetWindowLongA)(hwnd, GWL_EXSTYLE, 0); (*pSetWindowLong)(hwnd, GWL_EXSTYLE, 0);
OutTraceDW("%s: hwnd=%x, set style=WS_OVERLAPPEDWINDOW extstyle=0\n", ApiName, hwnd); OutTraceDW("%s: hwnd=%x, set style=WS_OVERLAPPEDWINDOW extstyle=0\n", ApiName, hwnd);
AdjustWindowPos(hwnd, nWidth, nHeight); AdjustWindowPos(hwnd, nWidth, nHeight);
(*pShowWindow)(hwnd, SW_SHOWNORMAL); (*pShowWindow)(hwnd, SW_SHOWNORMAL);
@ -2360,7 +2360,7 @@ HWND WINAPI extCreateDialogIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATE lpT
if( lpDialogFunc && if( lpDialogFunc &&
!(dxw.dwFlags6 & NOWINDOWHOOKS)){ // v2.03.41 - debug option !(dxw.dwFlags6 & NOWINDOWHOOKS)){ // v2.03.41 - debug option
dxwws.PutProc(RetHWND, (WNDPROC)lpDialogFunc); dxwws.PutProc(RetHWND, (WNDPROC)lpDialogFunc);
if(!(*pSetWindowLongA)(RetHWND, DWL_DLGPROC, (LONG)extDialogWindowProc)) if(!(*pSetWindowLong)(RetHWND, DWL_DLGPROC, (LONG)extDialogWindowProc))
OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__); OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__);
} }
@ -2384,7 +2384,7 @@ HWND WINAPI extCreateDialogParam(HINSTANCE hInstance, LPCTSTR lpTemplateName, HW
if( lpDialogFunc && if( lpDialogFunc &&
!(dxw.dwFlags6 & NOWINDOWHOOKS)){ // v2.03.41 - debug option !(dxw.dwFlags6 & NOWINDOWHOOKS)){ // v2.03.41 - debug option
dxwws.PutProc(RetHWND, (WNDPROC)lpDialogFunc); dxwws.PutProc(RetHWND, (WNDPROC)lpDialogFunc);
if(!(*pSetWindowLongA)(RetHWND, DWL_DLGPROC, (LONG)extDialogWindowProc)) if(!(*pSetWindowLong)(RetHWND, DWL_DLGPROC, (LONG)extDialogWindowProc))
OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__); OutTraceE("SetWindowLong: ERROR err=%d at %d\n", GetLastError(), __LINE__);
} }
@ -2417,7 +2417,7 @@ BOOL WINAPI extMoveWindow(HWND hwnd, int X, int Y, int nWidth, int nHeight, BOOL
BOOL isChild; BOOL isChild;
(*pClientToScreen)(dxw.GethWnd(),&upleft); (*pClientToScreen)(dxw.GethWnd(),&upleft);
(*pGetClientRect)(dxw.GethWnd(),&client); (*pGetClientRect)(dxw.GethWnd(),&client);
if ((*pGetWindowLongA)(hwnd, GWL_STYLE) & WS_CHILD){ if ((*pGetWindowLong)(hwnd, GWL_STYLE) & WS_CHILD){
isChild=TRUE; isChild=TRUE;
// child coordinate adjustement // child coordinate adjustement
X = (X * client.right) / dxw.GetScreenWidth(); X = (X * client.right) / dxw.GetScreenWidth();
@ -2446,7 +2446,7 @@ BOOL WINAPI extMoveWindow(HWND hwnd, int X, int Y, int nWidth, int nHeight, BOOL
POINT upleft = {0,0}; POINT upleft = {0,0};
(*pGetClientRect)(dxw.GethWnd(),&screen); (*pGetClientRect)(dxw.GethWnd(),&screen);
(*pClientToScreen)(dxw.GethWnd(),&upleft); (*pClientToScreen)(dxw.GethWnd(),&upleft);
if((dwStyle=(*pGetWindowLongA)(hwnd, GWL_STYLE)) && WS_CHILDWINDOW){ if((dwStyle=(*pGetWindowLong)(hwnd, GWL_STYLE)) && WS_CHILDWINDOW){
// Big main child window: see "Reah" // Big main child window: see "Reah"
X=Y=0; X=Y=0;
} }

View File

@ -175,18 +175,18 @@ static void dx_Cornerize(HWND hwnd)
if (bCornerized){ // toggle .... if (bCornerized){ // toggle ....
OutTraceDW("DxWnd: exiting corner mode\n"); OutTraceDW("DxWnd: exiting corner mode\n");
(*pSetWindowLongA)(hwnd, GWL_STYLE, OldStyle); (*pSetWindowLong)(hwnd, GWL_STYLE, OldStyle);
(*pSetWindowLongA)(hwnd, GWL_EXSTYLE, OldExtStyle); (*pSetWindowLong)(hwnd, GWL_EXSTYLE, OldExtStyle);
(*pMoveWindow)(hwnd, WinRect.left, WinRect.top, WinRect.right, WinRect.bottom, TRUE); (*pMoveWindow)(hwnd, WinRect.left, WinRect.top, WinRect.right, WinRect.bottom, TRUE);
memset(&WinRect, 0, sizeof(WinRect)); memset(&WinRect, 0, sizeof(WinRect));
} }
else { else {
OutTraceDW("DxWnd: entering corner mode\n"); OutTraceDW("DxWnd: entering corner mode\n");
(*pGetWindowRect)(hwnd, &WinRect); (*pGetWindowRect)(hwnd, &WinRect);
OldStyle = (*pGetWindowLongA)(hwnd, GWL_STYLE); OldStyle = (*pGetWindowLong)(hwnd, GWL_STYLE);
OldExtStyle = (*pGetWindowLongA)(hwnd, GWL_EXSTYLE); OldExtStyle = (*pGetWindowLong)(hwnd, GWL_EXSTYLE);
(*pSetWindowLongA)(hwnd, GWL_STYLE, WS_VISIBLE|WS_CLIPSIBLINGS|WS_OVERLAPPED); (*pSetWindowLong)(hwnd, GWL_STYLE, WS_VISIBLE|WS_CLIPSIBLINGS|WS_OVERLAPPED);
(*pSetWindowLongA)(hwnd, GWL_EXSTYLE, 0); (*pSetWindowLong)(hwnd, GWL_EXSTYLE, 0);
(*pMoveWindow)(hwnd, 0, 0, dxw.GetScreenWidth(), dxw.GetScreenHeight(), TRUE); (*pMoveWindow)(hwnd, 0, 0, dxw.GetScreenWidth(), dxw.GetScreenHeight(), TRUE);
} }
bCornerized = !bCornerized; // switch toggle bCornerized = !bCornerized; // switch toggle
@ -211,8 +211,8 @@ void dx_FullScreenToggle(HWND hwnd)
MessageBox(NULL,"Error: Failed to recover display mode.", "Error", 0); MessageBox(NULL,"Error: Failed to recover display mode.", "Error", 0);
} }
// MoveWindow doesn't recover the exact position!!! // MoveWindow doesn't recover the exact position!!!
(*pSetWindowLongA)(hwnd, GWL_STYLE, OldStyle); (*pSetWindowLong)(hwnd, GWL_STYLE, OldStyle);
(*pSetWindowLongA)(hwnd, GWL_EXSTYLE, OldExtStyle); (*pSetWindowLong)(hwnd, GWL_EXSTYLE, OldExtStyle);
(*pSetWindowPos)(hwnd, HWND_TOP, (*pSetWindowPos)(hwnd, HWND_TOP,
WinRect.left, WinRect.top, (WinRect.right-WinRect.left), (WinRect.bottom-WinRect.top), WinRect.left, WinRect.top, (WinRect.right-WinRect.left), (WinRect.bottom-WinRect.top),
SWP_DRAWFRAME|SWP_FRAMECHANGED|SWP_SHOWWINDOW); SWP_DRAWFRAME|SWP_FRAMECHANGED|SWP_SHOWWINDOW);
@ -224,8 +224,8 @@ void dx_FullScreenToggle(HWND hwnd)
if((WinRect.left==0) && (WinRect.right==0) && (WinRect.top==0) && (WinRect.bottom==0)) (*pGetWindowRect)(hwnd, &WinRect); if((WinRect.left==0) && (WinRect.right==0) && (WinRect.top==0) && (WinRect.bottom==0)) (*pGetWindowRect)(hwnd, &WinRect);
OldStyle = (*pGetWindowLongA)(hwnd, GWL_STYLE); OldStyle = (*pGetWindowLongA)(hwnd, GWL_STYLE);
OldExtStyle = (*pGetWindowLongA)(hwnd, GWL_EXSTYLE); OldExtStyle = (*pGetWindowLongA)(hwnd, GWL_EXSTYLE);
(*pSetWindowLongA)(hwnd, GWL_STYLE, WS_VISIBLE|WS_CLIPSIBLINGS|WS_OVERLAPPED); (*pSetWindowLong)(hwnd, GWL_STYLE, WS_VISIBLE|WS_CLIPSIBLINGS|WS_OVERLAPPED);
(*pSetWindowLongA)(hwnd, GWL_EXSTYLE, 0); (*pSetWindowLong)(hwnd, GWL_EXSTYLE, 0);
(*pMoveWindow)(hwnd, 0, 0, dxw.GetScreenWidth(), dxw.GetScreenHeight(), TRUE); (*pMoveWindow)(hwnd, 0, 0, dxw.GetScreenWidth(), dxw.GetScreenHeight(), TRUE);
(*pUpdateWindow)(hwnd); (*pUpdateWindow)(hwnd);
@ -278,8 +278,8 @@ static void dx_DesktopToggle(HWND hwnd, BOOL bWorkArea)
if (bDesktopToggle){ // toggle .... if (bDesktopToggle){ // toggle ....
OutTraceDW("DxWnd: exiting desktop mode: style=%x extstyle=%x pos=(%d,%d)-(%d,%d)\n", OutTraceDW("DxWnd: exiting desktop mode: style=%x extstyle=%x pos=(%d,%d)-(%d,%d)\n",
OldStyle, OldExtStyle, WinRect.left, WinRect.top, WinRect.right, WinRect.bottom); OldStyle, OldExtStyle, WinRect.left, WinRect.top, WinRect.right, WinRect.bottom);
(*pSetWindowLongA)(hwnd, GWL_STYLE, OldStyle); (*pSetWindowLong)(hwnd, GWL_STYLE, OldStyle);
(*pSetWindowLongA)(hwnd, GWL_EXSTYLE, OldExtStyle); (*pSetWindowLong)(hwnd, GWL_EXSTYLE, OldExtStyle);
// MoveWindow doesn't recover the exact position!!! // MoveWindow doesn't recover the exact position!!!
(*pSetWindowPos)(hwnd, HWND_TOP, (*pSetWindowPos)(hwnd, HWND_TOP,
WinRect.left, WinRect.top, (WinRect.right-WinRect.left), (WinRect.bottom-WinRect.top), WinRect.left, WinRect.top, (WinRect.right-WinRect.left), (WinRect.bottom-WinRect.top),
@ -294,8 +294,8 @@ static void dx_DesktopToggle(HWND hwnd, BOOL bWorkArea)
if((WinRect.left==0) && (WinRect.right==0) && (WinRect.top==0) && (WinRect.bottom==0)) (*pGetWindowRect)(hwnd, &WinRect); if((WinRect.left==0) && (WinRect.right==0) && (WinRect.top==0) && (WinRect.bottom==0)) (*pGetWindowRect)(hwnd, &WinRect);
OldStyle = (*pGetWindowLongA)(hwnd, GWL_STYLE); OldStyle = (*pGetWindowLongA)(hwnd, GWL_STYLE);
OldExtStyle = (*pGetWindowLongA)(hwnd, GWL_EXSTYLE); OldExtStyle = (*pGetWindowLongA)(hwnd, GWL_EXSTYLE);
(*pSetWindowLongA)(hwnd, GWL_STYLE, WS_VISIBLE|WS_CLIPSIBLINGS|WS_OVERLAPPED); (*pSetWindowLong)(hwnd, GWL_STYLE, WS_VISIBLE|WS_CLIPSIBLINGS|WS_OVERLAPPED);
(*pSetWindowLongA)(hwnd, GWL_EXSTYLE, 0); (*pSetWindowLong)(hwnd, GWL_EXSTYLE, 0);
(*pUpdateWindow)(hwnd); (*pUpdateWindow)(hwnd);
DesktopWnd = (*pGetDesktopWindow)(); DesktopWnd = (*pGetDesktopWindow)();
hClientDC=(*pGDIGetDC)(hwnd); hClientDC=(*pGDIGetDC)(hwnd);

View File

@ -32,6 +32,7 @@ void CTabHook::DoDataExchange(CDataExchange* pDX)
DDX_Check(pDX, IDC_STARTDEBUG, cTarget->m_StartDebug); DDX_Check(pDX, IDC_STARTDEBUG, cTarget->m_StartDebug);
DDX_Check(pDX, IDC_HOTPATCH, cTarget->m_HotPatch); DDX_Check(pDX, IDC_HOTPATCH, cTarget->m_HotPatch);
DDX_Check(pDX, IDC_HOOKDLLS, cTarget->m_HookDLLs); DDX_Check(pDX, IDC_HOOKDLLS, cTarget->m_HookDLLs);
DDX_Check(pDX, IDC_ANSIWIDE, cTarget->m_AnsiWide);
DDX_Check(pDX, IDC_HOOKCHILDWIN, cTarget->m_HookChildWin); DDX_Check(pDX, IDC_HOOKCHILDWIN, cTarget->m_HookChildWin);
// Kernel32 // Kernel32

View File

@ -80,45 +80,65 @@ static BOOL IsWinXP()
void CTabProgram::OnOpen() void CTabProgram::OnOpen()
{ {
// TODO: Please add your control notification handler code here
char path[MAX_PATH]; char path[MAX_PATH];
CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
cTarget->m_File.GetWindowText(path, MAX_PATH); cTarget->m_File.GetWindowText(path, MAX_PATH);
GetPrivateProfileString("window", "exepath", NULL, path, MAX_PATH, gInitPath); GetPrivateProfileString("window", "exepath", NULL, path, MAX_PATH, gInitPath);
if(!dirExists(path)) strcpy(path, ""); if(!dirExists(path)) strcpy(path, "");
// XP fix: path must end with '\.' // XP fix: path must end with '\.'
if(IsWinXP()) strcat(path, "."); if(IsWinXP()) if((strlen(path) > 2) && (path[strlen(path)-1] == '\\')) strcat(path, ".");
CFileDialog dlg( TRUE, "*.*", path, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, while(TRUE){
"Program (*.exe)|*.exe|All Files (*.*)|*.*||", this); int ret;
if( dlg.DoModal() == IDOK) { CFileDialog dlg( TRUE, "*.*", path, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
cTarget->m_File.SetWindowText(dlg.GetPathName()); "Program (*.exe)|*.exe|All Files (*.*)|*.*||", this);
if(GetPrivateProfileInt("window", "updatepaths", 1, gInitPath)){ ret = dlg.DoModal();
strcpy(path, dlg.GetPathName()); //char debug[512];
GetFolderFromPath(path); //sprintf(debug, "ret=%x path=%s", ret, path);
WritePrivateProfileString("window", "exepath", path, gInitPath); //MessageBox(debug, "debug", MB_OK);
if(ret==IDOK){
cTarget->m_File.SetWindowText(dlg.GetPathName());
if(GetPrivateProfileInt("window", "updatepaths", 1, gInitPath)){
strcpy(path, dlg.GetPathName());
GetFolderFromPath(path);
WritePrivateProfileString("window", "exepath", path, gInitPath);
}
break;
} }
if(ret==IDCANCEL) break;
//else
strcpy(path,"");
} }
} }
void CTabProgram::OnOpenLaunch() void CTabProgram::OnOpenLaunch()
{ {
// TODO: Please add your control notification handler code here
char path[MAX_PATH]; char path[MAX_PATH];
CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent())); CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
cTarget->m_File.GetWindowText(path, MAX_PATH); cTarget->m_File.GetWindowText(path, MAX_PATH);
GetPrivateProfileString("window", "exepath", NULL, path, MAX_PATH, gInitPath); GetPrivateProfileString("window", "exepath", NULL, path, MAX_PATH, gInitPath);
if(!dirExists(path)) strcpy(path, ""); if(!dirExists(path)) strcpy(path, "");
// XP fix: path must end with '\.' // XP fix: path must end with '\.'
if(IsWinXP()) strcat(path, "."); if(IsWinXP()) if((strlen(path) > 2) && (path[strlen(path)-1] == '\\')) strcat(path, ".");
CFileDialog dlg( TRUE, "*.*", path, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, while(TRUE){
"Program (*.exe)|*.exe|All Files (*.*)|*.*||", this); int ret;
if( dlg.DoModal() == IDOK) { CFileDialog dlg( TRUE, "*.*", path, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
cTarget->m_Launch.SetWindowText(dlg.GetPathName()); "Program (*.exe)|*.exe|All Files (*.*)|*.*||", this);
if(GetPrivateProfileInt("window", "updatepaths", 1, gInitPath)){ ret = dlg.DoModal();
strcpy(path, dlg.GetPathName()); //char debug[512];
GetFolderFromPath(path); //sprintf(debug, "ret=%x path=%s", ret, path);
WritePrivateProfileString("window", "exepath", path, gInitPath); //MessageBox(debug, "debug", MB_OK);
if(ret==IDOK){
cTarget->m_Launch.SetWindowText(dlg.GetPathName());
if(GetPrivateProfileInt("window", "updatepaths", 1, gInitPath)){
strcpy(path, dlg.GetPathName());
GetFolderFromPath(path);
WritePrivateProfileString("window", "exepath", path, gInitPath);
}
break;
} }
if(ret==IDCANCEL) break;
//else
strcpy(path,"");
} }
} }

View File

@ -110,6 +110,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
m_Windowize = TRUE; // default true !! m_Windowize = TRUE; // default true !!
m_HotPatch = FALSE; m_HotPatch = FALSE;
m_HookDLLs = TRUE; // default true !! m_HookDLLs = TRUE; // default true !!
m_AnsiWide = FALSE;
m_TerminateOnClose = FALSE; m_TerminateOnClose = FALSE;
m_ConfirmOnClose = FALSE; m_ConfirmOnClose = FALSE;
m_HookEnabled = TRUE; // default true !! m_HookEnabled = TRUE; // default true !!

View File

@ -60,6 +60,7 @@ public:
BOOL m_Windowize; BOOL m_Windowize;
BOOL m_HotPatch; BOOL m_HotPatch;
BOOL m_HookDLLs; BOOL m_HookDLLs;
BOOL m_AnsiWide;
BOOL m_TerminateOnClose; BOOL m_TerminateOnClose;
BOOL m_ConfirmOnClose; BOOL m_ConfirmOnClose;
BOOL m_EmulateRegistry; BOOL m_EmulateRegistry;
@ -257,6 +258,7 @@ protected:
// Generated message map functions // Generated message map functions
//{{AFX_MSG(CTargetDlg) //{{AFX_MSG(CTargetDlg)
afx_msg void OnOpen(); afx_msg void OnOpen();
afx_msg void OnOpenLaunch();
//}}AFX_MSG //}}AFX_MSG
DECLARE_MESSAGE_MAP() DECLARE_MESSAGE_MAP()

View File

@ -8,7 +8,7 @@
extern BOOL IsProcessElevated(); extern BOOL IsProcessElevated();
extern BOOL IsUserInAdminGroup(); extern BOOL IsUserInAdminGroup();
BOOL DxSelfElevate() BOOL DxSelfElevate(CDxwndhostView *view)
{ {
BOOL const fInAdminGroup = IsUserInAdminGroup(); BOOL const fInAdminGroup = IsUserInAdminGroup();
if(!fInAdminGroup) return TRUE; if(!fInAdminGroup) return TRUE;
@ -20,6 +20,11 @@ BOOL DxSelfElevate()
MustRestart=MessageBoxLang(DXW_STRING_ADMINCAP, DXW_STRING_WARNING, MB_OKCANCEL | MB_ICONQUESTION); MustRestart=MessageBoxLang(DXW_STRING_ADMINCAP, DXW_STRING_WARNING, MB_OKCANCEL | MB_ICONQUESTION);
if(MustRestart==IDOK){ if(MustRestart==IDOK){
extern HANDLE GlobalLocker; extern HANDLE GlobalLocker;
// Autoelevation at startup has no HostView yet, but nothing to save either
if (view && view->isUpdated){
if (MessageBoxLang(DXW_STRING_LISTUPDATE, DXW_STRING_WARNING, MB_YESNO | MB_ICONQUESTION)==IDYES)
view->SaveConfigFile();
}
CloseHandle(GlobalLocker); CloseHandle(GlobalLocker);
char szPath[MAX_PATH]; char szPath[MAX_PATH];
if (GetModuleFileName(NULL, szPath, ARRAYSIZE(szPath))) if (GetModuleFileName(NULL, szPath, ARRAYSIZE(szPath)))

View File

@ -138,12 +138,6 @@ BOOL CDxwndhostApp::InitInstance()
// standard initialization // standard initialization
//#ifdef _AFXDLL
// Enable3dControls(); // if MFC is in shared DLL use this call.
//#else
// Enable3dControlsStatic(); // if MFC is statically linked use this call.
//#endif
// Register the document template. // Register the document template.
CSingleDocTemplate* pDocTemplate; CSingleDocTemplate* pDocTemplate;
@ -228,11 +222,11 @@ BOOL CDxwndhostApp::InitInstance()
m_pMainWnd->UpdateWindow(); m_pMainWnd->UpdateWindow();
BOOL bCheckAdminRights = GetPrivateProfileInt("window", "checkadmin", 0, InitPath); BOOL bCheckAdminRights = GetPrivateProfileInt("window", "checkadmin", 0, InitPath);
extern BOOL DxSelfElevate(); extern BOOL DxSelfElevate(CDxwndhostView *);
OSVERSIONINFO osver = { sizeof(osver) }; OSVERSIONINFO osver = { sizeof(osver) };
// self elevation at start if configured for the whole DxWnd session // self elevation at start if configured for the whole DxWnd session
if (bCheckAdminRights && (GetVersionEx(&osver)) && (osver.dwMajorVersion >= 6)){ if (bCheckAdminRights && (GetVersionEx(&osver)) && (osver.dwMajorVersion >= 6)){
DxSelfElevate(); DxSelfElevate((CDxwndhostView *)NULL);
} }
return TRUE; return TRUE;
} }

Binary file not shown.

Binary file not shown.

View File

@ -197,6 +197,7 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
if(dlg->m_UnNotify) t->flags |= UNNOTIFY; if(dlg->m_UnNotify) t->flags |= UNNOTIFY;
if(dlg->m_Windowize) t->flags2 |= WINDOWIZE; if(dlg->m_Windowize) t->flags2 |= WINDOWIZE;
if(dlg->m_HookDLLs) t->flags3 |= HOOKDLLS; if(dlg->m_HookDLLs) t->flags3 |= HOOKDLLS;
if(dlg->m_AnsiWide) t->flags5 |= ANSIWIDE;
if(dlg->m_TerminateOnClose) t->flags6 |= TERMINATEONCLOSE; if(dlg->m_TerminateOnClose) t->flags6 |= TERMINATEONCLOSE;
if(dlg->m_ConfirmOnClose) t->flags6 |= CONFIRMONCLOSE; if(dlg->m_ConfirmOnClose) t->flags6 |= CONFIRMONCLOSE;
if(dlg->m_EmulateRegistry) t->flags3 |= EMULATEREGISTRY; if(dlg->m_EmulateRegistry) t->flags3 |= EMULATEREGISTRY;
@ -468,6 +469,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
dlg->m_Windowize = t->flags2 & WINDOWIZE ? 1 : 0; dlg->m_Windowize = t->flags2 & WINDOWIZE ? 1 : 0;
dlg->m_HotPatch = t->flags4 & HOTPATCH ? 1 : 0; dlg->m_HotPatch = t->flags4 & HOTPATCH ? 1 : 0;
dlg->m_HookDLLs = t->flags3 & HOOKDLLS ? 1 : 0; dlg->m_HookDLLs = t->flags3 & HOOKDLLS ? 1 : 0;
dlg->m_AnsiWide = t->flags5 & ANSIWIDE ? 1 : 0;
dlg->m_TerminateOnClose = t->flags6 & TERMINATEONCLOSE ? 1 : 0; dlg->m_TerminateOnClose = t->flags6 & TERMINATEONCLOSE ? 1 : 0;
dlg->m_ConfirmOnClose = t->flags6 & CONFIRMONCLOSE ? 1 : 0; dlg->m_ConfirmOnClose = t->flags6 & CONFIRMONCLOSE ? 1 : 0;
dlg->m_EmulateRegistry = t->flags3 & EMULATEREGISTRY ? 1 : 0; dlg->m_EmulateRegistry = t->flags3 & EMULATEREGISTRY ? 1 : 0;
@ -2476,10 +2478,10 @@ void CDxwndhostView::OnRun()
// self-elevation if configured and necessary // self-elevation if configured and necessary
if(TargetMaps[i].flags & NEEDADMINCAPS){ if(TargetMaps[i].flags & NEEDADMINCAPS){
extern BOOL DxSelfElevate(); extern BOOL DxSelfElevate(CDxwndhostView *);
OSVERSIONINFO osver = { sizeof(osver) }; OSVERSIONINFO osver = { sizeof(osver) };
if (GetVersionEx(&osver) && (osver.dwMajorVersion >= 6)){ if (GetVersionEx(&osver) && (osver.dwMajorVersion >= 6)){
DxSelfElevate(); DxSelfElevate(this);
} }
} }

View File

@ -16,13 +16,13 @@ class CDxwndhostView : public CListView
protected: // Create from serialization only features. protected: // Create from serialization only features.
CDxwndhostView(); CDxwndhostView();
DECLARE_DYNCREATE(CDxwndhostView) DECLARE_DYNCREATE(CDxwndhostView)
BOOL isUpdated;
void SaveConfigFile();
private: private:
void Resize(void); void Resize(void);
void SaveConfigFile();
TARGETMAP TargetMaps[MAXTARGETS]; TARGETMAP TargetMaps[MAXTARGETS];
PRIVATEMAP PrivateMaps[MAXTARGETS]; PRIVATEMAP PrivateMaps[MAXTARGETS];
BOOL isUpdated;
DEVMODE InitDevMode; DEVMODE InitDevMode;
CSystemTray SystemTray; CSystemTray SystemTray;
int LastX, LastY, LastCX, LastCY; int LastX, LastY, LastCX, LastCY;

Binary file not shown.