Immer wieder kommt mal die Frage auf, wie könnte man ein Problem lösen. Und sicher bietet Windows für Vieles auch eine Lösung. Nur muß man schon mal einen Anhaltspunkt haben, wonach man suchen könnte. Weiß ich den Namen einer Funktion kann ich schnell ermitteln, was die Funktion tut. Um nun zu wissen, wo man mit der Suche anfangen sollte, wäre es doch nett, einfach mal ein paar Funktionen, die jeder mal braucht, aufzulisten. Und hier ist jeder aufgerufen, die Funktionen mal zu nennen. Einfach den Funktionsnamen und ein bis zwei Zeilen, was man damit machen kann. Den Namen kann man dann zum Beispiel hier eingeben und ist schon ein ganzes Stück weiter. Ich denke, der API-Neuling hat mit sowas schon mal einen Anfang.
Noch ein Hinweis: Leider sind nicht alle Funktionen in der Headerdatei enthalten. Um herauszufinden, in welcher DLL die steht, einfach bei der Fundstelle bei MSDN runter rollen, dort findet man auch diese Angaben. Damit ist dann ein eigenes DEF oder EXTERNAL realisierbar.
Also mache ich mal den Anfang mit ein paar Funktionen, die mir gerade einfallen.
X& = GetLogicalDrives()
Auflistung aller aktuell vorhandener Laufwerke als Bitmaske, Bit 0 = A: u.s.w.
in Kernel32
GetLogicalDriveStringsA(Buffergroesse&, Buffer#)
Auflistung aller aktuell vorhandener Laufwerke als String, z.B.: "C:\ D:\ F:\ Z:\ in Buffer, jeder Bezeichner endet auf ein NullByte, die Sequenz wird durch nochmaliges NullByte abgeschlossen. Der Buffer sollte also mindestens 105 Byte groß sein.
in Kernel32
X& = GetDriveTypeA(LWBezeichner#)
Liefert den Typ eines Laufwerks, LW-Bezeichner als String Bereich als C:\
in Kernel32
GetVolumeInformationA(RootName#, VolName#, GroesseVolName&, Addr(SerNr&), Addr(PfadMaxLen&), Addr(FileSystemFlags&), FileSystemName#, GroesseFileSystemName&)
Liefert Angaben zu einem Volume, wie Format, Datenträgernummer u.s.w., RootName# ist die Vorgabe, zu der Informationen benötigt werden. Rückgaben, die nicht benötigt werden, können anstelle der Adresse 0 sein.
in Kernel32
Alt& = SetErrorMode(Neu&)
Windowsverhalten bei Fehlern beeinflussen, zum Beispiel nicht eingelegter Datenträger
in Kernel32
GetErrorMode()
Ermittelt nur den aktuell eingestellten Errormode, siehe auch SetErrorMode
in Kernel32
X& = GetStockObject(Element&)
Handle eines vom System vordefinierten Elementes, zum Beispiel Systemfonts ermitteln
in GDI32
X& = GetSystemMetrics(Element&)
Aktuelle Zahlen zu Systemteilen, zum Beispiel Icongrößen, Titelzeilenhöhe, Menühöhe, Fensterrandbreiten u.s.w. ermitteln
in User32
X& = GetSysColor(Element&)
Ermittelt Systemfarben zu einem Element
in User32
GetWindowPlacement(%HWnd, WindowPlacementStruct#)
Ermittelt Daten zur Fensterposition und -größe als Struktur
in User32
InvalidateRect(%HWnd, Rect#, Flag%)
Fensterbereich ungültig machen also zum Neumalen markieren. Bereich als Rect#-Struktur angeben oder Parameter Rect# als 0 angeben, wenn ganzes Fenster
in User32
UpdateWindow(%HWnd)
Fenster neu malen, es werden ungültige Bereiche (InvalidateRect) neu gemalt
in User32
X& = IsWindow(%HWnd)
Stellt fest, ob ein Fenster existiert
in User32
X& = IsIconic(%HWnd)
Stellt fest, ob ein Fenster minimiert ist
in User32
X& = IsZoomed(%HWnd)
Stellt fest, ob das Fenster maximiert ist
in User32
X& = IsWindowVisible(%HWnd)
Stellt fest, ob das Fenster derzeit auf Sichtbar oder Unsichtbar gesetzt ist
in User32
X& = IsWindowEnabled(%HWnd)
Stellt fest, ob das Fenster derzeit freigegeben oder gesperrt (ausgegrauter Button zum Beispiel) ist
in User32
EnumWindows(ProcAddrCallback&, CallBackParam&)
Listet alle Fenster auf, hierzu selbstgeschriebene Callbackfunktion nötig
in User32
EnumChildWindows(&HWnd, ProcAddrCallback&, CallBackParam&)
Listet alle Kindfenster eines Fensters, hierzu selbstgeschriebene Callbackfunktion nötig
in User32
GetClassNameA(%HWnd, Buffer#, Buffergroesse&)
Liefert den Namen der Fensterklasse des Fensters
in User32
ExpandEnvironmentStringsA(Buffer1#, Buffer2#, Buffergroesse2&)
Löst Systemvariablen auf, z.B.: "Mein Ordner %appdata%\\Test ist leer" setzt den korrekten Pfad ein, Eingabe als String in Buffer1, Ausgabe erfolgt in Buffer2, dessen Größe als dritter Parameter anzugeben ist.
in Kernel32
PathUnExpandEnvStringsA(Buffer1#, Buffer2#, Buffergroesse2&)
Ersetzt Teile des Pfades in Buffer1 durch Variablen und liefert das Ergebnis in Buffer2, dessen Größe als dritter Parameter anzugeben ist
"C:\Users\<Benutzername>\Documents" wird so zu "%Userprofile%\Documents"
in Shlwapi.dll
X& = GetLastError()
Ermittelt den Status der zuvor augerufenen Funktion, unmittelbar nach einer API-Funktion aufzurufen, um Fehler zu erhalten
in Kernel32
SetLastError(Wert&)
Setzt einen Fehlerwert. SetLastError(0) kann dabei nützlich sein, um den Fehlerspeicher zu löschen
in Kernel32
FormatMessageA(Flags&, Eingabe#, MesageID&, Sprache&, Buffer#, GroesseBuffer&, Argumente#)
Formatiert eine Fehlermeldung, für die Umwandlung eines Fehlercodes von GetLastError sinnvolle Parameter:
FormatMessageA($1000, 0, Fehler&, 0, Buffer#, GroesseBuffer&, 0)
in Kernel32
PathRemoveFileSpecA(DateiName#)
Extrahiert den Pfad aus einem vollständigen Dateinamen und liefert das Ergebnis in DateiName# zurück
in shlwapi.dll
X& = PathFindFileNameA(DateiName#)
Extrahiert den Dateinamen aus einem vollständigen Dateinamen und liefert das Ergebnis als Zeiger zurück: Ergebnis$ = String$(X&, 0)
in shlwapi.dll
X& = PathFindExtensionA(DateiName#)
Extrahiert die Dateierweiterung aus einem vollständigen Dateinamen und liefert das Ergebnis als Zeiger zurück: Ergebnis$ = String$(X&, 0)
in shlwapi.dll
PathQuoteSpacesA(Pfad#)
Enthält der Pfad Leerzeichen, wird er in Anführungszeichen gesetzt, Rückgabe steht in Pfad#
in shlwapi.dll
Handle& = ChildWindowFromPoint(%HWnd, PunktStruktur#)
Ermittelt das direkte Kindfenster in %HWnd, in dem der angegebene Punkt liegt
in User32
Wert& = GetWindowLongA(%HWnd, Index&)
Ermittelt einen Wert einer Fenstereigenschaft, die in Index& spezifiziert ist
für 64bit: GetWindowLongPtrA()
in User32
Alt& = SetWindowLongA(%HWnd, Index&, Wert&)
Setzt den Wert einer Fenstereigenschaft, die in Index& spezifiziert ist
für 64bit: SetWindowLongPtrA()
in User32
Wert& = GetClassLongA(%HWnd, Index&)
Ermittelt einen Wert einer Fensterklasseneigenschaft, die in Index& spezifiziert ist
für 64bit: GetWindowLongPtrA()
in User32
Alt& = SetClassLongA(%HWnd, Index&, Wert&)
Setzt den Wert einer Fensterklasseneigenschaft, die in Index& spezifiziert ist
für 64bit: SetClassLongPtrA()
in User32
RTLCopyMemory(Ziel#, Quelle#,Anzahl&)
Kopiert Anzahl& Bytes von Quelle# nach Ziel#, die beiden Speicherblöcke dürfen sich nicht überlappen
in Kernel32
RTLMoveMemory(Ziel#, Quelle#, Anzahl&)
Verschiebt Anzahl& Bytes von Quelle# nach Ziel#, die beiden Speicherblöcke dürfen sich hierbei teilweise überlappen
in Kernel32
Wäre nett, wenn noch jemand ein paar Dinge hinzufügen würde.
Gruß Volkmar