API oder nicht API? Das ist die Frage!

Von: , Frage gestellt am Di, 7. Nov 2000

Morgeeeen,

was mich wirklich interresieren würde ist ob ich den gebrauch von Windows API Calls einer "normalen" Lösung vorziehen sollte.

Was sind die Vor/Nachteile der beiden Alternativen?
Gibt es exorbitant hohe Geschwindigkeitsunterschiede?


Mit Dank ihm voraus,
Michael Schieferer

7 Antworten zu dieser Frage

  1. Antwort von nach 45 Minuten 1 hilfreich
    Re: API oder nicht API? Das ist die Frage!

    was mich wirklich interresieren würde ist ob ich den gebrauch
    von Windows API Calls einer "normalen" Lösung vorziehen
    sollte.
    Generell sind API-Calls nicht unbedingt vorzuziehen, aber in bestimmten Fällen sind sie unumgänglich. Was sind die Vor/Nachteile der beiden Alternativen?
    Manche Sachen kann man mit API-Aufrufen geschickter machen als mit herkömmlichen VB-Code. Einige Sachen kann man gar nur mit API-Calls erledigen (z.B. Anzeigen des Verzeichnisauswahl-Dialoges, API-Funktion: SHBrowseForFolder) Gibt es exorbitant hohe Geschwindigkeitsunterschiede?
    Für bestimmte Aufgaben gibt es API-Aufrufe die um einiges schneller sind als eine "normale" Lösung, z.B. das Durchsuchen einer ListBox nach einem bestimmten Text. Ohne API kann man nur sequentiell eine unsortierte Liste durchsuchen, mit API (API-Funktion: SendMessageByString) geht's um ein Vielfaches schneller.

    Die meisten anderen Funktionalitäten, die VB bereits direkt enthält sind nicht unbedingt schneller oder langsamer als äquivalente API-Calls.

    Gruß,
    Mirko Klotz

    • Antwort von nach 55 Minuten hilfreich
      Dank für die rasche Bearbeitung + noch eine Frage:

      Danke für die rasche Beantwortung meiner Anfrage doch etwas hatte ich vorher vergessen zu erwähnen das mir auch noch interresieren würde:

      Sind die API Calls in WinNT4\3.x\2000\98\95 ect. immer die gleichen oder stosse ich hier auf Kompatiblitätskonflikte? [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

      • Antwort von nach 18 Stunden hilfreich
        Re: Dank für die rasche Bearbeitung + noch eine Fr

        Danke für die rasche Beantwortung meiner Anfrage doch etwas
        hatte ich vorher vergessen zu erwähnen das mir auch noch
        interresieren würde:

        Sind die API Calls in WinNT4\3.x\2000\98\95 ect. immer die
        gleichen oder stosse ich hier auf Kompatiblitätskonflikte?

        Wie so oft kann man auch hier nicht unbedingt von immer sprechen sondern höchstens von meistens.

        Manche API-Calls bzw. API-Deklarationen müssen unter NT bspw. etwas anders formuliert als etwa unter Win95 oder gar Win3. Im Zweifelsfall sollte die API-Dokumentation (ohne kannst du sowieso so gut wie nichts machen) darüber Auskunft geben, für welche Systeme eine Funktion definiert ist.

        Gruß,
        Mirko Klotz

        • Antwort von nach 18 Stunden hilfreich
          Danke

          Danke [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

    • Antwort von nach 18 Stunden hilfreich
      Re^2: API oder nicht API? Das ist die Frage!

      Hallo Für bestimmte Aufgaben gibt es API-Aufrufe die um einiges
      schneller sind als eine "normale" Lösung, z.B. das Durchsuchen
      einer ListBox nach einem bestimmten Text. Ohne API kann man
      nur sequentiell eine unsortierte Liste durchsuchen, mit API
      (API-Funktion: SendMessageByString) geht's um ein Vielfaches
      schneller.
      Könntest das Beispiel (suchen in der ListBox) posten?

      Danke Giuseppe

      • Antwort von nach 18 Stunden 1 hilfreich
        Listbox durchsuchen

        Scan ListBox For The Text In TextBox

        'Benötigt: 1x listbox, 1x textbox, Modul
        'Füge ein paar daten in die listbox ein, schreib 
        'anschliessend zB "a" in die textbox
        'ins modul:
        Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As _
        Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
        Public Const LB_FINDSTRING = &H18F
        'in die form:
        Private Sub Text1_Change()
        List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))
        End Sub
        


        Hoffe es hilft dir,
        MfG
        Michael Schieferer [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!