Jak wyciagnac sciezke do tempa ?

0

Jaka funkcja z WinAPI, MFC zdobyc sciezke do katalogu ktory pod windowsem jest widoczny jako zmienna systemowa %TEMP% ??

0

Tak szczerze nie chce mi sie pisać zajrzyj do MSDN > masz tu linka do tematu w MSDN 2003 > ms-help://MS.MSDNQTR.2003APR.1033/shellcc/platform/shell/reference/enums/csidl.htm#CSIDL_DRIVES
a tu linki do tematu w msdn on-line:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp
</u>

0

no ale tempa tam nie ma :)

0

swoja droga majac juz jakis CSIDL jak wydobyc ta sciezke w MFC ?
sa tam przykladowe funkcje typu SHGetSpecialFolderPath(), ale trzeba do nich podac HWND (czyli uchwyt do okna). Moge w ogole w MFC uzywac funkcji z WinAPI ????

1

Nie mam zielonego pojecia jak z WinAPi to zrobic..
natomiast wiem co mowi standard C na ten temat...
anom...

// dodane o 9:13 dnia nastepnego
aaa.. tak w ogole to w nocy mam zacmienie
mozna uzyc przeciez getenv z stdlib
puts( getenv( "TEMP" ) );
// koniec

normalnie jest
int main( void )....
czasem
int main( int argc, char **argv )....
a w tym wypadku bedzie ostateczna (the ultimate!) wersja maina
int main( int argc, char **argv, char **env )

przykladowo ponizszy program zrobi to co "set" wpisane w konsoli bez parametru

#include<stdio.h>
int main( int argc, char **argv, char **env )
{
  while( *env ) puts( *env++ );
  return 0;
}

wszystko ma format ofc:
nazwa=dane
parsing tego jest wiec bardzo prosty:

#include<stdio.h>
int main( int argc, char **argv, char **env )
{
  char *nazwa, *dane;
  while( *env )
  {
    /* parsing */
    nazwa = *env++;
    dane = strchr( nazwa, '=' );
    if( !dane ) continue;
    *dane++ = '\\0';

    /* wypisanie */
    printf( "%s === %s\\n", nazwa, dane );
  }
  return 0;
}

teraz wystarczy ze w petle wstawisz jedno strcasecmp/stricmp i jestes w domu

#include<stdio.h>
int main( int argc, char **argv, char **env )
{
  char *nazwa, *dane;
  while( *env )
  {
    /* parsing */
    nazwa = *env++;
    dane = strchr( nazwa, '=' );
    if( !dane ) continue;
    *dane++ = '\\0';

    if( stricmp( nazwa, "TEMP" ) == 0 ) break;
  }
  
  if( !*env ) return 1;

  /* wypisanie */
  printf( "%s === %s\\n", nazwa, dane );

  return 0;
}
0

Wystarczy GetTempPath()

DWORD GetTempPath(

    DWORD nBufferLength,	// size, in characters, of the buffer 
    LPTSTR lpBuffer 	// address of buffer for temp. path 
   );

1 użytkowników online, w tym zalogowanych: 0, gości: 1