Los recursos del sistema, (System, GDI y User), s�lo se pueden obtener con aplicaciones de 16 bits, usando el API de Windows, por supuesto.
Este "servidor OLE" es un ejecutable de 16 bits (VB4) que expone una clase con un m�todo que nos informa de la cantidad de recursos libres.
Se puede usar tanto en aplicaciones de 16 como de 32 bits, aunque en 16 bits no tiene demasiado "inter�s" ya que se pueden obtener directamente, sin necesidad de tanta "sobrecarga".La forma de usar este servidor OLE es bien sencilla:
- En primer lugar deber�s ejecutar (o compilar, si tienes el VB4 de 16 bits) el archivo recursos.exe, de esta forma se crear� el servidor OLE y se registrar� para usarlo en cualquier proyecto VB4.
- Una vez registrado podr�s "referenciarlo" en cualquier proyecto y s�lo deber�s hacer una referencia a la clase cRecursos y usar el m�todo Recursos para obtener los "idem" del Sistema, GDI y User.
No te preocupes, que aqu� est� el c�digo del "servidor OLE" y un ejemplo de c�mo usarlo.
recursos.vbp
Este proyecto consta de un m�dulo BAS, para usarlo como punto de entrada y una clase que es la que se encarga de proporcionar el m�todo que nos interesa para saber los recursos libres.
El m�dulo es "super simple" ya que s�lo tiene un procedimiento: MAIN que es el punto de entrada al ejecutable.'-------------------------------------------------- 'OLEMain.bas (11/Jun/96) '�Guillermo Som, 1996 ' 'M�dulo gen�rico para Librer�as OLE '-------------------------------------------------- Option Explicit Sub Main() ' 'Sub Main es necesario para in-process OLE server ' End SubLa clase es la siguiente:
VERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "cRecursos" Attribute VB_Creatable = True Attribute VB_Exposed = True '---------------------------------------------------------------- 'Clase para obtener los recursos del sistema (26/May/97) ' 'La intenci�n de esta clase es crear una librer�a OLE de 16 bits '(realmente debe ser un EXE, ya que no tiene un form modal) 'que devuelva los recursos del sistema en aplicaciones de 32 bits '---------------------------------------------------------------- Option Explicit 'Funci�n de 16 bits del API de Windows Private Declare Function GetFreeSystemResources Lib "User" (ByVal fuSysResource As Integer) As Integer Public Sub Recursos(iSystem%, iGDI%, iUser%) 'Constantes para usar con GetFreeSystemResources() Const GFSR_SYSTEMRESOURCES = &H0 Const GFSR_GDIRESOURCES = &H1 Const GFSR_USERRESOURCES = &H2 'Obtener los Recursos... ' SYSTEM = 0, GDI = 1, USER = 2 iSystem = GetFreeSystemResources(GFSR_SYSTEMRESOURCES) iGDI = GetFreeSystemResources(GFSR_GDIRESOURCES) iUser = GetFreeSystemResources(GFSR_USERRESOURCES) End SubComo puedes comprobar tampoco es demasiado complicada. Y la �nica funci�n es, precisamente la que debe tener, devolver los recursos; para ello se usa el m�todo Recursos, como par�metros se usan las variables en las que se almacenar�n los valores.
A continuaci�n te muestro el form de prueba. Este deber�s hacerlo en VB4 de 32 bits.
Aqu� tienes el listado y una "instant�nea" del mismo.
'------------------------------------------------------- 'Prueba de recursos en 32 bits usando OLE de 16 bits ' 'El archivo Recursos.exe deber� estar registrado, para 'hacerlo s�lo es necesario ejecutar el programa para que 'se registre en el sistema. ' '(c)Guillermo Som, 26/May/1997 '------------------------------------------------------- Option Explicit Private Sub cmdActualizar_Click() 'leer los recursos de la clase cRecursos Dim info16 As New cRecursos Dim iSystem%, iGDI%, iUser% info16.Recursos iSystem, iGDI, iUser lblRecursos(3) = iSystem & "%" lblRecursos(4) = iGDI & "%" lblRecursos(5) = iUser & "%" End Sub Private Sub Form_Load() cmdActualizar_Click End Sub Private Sub Form_Unload(Cancel As Integer) Set Form1 = Nothing End SubY esto es todo. Dicen que lo bueno si breve, dos veces bueno... 8-)
Nota: Al compilarlo con VB5, s�lo me ha funcionado en p-code, no en c�digo nativo.