Erklärt an der API MoveFile:
Wie erhält man die zu der API gehörenden DLL :
Wir schauen uns dazu mal die API Beschreibung auf der Microsoft Seite an. Ganz unten steht folgendes:
ZitatAlles anzeigen
Requirements
Minimum supported client Windows 2000 Professional
Minimum supported server Windows 2000 Server
Header WinBase.h (include Windows.h)
Library Kernel32.lib
DLL Kernel32.dll
Unicode and ANSI names MoveFileW (Unicode) and MoveFileA (ANSI)
Da steht also die DLL in der sich die Funktion MoveFile befindet.
Wie erhälte ich den genauen Funktionsnamen in der DLL:
Bei uns hier in Deutschland gibt es das Alphabeth. Aus den dort enthaltenen Buchstaben (es sind so um die 26) kann man eigentlich jedes Wort und jeden Satz der Deutschen Sprache bilden.
In Japan sieht das ganz anders aus, da gibt es viel mehr Schriftzeichen, aus denen die einzelnen Worte gebildet werden. Es gibt bei den meisten APIs, die in irgendeiner Form mit Textausdrücken umgehen (bei MoveFile ist das zum Beispiel der Name des Quell- und Zielordners), deshalb öft zwei Versionen - hier
- MoveFileA -> kann mit dem euopäschien (kurzen) Zeichensatz umgehen
- MoveFileW -> kann mit einem erweiterten Zeichensatz umgehen, wie zum Beispiel den japanischen Schriftzeichen.
Ich habe hier MoveFileA gewählt - allgemein für Nicht-Asiaten die erste Wahl.
ZitatAlles anzeigen
Requirements
Minimum supported client Windows 2000 Professional
Minimum supported server Windows 2000 Server
Header WinBase.h (include Windows.h)
Library Kernel32.lib
DLL Kernel32.dll
Unicode and ANSI names MoveFileW (Unicode) and MoveFileA (ANSI)
Wie erhalte ich die Parameter, mit der die Funktion aufgerufen wird:
Dafür ist folgender Abschnitt wichtig:
ZitatAlles anzeigen
Syntax
C++
BOOL WINAPI MoveFile(
__in LPCTSTR lpExistingFileName,
__in LPCTSTR lpNewFileName);
Wie man hier sieht, hat die Funktion zwei Parameter. __in bedeuted, es sind Parameter für die Eingabe - man muss also vorher was emtsprechendes in die Parameter packen, damit die Funktion erfolgreich was tut. Es könnte dort auch __out stehen, dann packt die Funktion dort selbst was hin, was man später auslesen kann.
Jetzt schauen wir uns mal das LPCTSTR etwas genauer an. STR wird dir bekannt vorkommen - da gibt es doch die Funktion Str$ aus Profan! STR ist also ein String und LP beudet nichts anderes als eine Adresse. Es muss bei beiden Parametern also die Adresse eines Strings übermittelt werden - einmal die Adresse des Quellordners (der Quelldatei) und einmal die Adresse des Zielordners (der Zieldatei).
Folgende Sachen könnten dort unter anderem bei anderen Funktionen noch stehen (hier das wichtigste für den Anfang):
- DWORD = Eine 4 Byte große Zahl (Zahl&)
- WORD = Eine 2 Byte große Zahl
- Byte = 0 oder 1 -> eine 1 Byte große Zahl
Wo finde ich Funktion, die mich interessieren könnten:
Es gibt da einen netten Download, der die wichtigsten Funktionen etwas geordnet enthält (win32.hlp). Das ganze ist schon ziemlich veraltet, zum ersten Nachschlagen reicht es aber noch.