Avatar billede jds Nybegynder
04. februar 2005 - 11:50 Der er 14 kommentarer og
2 løsninger

Hente brugernavn på en computer/lokalt netwærk.

Hej Eksperter!

Indledning:
Jeg er igang med at lave et chatprogram/messenger til et Lokalt netværk.
Chatten foregår på den måde at programmet sender en tekst til en .txt fil som ligger på et fællesdrev som alle brugere har adgang til og kan skrive på.
Jeg har så sat en timer der opdaterer hvert sekund og henter teksten fra .txt filen. Det er meget enkelt, men virker glimrende efter hensigten :)

Så er mit spørgsmål så til jer:
Da det er et lokalt netværk med mange forskellige brugere så synes jeg det kunne være smart hvis den bruger der er logget på computeren, åbner mit chatprogram, automatisk ville hedde sit brugernavn til computeren i mit chatprogram.

Som det ser ud nu så hedder alle brugere som standard "bruger", det synes jeg er kedeligt og upersonligt da alle der logger på mit chatprogram hedder bruger, der er dog mulighed for at ændre sit brugernavn, men det er jo ikke alle der gør det.
Sådan ser en chatlog fra mit program f.eks ud:
14:45:56 Bruger: Hej
14:46:15 Bruger: Dav
14:46:36 Bruger: farvel
det er jo ikke til at finde rundt i!!!
Derfor er mit sprøgsmål til jer:

SPØRGSMÅL:
Hvordan henter jeg den bruger der bruger computerens brugernavn ind i mit program?

Så det kunne se f.eks. så således ud:
14:45:56 JDS: Hej
14:46:15 QZY: Dav
14:46:36 JDS: farvel

På forhånd tak :)
Avatar billede alister_crowley Nybegynder
04. februar 2005 - 11:55 #1
i .NET er det

Environment.UserName()
Avatar billede anhansen Nybegynder
04. februar 2005 - 11:56 #2
der er en systemvariabel der hedder username.
Den indeholder dit win login.
Avatar billede anhansen Nybegynder
04. februar 2005 - 11:57 #3
Der kom jeg da noget for sent... :-)

Jeg ved ikke hvordan man henter den i vb - men det kan vel ikke være så svært.. :-)
Avatar billede alister_crowley Nybegynder
04. februar 2005 - 11:58 #4
Og i alm. VB er der vist

System.Environment.UserName
Avatar billede alister_crowley Nybegynder
04. februar 2005 - 12:00 #5
eller nej, det var stadig .NET sorry

Her er til alm. VB

http://www.tek-tips.com/viewthread.cfm?qid=953757&page=4
Avatar billede alister_crowley Nybegynder
04. februar 2005 - 13:05 #6
Og istedet for en text fil, bør du bruge noget bedre
nemlig sockets,her er en meget nem artikel omkring emnet.

http://udvikleren.dk/article.php?techid=4&aid=203
Avatar billede jds Nybegynder
04. februar 2005 - 14:35 #7
Hej alister_crowley

Jeg kan ikke rigtigt få hentet usernamet ind i VB, det gider ikke virke....

Men artiklen som du sendte til mig er supergod :D
Så den synes jeg du skal have points for, så hvis du lige vil give at svar så jeg kan acceptere det ;)
Avatar billede alister_crowley Nybegynder
04. februar 2005 - 15:12 #8
Nej tak, samler ikke på points.

Alm. VB løsingerne var heller ikke testet, arbejdet mest i .NET :) (så slipper man nemlig for api-kald :D )
Avatar billede jds Nybegynder
04. februar 2005 - 15:35 #9
Okay.. ;)

Hvis der er andre der ved hvordan man får et Username frem i VB så HIT ME...!
Avatar billede kabbak Professor
04. februar 2005 - 17:58 #10
Set wshNetwork = CreateObject("WScript.Network")
  MsgBox wshNetwork.UserName
Set wshNetwork = Nothing
Avatar billede efry Nybegynder
04. februar 2005 - 22:48 #11
Følgende er gyldigt for VB5 og VB6

Declare Function GetUserName Lib "advapi32.dll" _
  Alias "GetUserNameA" (ByVal lpBuffer As String, _
  nSize As Long) As Long


Public Function Bruger() As String
  Dim UserName As String
  Dim Result As Long

  UserName = Space$(256)
  Result = GetUserName(UserName, Len(UserName))

  If InStr(UserName, Chr$(0)) > 0 Then _
    UserName = Left$(UserName, InStr(UserName, Chr$(0)) - 1)
 
  Bruger = UserName
End Function
Avatar billede sjh Nybegynder
05. februar 2005 - 14:27 #12
jds > Du er sikker på det ikke er Computernavn du leder efter??

'-------------------------- Form1 --------------------------
Option Explicit

Private Const MAX_COMPUTERNAME_LENGTH As Long = 31
Private Declare Function GetComputerName Lib "kernel32" _
                          Alias "GetComputerNameA" ( _
                          ByVal lpBuffer As String, _
                          nSize As Long) As Long

Public Function ComputerName() As String
Dim dwLen As Long
Dim strSpace As String
  dwLen = (MAX_COMPUTERNAME_LENGTH + 1)
  strSpace = Space$(dwLen)
  If GetComputerName(strSpace, dwLen) Then
    ComputerName = Left(strSpace, dwLen)
  End If
End Function

Private Sub Form_Load()
  MsgBox ComputerName
End Sub
'-------------------------- Form1 --------------------------
Avatar billede jds Nybegynder
05. april 2005 - 17:53 #13
Tak for hjælpen :)

Ved godt jeg er lidt sent på den men alligevel....

Jeg kan bruge dem alle, så hvis: kabbak, efry og sjh lige vil smide et svar, så skal i nok få jeres points!
Avatar billede kabbak Professor
05. april 2005 - 21:59 #14
Et svar ;-))
Avatar billede sjh Nybegynder
05. april 2005 - 23:52 #15
svar
Avatar billede jds Nybegynder
06. april 2005 - 21:55 #16
Lukket...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester