API oder nicht API? Das ist die Frage!

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

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

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]

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

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

Danke
Danke

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

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]

1 Like

Danke. o.T.

-)

1 Like