// Changing Environment Variables
int _ExpandEnvironmentStrings( LPTSTR pText )
{
TCHAR* p1 = _tcschr( pText, _T('%') );
if( p1 == NULL )
return -1;
TCHAR* p2 = _tcschr( p1 +1, _T('%') );
if( p2 == NULL )
return -1;
TCHAR provi[MAX_PATH +1];
provi[0] = TCHAR(0);
TCHAR env[MAX_PATH +1];
p1 = pText;
TCHAR* d = provi;
while( *p1 != TCHAR(0) )
{
if( *p1 != _T('%') )
{
*d++ = *p1++;
continue;
}
// find %
p2 = _tcschr( p1 +1, _T('%') );
if( p2 == NULL )
return -1;
lstrcpyn( env, p1 +1, int(p2 - p1) );
TCHAR newEnv[MAX_PATH +1];
DWORD res = ::GetEnvironmentVariable( env, newEnv, MAX_PATH );
if( res > 0 )
{
lstrcpy( d, newEnv );
d += lstrlen( newEnv );
}
p1 = p2 +1;
}
*d = TCHAR(0);
if( lstrlen( provi ) != 0 )
{
lstrcpy( pText, provi );
}
return 0;
}
2009年12月17日 星期四
ExpandEnvironmentStrings - Changing Environment Variables
訂閱:
張貼留言 (Atom)
看的出來寫作風格跟我不一樣, 這是從Code Project 抓下來的環境變數轉換函式, 出現點是在某一個類別專案裡找出來的, 可以用. 很難懂! 而且不是類別, 無法直接支援operator string() 之類的型態轉換!
回覆刪除