最近想做一个文件图标修改器 
设计了下,程序分为两个部分 
1.提取图标 
2.修改图标
 
-------------------- 
修改图标部分已经做好了,但是我再提取图标这里遇到了麻烦.. 
网上说的提取图标的办法是利用ExtractIcon和DrawIcon实现的 
虽然可以把图标提权出来,但是提取出的却不是标准图标(32色的)--- 
提取出的ico文件是24色的... 
这种24色的ico是不可以用来修改EXE文件的图标的. 于是网上查了下,发现了问题所在: 
图标是EXE程序里的资源,如果要是利用DrawIcon来画图标的话,最后保存出来的就不是原来的资源了,导致色位发生了变化 
(提取资源貌似要用FindResource和LockResource等函数,我不会用晕..)网上关于VB提取程序的资源文章很少,找不到参考的资料,麻烦有这个代码或者知道如何做VB资源提取的朋友们指点下啊 ---------------------------------------------

解决方案 »

  1.   

    http://www.moon-soft.com/download/soft/852.htm
      

  2.   

    楼上的代码是利用ExtractIcon和DrawIcon把图标画出来的,这个代码我也有,不能提取出标准的图标来啊
      

  3.   

    vb编写图标提取器的代码!  
    http://hi.baidu.com/gui6666/blog/item/d7b72e7f67d3c80929388a04.html
      

  4.   

    gz
    应该不是很难
    知道PE结构就好办。
      

  5.   

    用UpdateResource修改EXE文件图标的成功源码(已修正)
    http://blog.vbgood.com/index.php/65763/action_viewspace_itemid_3130.html
    记个资料地址 
      

  6.   

    http://www.puritydate.com/download/ResView.rarhttp://www.puritydate.com/download/ResView.rar
    硬盘里面找到一个别人写好的代码
    希望对你有用
      

  7.   

      hModule = LoadLibraryEx(sLibName, 0, 1)
    Public Function GetDataArray(ByVal ResType As String, ByVal ResName As String) As Variant
       Dim hRsrc As Long
       Dim hGlobal As Long
       Dim arrData() As Byte
       Dim lpData As Long
       Dim arrSize As Long
       If IsNumeric(ResType) Then hRsrc = FindResourceByNum(hModule, ResName, CLng(ResType))
       If hRsrc = 0 Then hRsrc = FindResource(hModule, ResName, ResType)
       If hRsrc = 0 Then Exit Function
       hGlobal = LoadResource(hModule, hRsrc)
       lpData = LockResource(hGlobal)
       arrSize = SizeofResource(hModule, hRsrc)
       If arrSize = 0 Then Exit Function
       ReDim arrData(arrSize - 1)
       Call CopyMemory(arrData(0), ByVal lpData, arrSize)
       Call FreeResource(hGlobal)
       GetDataArray = arrData
    End FunctionPublic Sub SaveData(ByVal sFileName As String, arrData As Variant)
       Dim nFile As Integer
       Dim arr() As Byte
       arr = arrData
       nFile = FreeFile
       Open sFileName For Binary As #nFile
          Put #nFile, , arr
       Close #nFile
    End Sub     SaveData cdlg.FileName, srcArr关键代码
      

  8.   

    谢谢eslbs ,加分晚了点我= =