Viele kennen den alten Trick - eine mit AddressOf oder GetProcAddress ermittelte Funktionadresse kann
mit CallWindowProc leicht aufgerufen werden, allerdings mit dem Manko der fixen 4 Parameter.
Mit ein wenig Assembler können wir dieses Hindernis aber leicht überwinden.
Das Prinzip ist einfach:
Parameter auf den Stack, Adresse aufrufen, zurückkehren.
Wenn man das ganze in einem neuen Thread macht, ist der Rückgabewert allerdings gleichzeitig der Exit Code des Threads.
Und der darf nicht 259 sein, da dieser Wert schon von STILL_ACTIVE belegt ist.
Das Prinzip wird zu:
Parameter auf den Stack, Adresse aufrufen, Rückgabewert in Variable kopieren, Rückgabewert leeren, zurückkehren.
VB unterstützt in einer Standard Exe kein Threading. Manchmal wäre es aber praktisch, eine zeitaufwendige API doch in einem anderen Thread laufen zu lassen, um die Oberfläche nicht einzufrieren.
Download: CallPointer Modul