国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

windows應(yīng)用程序icon緩存、查看圖標(biāo)、icon制作方法

這篇具有很好參考價(jià)值的文章主要介紹了windows應(yīng)用程序icon緩存、查看圖標(biāo)、icon制作方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

windows程序圖標(biāo)緩存

在vs中替換c++程序的圖標(biāo)后,需要重新編譯,但是很多情況下都不會(huì)刷新,還是看到老的圖標(biāo),只能重啟電腦才能看到新的圖標(biāo)。

通過ChatGPT得到相關(guān)的回答如下:

如果在 Windows 上更換了可執(zhí)行文件 (.exe) 的圖標(biāo),但是在圖標(biāo)文件已經(jīng)更改的情況下仍然顯示舊的圖標(biāo),可能是因?yàn)?Windows 緩存了舊的圖標(biāo)。為了解決這個(gè)問題,可以嘗試以下步驟:

  1. 從可執(zhí)行文件的圖標(biāo)屬性中刪除圖標(biāo),保存并關(guān)閉。

  2. 重新打開文件的屬性對(duì)話框,選擇 "更改圖標(biāo)"。

  3. 選擇一個(gè)新的圖標(biāo)并保存更改。

  4. 如果圖標(biāo)仍然沒有更改,請(qǐng)嘗試重啟 Windows Explorer 進(jìn)程??梢栽谌蝿?wù)管理器中找到 "Windows Explorer" 進(jìn)程,右鍵單擊并選擇 "重啟"。

  5. 如果問題仍然存在,嘗試清除 Windows 圖標(biāo)緩存??梢园凑丈弦粋€(gè)問題中提到的步驟進(jìn)行操作。 一般情況下,以上步驟應(yīng)該可以解決更換圖標(biāo)后仍然顯示舊圖標(biāo)的問題。

但是以上方法都相對(duì)比較麻煩,那么有沒有更好的方法來確認(rèn)圖標(biāo)是否更換成功呢?


IconViewer

下載地址:Download IconViewer - MajorGeeks


使用方法

下載安裝后,需要重啟電腦才能生效,注意一定要重啟電腦才能生效。

選擇exe - 鼠標(biāo)右鍵 - 屬性 - 會(huì)增加一欄 icon,顯示exe的圖標(biāo)。

windows應(yīng)用程序icon緩存、查看圖標(biāo)、icon制作方法


icon制作方法

windows應(yīng)用程序的圖標(biāo)文件制作

原理:把不同尺寸的png合在一個(gè)ico文件中

下載Greenfish Icon Editor Pro 4.2,與老版本的操作方式類似,有多個(gè)圖層,注意不同的尺寸只需要一個(gè)圖層即可。

可以保存工程為模版,下次從模版中修改即可。


python腳本提取icon

從網(wǎng)上找到一段python腳本提取exe程序的圖標(biāo),python2與3理論上都可以使用。文章來源地址http://www.zghlxwxcb.cn/news/detail-629109.html

# -*- coding: GB18030 -*-

import os
import sys
import string
import pefile
import hashlib
import struct

def get_ico(argv_dic, group_dic):
    totalData, lastData, lastIconId = '', None, -1
    if group_dic[0]:
        resIcons = filter(lambda x: x.id==pefile.RESOURCE_TYPE['RT_ICON'], argv_dic['peobj'].DIRECTORY_ENTRY_RESOURCE.entries)       
        idCount = struct.unpack('H', group_dic[0][4:6])[0]      
        iconIds = set([struct.unpack('H', group_dic[0][i*14+18:i*14+20])[0] for i in xrange(idCount)])
        iconIdMap = dict([(struct.unpack('H', group_dic[0][i*14+18:i*14+20])[0], i) for i in xrange(idCount)])
        for resIcon in resIcons:
            if resIcon and hasattr(resIcon, 'directory'):
                for resId in resIcon.directory.entries:
                    if resId.id in iconIds:
                        lastIconId = resId.id
                    if hasattr(resId, 'directory'):
                        for resLang in resId.directory.entries:
                            lastData = argv_dic['peobj'].get_data(resLang.data.struct.OffsetToData, resLang.data.struct.Size)
                            if iconIdMap.has_key(resId.id) == False:
                                continue
                            iconIdx = iconIdMap[resId.id]
                            iconHeader = '\x00\x00\x01\x00\x01\x00' + group_dic[0][6 + iconIdx * 14:6 + iconIdx * 14 + 12] + '\x16\x00\x00\x00'
                            lastData = iconHeader + lastData   
                            totalData = totalData + lastData
                            
                    else:
                        lastData = argv_dic['peobj'].get_data(resId.data.struct.OffsetToData, resId.data.struct.Size)
                        iconIdx = iconIdMap[resId.id]
                        iconHeader = '\x00\x00\x01\x00\x01\x00' + group_dic[0][6 + iconIdx * 14:6 + iconIdx * 14 + 12] + '\x16\x00\x00\x00'
                        lastData = iconHeader + lastData
                        totalData = totalData + lastData

        md5obj = hashlib.md5()
        md5obj.update(totalData)
        path_filter = os.path.join(argv_dic['outdir'], md5obj.hexdigest())
        if os.path.exists(path_filter) == False:
            os.mkdir(path_filter)
            if argv_dic['if_makeico'] != 0:
                os.mkdir(os.path.join(path_filter, "ico")) 
                for resIcon in resIcons:
                    if resIcon and hasattr(resIcon, 'directory'):
                        for resId in resIcon.directory.entries:
                            if resId.id in iconIds:
                                lastIconId = resId.id
                            if hasattr(resId, 'directory'):
                                for resLang in resId.directory.entries:
                                    lastData = argv_dic['peobj'].get_data(resLang.data.struct.OffsetToData, resLang.data.struct.Size)
                                    if iconIdMap.has_key(resId.id) == False:
                                        continue
                                    iconIdx = iconIdMap[resId.id]
                                    iconHeader = '\x00\x00\x01\x00\x01\x00' + group_dic[0][6 + iconIdx * 14:6 + iconIdx * 14 + 12] + '\x16\x00\x00\x00'
                                    lastData = iconHeader + lastData
                                    
                                    md5obj = hashlib.md5()
                                    md5obj.update(lastData[22:])
                                    file_ico = open(os.path.join(path_filter, "ico", md5obj.hexdigest() + ".ico"), "wb+")
                                    file_ico.write(lastData)
                                    file_ico.close()
                                    print("hash.md5(pe.resources[i].offset, pe.resources[i].length) == \""+md5obj.hexdigest()+ "\" or")
                                    
                            else:
                                lastData = argv_dic['peobj'].get_data(resId.data.struct.OffsetToData, resId.data.struct.Size)
                                iconIdx = iconIdMap[resId.id]
                                iconHeader = '\x00\x00\x01\x00\x01\x00' + group_dic[0][6 + iconIdx * 14:6 + iconIdx * 14 + 12] + '\x16\x00\x00\x00'
                                lastData = iconHeader + lastData
                                file_ico = open(os.path.join(path_filter, "ico", md5obj.hexdigest() + ".ico"), "wb+")
                                file_ico.write(lastData)
                                file_ico.close()
                                print("hash.md5(pe.resources[i].offset, pe.resources[i].length) == \""+md5obj.hexdigest()+ "\" or")
        argv_dic['peobj'].close()
        os.rename(argv_dic['path_sample'], os.path.join(path_filter, os.path.basename(argv_dic['path_sample']) + ".exe"))
        return True
    argv_dic['peobj'].close()

def scan_ico(path_sample, outdir, if_makeico):   
    peobj = pefile.PE(path_sample)
    group_dic = {}
    if hasattr(peobj, 'DIRECTORY_ENTRY_RESOURCE'):
        resGroupIcon = filter(lambda x: x.id==pefile.RESOURCE_TYPE['RT_GROUP_ICON'], peobj.DIRECTORY_ENTRY_RESOURCE.entries)
        if len(resGroupIcon) > 0:
            for i in range(len(resGroupIcon)):
                resGroupIcon = resGroupIcon[i]
                if hasattr(resGroupIcon, 'directory'):
                    for resId in resGroupIcon.directory.entries:
                        if hasattr(resId, 'directory'):
                            for resLang in resId.directory.entries:
                                group_dic[0] = peobj.get_data(resLang.data.struct.OffsetToData, resLang.data.struct.Size)
                                return get_ico({'peobj':peobj, 'outdir':outdir, 'path_sample':path_sample, 'if_makeico':if_makeico}, group_dic)
                        else:
                            group_dic[0] = peobj.get_data(resId.data.struct.OffsetToData, resId.data.struct.Size)
                            return get_ico({'peobj':peobj, 'outdir':outdir, 'path_sample':path_sample, 'if_makeico':if_makeico}, group_dic)
                else:
                    peobj.close()
        else:
            peobj.close()
    else:
        peobj.close()
    
def plan():
    #這里你可傳參,我先幫你寫死了
    if len(sys.argv) > 1:
        path_sample = sys.argv[1]
    if len(sys.argv) > 2:
        outdir = sys.argv[2] 
    if len(sys.argv) > 3:
        if_makeico = int(sys.argv[3])
    if_sucess = False
    try:
        path_sample = r"D:\xx\xx.exe"#也可以指定一個(gè)完整的路徑
        outdir = "./"
        if_makeico = 1
        if_sucess = scan_ico(path_sample, outdir, if_makeico)
    except Exception,e:
        if str(e).find("Error") != -1:
            print path_sample + " scan ico failed."
        return
    if if_sucess != True:
        os.rename(path_sample, os.path.join(outdir, "no_find_ico", os.path.basename(path_sample) + ".exe"))

if __name__ == '__main__':
    plan() #任務(wù)開始

到了這里,關(guān)于windows應(yīng)用程序icon緩存、查看圖標(biāo)、icon制作方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Deepin/UOS Linux 桌面自定義 IDEA/DataGrip 應(yīng)用程序圖標(biāo)

    Deepin/UOS Linux 桌面自定義 IDEA/DataGrip 應(yīng)用程序圖標(biāo)

    在 $HOME/Desktop 目錄下編輯 vim jetbrains.intelij.idea.desktop vim jetbrains.datagrip.desktop 我們下期見,拜拜!

    2024年02月16日
    瀏覽(48)
  • 使用PyInstaller將pyqt應(yīng)用轉(zhuǎn)換為exe程序,并設(shè)置圖標(biāo)

    在PyInstaller中, -i 選項(xiàng)用于指定生成的可執(zhí)行文件的圖標(biāo)文件。通過使用 -i 選項(xiàng),可以將一個(gè)圖標(biāo)文件與生成的可執(zhí)行文件關(guān)聯(lián)起來,使得可執(zhí)行文件在操作系統(tǒng)中顯示指定的圖標(biāo)。 具體使用方法如下: 其中, 圖標(biāo)文件路徑 是要指定的圖標(biāo)文件的路徑,可以是ICO格式的圖

    2024年02月14日
    瀏覽(20)
  • 查看ios 應(yīng)用程序性能

    查看ios 應(yīng)用程序性能

    目錄 摘要 前言 性能概括 CPU內(nèi)存監(jiān)控 內(nèi)存監(jiān)控 磁盤監(jiān)控 網(wǎng)絡(luò)監(jiān)控 GPU fps 本篇博文將介紹一款重量級(jí)性能測試工具——克魔助手,針對(duì)iOS應(yīng)用程序的性能監(jiān)控進(jìn)行詳細(xì)介紹。通過克魔助手,開發(fā)者可以方便地查看應(yīng)用程序的CPU、內(nèi)存、GPU性能情況,以及網(wǎng)絡(luò)監(jiān)控和抓包等功能

    2024年02月03日
    瀏覽(24)
  • 優(yōu)化您的Spring應(yīng)用程序:緩存注解的精要指南

    當(dāng)我們構(gòu)建和運(yùn)行Spring應(yīng)用程序時(shí),通常面臨一個(gè)共同的挑戰(zhàn):性能。無論是為了提供更快的響應(yīng)時(shí)間、更高的并發(fā)處理能力,還是為了降低數(shù)據(jù)庫或外部服務(wù)的負(fù)載,性能優(yōu)化一直是開發(fā)人員和系統(tǒng)管理員的關(guān)注焦點(diǎn)。 在本篇博客中,我們將深入研究Spring的 @Cacheable 、 @

    2024年02月07日
    瀏覽(28)
  • 【溫故而知新】HTML5 應(yīng)用程序緩存

    HTML5是HTML的最新版本,它引入了許多新的元素和功能,以適應(yīng)現(xiàn)代網(wǎng)頁開發(fā)的需求。以下是HTML5的一些主要特點(diǎn): 新增語義元素 :HTML5引入了許多新的語義元素,如 header、footer、article、section 等,這些元素有助于提高網(wǎng)頁的結(jié)構(gòu)化和可訪問性。 媒體支持 :HTML5引入了 audio 和

    2024年01月23日
    瀏覽(95)
  • 極速Python編程:利用緩存加速你的應(yīng)用程序

    在軟件開發(fā)中,緩存是一種常用的技術(shù),用于提高系統(tǒng)性能和響應(yīng)速度。Python提供了多種緩存技術(shù)和庫,使我們能夠輕松地實(shí)現(xiàn)緩存功能。本文將帶您從入門到精通,逐步介紹Python中的緩存使用方法,并提供實(shí)例演示。 緩存基礎(chǔ)知識(shí) 什么是緩存 緩存的工作原理 緩存的優(yōu)勢和

    2024年02月16日
    瀏覽(18)
  • 輕松搞定Spring集成緩存,讓你的應(yīng)用程序飛起來!

    輕松搞定Spring集成緩存,讓你的應(yīng)用程序飛起來!

    主頁傳送門:?? 傳送 ??Spring 提供了對(duì)緩存的支持,允許你將數(shù)據(jù)存儲(chǔ)在緩存中以提高應(yīng)用程序的性能。Spring 緩存抽象基于 Java Caching API,但提供了更簡單的編程模型和更高級(jí)的功能。 ??Spring 集成緩存提供了一種方便的方式來使用緩存,從而提高應(yīng)用程序的性能。Spr

    2024年02月07日
    瀏覽(24)
  • Caching the Application Engine Server 緩存應(yīng)用程序引擎服務(wù)器

    Caching the Application Engine Server 緩存應(yīng)用程序引擎服務(wù)器

    Caching the Application Engine Server 緩存應(yīng)用程序引擎服務(wù)器 Application Engine caches metadata just like the application server. This caching enhances performance because a program can refer to the local cache for any objects that it uses. 應(yīng)用程序引擎會(huì)像應(yīng)用程序服務(wù)器一樣緩存元數(shù)據(jù)。這種緩存提高了性能,因?yàn)槌绦?/p>

    2024年02月19日
    瀏覽(15)
  • C#程序設(shè)計(jì)——Windows應(yīng)用程序開發(fā),1、初步掌握Windows應(yīng)用程序的設(shè)計(jì)方法。2、掌握常用窗體控件的使用方法。

    C#程序設(shè)計(jì)——Windows應(yīng)用程序開發(fā),1、初步掌握Windows應(yīng)用程序的設(shè)計(jì)方法。2、掌握常用窗體控件的使用方法。

    初步掌握Windows應(yīng)用程序的設(shè)計(jì)方法。 掌握常用窗體控件的使用方法。 1、設(shè)計(jì)一個(gè)Windows應(yīng)用程序,創(chuàng)建一個(gè)用于添加學(xué)生個(gè)人基本信息的窗體,窗體下方法同時(shí)滾動(dòng)信息“天行健,君子以自強(qiáng)不息!”。 ? 要示如下: 如圖1所示,設(shè)計(jì)窗體界面控件的布局 圖1 學(xué)生信息管理

    2024年02月10日
    瀏覽(39)
  • 微信小程序項(xiàng)目中使用icon圖標(biāo)

    微信小程序項(xiàng)目中使用icon圖標(biāo)

    效果: 步驟: 1、先讓ui負(fù)責(zé)人把你的賬號(hào)加入到項(xiàng)目中,加入到項(xiàng)目中后就可以在icon圖標(biāo)庫中看到該項(xiàng)目 2、在小程序中使用 新建一個(gè)view,在上面加一個(gè)class,復(fù)制icon名字上去即可,注意格式,格式為iconfont icon名。 iconfont這個(gè)前綴不是固定的,根據(jù)icon名字來,icon的前綴為

    2024年02月11日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包