bool CFileSystemWin32::GetSystemFolderPath(ESystemFolder Code, nString& OutPath) { char pRawPath[N_MAXPATH]; if (Code == SF_TEMP) { if (!GetTempPath(sizeof(pRawPath), pRawPath)) FAIL; OutPath = pRawPath; OutPath.ConvertBackslashes(); OK; } else if (Code == SF_HOME || Code == SF_BIN) { if (!GetModuleFileName(NULL, pRawPath, sizeof(pRawPath))) FAIL; nString PathToExe(pRawPath); PathToExe.ConvertBackslashes(); OutPath = PathToExe.ExtractDirName(); if (Code == SF_HOME) { nString LastDir = PathToExe.ExtractLastDirName(); if (!n_stricmp(LastDir.Get(), "win32") || !n_stricmp(LastDir.Get(), "win32d")) { // Normal home:bin/win32 directory structure, strip bin/win32 OutPath.StripTrailingSlash(); OutPath = OutPath.ExtractDirName(); OutPath.StripTrailingSlash(); OutPath = OutPath.ExtractDirName(); OutPath.StripTrailingSlash(); } } OK; } else { int CSIDL; switch (Code) { case SF_USER: CSIDL = CSIDL_PERSONAL | CSIDL_FLAG_CREATE; break; case SF_APP_DATA: CSIDL = CSIDL_LOCAL_APPDATA | CSIDL_FLAG_CREATE; break; case SF_PROGRAMS: CSIDL = CSIDL_PROGRAM_FILES; break; default: FAIL; } if (FAILED(SHGetFolderPath(0, CSIDL, NULL, 0, pRawPath))) FAIL; OutPath = pRawPath; OutPath.ConvertBackslashes(); } OK; }
BOOL SetSliderIni( LPCTSTR lpszString, const int iSlider ) { if( iSlider <= 0 || iSlider > 99 || lstrlen( lpszString ) > 1000 ) return FALSE; WriteDebugLog( TEXT( "SetSliderIni" ) ); WriteDebugLog( lpszString ); TCHAR lpszExeName[ MAX_PATH * 2 ] = _T( "" ); /* - 1.1b7 int len = lstrlen( lpszTarget ); int start = -1; int end = -1; for( int i = len - 1; i >= 5; i-- ) { if( lpszTarget[ i ] == TEXT( ' ' ) && ( lpszTarget[ i - 1 ] == TEXT( 'e' ) || lpszTarget[ i - 1 ] == TEXT( 'E' ) ) && ( lpszTarget[ i - 2 ] == TEXT( 'x' ) || lpszTarget[ i - 2 ] == TEXT( 'X' ) ) && ( lpszTarget[ i - 3 ] == TEXT( 'e' ) || lpszTarget[ i - 3 ] == TEXT( 'E' ) ) && lpszTarget[ i - 4 ] == TEXT( '.' ) ) { end = i; break; } } for( ; i >=0; i-- ) { if( lpszTarget[ i ] == TEXT( '\\' ) ) { start = i + 1; break; } } if( start == -1 ) start = 0; if( end == -1 || end - start <= 0 ) { TCHAR dbg[1000]; wsprintf( dbg, TEXT("DEBUG: %s %d %d %d"), lpszTarget, start, end, end-start ); WriteDebugLog( dbg ) ; return FALSE; } lstrcpy( lpszExeName, &lpszTarget[ start ] ); lpszExeName[ end - start ] = TEXT( '\0' ); */ // +1.1b7 PathToExe( lpszString, lpszExeName, MAX_PATH * 2 ); #if !defined( _UNICODE ) if( lstrlen( lpszExeName ) >= 19 ) { lpszExeName[ 15 ] = '\0'; PathToExeEx( lpszExeName, MAX_PATH * 2 ); } #endif TCHAR lpszExeNameLower[ MAX_PATH * 2 ] = _TEXT( "" ); int len = lstrlen( lpszExeName ); for( int i = 0; i < len; i++ ) { TCHAR c = lpszExeName[ i ]; if( _istascii( c ) && _istupper( c ) ) { lpszExeNameLower[ i ] = (TCHAR) _totlower( c ); } else { lpszExeNameLower[ i ] = c; } } //lpszExeNameLower[ i ] = TEXT( '\0' ); TCHAR lpszPath[ MAX_PATH * 2 ]; GetIniPath( lpszPath ); TCHAR tmpstr[ 100 ]; wsprintf( tmpstr, TEXT( "%d" ), iSlider ); WritePrivateProfileString( TEXT( "Slider" ), lpszExeNameLower, tmpstr, lpszPath ); // to flushes the cache WritePrivateProfileString( NULL, NULL, NULL, lpszPath ); return TRUE; }
int GetArgument( LPCTSTR lpszCmdLine, int iBufferSize, LPTSTR lpszMyPath, LPTSTR lpszTargetLongPath, LPTSTR lpszTargetLongExe ) { if( iBufferSize > MAX_PATH * 2 ) iBufferSize = MAX_PATH * 2; TCHAR lpszTargetPath[ MAX_PATH * 2 ] = _T( "" ); TCHAR p[ 1024 ]; lstrcpy( p, lpszCmdLine ); int s = 0; while( p[ s ] == TEXT( ' ' ) ) { s++; } TCHAR * p1; TCHAR * p2; if( p[ s ] == TEXT( '\"' ) ) { if( lstrlen( &p[ s + 1 ] ) >= iBufferSize ) return IGNORE_ARGV; else lstrcpy( lpszMyPath, &p[ s + 1 ] ); p1 = _tcschr( lpszMyPath, TEXT( '\"' ) ); if( !p1 ) return IGNORE_ARGV; else p1[ 0 ] = TEXT( '\0' ); if( p1[ 1 ] != TEXT( ' ' ) ) return IGNORE_ARGV; else p2 = &p1[ 2 ]; } else { if( lstrlen( &p[ s ] ) >= iBufferSize ) return IGNORE_ARGV; else lstrcpy( lpszMyPath, &p[ s ] ); p1 = _tcschr( lpszMyPath, TEXT( ' ' ) ); if( !p1 ) return IGNORE_ARGV; else p1[ 0 ] = TEXT( '\0' ); p2 = &p1[ 1 ]; } WriteDebugLog( lpszMyPath ); s = 0; while( p2[ s ] == TEXT( ' ' ) ) { s++; } if( p2[ s ] == TEXT( '\"' ) ) { lstrcpy( lpszTargetPath, &p2[ s + 1 ] ); p1 = _tcschr( lpszTargetPath, TEXT( '\"' ) ); if( !p1 ) return IGNORE_ARGV; else p1[ 0 ] = TEXT( '\0' ); if( p1[ 1 ] == TEXT( ' ' ) ) { p2 = &p1[ 2 ]; } else { p2 = p1; // TEXT( '\0' ) } } else { lstrcpy( lpszTargetPath, &p2[ s ] ); p1 = _tcschr( lpszTargetPath, TEXT( ' ' ) ); if( p1 ) { p1[ 0 ] = TEXT( '\0' ); p2 = &p1[ 1 ]; } else { p2 = p1; // TEXT( '\0' ) } } int len = lstrlen( lpszTargetPath ); if( len < 5 ) return IGNORE_ARGV; // if( lstrcmpi( &lpszTargetPath[ len - 4 ], TEXT( ".exe" ) ) != 0 ) return IGNORE_ARGV; WriteDebugLog( lpszTargetPath ); DWORD dwResult = GetLongPathName( lpszTargetPath, lpszTargetLongPath, (DWORD) iBufferSize ); if( dwResult == 0UL || dwResult > (DWORD) iBufferSize ) { lstrcpy( lpszTargetLongPath, lpszTargetPath ); } WriteDebugLog( lpszTargetLongPath ); PathToExe( lpszTargetLongPath, lpszTargetLongExe, iBufferSize ); WriteDebugLog( lpszTargetLongExe ); #if !defined( _UNICODE ) lstrcpy( lpszTargetLongPath, lpszTargetLongExe ); #endif int iSlider = _ttoi( p2 ); if( iSlider < 0 || iSlider > 99 ) { iSlider = 0; } WriteDebugLog( p2 ); return iSlider; }