//-------------------------------------------------------------------------------------- // Copyright (c) CODE.ME - since 2013.1. All rights reserved. //-------------------------------------------------------------------------------------- #include #include #include #include #pragma comment(lib, "Psapi.lib") HWND g_hWnd = NULL; HRESULT InitWindow( HINSTANCE hInstance, int nCmdShow ); LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); int searchGTAProcess( DWORD processID ) { TCHAR szProcessName[MAX_PATH] = TEXT(""); HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processID ); if (NULL != hProcess ) { HMODULE hMod; DWORD cbNeeded; if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) ) { GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) ); } } CloseHandle( hProcess ); if (wcsstr(szProcessName, L"gta_sa.exe")) return 1; return 0; } int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow ) { UNREFERENCED_PARAMETER( hPrevInstance ); UNREFERENCED_PARAMETER( lpCmdLine ); if( FAILED( InitWindow( hInstance, nCmdShow ) ) ) return 0; MSG msg = {0}; while( GetMessage( &msg, NULL, 0, 0 ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } return ( int )msg.wParam; } HRESULT InitWindow( HINSTANCE hInstance, int nCmdShow ) { WNDCLASSEX wcex; wcex.cbSize = sizeof( WNDCLASSEX ); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hCursor = LoadCursor( NULL, IDC_ARROW ); wcex.hbrBackground = ( HBRUSH )GetStockObject(LTGRAY_BRUSH);//( COLOR_WINDOW + 1 ); wcex.lpszMenuName = NULL; wcex.lpszClassName = L"codeme"; if( !RegisterClassEx( &wcex ) ) return E_FAIL; RECT rc = { 0, 0, 470, 240 }; AdjustWindowRect( &rc, WS_OVERLAPPEDWINDOW, FALSE ); g_hWnd = CreateWindow( L"codeme", L"Localizando GTA.", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, rc.right - rc.left, rc.bottom - rc.top, NULL, NULL, hInstance, NULL ); CreateWindow(L"BUTTON", L"Localizar", WS_CHILD + WS_VISIBLE + WS_TABSTOP, 235, 120, 80, 25, g_hWnd, (HMENU)1, hInstance, NULL); if( !g_hWnd ) return E_FAIL; ShowWindow( g_hWnd, nCmdShow ); return S_OK; } LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { PAINTSTRUCT ps; HDC hdc; switch( message ) { case WM_COMMAND: { if (LOWORD(wParam) == 1) { DWORD allProcess[1024], currProcess, id; if (!EnumProcesses(allProcess, sizeof(allProcess), &id)) { MessageBox(NULL, L"Não foi possível executar a função.", L"ERRO", MB_ICONERROR); } currProcess = id / sizeof(DWORD); for (int i = 0; i < currProcess; ++i) { if (allProcess[i] != 0) { if (searchGTAProcess(allProcess[i])) { MessageBox(NULL, L"GTA localizado !", L"Aviso", MB_ICONINFORMATION); } } } } break; } case WM_PAINT: hdc = BeginPaint( hWnd, &ps ); EndPaint( hWnd, &ps ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hWnd, message, wParam, lParam ); } return 0; }