Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   JWAPI: Function not found: wininet.dll.InternetOpen (https://www.delphipraxis.net/170111-jwapi-function-not-found-wininet-dll-internetopen.html)

swestner 31. Aug 2012 10:14


JWAPI: Function not found: wininet.dll.InternetOpen
 
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

Delphi-Quellcode:
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 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