Dieses Problem gibt es doch unter Windows NT gar nicht mehr in der Form. In der 16-Bit Zeit von Windows waren die Ressourcen für die graphische Oberfläche beschränkt, unter Windows 9x gab es dann in der genannten
DLL die interne Methode _MyGetFreeSystemResources32, die im Grunde nur ein Wrapper für den Aufruf der entsprechenden alten 16-bit Funktion GetFreeSystemResources war. Wegen eben dieser Abwärtskompatibilität gab es für die User- und
GDI-Ressourcen ein Limit von 64KiB.
Mit Windows 2000 hat sich das aber grundlegend geändert, da die alten Programme in einer extra Umgebung abliefen. Das alte Limit von 64KiB war Geschichte. Deshalb
kann es unter Windows XP dieses Problem eigentlich gar nicht mehr geben.
// EDIT:
Bzw. unter Windows XP bedeutet es etwas anderes, wenn nicht genügend "Ressourcen" zur Verfügung stehen. Damit ist dort in der Tat eher der Arbeitsspeicher z.B. gemeint.
Es sei denn es handelt sich um ein uraltes Programm, das in der virtuellen Maschine für 16-Bit Programme läuft oder so, dann kann das vermutlich schon noch sein, dass da diese Ressourcen fehlen.
Um die Anzahl der
GDI- und Userobjekte eines Prozesses anzufragen kannst du ab Windows 2000 die Funktion GetGuiResources verwenden:
http://msdn.microsoft.com/en-us/library/ms683192.aspx