Du könntest versuchen den Explorer mit CreateProcess zu starten, da können Parameter für die Position und Größe angegeben werden.
Etwa so:
Delphi-Quellcode:
var StartupInfo:TStartupInfo;
begin
FillChar(StartupInfo, SizeOf(TStartupInfo),0);
StartupInfo.lpReserved:=NIL;
StartupInfo.cb:=SizeOf(TStartupInfo);
StartupInfo.dwX:=x; // Linksoben
StartupInfo.dwY:=y; //
StartupInfo.dwXSize:=XSize; //
StartupInfo.dwYSize:=YSize; //
StartupInfo.dwFlags:=STARTF_USEPOSITION+STARTF_USESIZE;
If CreateProcess(.....