Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Domain Name auslesen (https://www.delphipraxis.net/1584-domain-name-auslesen.html)

Tpercon 10. Sep 2003 12:49

Re: Domain Name auslesen
 
Warum funktioniert der Code nicht?Ist doch genua das aus eurem Beispiel oben?
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, NetApi32;

type

  PWKSTA_USER_INFO_1 = ^WKSTA_USER_INFO_1;
  WKSTA_USER_INFO_1 = packed record
    wkui1_username    : PWChar;
    wkui1_logon_domain : PWChar;
    wkui1_oth_domains : PWChar;
    wkui1_logon_server : PWChar;
  end;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var pwuiWork : PWKSTA_USER_INFO_1;
begin
  if NetWkstaUserGetInfo(nil,1,@pwuiWork) = NErr_Success then begin //<- hier kommt der Fehler: Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
    try
      ShowMessage(
        WideCharToString(pwuiWork.wkui1_logon_domain)+'\'+
        WideCharToString(pwuiWork.wkui1_username)
        );
    finally
      NetApiBufferFree(pwuiWork);
    end;
  end;
end;

Christian Seehase 10. Sep 2003 13:17

Re: Domain Name auslesen
 
Moin Tpercon,

das wird vermutlich daran liegen, dass die Übersetzung der Funktion die Du verwendest borlandtypisch deklariert wurde (mit var Parametern an der Stelle, wo die Funktion etwas zurückliefern soll/kann).
Meine Deklaration, c-typisch (mit Angabe der Adresse an der Stelle wo die Funktion etwas zurückliefern soll/kann), sieht so aus:


Delphi-Quellcode:
 
// für dynamischen Import
TcsNetWkstaUserGetInfo = function(
    const reserved : PWChar;
    const level   : DWord;
    const bufptr  : Pointer
    ) : NET_API_STATUS; stdcall;

// für statischen Import
  function NetWkstaUserGetInfo(
    const reserved : PWChar;
    const level   : DWord;
    const bufptr  : Pointer
    ) : NET_API_STATUS; stdcall; external 'netapi32.dll';

Tpercon 10. Sep 2003 13:27

Re: Domain Name auslesen
 
:hello: Jetzt geht das schonmal! Danke dir.

master of lan 29. Sep 2003 09:52

Re: Domain Name auslesen
 
Hallo zusammen!

Habe das auch mal probiert, aber bei mir haperts bereits an der netapi32-uses klausel: "File not Found netapi32.dcu".
Woher bekomme ich die netapi32.dcu??
Hab im Inet mal danach gesucht, scheint aber nur ne .dll zu geben..


mfg
Benni aka MASTER of LAN

Christian Seehase 29. Sep 2003 12:27

Re: Domain Name auslesen
 
Moin Benni,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Was die NETAPI32.DCU angeht kann ich jetzt nur mal eine Vermutung anstellen.
Die die Tpercon mit eingebunden hatte stammt vermutlich von den JEDIs.
Für mein Beispiel hatte ich mir allerdings die ganzen Deklarationen selber aus dem Microsoft Headern übersetzt (für NetWkstaUserGetInfo und die Strukturen weiter oben im Thread zu finden).
Wenn Du die Unit aus der uses Eintragung rausnimmst, und dafür anderen Übersetzungen nimmst sollte es gehen.

[EDIT]
Was ich noch vergessen hatte:
Die hier beschriebenen Deklarationen funktionieren nicht unter 9x/ME.
[/EDIT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 Uhr.
Seite 2 von 2     12   

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