AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

LoadLibrary unter Windows 7

Ein Thema von trashcandesign · begonnen am 2. Aug 2011 · letzter Beitrag vom 3. Aug 2011
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: LoadLibrary unter Windows 7

  Alt 2. Aug 2011, 12:03
Soweit ich weiß ist c:\ für W7-Anwendungsprogramme eine NoGoAerea.
Zum Testen solltest Du vielleicht die Echse und die DLL einmal in ein Verzeichnis packen, auf das Du als Benutzer auf jeden Fall Zugriff hast. (Eigene Dateien ?)

Gruß
K-H

(jetzt sind wir bei w7 und die plattenverwaltung ist immer noch bei DOS3.2)
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.105 Beiträge
 
Delphi 12 Athens
 
#2

AW: LoadLibrary unter Windows 7

  Alt 2. Aug 2011, 12:07
Hast du vielleicht vergessen den kompletten Pfad anzugeben? Aus Sicherheitsgründen sucht Windows standardmäßig nicht mehr im aktuellen Arbeitsverzeichnis.

Zudem werden Zugriffe auf diverse Verzeichnisse umgeleitet, wenn du kein Manifest benutzt.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
440 Beiträge
 
#3

AW: LoadLibrary unter Windows 7

  Alt 2. Aug 2011, 12:28
Vielleicht solltest Du Dir mit "RaiseLastOsError" den Fehlertext holen.
Zitat:
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
Falls die DLL schlicht nicht gefunden wird, könnte es bei W7-64 daran liegen, dass Du sie manuell (mit einer 64-Bit-Anwendung) in das Verzeichnis "System32" kopiert hast und nicht in das Verzeichnis "SysWow64".
  Mit Zitat antworten Zitat
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#4

AW: LoadLibrary unter Windows 7

  Alt 2. Aug 2011, 12:37
Eigentlich liegt die DLL bei mir direkt im Programmverzeichnis.
Auf die DLL greife ich mit LoadLibrary(PAnsiChar(ExtractFilePath(Application. ExeName)+'SCANNDYDll.dll')) zu, somit sollte also der richtige Pfad angegeben sein.

Das mit dem SysWow64 versuche ich gleich mal.

GetLastError liefert 126 zurück.
Soweit ich gelesen habe ist 126 = Das angegebene Modul wurde nicht gefunden.
  Mit Zitat antworten Zitat
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#5

AW: LoadLibrary unter Windows 7

  Alt 2. Aug 2011, 12:51
Auch wenn ich sie ins SysWOW64 Verzeichnis lege ändert sich nichts.
Weder, wenn ich sie direkt aufrufen möchte, noch wenn ich gar keinen Pfad angebe...
  Mit Zitat antworten Zitat
ensaron

Registriert seit: 29. Aug 2008
Ort: 10369 Berlin
63 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: LoadLibrary unter Windows 7

  Alt 2. Aug 2011, 12:52
Setz doch mal nen Haltepunkt und schau dir an, was

PAnsiChar(ExtractFilePath(Application. ExeName)+'SCANNDYDll.dll') als Ergebnis liefert.
  Mit Zitat antworten Zitat
trashcandesign

Registriert seit: 21. Feb 2006
Ort: Mühlhausen
187 Beiträge
 
Delphi XE2 Professional
 
#7

AW: LoadLibrary unter Windows 7

  Alt 2. Aug 2011, 12:54
Gibts dafür noch ne andere Möglichkeit?

Ich entwickle hier unter Windows XP und da funktioniert alles einwandfrei
Unter Win7 kann ich nur ausführen, nicht debuggen...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: LoadLibrary unter Windows 7

  Alt 2. Aug 2011, 13:04
Was für ein Windows, 32-Bit oder 64-Bit? Was für eine Anwendung, 32-Bit oder 64-Bit? Was für eine DLL, 32-Bit oder 64-Bit? Und: "If the function fails, the return value is NULL. To get extended error information, call GetLastError."


Delphi-Quellcode:
DLLName := PAnsiChar(ExtractFilePath(Application. ExeName)+'SCANNDYDll.dll';
if FileExists(DLLName) then
begin
  ShowMessage('Mich gibt es');
  DLLHandle := LoadLibary(DLLName);
end else
begin
  ShowMessage('Datei gibt es nicht');
  DLLHandle := 0;
end;
Warum nicht gleich richtig:
Delphi-Quellcode:
if LoadLibrary(...) = 0 then
begin
  ShowMessage(SysErrorMessage(GetLastError);
end
else
begin
  ...;
  ...;
end;
Dann weiß man auch WARUM es nicht funktioniert hat. Sonst fangen wir ja wieder an zu raten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: LoadLibrary unter Windows 7

  Alt 2. Aug 2011, 12:58
Auch wenn ich sie ins SysWOW64 Verzeichnis lege ändert sich nichts.
Weder, wenn ich sie direkt aufrufen möchte, noch wenn ich gar keinen Pfad angebe...
Hmm, dass ist sehr merkwürdig. Es ist aber sicher kein schreibfehler`in dem DLL-Namen?
Kannst du mal folgendes Testen:
Delphi-Quellcode:
DLLName := PAnsiChar(ExtractFilePath(Application. ExeName)+'SCANNDYDll.dll';
if FileExists(DLLName) then
begin
  ShowMessage('Mich gibt es');
  DLLHandle := LoadLibary(DLLName);
end else
begin
  ShowMessage('Datei gibt es nicht');
  DLLHandle := 0;
end;
Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: LoadLibrary unter Windows 7

  Alt 2. Aug 2011, 12:38
.... Aus Sicherheitsgründen sucht Windows standardmäßig nicht mehr im aktuellen Arbeitsverzeichnis......
ich dachte nur nicht mehr zuerst, aber schlussendlich immer noch?

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:28 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