Initial MSVC 2008 projects workspace
This commit is contained in:
27
L2Detect_starter/ChooseDlg.cpp
Normal file
27
L2Detect_starter/ChooseDlg.cpp
Normal file
@@ -0,0 +1,27 @@
|
||||
#include "stdafx.h"
|
||||
#include "Resource.h"
|
||||
|
||||
INT_PTR CALLBACK ChooseDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
switch( uMsg )
|
||||
{
|
||||
case WM_CLOSE: EndDialog( hDlg, IDCANCEL ); break;
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch( LOWORD( wParam ) )
|
||||
{
|
||||
case IDC_INGAME: EndDialog( hDlg, IDYES ); break;
|
||||
case IDC_OUTGAME: EndDialog( hDlg, IDNO ); break;
|
||||
}
|
||||
} break;
|
||||
default: return FALSE; break;
|
||||
}
|
||||
lParam = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
INT_PTR ChooseMode( HINSTANCE hInst )
|
||||
{
|
||||
INT_PTR ret = DialogBoxParam( hInst, MAKEINTRESOURCE(IDD_START), NULL, ChooseDlgProc, 0 );
|
||||
return ret;
|
||||
}
|
6
L2Detect_starter/ChooseDlg.h
Normal file
6
L2Detect_starter/ChooseDlg.h
Normal file
@@ -0,0 +1,6 @@
|
||||
#ifndef H_CHOOSEDLG
|
||||
#define H_CHOOSEDLG
|
||||
|
||||
INT_PTR ChooseMode( HINSTANCE hInst );
|
||||
|
||||
#endif
|
BIN
L2Detect_starter/L2Detect_auth.lib
Normal file
BIN
L2Detect_starter/L2Detect_auth.lib
Normal file
Binary file not shown.
207
L2Detect_starter/L2Detect_starter.cpp
Normal file
207
L2Detect_starter/L2Detect_starter.cpp
Normal file
@@ -0,0 +1,207 @@
|
||||
#include "stdafx.h"
|
||||
#include "ChooseDlg.h"
|
||||
|
||||
#define PROCESS_NAME "l2.exe"
|
||||
#define DLL_NAME "L2Detect.dll"
|
||||
#define DLL_AUTH_NAME "L2Detect_auth.dll"
|
||||
|
||||
//I could just use PROCESS_ALL_ACCESS but it's always best to use the absolute bare minimum of priveleges, so that your code works in as
|
||||
//many circumstances as possible.
|
||||
#define CREATE_THREAD_ACCESS (PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ)
|
||||
|
||||
BOOL WriteProcessBYTES( HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize );
|
||||
int RunProcess( HANDLE *phProcess, HANDLE *phThread );
|
||||
BOOL InjectDLL( HANDLE hProcess, char *dllName );
|
||||
|
||||
extern "C" __declspec(dllimport) int getHWID( char *);
|
||||
|
||||
bool validateAuthDll()
|
||||
{
|
||||
HINSTANCE hInstDLL = LoadLibrary( TEXT( DLL_AUTH_NAME ) );
|
||||
if( hInstDLL )
|
||||
{
|
||||
FreeLibrary( hInstDLL );
|
||||
return true;
|
||||
}
|
||||
MessageBox( NULL,
|
||||
TEXT("The application has failed to start because required DLL ")
|
||||
TEXT( DLL_AUTH_NAME )
|
||||
TEXT( " was not found.\n" )
|
||||
TEXT( "Reinstall application or contact application author." )
|
||||
,TEXT("DLL Error"), MB_ICONSTOP );
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool IsWindowsNT()
|
||||
{
|
||||
OSVERSIONINFO osinfo;
|
||||
memset( &osinfo, 0, sizeof(osinfo) );
|
||||
osinfo.dwOSVersionInfoSize = sizeof(osinfo);
|
||||
GetVersionEx( &osinfo );
|
||||
if( osinfo.dwMajorVersion < 5 ) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*void run_connect()
|
||||
{
|
||||
SOCKET s = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
|
||||
struct sockaddr_in addr;
|
||||
addr.sin_family = AF_INET;
|
||||
//addr.sin_addr.s_addr = inet_addr( "127.0.0.1" );
|
||||
addr.sin_addr.s_addr = inet_addr( "81.30.199.5" );
|
||||
//addr.sin_port = htons( 80 );
|
||||
addr.sin_port = htons( 7777 );
|
||||
//
|
||||
int r = connect( s, (const sockaddr *)&addr, sizeof(addr) );
|
||||
if( r == -1 )
|
||||
{
|
||||
MessageBox( NULL, TEXT("connect() failed!"), TEXT("Error!"), MB_ICONSTOP );
|
||||
closesocket( s );
|
||||
return;
|
||||
}
|
||||
MessageBox( NULL, TEXT("connect() OK!"), TEXT("OK!"), MB_ICONINFORMATION );
|
||||
shutdown( s, 0 );
|
||||
closesocket( s );
|
||||
}*/
|
||||
|
||||
int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow )
|
||||
{
|
||||
UNREFERENCED_PARAMETER(hPrevInstance);
|
||||
UNREFERENCED_PARAMETER(lpCmdLine);
|
||||
UNREFERENCED_PARAMETER(nCmdShow);
|
||||
|
||||
InitCommonControls();
|
||||
|
||||
//if( !validateAuthDll() ) return 1; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
INT_PTR r = ChooseMode( hInstance );
|
||||
if( r == IDNO ) // outgame
|
||||
{
|
||||
WSADATA wsadata;
|
||||
WSAStartup( MAKEWORD(2,0), &wsadata );
|
||||
|
||||
TCHAR tszEvtName[256];
|
||||
wsprintf( tszEvtName, TEXT("L2Detect Outgame Event_%d"), (unsigned)GetCurrentProcessId() );
|
||||
|
||||
//MessageBox( NULL, tszEvtName, TEXT("ggg"), 0 );
|
||||
|
||||
HANDLE hEvtDbg = CreateEvent( NULL, FALSE, FALSE, tszEvtName );
|
||||
HINSTANCE hDLL = LoadLibrary( TEXT( DLL_NAME ) );
|
||||
|
||||
if( hDLL == NULL )
|
||||
{
|
||||
MessageBox( NULL,
|
||||
TEXT("Cannot find required DLL: ")
|
||||
TEXT( DLL_NAME ),
|
||||
TEXT("Error starting L2Detect:"), MB_ICONSTOP );
|
||||
CloseHandle( hEvtDbg );
|
||||
WSACleanup();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*r = IDYES;
|
||||
while( r == IDYES )
|
||||
{
|
||||
r = MessageBox( NULL, TEXT("Run connect()?"), TEXT("OK"), MB_ICONQUESTION | MB_YESNO );
|
||||
if( r == IDYES ) run_connect();
|
||||
}*/
|
||||
|
||||
WaitForSingleObject( hEvtDbg, INFINITE );
|
||||
Sleep( 1000 );
|
||||
|
||||
//FreeLibrary( hDLL );
|
||||
CloseHandle( hEvtDbg );
|
||||
WSACleanup();
|
||||
return 0;
|
||||
}
|
||||
else if( r == IDYES ) // ingame
|
||||
{
|
||||
if( IsWindowsNT() )
|
||||
{
|
||||
HANDLE hProcess = NULL, hThread = NULL;
|
||||
int res = RunProcess( &hProcess, &hThread );
|
||||
if( res == 0 ) return 0;
|
||||
if( res == 1 )
|
||||
{
|
||||
InjectDLL( hProcess, DLL_NAME );
|
||||
ResumeThread( hThread );
|
||||
CloseHandle( hProcess );
|
||||
CloseHandle( hThread );
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox( 0, TEXT("Cannot start process!"), TEXT("Error!"), MB_ICONSTOP );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox( 0,
|
||||
TEXT("Required Windows 2000 or later!\n")
|
||||
TEXT("Your system does not support this method!"),
|
||||
TEXT("OS Error!"),
|
||||
MB_ICONSTOP );
|
||||
}
|
||||
}// if( r == IDNO )
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int RunProcess( HANDLE *phProcess, HANDLE *phThread )
|
||||
{
|
||||
TCHAR lpstrFilter[] = TEXT("Executables\0*.exe\0All files\0*.*\0\0");
|
||||
TCHAR lpstrFile[512] = {0};
|
||||
TCHAR dir[512] = {0};
|
||||
//TCHAR curDir[512] = {0};
|
||||
|
||||
//GetCurrentDirectory( sizeof(curDir)/sizeof(curDir[0]), curDir );
|
||||
_tcscpy( lpstrFile, _T("l2.exe") );
|
||||
|
||||
OPENFILENAME ofn;
|
||||
memset( &ofn, 0, sizeof(ofn) );
|
||||
ofn.lStructSize = sizeof(ofn);
|
||||
ofn.lpstrFilter = lpstrFilter;
|
||||
ofn.lpstrFile = lpstrFile;
|
||||
ofn.nMaxFile = sizeof(lpstrFile)/sizeof(lpstrFile[0]);
|
||||
ofn.lpstrTitle = TEXT("Choose program to run");
|
||||
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_NONETWORKBUTTON | OFN_PATHMUSTEXIST;
|
||||
|
||||
BOOL ret = GetOpenFileName( &ofn );
|
||||
if( !ret ) return 0;
|
||||
|
||||
//SetCurrentDirectory( procDir );
|
||||
GetCurrentDirectory( sizeof(dir)/sizeof(dir[0]), dir );
|
||||
//SetCurrentDirectory( curDir );
|
||||
|
||||
PROCESS_INFORMATION pi;
|
||||
memset( &pi, 0, sizeof(pi) );
|
||||
STARTUPINFO si;
|
||||
memset( &si, 0, sizeof(si) );
|
||||
si.cb = sizeof(si);
|
||||
ret = CreateProcess( NULL, lpstrFile, NULL, NULL, FALSE,
|
||||
CREATE_SUSPENDED, NULL, dir, &si, &pi );
|
||||
if( !ret ) return -1;
|
||||
//
|
||||
(*phProcess) = pi.hProcess;
|
||||
(*phThread) = pi.hThread;
|
||||
return 1;
|
||||
}
|
||||
|
||||
BOOL InjectDLL( HANDLE hProcess, char *dllName )
|
||||
{
|
||||
HANDLE Proc = hProcess;
|
||||
LPVOID RemoteString, LoadLibAddy;
|
||||
|
||||
LoadLibAddy = (LPVOID)GetProcAddress( GetModuleHandle( TEXT("kernel32.dll") ), "LoadLibraryA" );
|
||||
|
||||
RemoteString = (LPVOID)VirtualAllocEx(Proc, NULL, strlen(DLL_NAME)+1, MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
|
||||
if( !RemoteString ) MessageBox( 0, TEXT("VirtualAllocEx() returned NULL!"), TEXT("Error (InjectDLL)"), MB_ICONSTOP );
|
||||
if( WriteProcessMemory(Proc, (LPVOID)RemoteString, dllName, strlen(dllName), NULL) == FALSE )
|
||||
MessageBox( 0, TEXT("WriteProcessMemory() returned FALSE!"), TEXT("Error (InjectDLL)"), MB_ICONSTOP );
|
||||
if( CreateRemoteThread(Proc, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddy, (LPVOID)RemoteString, NULL, NULL) == NULL )
|
||||
MessageBox( 0, TEXT("CreateRemoteThread() returned NULL!"), TEXT("Error (InjectDLL)"), MB_ICONSTOP );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
154
L2Detect_starter/L2Detect_starter.rc
Normal file
154
L2Detect_starter/L2Detect_starter.rc
Normal file
@@ -0,0 +1,154 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include <windows.h>
|
||||
#define IDC_STATIC -1
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||
#pragma code_page(1251)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// RT_MANIFEST
|
||||
//
|
||||
|
||||
1 RT_MANIFEST "res\\xp_manifest.xml"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_START DIALOGEX 0, 0, 316, 65
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "L2Detect: Choose Mode"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
PUSHBUTTON "IN-GAME",IDC_INGAME,29,19,118,24
|
||||
PUSHBUTTON "OUT-GAME",IDC_OUTGAME,169,19,118,24
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
IDD_START, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 309
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 58
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 0,6,0,0
|
||||
PRODUCTVERSION 0,6,0,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x1L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "041904e3"
|
||||
BEGIN
|
||||
VALUE "Comments", "L2Detect starter app"
|
||||
VALUE "CompanyName", "Lexx Soft"
|
||||
VALUE "FileDescription", "L2Detect starter app"
|
||||
VALUE "FileVersion", "0.6.0.0"
|
||||
VALUE "InternalName", "L2_DLL_Inject.exe"
|
||||
VALUE "LegalCopyright", "(c) Lexx Soft. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>."
|
||||
VALUE "OriginalFilename", "L2_DLL_Inject.exe"
|
||||
VALUE "ProductName", "L2Detect"
|
||||
VALUE "ProductVersion", "0.6.0.0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x419, 1251
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_L2 ICON "res\\L2_c.ico"
|
||||
#endif // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
7
L2Detect_starter/PostBuildEvent.cmd
Normal file
7
L2Detect_starter/PostBuildEvent.cmd
Normal file
@@ -0,0 +1,7 @@
|
||||
set out=..\..\out\dist_L2Detect
|
||||
|
||||
rem Copy EXE
|
||||
copy /y %2\%1.exe %2\%out%
|
||||
|
||||
rem Copy PDB
|
||||
rem copy /y %2\%1.pdb %2\%out%
|
BIN
L2Detect_starter/res/L2_c.ico
Normal file
BIN
L2Detect_starter/res/L2_c.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.2 KiB |
22
L2Detect_starter/res/xp_manifest.xml
Normal file
22
L2Detect_starter/res/xp_manifest.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||
<assemblyIdentity
|
||||
version="1.0.0.0"
|
||||
processorArchitecture="X86"
|
||||
name="CompanyName.ProductName.YourApplication"
|
||||
type="win32"
|
||||
/>
|
||||
<description>Lineage II Informer Interlude</description>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="X86"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
</assembly>
|
21
L2Detect_starter/resource.h
Normal file
21
L2Detect_starter/resource.h
Normal file
@@ -0,0 +1,21 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by L2_DLL_Inject.rc
|
||||
//
|
||||
#define IDD_START 101
|
||||
#define IDI_ICON1 102
|
||||
#define IDI_L2 102
|
||||
#define IDC_INGAME 1001
|
||||
#define IDC_BUTTON2 1002
|
||||
#define IDC_OUTGAME 1002
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 103
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1003
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
6
L2Detect_starter/stdafx.cpp
Normal file
6
L2Detect_starter/stdafx.cpp
Normal file
@@ -0,0 +1,6 @@
|
||||
// stdafx.cpp: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// L2_DLL_Inject.pch <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// stdafx.obj <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
#include "stdafx.h"
|
||||
|
20
L2Detect_starter/stdafx.h
Normal file
20
L2Detect_starter/stdafx.h
Normal file
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
|
||||
#include "targetver.h"
|
||||
|
||||
//#undef UNICODE
|
||||
//#undef _UNICODE
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <process.h>
|
||||
#include <time.h>
|
||||
#include <tchar.h>
|
||||
#include <shellapi.h>
|
||||
#include <commctrl.h>
|
||||
#include <commdlg.h>
|
12
L2Detect_starter/targetver.h
Normal file
12
L2Detect_starter/targetver.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
// WinXP
|
||||
|
||||
#ifndef WINVER
|
||||
#define WINVER 0x0501
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32_WINNT
|
||||
#define _WIN32_WINNT 0x0501
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user