Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Aktualnie zalogowany użytkownik
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002
Aktualnie zalogowany użytkownik

Potrzebuję napisać program, który:
-pobierze nazwę aktualnie zalogowanego użytkownika (chodzi mi o nazwę Profilu) i jeśli taka istnieje odczyta informacje z pewnego pliku z katalogu C:\%windir%\%profiles%\nazwaprofilu\Dane aplikacji\..., a jesli komputer nie ma utworzonych profili, to pobierze informacje z C:\Windows\%windir%\Dane aplikacji...
Czy ktoś wie jak to zrobić? Głównie chodzi o to rozróżnienie czy jest jeden czy wielu użytkowników oraz jak pobrać ich nazwy. Z góry dzięki za rady.


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


04-01-2004 20:44
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003
jest sposób

Użyj funkcji:
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Użycie:

    strUserName = String(100, Chr$(0))
    GetUserName strUserName, 100
    strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1)

    MsgBox "Hello " + strUserName


Funkcja ta pobiera nazwę użytkownika aktualnie zalogowanego do systemu.
Jeśli się nie powiedzie, zwraca wartość = 0, a buffer jest pusty.
Jeśli bufer (strUserName) jest pusty, to zazwyczaj oznacza to, że system nie jest skonfigurowany na wielu użytkowników.
Po tym możesz rozpoznawać, którą ścieżkę dobrać.

Jak odczytać nazwy pozostałych użytkowników? Jak znasz tego jednego, to pozostałych odczytasz z nazw katalogów: C:\%windir%\%profiles%\TUTUTUTUTU
Możesz też użyć innych funkcji Windows API:
- GetDefaultUserProfileDirectory
- GetProfilesDirectory
- GetUserProfileDirectory


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

04-01-2004 21:46
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Dziękuję, tylko tyle, że Twoja funkcja nie działa prawidłowo. Ja nie mam systemowych użytkowników i jak ją odpaliłem, to został zwrócony pusty bufor OK. Potem wysłałem znajomemu który MA SYSTEMOWYCH UŻYTKOWNIKÓW i... też dostał pusty bufor. Więc cośjest nie tak. Zajrzałem do przykładu w API Guide czyli:

'This project needs a timer
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail:
    Timer1.Interval = 100
    Timer1.Enabled = True
    Dim strTemp As String, strUserName As String
    'Create a buffer
    strTemp = String(100, Chr$(0))
    'Get the temporary path
    GetTempPath 100, strTemp
    'strip the rest of the buffer
    strTemp = Left$(strTemp, InStr(strTemp, Chr$(0)) - 1)

    'Create a buffer
    strUserName = String(100, Chr$(0))
    'Get the username
    GetUserName strUserName, 100
    'strip the rest of the buffer
    strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1)

    'Show the temppath and the username
    MsgBox "Hello " + strUserName + Chr$(13) + "The temp. path is " + strTemp
End Sub
Private Sub Timer1_Timer()
    Dim Boo As Boolean
    'Check if this form is minimized
    Boo = IsIconic(Me.hwnd)
    'Update the form's caption
    Me.Caption = "Form minimized: " + Str$(Boo)
End Sub

I teraz jak odpaliłem u mnie, to zamiast dostać pusty bufor, dostałem ciąg zanków XXXXXX, gdzie XXXXXX to moje nazwisko :-). No i co Ty na to?


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


05-01-2004 11:16
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003
NIC

Nic, ja na to, bo...
1) Podany przez Ciebie kod robi dokładnie to samo, czyli pobiera nazwę uzytkownika i wyświetla komunikat powitalny
2)a oprócz tego co określony czas sprawdza, czy aplikacja nie jest zminimalizowana. Jeśli jest, zmienia jest tytuł...

Musiałeś popełnić błędy przy przepisywaniu lub ... NIE WIEM CO. Ponadto, nie podałem Ci całej funkcji, a tylko jej deklarację i użycie, czyli ciało jakiejś przykładowej funkcji lub procedury oraz opis co dana funkcja Windows API robi.

Do następnego klikania...


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

05-01-2004 17:49
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Wszystkich odpowiedzi: 3 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1