11 |
cycrow |
1 |
#include <iostream>
|
|
|
2 |
#include <windows.h>
|
|
|
3 |
#include <TCHAR.h>
|
|
|
4 |
#include "..\Direct3D-Hook\Direct3D-Hook.h"
|
|
|
5 |
|
|
|
6 |
#include "../../Base Engine/Common/String.h"
|
|
|
7 |
|
|
|
8 |
int main ( int argc, char **argv )
|
|
|
9 |
/*int APIENTRY WinMain(HINSTANCE hInstance,
|
|
|
10 |
HINSTANCE hPrevInstance,
|
|
|
11 |
LPSTR lpCmdLine,
|
|
|
12 |
int nCmdShow)*/
|
|
|
13 |
{
|
|
|
14 |
String filename;
|
|
|
15 |
|
|
|
16 |
|
|
|
17 |
if ( argc >= 2 )
|
|
|
18 |
filename = argv[1];
|
|
|
19 |
|
|
|
20 |
if ( filename.Right(4).lower() != ".exe" )
|
|
|
21 |
{
|
|
|
22 |
if ( filename.Empty() )
|
|
|
23 |
filename = "x3.exe";
|
|
|
24 |
else
|
|
|
25 |
filename += "/x3.exe";
|
|
|
26 |
}
|
|
|
27 |
filename = filename.FindReplace ( "/", "\\" );
|
|
|
28 |
|
|
|
29 |
std::cout << "Running Program: " << filename.c_str() << std::endl;
|
|
|
30 |
|
|
|
31 |
// check if the file exists
|
|
|
32 |
FILE *id = fopen ( filename.c_str(), "r+" );
|
|
|
33 |
if ( !id )
|
|
|
34 |
{
|
|
|
35 |
std::cout<< "Could not find the main executable to run, exiting..." << std::endl;
|
|
|
36 |
return 1;
|
|
|
37 |
}
|
|
|
38 |
|
|
|
39 |
fclose ( id );
|
|
|
40 |
|
|
|
41 |
// Create/update the registry entry
|
|
|
42 |
HKEY regKey = 0;
|
|
|
43 |
if(ERROR_SUCCESS != RegCreateKeyEx(HKEY_CURRENT_USER, L"Software\\Direct3D-Hook", 0, 0, 0, KEY_READ | KEY_WRITE,
|
|
|
44 |
0, ®Key, 0))
|
|
|
45 |
{
|
|
|
46 |
std::cout<< "Could not open or create registry key: HKEY_CURRENT_USER\\Software\\Direct3D-Hook"<< std::endl
|
|
|
47 |
<< "Press enter to exit..."<< std::endl;
|
|
|
48 |
std::cin.ignore();
|
|
|
49 |
return 2;
|
|
|
50 |
}
|
|
|
51 |
|
|
|
52 |
/* if ( ERROR_SUCCESS != RegSetValueEx(regKey, 0, 0, REG_SZ,
|
|
|
53 |
reinterpret_cast<char*>((char *)filename.c_str()),
|
|
|
54 |
(filename.Length() + 1) * sizeof(char)) )*/
|
|
|
55 |
|
|
|
56 |
|
|
|
57 |
// if ( ERROR_SUCCESS != RegSetValueEx(regKey, 0, 0, REG_SZ, _t(filename.c_str()), filename.Length() + 1) )
|
|
|
58 |
if ( ERROR_SUCCESS != RegSetValueExA ( regKey, 0, 0, REG_SZ, reinterpret_cast<BYTE*>("x3.exe"), 6 ) )
|
|
|
59 |
{
|
|
|
60 |
std::cout<< "Could not update key value."<< std::endl
|
|
|
61 |
<< "Press enter to exit..."<< std::endl;
|
|
|
62 |
std::cin.ignore();
|
|
|
63 |
return 3;
|
|
|
64 |
}
|
|
|
65 |
std::cout<< "Hooking Direct3D...";
|
|
|
66 |
InstallHook();
|
|
|
67 |
|
|
|
68 |
String f = filename;
|
|
|
69 |
for ( int i = 2; i < argc; i++ )
|
|
|
70 |
f += String(" ") + argv[i];
|
|
|
71 |
|
|
|
72 |
system ( f.c_str() );
|
|
|
73 |
|
|
|
74 |
RemoveHook();
|
|
|
75 |
|
|
|
76 |
return 0;
|
|
|
77 |
}
|