![]() |
Problem mit NetSessionEnum
Delphi-Quellcode:
Warum wird nur der 1. Buchstabe des Computernamens (cname) und auch nur der 1. Buchstabe des Usernamen (username) angezeigt?
var EntriesRead, TotalAvail: DWORD;
Buf: Pointer; TempBuf:PSessionInfo502; i:integer; begin NetSessionEnum('', nil, nil, 502, Buf, MAX_PREFERRED_LENGTH, EntriesRead, TotalAvail, nil); TempBuf:=Buf; for i:=1 to EntriesRead do begin re1.Lines.Add(TempBuf^.sesi502_cname); //Ausgabe in einen Richedit re1.Lines.Add(TempBuf^.sesi502_username); //Ausgabe in einen Richedit Inc(TempBuf); end; NetApiBufferFree(Buf); end; MfG Hitzi |
Ich bin mir nicht ganz sicher, aber probiers mal mit:
Delphi-Quellcode:
re1.Lines.Add(string(TempBuf^.sesi502_cname));
|
Hilft leider auch nicht weiter :(
Immer noch das gleiche Problem. MfG Hitzi |
Kuck mal hier:
![]() da wird NetSessionEnum ein bisschen anders aufgerufen:
Delphi-Quellcode:
procedure TMainForm.btnGetSessionsClick(Sender: TObject);
var OS: Boolean; FLibHandle : THandle; SessionInfo50: array [0..512] of TSessionInfo50; SessionInfo502 : PSessionInfo502Array; TotalEntries,EntriesReadNT: DWORD; EntriesRead,TotalAvial: Word; i:integer; begin lvSessions.Items.Clear; if not IsNT(OS) then Close; //Выясняем тип системы if OS then begin //Код для NT FLibHandle := LoadLibrary('NETAPI32.DLL'); if FLibHandle = 0 then Exit; @NetSessionEnumNT := GetProcAddress(FLibHandle, 'NetSessionEnum'); if not Assigned(NetSessionEnumNT) then begin FreeLibrary(FLibHandle); Exit; end; SessionInfo502 := nil; if NetSessionEnumNT(nil,nil,nil,502,@SessionInfo502,DWORD(-1),@entriesreadNT, @totalentries, nil)=0 then for i:=0 to EntriesReadNT-1 do begin with lvSessions.Items.Add do //Заполнение данными из структуры begin Caption := string(SessionInfo502^[i].sesi502_cname); //Имя компьютера SubItems.Add(SessionInfo502^[i].sesi502_username); //Имя пользователя SubItems.Add(IntToStr(SessionInfo502^[i].sesi502_num_opens)); //Открытых ресурсов SubItems.Add(CardinalToTimeStr(SessionInfo502^[i].Sesi502_Time)); //Время активное SubItems.Add(CardinalToTimeStr(SessionInfo502^[i].sesi502_idle_time)); //Время не активное end; end; |
Danke für den Link.
Der wird mir weiter helfen, da das dort vorgestellte Programm funktioniert. MfG Hitzi |
Moin Hitzi,
wenn ich mir so Deinen Sourcecode ansehe: Wenn Du die Funktion selber deklariert hast, wäre es interessant wie, wenn Du eine vorgefertigte Deklaration verwendet hast: Welche? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz