AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi WINAPI-Funktionen Windows Versionsabhängig
Thema durchsuchen
Ansicht
Themen-Optionen

WINAPI-Funktionen Windows Versionsabhängig

Ein Thema von RWarnecke · begonnen am 19. Jan 2008 · letzter Beitrag vom 22. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

WINAPI-Funktionen Windows Versionsabhängig

  Alt 19. Jan 2008, 14:33
Hallo zusammen,

ich habe mal wieder ein Problem, ich verwende in meinem Programm SystemInfo in der neuen Version den folgenden Aufruf im Interface-Teil :
Delphi-Quellcode:
function GetAdaptersAddresses(Family: ULONG; Flags: cardinal; Reserved: PVOID;
  pAdapterAddresses: PIP_ADAPTER_ADDRESSES; pOutBufLen: PULONG): dword; stdcall;
     external 'IPHLPAPI.DLLname 'GetAdaptersAddresses';
Wenn ich jetzt das Program unter Windows XP und höher aufrufe funktioniert alles ganz wunderbar. Nur wenn ich das Programm jetzt unter Windows 2000 aufrufe, gibt es die Fehlermeldung, das er den Einstiegspunkt nicht findet. Das ist mir ja auch klar, wie man unter MSDN-Library durchsuchenGetAdaptersAddresses nachlesen kann.

Nun zu meiner Frage, kann ich das ganze trotzdem verwenden und es zur Windowsversion abhängig machen ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#2

Re: WINAPI-Funktionen Windows Versionsabhängig

  Alt 19. Jan 2008, 14:47
Hallo Rolf,

verwende doch dynamische statt statischer Bindung, also mit LoadLibrary und GetProcAddress ermitteln, ob die Funktion vorhanden ist. Wenn nicht, ist sie halt nicht zu verwenden, aber das Programm läuft zumindest.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

Re: WINAPI-Funktionen Windows Versionsabhängig

  Alt 19. Jan 2008, 14:53
Hallo Deddy,

das wäre eine Idee, mal schauen was ich daraus machen kann.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: WINAPI-Funktionen Windows Versionsabhängig

  Alt 19. Jan 2008, 21:47
Habe das Problem jetzt mit LoadLibrary und GetProcAddress gelöst.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#5

Re: WINAPI-Funktionen Windows Versionsabhängig

  Alt 19. Jan 2008, 21:55
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

Re: WINAPI-Funktionen Windows Versionsabhängig

  Alt 22. Jan 2008, 19:32
Ich habe dazu noch eine Frage, kann ich an dem folgenden Beispiel noch etwas optimieren/verbessern ?
Delphi-Quellcode:
hclxwin32 := LoadLibrary('clxwin32.dll');
hnetwin32 := LoadLibrary('netwin32.dll');
hcalwin32 := LoadLibrary('calwin32.dll');
if (hclxwin32 <> 0) and (hnetwin32 <> 0) and (hcalwin32 <> 0) then
begin
  @CallsInit := GetProcAddress(hcalwin32, 'NWCallsInit');
  @ScanConnRefs := GetProcAddress(hclxwin32, 'NWCCScanConnRefs');
  @GetConnRefInfo := GetProcAddress(hclxwin32, 'NWCCGetConnRefInfo');
  @OpenConnByRef := GetProcAddress(hclxwin32, 'NWCCOpenConnByRef');
  @CreateContextHandle := GetProcAddress(hnetwin32, 'NWDSCreateContextHandle');
  @MapIDToName := GetProcAddress(hnetwin32, 'NWDSMapIDToName');
  if (@CallsInit <> nil) and (@ScanConnRefs <> nil) and
     (@GetConnRefInfo <> nil) and (@OpenConnByRef <> nil) and
     (@CreateContextHandle <> nil) and (@MapIDToName <> nil) then
  begin

    // irgendwelcher Code wird abgearbeitet

  end;
end;
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#7

Re: WINAPI-Funktionen Windows Versionsabhängig

  Alt 22. Jan 2008, 19:35
Wenn Sofern Du auch irgendwo FreeLibrary aufrufst, sehe ich jetzt nichts.

[edit] So wird deutlicher, was ich gemeint hatte [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#8

Re: WINAPI-Funktionen Windows Versionsabhängig

  Alt 22. Jan 2008, 19:48
Zitat von DeddyH:
Wenn Du auch irgendwo FreeLibrary aufrufst, sehe ich jetzt nichts.
Ok, das mit FreeLibrary habe ich hier vergessen, da das nur ein Ausschnit aus der Funktion ist. FreeLibrary rufe ich ganz am Schluss der Funktion auf.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: WINAPI-Funktionen Windows Versionsabhängig

  Alt 22. Jan 2008, 19:51
Woran und wo gedenkst du denn zu verbessern? Kürzerer Quellcode oder kürzere Laufzeit?
Aber ich denke kaum, dass hier sinnvoll etwas rausgeholt werden kann.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#10

Re: WINAPI-Funktionen Windows Versionsabhängig

  Alt 22. Jan 2008, 19:56
Zitat von sirius:
Woran und wo gedenkst du denn zu verbessern? Kürzerer Quellcode oder kürzere Laufzeit?
Ich denke hauptsächlich an die IF-Schleifen. Denn wenn ich mehrere Befehle habe, kann die ja ziemlich lang werden, was ich für nicht so gut halte. Gibt es vielleicht eine Möglichkeit mit einem Befehl mehrere Funktionen einer DLL zu überprüfen. Da möchte ich optimieren/verbessern.
Rolf Warnecke
App4Mission
  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 18:27 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