AGB  ·  Datenschutz  ·  Impressum  







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

APIs prüfen, ob existet

Ein Thema von himitsu · begonnen am 6. Jul 2012 · letzter Beitrag vom 9. Jul 2012
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#1

APIs prüfen, ob existet

  Alt 6. Jul 2012, 10:41
Betriebssystem: Win 2000,Win XP,Win Vista,Win 7
Moin,

gibt es nicht zufällig ein Programm, das man über sein Programm laufen lassen könnte, welches sich anschaut welche APIs verwendet wurden und einem dann sagt
  • die und die APIs hab ich in den IMPORTS gefunden (eventuell auch nach Texten suchen, welche wie API-Namen klingen)
  • diese Mindestvoraussetzungen sind gegeben
  • und eventuell auch noch welche APIs die Mindestvorausetzung bedingen, damit man eventuell abwegen kann, ob es sich lohnt das zu beheben, um eventuell doch noch ein älteres Windows zu unterstützen.
?

Hatte grade mal kurz das Application Compatibility Toolkit in den Pfoten, aber das sagte mir nur "ja, dein Programm lief hier (Server2008) gerade problemlos".


Nja, bei uns hatte sich doch erstmal schnell gelöst, da es der letzte Win2000-Rechner war, wo sich der Kunde vorher sowieso schonmal Gedanken machte den abzuschaffen.
Ich weiß nun dadurch praktisch schonmal von einer API, welche mindestens ein XP-SP1 benötigt.



OK, die Variante mit den VMs bestünde noch, aber vielleicht geht's auch einfacher.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 6. Jul 2012 um 10:45 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: APIs prüfen, ob existet

  Alt 9. Jul 2012, 01:02
Hallo,

da ich gerade an einer ähnlichen Baustelle unterwegs bin, habe ich mich mal ein bisserl um dieses Thema kümmern können, sollen, dürfen, müssen

In der JEDI Code Library gibt es u. a. die Unit JCLPeImage. Diese enthält u. a. die Prozedur PEImportedFunctions.

Dieser übergibt man den Name der EXE-Datei oder einer DLL, eine Stringliste, einen leeren Stringparameter und einen boolschen Wert mit True. Dafür erhält man in der Stringliste alle genutzten Aufrufe von Kernel32.dll und was es sonst noch so alles gibt bzw. genutzt wird. Die Stringliste enthält für jeden Aufruf eine Zeile in der Form DLL=aufgerufene Funktion.
Wenn man nun hergeht und sich aus diesen Zeilen Aufrufe für die Suche in der MSDN macht, so kann man dort aus dem Suchergebnis jeweils den ersten gefundenen Eintrag (= 1. Link) wählen und erhält damit die Beschreibung zu der genutzten Funktion der entsprechenden DLL. Auf dieser Ergebnisseite findet man nun den Abschnitt Requirements. Dort ist detailiert aufgeführt, welche Systemvoraussetzungen für die Nutzung der Funktion erfüllt sein müssen.

Der aus der Stringliste oben genannter Prozedur zu erstellende Link müsste (vermutlich) so aussehen:
Code:
http://social.msdn.microsoft.com/Search/en-US?query=kernel32.dll%20gettickcount
Er ließe sich daher sehr leicht aus der Stringliste erstellen.
Nun muss man die entsprechende Seite laden, die leider inhaltlich nicht so aufgebaut ist, dass ein Heraussuchen des gewünschten Links einfach erscheint. Vermutlich benötigt man den ersten Link, der in etwa folgendem Aufbau entspricht:
Code:
http://msdn.microsoft.com/en-us/library/windows/desktop/*.aspx
Beispiel:
Code:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa385449(v=vs.85).aspx
Die nachfolgende Seite, die die gewünschten Informationen enthält, kann man jedoch relativ einfach parsen und bekommt so die gewünschten Informationen.

Um sich hieraus ein eigenes Nachschlagwerk zu bauen ist ein bisserl Phantasie und die eine oder andere Stunde Arbeit erforderlich. Sicherlich ist es aber einfacher, als jedes Betriebssystem (wie auch immer, VM...) vorzuhalten und die Programme dann zu testen, zumindest die Planung sollte vereinfacht werden können, um ggfls. auftretenden Problemen aus dem Weg gehen oder halt die Systemanforderungen besser beschreiben zu können.

Geändert von nahpets ( 9. Jul 2012 um 01:27 Uhr) Grund: Edit meint: Es ist noch zu früh zum richtig schreiben, Schreibfehler behoben.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

AW: APIs prüfen, ob existet

  Alt 9. Jul 2012, 01:23
Am schönsten währe es ja, wenn es schon was Fertiges gegeben hätten

Hmmm, man könnte auch das Windows PSDK parsen, welches man sich runterladen kann.
Ansonsten würde ich wohl noch eine Datenbank auf meinem Webseitchen bereitstellen, damit nicht jedes Mal die Webseite geparst werden muß.

Klar, nur weil irgendwo alle gefundenen APIs vorhanden sind, heißt es noch lange nicht, daß das Programm dann dort auch wirklich läuft, aber nicht jeder hat alle Windowsversionen rumliegen und für einen ersten Überlick ist es eben idealer, vorallem eben die Anzahl und Art der APIs, welche man eventuell umgehen könnte, um es doch eventuell zum Laufen zu bringen.



Vielleicht verrät uns Daniel ja, wie er in seine Delphi-Referenz den MSDN-Index reinbekommen hat?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Jul 2012 um 01:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: APIs prüfen, ob existet

  Alt 9. Jul 2012, 09:57
Ich verwende CFF Explorer.. Suche danach
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#5

AW: APIs prüfen, ob existet

  Alt 9. Jul 2012, 14:28
Ich hab da vor Ewigkeiten mal was geschrieben... CompatAlyzer. Seit einiger Zeit ist es auch Teil des FileAlyzer (Screenshot angehängt, einfacher Fall, ist nur ne Resourcen-DLL). Man sieht da mehrere Spalten pro manchem OS, da ich teilweise mehrere OS-mit-SP-Versionen aufgenommen habe.

Dank MSDN-Abo habe ich alle OS-Installations-CDs heruntergeladen, extrahiert, teilweise nochmal extrahiert, Testcode zum Analysieren der Exporte drüberlaufen lassen und diese Daten stecken hinter beiden Tools.

Nachtrag: habe noch einen zweiten Screenshot ergänzt, mit der Übersichtsansicht.
Miniaturansicht angehängter Grafiken
screenshot-fa2-compatibility.png   screenshot-fa2-compatalyzer.png  

Geändert von CCRDude (10. Jul 2012 um 09:46 Uhr)
  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 23: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