Frage 1: Ich nütze schon vorhandenes (wenn es auch nicht vorgesehen ist): Für die Unterordnersache nutze ich einfach Backslashes im Namen. Die Runtime liest dann "Ordner\Datei", hängt links "c:\projekt\Picture\" an und probiert rechts ".bmp", ".png" und "•••••" aus bis Windows sagt "ja die Datei gibts". Für das "No Steps When Moving" verwende ich eine Animationstyp-Nummer, die nicht vorgesehen ist. Und durch die Art, wie die if's und switch'es in der rpg_rt.exe strukturiert sind, kommt dann ein Bewegen ohne Schritte raus. Das mit den Geheimevents erreiche ich indem ich dem Event negative Koordinaten gebe.

Frage 2: Mehrere Techniken vereint.
1) Zuerst wird eine DLL injiziert. Aus der findet das alles dann statt.
2) Dann werden 2 Hooks installiert: Ein Keyboard-Hook und ein CallWndProc-Hook, der alle Windowmessages abfängt.
3) Dann werden einige Funktionen gepatcht, sodass stattdessen Funktionen von mir verwendet werden.
4) Dann werden bei Bedarf Fenster via Subclassing gekidnappt.
5) Du musst wissen, dass Delphi jedem Fenster eine Property mit dem Namen "ControlOfsXXXXXXXXYYYYYYYY" gibt, wo X das HINSTANCE ist und Y die Thread-ID. In der Property ist ein Pointer auf die zugehörige Instanz der Delphiklasse, zu der das Fenster gehört. Das ist immer eine Unterklasse von TWinControl.
6) Um jetzt noch mehr erreichen zu können, hab ich 2 DLLs geschrieben, vclxchg5.dll und vclxchg6.dll. Genauergesagt ist der Quellcode für beide der selbe, nur einmal mit Delphi 5 kompiliert und einmal mit Delphi 6, denn der Maker ist auch in Delphi 5 (2k) bzw. 6 (2k3) geschrieben. Durch diese DLLs muss ich jetzt nicht rausfinden, wo denn nun die ganzen Funktionen in der rpg2000/3.exe liegen bzw. welche Offsets einer Klasse welche Eigenschaft sind (was noch dazu ja bei 2k und 2k3 unterschiedlich ist), sondern hab einfach ein paar Funktionen drin, die Beispielsweise ein TTabControl entgegennehmen und mir Images.Handle zurückliefern, sodass ich da Icons reinmachen kann - als Beispiel.
Besonders mächtig wird das, weil ich die Funktionen drinhabe, die durch die Unit "TypInfo" mir die RTTI (Runtime-Type-Information) zugänglich machen. Ich kann dadurch alle "Published"-Properties (wie z.B. "MaxValue" bei den Auf-Ab-Zahlen-Eingabefeldern im Maker) lesen und schreiben, indem ich ihren Namen angebe. So brauch ich nicht für jede Eigenschaft eine neue Funktion in meiner DLL und kann auch auf Eigenschaften von Klassen zugreifen, deren Source ich nicht habe (wie hier eben das Makereigene TSpinEdit). Praktischerweise sind auch die ganzen Methoden, die ein Ereignis behandeln, published (damit nämlich in den DFM-Dialog-Resourcen sie per Name angesprochen werden können). So kann ich z.B. beliebig die TFormLcfMain.MenuItem_Tools_Database.OnClick callen und so.

Darauf basiert das ganze ungefähr.

Die Funktionen, die ich umleite, finde ich übrigens über eine Art Maske, indem ich in der Datei nach einer Bytefolge suche, wo manche Bytes aber beliebig sein können (konkret: Offsets und Ziele von Jumps und Calls).

mfG Cherry