Recursos -servidor OLE para usar con 32 bits

Actualizado: 26/May/97
Bajate los listados y el ejecutable (recursos.zip 6.10 KB)


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 Sub

La 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 Sub

Como 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 Sub

Y 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.


ir al índice