Umgebungsvariable für "Eigene Dateien"

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

OJay

Betreff: Umgebungsvariable für "Eigene Dateien"

BeitragSa, Dez 27, 2003 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
kennt sie jemand? habe alle anderen gefunden, nur die nicht Confused

TheShadow

Moderator

BeitragSa, Dez 27, 2003 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
MS is evil

kann mir nicht vorstellen, dass unter linux auch so ein chaos ist... Ich denke es gibt dort ein home-verzeichnis - und alle progs können ausgehen, dass es existiert...

Ansonsten muss es API-funktion geben... (hoffe ich)
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

OJay

BeitragSa, Dez 27, 2003 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
clever...gib mir blitz für linux und ich mache es dort! und selbst bei linux gibt es unterschiede, und zwar nicht nur bei den verzeichnissen! bei windows kann man wenigstens von ein paar standards ausgehen! aber darum gehts hier überhaupt nicht Mad
und sowas von einem mod...


das es dafür API funktionen gibt is schon klar.

das dumme an den eigenen dateien ist, das man es ändern kann...ich hab es zum beispiel auf E:. alle anderen (windir, desktop, programme etc) sind unveränderlich. diese habe ich ja auch. nur nicht die eigenen dateien, dafür konnte ich eben diese variable nicht finden...

bitte um hilfe eines KOMPETENTEN windows users...

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragSa, Dez 27, 2003 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Nunja.. hätte da 2 Sachen die da in frage kämen (Win XP):

HOMEPATH
USERPROFILE

Beides jeweils der Pfad zu dem Ordner, in dem sich der "Eigene Dateien"-Ordner befindet.

Edit:
Wobei.. nein ups.. HOMEPATH fällt weg da fehlt die Laufwerkkennung (kann man aber mit HOMEDRIVE ermitteln)
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com
 

OJay

BeitragSa, Dez 27, 2003 21:53
Antworten mit Zitat
Benutzer-Profile anzeigen
nicht wirklich Wink das ist nur der ordner des benutzers. der ist bei mir unter "c:\dokumente ...\OJay", da runter befindet sich ein ordner "Eigene Dateien", jedoch habe ich, wie bereits erwähnt auf E:. ich kann also nicht einfach ein "Eigene Dateien" an das userprofile ranhängen...außerdem wäre das nicht sprachunabhängig...

beispiel:
Code: [AUSKLAPPEN]
os$=SystemProperty("OS")

If Right(os,2)="XP" Or Right(os$,4)="2000" Then
   Desktopdir$ =  GetEnv("userprofile")+"\Desktop"
ElseIf Right(os,2)="ME" Or Right(os$,2)="98" Then
   Desktopdir$ =  GetEnv("windir")+"\Desktop"
EndIf

Print os$
Print Desktopdir$
Print GetEnv("ProgramFiles")
Print GetEnv("windir")


mit folgendem programm kann man sich alle umgebungsvariablen anzeigen lassen: http://www.activevb-archiv.de/...pp0080.zip leider nix mit "Eigene Dateien" dabei Sad muss also wo anders gespeichert sein...

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragSa, Dez 27, 2003 23:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmpf.. jops dann kommste da so wohl nicht dran. Habe bei mir mit SiSoftware Sandra Standart nachgeguckt da ist sonst auch nichts...
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com
 

OJay

BeitragSo, Dez 28, 2003 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
bin einen schritt weiter:
mit der userlib Code: [AUSKLAPPEN]
.lib "shell32.dll"

SHGetPathFromIDList%(pidl%,pszPath$):"SHGetPathFromIDList"
SHGetSpecialFolderLocation%(hwndOwner%,nFolder%,pidl):"SHGetSpecialFolderLocation"
SHGetSpecialFolderPath(hwndOwner%,lpszPath$,nFolder%,fCreate%):"SHGetSpecialFolderPath"

kommt man da irgendwie ran. nun erschlägt mich meine unkenntis, was userlibs angeht mal wieder Confused

habs zunächst so versucht:
Code: [AUSKLAPPEN]
bank = CreateBank(16)

SHGetSpecialFolderPath(hwndOwner%,bank,12,False)

Print PeekInt(bank,0)


nun fehlen mir aber 1.: das handle des fensters (versteh sowieso nicht, wozu die funktion das braucht...) und 2.: das richtige offset in der bank für den pfad...
die "12" steht übrigens für das "my Documents"-dir. HIER nachzulesen


wäre happy, wenn sich einer die mühe machen könnte sich da mal kurz reinzudenken.

thx in advance Smile

/e: habe auch versucht folgendes VB progrämmchen in bb umzusetzen: http://www.activevb.de/tipps/v...p0061.html
kläglich gescheitert :/

und so:
Code: [AUSKLAPPEN]
bank = CreateBank(256)
idList = CreateBank(512)

SHGetSpecialFolderLocation(hwndOwner%,12,idList)
SHGetPathFromIDList(idList,bank)

Print PeekInt(bank,0)


bekomme ich 10.000 speicherverletzungen *grrrr*

Jolinah

BeitragSo, Dez 28, 2003 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
OJay hat Folgendes geschrieben:

nun fehlen mir aber 1.: das handle des fensters (versteh sowieso nicht, wozu die funktion das braucht...)



Soviel ich weiss kann man bei vielen Funktionen auch kein Handle übergeben (null). Bei bb wäre es dann wohl 0. Wenn man bei MessageBox kein Handle übergibt geht es auch, die MessageBox gehört dann halt zu keinem Programm.
 

OJay

BeitragSo, Dez 28, 2003 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
das tue ich ja auch, indem ich die leere variable "hWndOwner" übergebe. das macht auch keine probleme soweit. probleme macht die übernahme des pfades.

mal noch eine andere frage:
welchen wert hat dieses "ding" ^^: 0x000c
in VB6 hat sieht es so aus: &H8
ich bin davon ausgegangen, das das dezimal 12 sein soll. liege ich richtig oder falsch?

D2006

Administrator

BeitragSo, Dez 28, 2003 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hab nicht wirklich die ahnung davon, aber ich bin zufällig beim durchsuchen der Registry auf folgendes gestoßen:

hmm ... schwer zu beschreiben ... hier der Pfad:
HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell Folders

ob man was damit anfangen kann, weiß ich nicht.
Ich hoffe ich konnte helfen.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

OJay

BeitragSo, Dez 28, 2003 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
diese userlib-funktionen greifen genau darauf zurück. das hilft mir nicht wirklich weiter. aber danke
 

SebastianB

BeitragMi, Okt 20, 2004 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute!

Ich habe die Lösung gefunden!

Aber nun der Reihe nach:

Code: [AUSKLAPPEN]

.lib "shell32.dll"

SHGetSpecialFolderPath%(hwndOwner$,lpszPath*,nFolder%,fCreate%):"SHGetSpecialFolderPathA"


Und hier der Blitzcode:

Code: [AUSKLAPPEN]

Const CSIDL_DESKTOP                 = 0
Const CSIDL_INTERNET                = 1
Const CSIDL_PROGRAMS                = 2
Const CSIDL_CONTROLS                = 3
Const CSIDL_PRINTERS                = 4
Const CSIDL_PERSONAL                = 5
Const CSIDL_FAVORITES               = 6
Const CSIDL_STARTUP                 = 7
Const CSIDL_RECENT                  = 8
Const CSIDL_SENDTO                  = 9
Const CSIDL_BITBUCKET               = 16
Const CSIDL_STARTMENU               = 17
Const CSIDL_NETWORK                 = 18
Const CSIDL_NETHOOD                 = 19
Const CSIDL_FONTS                   = 20
Const CSIDL_TEMPLATES               = 21
Const CSIDL_COMMON_STARTMENU        = 22
Const CSIDL_COMMON_PROGRAMS         = 23
Const CSIDL_COMMON_STARTUP          = 24
Const CSIDL_COMMON_DESKTOPDIRECTORY = 25
Const CSIDL_APPDATA                 = 26
Const CSIDL_PRINTHOOD               = 27
Const CSIDL_LOCAL_APPDATA           = 28
Const CSIDL_ALTSTARTUP              = 29
Const CSIDL_COMMON_ALTSTARTUP       = 30
Const CSIDL_COMMON_FAVORITES        = 31
Const CSIDL_INTERNET_CACHE          = 32
Const CSIDL_COOKIES                 = 33
Const CSIDL_HISTORY                 = 34
Const CSIDL_COMMON_APPDATA          = 35
Const CSIDL_WINDOWS                 = 36
Const CSIDL_SYSTEM                  = 37
Const CSIDL_PROGRAM_FILES           = 38
Const CSIDL_MYPICTURES              = 39
Const CSIDL_PROFILE                 = 40
Const CSIDL_SYSTEMX86               = 41
Const CSIDL_PROGRAM_FILESX86        = 42
Const CSIDL_PROGRAM_FILES_COMMON    = 43
Const CSIDL_PROGRAM_FILES_COMMONX86 = 44
Const CSIDL_COMMON_TEMPLATES        = 45
Const CSIDL_COMMON_DOCUMENTS        = 46
Const CSIDL_COMMON_ADMINTOOLS       = 47
Const CSIDL_ADMINTOOLS              = 48
Const CSIDL_CONNECTIONS             = 49


folderbank=CreateBank(260*4)

SHGetSpecialFolderPath(0, folderbank, CSIDL_PROGRAM_FILES, 0)
Print getbankstring$(folderbank, 260*4)
Print "Taste ..."
WaitKey
End

Function GetBankString$(bank, size)
  For i=0 To size-1
    wert$=wert$ + PeekByte(bank, i)
  Next
  While Len(wert$)<>0
    If Int(Left$(wert$, 1))>2 Then
      antwort$=antwort$ + Chr$(Int(Left$(wert$, 2)))
      wert$=Mid$(wert$, 3)
    Else
      antwort$=antwort$ + Chr$(Int(Left$(wert$, 3)))
      wert$=Mid$(wert$, 4)
    End If
  Wend
  FreeBank bank
  Return Trim$(antwort$)
End Function


Ich hoffe, dass das vielen weiterhilft.
Never change a running system
 

OJay

BeitragMi, Okt 20, 2004 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
waha wie drollig...nach fast einem jahr Laughing

aber danke mal dafür. wenn mal einer danach suchen sollte, wird er wenigstens eine lösung bekommen...ich habe es bereits anders gelöst.

jetzt, da dieses problem gelöst ist, kann ich wieder beruhigt schlafen...achneee moment, da sind ja noch 1000 andere. mist Mad Wink

StarGazer

BeitragMo, Feb 19, 2007 14:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich habe da eine kurze Frage und wollte dafür kein neues Thema anlegen.

Da ich leider nur Win2000 habe, kann ich es leider nicht auf älteren Windowsversionen testen.
Wisst Ihr ob es den "Eigene Dateien-Ordner" auch unter Windows 98, ME ,NT gibt ? und ob es dort auch die DLL "shell32.dll" gibt ?
Vorallem auf Win98 da es das ältereste System ist.

Wenn das mit der DLL nur auf den neuen Systemen laufen würde, wäre das nicht so toll.
Ich hoffe jemand weißt es.

PowerProgrammer

BeitragMo, Feb 19, 2007 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Win 98 hat den Ordner hier: C:\Eigene Dateien

Und ich gehe mal super stark davon aus, dass Windows ´98 ne shell-DLL hat, schau doch einfach in der MSDN.

EDIT: Mal auf das Alter des Threads geachtet?

EDIT 2: http://msdn.microsoft.com/libr...erpath.asp (Minimum operating systems Windows 2000, Windows NT 4.0 with Internet Explorer 4.0, Windows 98, Windows 95 with Internet Explorer 4.0)
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!

StarGazer

BeitragDi, Feb 20, 2007 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Dir, ich hoffe es funktioniert.

Ich bin eigenlicht mehr ein Grafiker der das Programmieren entdeckt hat Very Happy
Dacher kenne ich mich mit den ganzen Systemen nicht so aus. Und die 32 steht denke ich für das BitSystem der Betriebstsystems oder so. Und ob Win98 schon das war oder ob sie erst bei NT oder 2000 auf 32 umgestiegen sind ,weis ich leider nicht. Da gabs jedenfall immer das Problem mit den NTFs und FAT Partitonen, aber keine Ahnug ob das was damit zu tun hat.

2003, da gabs glaube ich schon ziech Nachfolger von Win98, SE ME und was sonst noch Smile

StepTiger

BeitragDi, Feb 20, 2007 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
os$=GetEnv$("OS")
If Right$(os$,2)="NT" Or Right$(os$,2)="XP" Or Right$(os$,4)="2000"
   st$=GetEnv$("USERPROFILE")+"\Eigene Dateien"
ElseIf Right$(os$,2)="ME" Or Right$(os$,2)="98"
   st$=GetEnv$("WinDir")+"\..\Eigene Dateien"
EndIf
Graphics StringWidth(st$),40,0,2
Print st$
Print os$
WaitKey
End

Klappt bei mir prima.

Shell32 existiert garantiert auf NT und 2000.
Eigene Dateien existiert in Win98 auf jeden Fall auf dem Windows-Laufwerk+"Eigene Dateien\"
ME denke ich mal, dass es genau so ist.

Ich hab XP (trotzdem sagt mein Code, ich hätte NT Laughing )
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

StarGazer

BeitragFr, Feb 23, 2007 0:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Dir, auch für den Code, kann man sicher mal gebrauchen Very Happy

übrigens bei mir sagt er auch ich hätte NT obwohl ich 2000 habe, wohl ein kleiner Bug Smile, anderseits soll 2000 auf der NT Basis aufgebaut sein, und XP wie es scheint wohl auch, anscheinend daher die NT Bezeichnung.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group