热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

C语言 码拜 8年前 (2016-04-16) 1047次浏览
#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32")
#pragma comment(lib,"shell32")
#include <windows.h>
#include <Shlwapi.h>
#include <shlobj.h>
#include <stdio.h>
struct CONSOLE_FONT{ DWORD index; COORD dim;};
typedef BOOL  (WINAPI *PROCSETCONSOLEFONT         )(HANDLE, DWORD);
typedef BOOL  (WINAPI *PROCGETCONSOLEFONTINFO     )(HANDLE,BOOL,DWORD,CONSOLE_FONT*);
typedef COORD (WINAPI *PROCGETCONSOLEFONTSIZE     )(HANDLE,DWORD);
typedef DWORD (WINAPI *PROCGETNUMBEROFCONSOLEFONTS)();
typedef BOOL  (WINAPI *PROCGETCURRENTCONSOLEFONT  )(HANDLE,BOOL,CONSOLE_FONT*);
PROCSETCONSOLEFONT          SetConsoleFont;
PROCGETCONSOLEFONTINFO      GetConsoleFontInfo;
PROCGETCONSOLEFONTSIZE      GetConsoleFontSize;
PROCGETNUMBEROFCONSOLEFONTS GetNumberOfConsoleFonts;
PROCGETCURRENTCONSOLEFONT   GetCurrentConsoleFont;
extern "C" HWND WINAPI GetConsoleWindow();
int main(int argc, char *argv[]) {
    //然后在程序启动的时候进行载入:
    HMODULE hKernel32 = GetModuleHandle("kernel32");
    SetConsoleFont          = (PROCSETCONSOLEFONT         )GetProcAddress(hKernel32,"SetConsoleFont"         );
    GetConsoleFontInfo      = (PROCGETCONSOLEFONTINFO     )GetProcAddress(hKernel32,"GetConsoleFontInfo"     );
    GetConsoleFontSize      = (PROCGETCONSOLEFONTSIZE     )GetProcAddress(hKernel32,"GetConsoleFontSize"     );
    GetNumberOfConsoleFonts = (PROCGETNUMBEROFCONSOLEFONTS)GetProcAddress(hKernel32,"GetNumberOfConsoleFonts");
    GetCurrentConsoleFont   = (PROCGETCURRENTCONSOLEFONT  )GetProcAddress(hKernel32,"GetCurrentConsoleFont"  );
    //载入完毕之后,就可以进行编程对字体大小控制了。
    int NumOfFont,i,X=0,Y=0,IconIndex=0;
    char *IconFile=NULL;
    NumOfFont = GetNumberOfConsoleFonts();
    CONSOLE_FONT *fonts = new CONSOLE_FONT[NumOfFont];
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleFontInfo(hConsole, 0, NumOfFont, fonts);
    if (argc==1) {
        printf("Set Console FontSize and Icon. Designed by zhao4zhong1@163.com 2015-07-10\n");
        printf("Usage: %s [XxY] [IconFile] [IconIndex]\n",argv[0]);
        printf("May availible Font Size:\n X x  Y\n-- x --\n");
    }
    if (argc==2) {
        if (2!=sscanf(argv[1],"%dx%d",&X,&Y))
        IconFile=argv[1];
    } else if (argc==3) {
        if (2!=sscanf(argv[1],"%dx%d",&X,&Y)) {
            IconFile=argv[1];
            sscanf(argv[2],"%d",&IconIndex);
        } else {
            IconFile=argv[2];
        }
    } else if (argc==4) {
        sscanf(argv[1],"%dx%d",&X,&Y);
        IconFile=argv[2];
        sscanf(argv[3],"%d",&IconIndex);
    }
    if (IconFile) {
        HWND hwnd=GetConsoleWindow();
        if (hwnd) {
            HICON hIconS=NULL;
            if (1<=ExtractIconEx(IconFile,IconIndex,NULL,&hIconS,1)) {
                if (hIconS) {
                    SendMessage(hwnd,WM_SETICON,ICON_SMALL,(LPARAM)hIconS);
//                  DestroyIcon(hIconS);
                }
                SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, NULL, NULL);//更新任务栏上的图标
            }
        }
    }
    for (i=0;i<NumOfFont;i++) {
        fonts[i].dim = GetConsoleFontSize(hConsole, fonts[i].index);
//      if (argc==1) printf("%2d x %2d %d %d\n",fonts[i].dim.X,fonts[i].dim.Y,i,fonts[i].index);
        if (argc==1) printf("%2d x %2d\n",fonts[i].dim.X,fonts[i].dim.Y);
        if (fonts[i].dim.X == X && fonts[i].dim.Y == Y) {
            SetConsoleFont(hConsole, fonts[i].index);
            break;
        }
    }
    delete[] fonts;
    return 0;
}
解决方案

8

顶起来,分分分分分

8

First !!热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

8

8000大关……热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

8

热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码 必须赞,必须赞~

8

前排留名学习

16

学习学习热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

8

顶顶顶    。

8

就不关注你  热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

8

喜大普奔。顶赵老湿

16

是不是送钱的

8

接分接分接分

8

恭喜恭喜,接分了。

8

赵老师v587热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

8

echo 顶

8

一直都用资源文件设图标

8

热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

8

虽然本人多不关注别人, 也不看被关注, 不过8000…热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

8

恭喜赵四老师!

16

恭喜赵四老师

7

顶赵老师,热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

7

爷的小号建了7999个就为了关注你,给分吧。

7

赵老师,给你增加点人气。赞一个 赞一个 赞一个

7

 又来接分咯热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

7

恭喜题主,接分!

7

恭喜题主,躺下接分

7

离10000不远了热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

7

那些都是本人小号,你不信,看本人换一个号,发同样的内容热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

7

恭喜恭喜热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

7

多谢赵老师的帮忙!

7

热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

7

这!你老板要是看到了会怎么想?热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

7

热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

7

赵4老死 膜拜

7

说好的分呢热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

7

用你的分砸死本人吧,网脸上砸,别客气!

6

同楼上。

6

菜鸟来接分了热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

6

热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码接分接分

6

没有看到分呀

6

支持分享。
热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码

6

希望还没来晚

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明热烈庆祝本人受关注人数即将突破8000大关!散分!+设置终端图标和字体大小C源代码
喜欢 (0)
[1034331897@qq.com]
分享 (0)