Einzelnen Beitrag anzeigen

swestner

Registriert seit: 31. Aug 2012
Ort: Hallstadt
74 Beiträge
 
Delphi 10.4 Sydney
 
#1

JWAPI: Function not found: wininet.dll.InternetOpen

  Alt 31. Aug 2012, 10:14
Hallo,

ich nutze die JEDI Api Headers seit 2008 zum Zugriff auf WinInet-Funktionen. Bis vor kurzem hatte ich eine Version von April 2008, welche jahrelang anstandlos funktioniert hat. Ich habe damals direkt JwaWinInet eingebunden.

Neulich habe ich mir die aktuelle Version der Jedi-Api-Headers heruntergeladen und installiert. Gemäß Anleitung habe ich jetzt nur noch ein JwaWindows und habe meine uses entsprechend angepaßt.

Wenn ich jetzt in meinem Programm ein

hInet:=InternetOpen(PChar(sUserAgent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0) aufrufe, dann komme ich in JwaWinType

Delphi-Quellcode:
procedure GetProcedureAddress(var P: Pointer; const ModuleName, ProcName: AnsiString);
var
  ModuleHandle: HMODULE;
begin
  if not Assigned(P) then
  begin
    ModuleHandle := {$IFDEF JWA_INCLUDEMODE}jwaWinType_GetModuleHandle
                    {$ELSE}GetModuleHandle
                    {$ENDIF JWA_INCLUDEMODE}
                    (PAnsiChar(AnsiString(ModuleName)));
    if ModuleHandle = 0 then
    begin
      ModuleHandle := {$IFDEF JWA_INCLUDEMODE}jwaWinType_LoadLibrary
                    {$ELSE}LoadLibrary
                    {$ENDIF JWA_INCLUDEMODE}(PAnsiChar(ModuleName));
      if ModuleHandle = 0 then
        raise EJwaLoadLibraryError.CreateFmt(RsELibraryNotFound, [ModuleName]);
    end;
    P := Pointer({$IFDEF JWA_INCLUDEMODE}jwaWinType_GetProcAddress
                    {$ELSE}GetProcAddress
                    {$ENDIF JWA_INCLUDEMODE}(ModuleHandle, PAnsiChar(ProcName)));

// --> P ist NIL, d. h. die WinInet.Funktion InternetOpen kann mit GetProcAdress nicht ermittelt werden...

    if not Assigned(P) then
      raise EJwaGetProcAddressError.CreateFmt(RsEFunctionNotFound, [ModuleName, ProcName]);
  end;
end;
und kriege am Ende eine Exception.

Was läuft da schief?

Edit:
Ich habe gerade gemerkt, daß wenn ich die dynamic-version der JWAPI nehme, der Fehler kommt aber nicht bei der Static. Also
$(Komponenten)\JediWindowsApiHeaders\jwapi\Package s\bds11\bin\release\static im Suchpfad funktioniert nicht aber
$(Komponenten)\JediWindowsApiHeaders\jwapi\Package s\bds11\bin\release\dynamic.

Was ist hier der Unterscheid?

Ich nutze Windows 7 x64 mit Delphi 2007.

Grüße

Stefan Westner
Stefan Westner

Geändert von swestner (31. Aug 2012 um 10:29 Uhr) Grund: Neue Erkenntnis hinzugefügt... :-)
  Mit Zitat antworten Zitat