低版本Delphi 控制台程序设置图标、版本信息

在低版本Delphi,如 Delphi2007下,Console程序默认是无法设置图标、版本信息的。

设置版本信息,需要引入资源文件,所以在dpr中添加 {$R *.res} 语句就可以了。

但这样,图标的设置界面仍然是不可用,有几种解决办法:

  • API设置程序图标

    SetConsoleIcon 

 1 void ChangeIcon( const HICON hNewIcon )
 2 {
 3    // Load kernel 32 library
 4    HMODULE hMod = LoadLibrary( _T( "Kernel32.dll" ));
 5    ASSERT( hMod );
 6 
 7    // Load console icon changing procedure
 8    typedef DWORD ( __stdcall *SCI )( HICON );
 9    SCI pfnSetConsoleIcon = reinterpret_cast<sci>( GetProcAddress( hMod, "SetConsoleIcon" ));
10    ASSERT( pfnSetConsoleIcon );
11 
12    // Call function to change icon
13    pfnSetConsoleIcon( hNewIcon );
14 
15    FreeLibrary( hMod );
16 }// End ChangeIcon
17 
18 // Main function
19 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
20 {
21    int nRetCode = 0;
22 
23    HMODULE hMainMod = GetModuleHandle( 0 );
24    ASSERT( hMainMod );
25 
26    HICON hMainIcon = ::LoadIcon( hMainMod, MAKEINTRESOURCE( IDI_ICON3 ));
27    ASSERT( hMainIcon );
28 
29    // Change main window icon
30    ChangeIcon( hMainIcon );
31 
32    // To reset to old icon uncomment this code
33    // ChangeIcon( 0 );
34 
35    return nRetCode;
36 }
  • 激活图标设置项

   uses 中添加 Forms

   代码中添加 Application.Run;

   此时已经可以设置图标了,设置后,再去掉这两行,这个时候查看图标设置项又变成不可用的,但程序已经设置上了图标。

 

  其他版本的情况,参见这个讨论的帖子 https://stackoverflow.com/questions/1627526/change-icon-for-a-delphi-console-application

 

posted @ 2020-12-17 10:23  prograys  阅读(295)  评论(0)    收藏  举报