AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Kurzes Delphiprogramm in dll umwandeln.
Thema durchsuchen
Ansicht
Themen-Optionen

Kurzes Delphiprogramm in dll umwandeln.

Ein Thema von Explorer · begonnen am 13. Okt 2007 · letzter Beitrag vom 4. Dez 2007
Antwort Antwort
Seite 2 von 2     12   
Explorer

Registriert seit: 10. Aug 2006
Ort: im Rhein-Main-Gebiet
21 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 15. Okt 2007, 15:24
Zitat von Bernhard Geyer:
Zitat von Explorer:
Zitat von Luckie:
Dann lies dir mal durch, was in meinem verlinktem Artikel steht.
Ich bringe das Problem auf den Punkt: ich benötige einen Zugriff auf die GetUserName-Funktion in der Windows.pas, weiss indes nicht, wie dies zu bewerkstelligen ist.
Lesen ist angesagt. Einerseits hat Luckie dich auf ein Tutorial hingewiesen das mit Sicherheit die üblichen Fehler bei Verwendung von P(Wide)Chars auflistet und andererseits habe ich dich genauer auf die Fehler in deinem Code hingewiesen. Wenn du dieses Tutorial nicht lesen willst werden Luckie und ich dir nicht weiter helfen wollen. Und ab es andere noch wollen?

Zitat von Explorer:
Bringt keine neuen Infos.


Wenn du nun eine fertige funktionsfähige Implementierung der verwendung von GetUserName haben willst, schau dir die Funktion GetLocalUserName aus der Unit JclSysInfo der JCL an und verstehe was dort anders gemacht wird.
Problem ist dank eines netten Tippgebers außerhalb dieses Forums gelöst.

Gruß
Explorer
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#12

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 15. Okt 2007, 15:35
Würdest du dann auch den Code posten wi es funktioniert? Dann haben andere auch was davon. Bin mal gespannt ob du eine akzeptable Lösung gefunden hast oder das immer noch nicht sauber programmiert ist.
  Mit Zitat antworten Zitat
rbonk

Registriert seit: 10. Aug 2006
3 Beiträge
 
#13

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 15. Okt 2007, 15:52
Hallo Explorer,

mir ist auch unklar warum es der Umweg über eine eigene DLL sein muss und nicht 'advapi32.dll' direkt verwendet werden kann.

Wenns denn sein soll:

Du könntest per Var - Deklaration ausreichend Speicherplatz für den Usernamem in der DLL reservieren, das erspart sie dynamische Allokation und die Frage wo der Speicher wieder freigegeben wird.

(Windows definiert auch irgendwo die max. Länge des Usernamens, hab nicht gefunden wo, 255 sollte reichen)

Delphi-Quellcode:
library getuser;

uses
  Windows;

const
  MAX_USERNAME_LEN = 255;

var
  BUFFER_USERNAME: Array [0..MAX_USERNAME_LEN] of WideChar;

function ErmittleUser (): PWideChar; stdcall;
var
  nSize: Cardinal;

begin
  Result := BUFFER_USERNAME;
  nSize := MAX_USERNAME_LEN;
  if not GetUserNameW (Result, nSize) then
     Result := Nil;
end;

exports
  ErmittleUser;

begin
end.
Sichergestellt sollte dann sein, dass das Programm, das die DLL vewrwendet, nach Aufruf von ErmittleUser() den zurückgelieferten Speicher nur liest !

Delphi-Quellcode:
unit f_usedll;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

function ErmittleUser (): PWideChar; stdcall; external 'getuser.dllname 'ErmittleUser';

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var pwUsr: PWideChar;

begin
  pwUsr := nil;
  pwUsr := ErmittleUser();
  if pwUsr = nil then
    raise (Exception.Create('ErmittleUser() fehlgeschlagen'));

  Label1.Caption := pwUsr;

end;

end.
Gruss,
Randolf
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.183 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 15. Okt 2007, 16:51
Zitat von Explorer:
Problem ist dank eines netten Tippgebers außerhalb dieses Forums gelöst.
Du meinst den Post von hathor? Ist nichts anderes als was wir dir bisher erklärt haben. Irgendjemand mußt Speicher reservieren und du mußt der Funktion GetUserName auch mitteilen wieviel Platz zur Vefügung steht.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Explorer

Registriert seit: 10. Aug 2006
Ort: im Rhein-Main-Gebiet
21 Beiträge
 
Delphi 10.1 Berlin Professional
 
#15

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 16. Okt 2007, 12:45
Zitat von Bernhard Geyer:
Zitat von Explorer:
Problem ist dank eines netten Tippgebers außerhalb dieses Forums gelöst.
Du meinst den Post von hathor? Ist nichts anderes als was wir dir bisher erklärt haben. Irgendjemand mußt Speicher reservieren und du mußt der Funktion GetUserName auch mitteilen wieviel Platz zur Vefügung steht.
Erfreulicherweise gibt es hin und wieder jene, die in der Lage und willens sind, das Problem anhand eines anschaulichen Beispiels einer schnellen, effizienten Lösung zuzuführen. - Deshalb nochmals Dank an hathor.

Weitere Stellungnahmen hierzu sind für mich nicht mehr von Interesse.

Mit besten Grüßen

Explorer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 16. Okt 2007, 13:01
Zitat von Explorer:
Erfreulicherweise gibt es hin und wieder jene, die in der Lage und willens sind, das Problem anhand eines anschaulichen Beispiels einer schnellen, effizienten Lösung zuzuführen.
Hättest du meinen Link angeklickt und versucht zu verstehen, was ich dort geschrieben habe, dann hättest du die Lösung schon lange gehabt. Natürlich hätte das erfordert, dass du dich damit auseinandersetzt, da ich dort natürlich keine Copy and paste Lösung präsentieren kann, da ich eine allgemeine Lösung aufzeige.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
kaiser1401

Registriert seit: 6. Mär 2006
Ort: Gescher
157 Beiträge
 
Delphi 7 Professional
 
#17

Re: Kurzes Delphiprogramm in dll umwandeln.

  Alt 4. Dez 2007, 12:57
Der Link von Luckie oben ist mittlerweile

http://www.michael-puff.de/Artikel/2...String_DLL.php

nur damit andere nicht auch noch suchen müssen....
inc(i);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz