AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi rufId.dll aus Windows Dienst ansprechen (LoadLibrary)
Thema durchsuchen
Ansicht
Themen-Optionen

rufId.dll aus Windows Dienst ansprechen (LoadLibrary)

Offene Frage von "AliDi"
Ein Thema von AliDi · begonnen am 2. Nov 2010 · letzter Beitrag vom 3. Nov 2010
Antwort Antwort
Seite 1 von 2  1 2      
AliDi

Registriert seit: 3. Jul 2005
Ort: Köln
23 Beiträge
 
Delphi 2007 Professional
 
#1

rufId.dll aus Windows Dienst ansprechen (LoadLibrary)

  Alt 2. Nov 2010, 21:10
Delphi-Version: 6
Hallo zusammen,

Ich nutze den Beispielcode aus folgendem Thread um die rufId.dll der Klicktel/Rufident CD anzusprehen. Das ganze ermöglicht eine Rückwärtsuche in der Klicktel Datenbank.

http://www.delphipraxis.net/61170-ru...nd-nutzen.html

Das ganze funktioniert in einer normalen Anwendung einwandfrei, wenn ich allerdings den Code in einen Dienst stecke startet dieser erst gar nicht.

Fehlermeldung:
"Runtime error 217 at 000112A7" und anschließend
"Fehler 1053: Der Dienst antwortete nicht rechtzeitig auf die Start- oder Steuerungsanforderung."

Es reicht schon folgendes in den initialization Abschnitt der Unit zu stecken:

Delphi-Quellcode:
initialization


DllHdl := 0;
FuncPtr := Nil;


DLLPath:= DllPath + 'rufid.dll';

DllHdl := LoadLibrary(PChar (DLLPath));

if DllHdl > 0 then
  begin
    FuncPtr := GetProcAddress( DllHdl, 'SucheTelefonnummer' );
    if FuncPtr <> nil then @PSucheTelefonnummer := FuncPtr;

    FuncPtr := GetProcAddress( DllHdl, 'UseVersion' );
    if FuncPtr <> nil then @PUseVersion := FuncPtr;

  end;
DllHdl ist nach Aufruf von LoadLibrary0, GetLastError ist auch 0 (getestet mit Messageboxen). Gehe ich den Code in Einzelschritten durch hat DllHdl einen Wert > 0 und GetLastError liefert wieder 0. Ich verstehe nicht wieso LoadLibrary mir kein Handle für die DLL gibt obwohl GetLastError behauptet das alles ok war.

Was mache ich falsch?

Vielen Dank schon mal
AliDi
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)

  Alt 2. Nov 2010, 21:14
-Was steht den in DllPath?
-Hat der Dienst-Owner Zugriff auf diesen?
Markus Kinzler
  Mit Zitat antworten Zitat
AliDi

Registriert seit: 3. Jul 2005
Ort: Köln
23 Beiträge
 
Delphi 2007 Professional
 
#3

AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)

  Alt 2. Nov 2010, 21:31
Hi,
-Was steht den in DllPath?
-Hat der Dienst-Owner Zugriff auf diesen?
In DllPath steht der Pfad zur DLL, das passt auch. Wenn ich das ganze so hardcode tritt das Problem auch auf:

DllHdl := LoadLibrary('F:\Projekte\Delphi\RService\rufid.dll');
Der Dienst und die DLL liegen in einem Verzeichnis. Zugriffsrechte sollten auch passen, der Dienst läuft unter dem Lokalen Systemkonto. Dieser hat Vollzugriff auf das Verzeichnis.

Gruß
Alidi
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)

  Alt 2. Nov 2010, 21:37
Starte den Dienst unter einem Benutzerkonto wo der Zugriff als Anwendung funktioniert.
(z.B. als Administrator)

Ich vermute mal die DLL braucht irgendein Geraffel, was diese nur in dem Userprofil findet und der Systemuser hat halt keins.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)

  Alt 2. Nov 2010, 21:37
Handelt es sich um ein lokales Laufwerk?
Markus Kinzler
  Mit Zitat antworten Zitat
AliDi

Registriert seit: 3. Jul 2005
Ort: Köln
23 Beiträge
 
Delphi 2007 Professional
 
#6

AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)

  Alt 2. Nov 2010, 21:44
Hi,

Ja, ist ein lokales Laufwerk.

Wenn ich den Dienst als Admnistrator starte ist es der gleiche Effekt. In einer normalen Anwendung funktioniert es als Administrator.

Kann man eine DLL eigentlich so bauen, das sie nicht mit einem Dienst funktioniert?

Gruß
AliDi
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)

  Alt 2. Nov 2010, 21:47
Warum muss es denn überhaupt ein Dienst sein?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
AliDi

Registriert seit: 3. Jul 2005
Ort: Köln
23 Beiträge
 
Delphi 2007 Professional
 
#8

AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)

  Alt 2. Nov 2010, 21:54
Hi,

Warum muss es denn überhaupt ein Dienst sein?
Es muß nicht zwingend ein Dienst sein, wäre aber schön. Das ganze soll im Hintergrund laufen und Anfragen per TCP beantworten. Mich interessiert aber auch warum das nicht funktioniert.

Gruß
Alidi
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)

  Alt 2. Nov 2010, 22:03
Mit Dienst und Netzwerk wirst du noch mehr Probleme bekommen, da das Systemkonto in der Regel keinen Zugriff auf das Netzwerk hat.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
AliDi

Registriert seit: 3. Jul 2005
Ort: Köln
23 Beiträge
 
Delphi 2007 Professional
 
#10

AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)

  Alt 2. Nov 2010, 22:19
Hi,

Mit Dienst und Netzwerk wirst du noch mehr Probleme bekommen, da das Systemkonto in der Regel keinen Zugriff auf das Netzwerk hat.
Also die Netzwerk Sachen laufen (Indy TCP Server und TCP Client). Ich hab das ganze jetzt mal in ne eigene DLL gepackt die ich aus meinem Dienst anspreche, der gleiche Effekt. Sobald der initialization Abschnitt der eigenen DLL (DllHdl := LoadLibrary(PChar (DLLPath))) durchlaufen wird tritt das Problem wieder auf

Gruß
Alidi
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:26 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