⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsr32.c

📁 Windows 95 系統程式設計大奧秘书籍源码
💻 C
字号:
//==================================
// FSR32 - Matt Pietrek 1995
// FILE: FSR32.C
//==================================
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#pragma hdrstop

typedef int (CALLBACK *GFSR_PROC)(int);

// Steal some #define's from the 16 bit WINDOWS.H
#define GFSR_GDIRESOURCES      0x0001
#define GFSR_USERRESOURCES     0x0002

// Prototype some undocumented KERNEL32 functions
HINSTANCE WINAPI LoadLibrary16( PSTR );
void WINAPI FreeLibrary16( HINSTANCE );
FARPROC WINAPI GetProcAddress16( HINSTANCE, PSTR );
void __cdecl QT_Thunk(void);

GFSR_PROC pfnFreeSystemResources = 0;   // We don't want these as locals in
HINSTANCE hInstUser16;                  // main(), since QT_THUNK could
WORD user_fsr, gdi_fsr;                 // trash them...

int main()
{
    char buffer[0x40];

    buffer[0] = 0;  // Make sure to use the local variable so that the
                    // compiler sets up an EBP frame
        
    hInstUser16 = LoadLibrary16("USER.EXE");
    if ( hInstUser16 < (HINSTANCE)32 )
    {
        printf( "LoadLibrary16() failed!\n" );
        return 1;
    }

    FreeLibrary16( hInstUser16 );   // Decrement the reference count

    pfnFreeSystemResources =
        (GFSR_PROC) GetProcAddress16(hInstUser16, "GetFreeSystemResources");
    if ( !pfnFreeSystemResources )
    {
        printf( "GetProcAddress16() failed!\n" );
        return 1;
    }
    
    __asm {
        push    GFSR_USERRESOURCES
        mov     edx, [pfnFreeSystemResources]
        call    QT_Thunk
        mov     [user_fsr], ax

        push    GFSR_GDIRESOURCES
        mov     edx, [pfnFreeSystemResources]
        call    QT_Thunk
        mov     [gdi_fsr], ax
    }

    printf( "USER FSR: %u%%  GDI FSR: %u%%\n", user_fsr, gdi_fsr );

    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -