Deutsch
Forum

Windows API

 
- Seite 1 -



supernova
Hallo,

ich bin Anfänger was XProfan betrifft. Also schon mal Entschuldigung
falls die ein oder andere blöde Frage kommt. Ich habe das Forum schon
durchsucht auch alle Hilfen, komme einfach nicht weiter.

Ich muss den aktuell eingeloggten User ermitteln. Ich habe bei MSDN
nachgeschaut welche API am besten in frage kommt und bin dann auf
"WNetGetUser" aus der mpr.dll gestossen. Die beschreibung steht auch
in der win32.hlp. Also in Profan umgesetzt aber es geht nicht.
Ich weiss nicht mehr weiter.

Dazu habe allgemein noch fragen

1 die Funktion heisst "WNetGetUser" wird aber mit "WNetGetUserA"
aufgerufen warum ?

2 Die mpr.dll ist als 32 und 64 Bit Version in Windows vorhanden.
Muss ich expliziet den Dateipfad in der Funktion zur 32 Bit Version
angeben oder macht das Windows automatisch ?

3 Was ist an meine Funktion falsch ? Ich habe mich bemueht und soweit
es geht Auskommentiert.

Herunterladen

2 kB
Kurzbeschreibung: User Ermitteln
Hochgeladen:07.12.2013
Ladeanzahl253
Herunterladen
 
07.12.2013  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


Julian
Schmidt
Hallo Funkheld.

supernova (07.12.13)

1 die Funktion heisst "WNetGetUser" wird aber mit "WNetGetUserA"
aufgerufen warum ?


Normalerweise wird ein Text immer mit einem Byte pro Zeichen zurückgegeben (ANSI). Aber es gibt auch den Unicode-Standart wo zwei Byte pro Zeichen benötigt werden. Unicode beinhaltet viel mehr Zeichen. Unicode-Funktionen werden mit einen W hinten abgeschlossen und ANSI-Funktionen mit einen A. Häufig gibt es die Funktionen doppelt, einmal erfolgt die Rückgabe in ANSI und einmal in Unicode.

supernova (07.12.13)

2 Die mpr.dll ist als 32 und 64 Bit Version in Windows vorhanden.
Muss ich expliziet den Dateipfad in der Funktion zur 32 Bit Version
angeben oder macht das Windows automatisch ?


Das macht Windows automatisch, du musst nur den richtigen Dateinamen für deine DLL eintragen.

supernova (07.12.13)

3 Was ist an meine Funktion falsch ? Ich habe mich bemueht und soweit
es geht Auskommentiert.


Habe jetzt nicht deinen Code angeschaut. Aber wenn du mal die Suche bemüht hättest, wäre schon ein Code für dich dabei gewesen.
z.B. dieser hier [...] 
Kürzer wäre dagegen noch:
KompilierenMarkierenSeparieren
winexecWait("cmd.exe /c echo %username%>nfo.txt",0)
shell "notepad nfo.txt"

Ich empfehle dir diesen Workshop zu API-Grundlagen.durchzulesen[...] 

Gruß

Julian
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
07.12.2013  
 




Jörg
Sellmeyer
Es geht novh viel einfacher:
KompilierenMarkierenSeparieren
Print GetEnv$("username")
waitinput
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
08.12.2013  
 




supernova
Danke für die schnelle Hilfe,

allerdings würde ich auch gerne wissen was an mein PRG falsch ist.
Wenn ich diese Funktion nicht ans laufen bekomme, werde ich
wahrscheinlich auch keine andere ans laufen bekommen. Ich habe
schon viele Stunden des suchen und versuchen verbracht aber
komme einfach nicht weiter. Das frustiert ein bisschen.
Dabei vermute ich das es wie oft recht simpel ist.
 
08.12.2013  
 




Andreas
Koch
Hallo supernova,

hier noch eine andere Version deines Quellcodes,
KompilierenMarkierenSeparieren
' Beschreibung Funktion WNetGetUserA aus win32.hlp
'The WNetGetUser function retrieves the current default user name or the user name
'used to establish a network connection.
'
'DWORD WNetGetUser(
'
'    LPCTSTR lpName,	// pointer to local name to get user name for
'    LPTSTR lpUserName,	// pointer to buffer for user name
'    LPDWORD lpnLength 	// pointer to buffer size variable
'   );
' Variable fuer VZ C:\Windows\SysWOW64 defeninieren "32 Bit"
Declare WIN_SWow$
' Variable fuer fuer Funktion definieren
Declare Dll_Path$
' Variablen fuer MessageBox definieren
Declare AusgabeText$,TitelText$
' Variable WIN_SWow$ Wert zuweisen
WIN_SWow$=$WinPath + "\SysWOW64"
' Variable Dll_Path$ die mpr.dll fuer Funktion GetUserName zuweisen
Dll_Path$=WIN_SWow$ + "\mpr.dll"
'Funktion fuer API mpr.dll "WNetGetUserA" definieren
'Def GetUserName(3) ! Dll_Path$,"WNetGetUserA"
DEF GetUserName(2) !"ADVAPI32","GetUserNameA"
DECLARE USize#, UName#, User$
DIM USize#,4
DIM UName#,256
LONG Usize#,0=256
' Konstante fuer Fehler Abfrage
Def $NOERROR 0
GetUserName

Proc GetUserName

    ' Variablen fuer Funktion GetUserName definieren
    Declare lpName$,lpUserName$,lpnLength&,Status%
    'lpUserName$ mit Leerzeichen auffuellen
    'steht bei MSDN in Beschreibung ?
    lpUserName$ = @Space$(255)
    'Ermittelt den Namen der Angemeldeten Person, die den Rechner benutzt.
    'Status% gibt den Rueckgabewert der Funktion wieder Ok oder Fehler
    Status% = GetUserName(UName#, USize#, lpnLength&)
    ' Zeigt den Namen der Person, die an dem Computer angemeldet
    TitelText$ = "Rückgabe Funktion WNetGetUser"
    AusgabeText$= String$(UName#,0) + "   " + lpUserName$ + "   " + lpName$
    Messagebox(AusgabeText$,Titeltext$,4160)

EndProc


Unter einem Pointer wird die Adresse eines Bereichs verstanden, nicht eine Stringvariable. Vielleicht hilft dir das weiter.
Gruß Andreas
 
09.12.2013  
 




supernova
Hallo Herr Koch,

Danke für den Tipp.
Das war es. Vor lauter suchen und versuchen habe ich mich
derart festgelaufen das ich den Wald vor lauter Bäume nicht
mehr gesehen habe.

Gruß Supernova
 
09.12.2013  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

8.893 Betrachtungen

Unbenanntvor 0 min.
RudiB.18.04.2022
Pascal ter Haseborg15.01.2019
MrZebulon05.08.2018
Andreas Koch07.11.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie