आप shell32.dll से आइकन कैसे प्राप्त करते हैं?

मैं होमग्राउन ऐप के लिए उपयोग करने के लिए ट्री आइकन प्राप्त करना चाहता हूं। क्या किसी को पता है कि छवियों को .icon फ़ाइलों के रूप में निकालने का तरीका कैसे है? मुझे 16x16 और 32x32 दोनों चाहिए, या मैं बस एक स्क्रीन कैप्चर करना चाहता हूं।

0
ro fr bn
ध्यान दें कि ऐसा करना लाइसेंस का उल्लंघन है। "जबकि सॉफ्टवेयर चल रहा है, आप इसका उपयोग कर सकते हैं लेकिन अपने आइकन, छवियों, ध्वनियों और मीडिया को साझा नहीं कर सकते हैं।"
जोड़ा लेखक Raymond Chen, स्रोत

10 उत्तर

विजुअल स्टूडियो में, "फ़ाइल खोलें ..." फिर "फ़ाइल ..." चुनें। फिर Shell32.dll चुनें। एक फ़ोल्डर पेड़ खोला जाना चाहिए, और आपको "आइकन" फ़ोल्डर में आइकन मिलेंगे।

एक आइकन को सहेजने के लिए, आप फ़ोल्डर पेड़ में आइकन पर राइट-क्लिक कर सकते हैं और "निर्यात" चुन सकते हैं।

0
जोड़ा
@ बागोरोलिन यहां एक आसान कुंजी है glennslayden.com/code/shell32_icons.jpg
जोड़ा लेखक Colonel Panic, स्रोत
नोट Googlers पर, यह अब VS2017 में काम नहीं करता है, बस डिबगिंग के दौरान अपवाद विवरण विंडो की तरह
जोड़ा लेखक MickyD, स्रोत
जब मैं इसका उपयोग करता हूं तो मेरे पास केवल यह फ़ोल्डर पेड़ होता है और सभी आइकन सूचीबद्ध होते हैं लेकिन पूर्वावलोकन के बिना और शीर्षक सहायक नहीं होते हैं (1, 10, 1001, ..) क्या कोई पूर्वावलोकन प्राप्त करने का कोई तरीका है या मेरे पास वास्तव में है सभी प्रतीक खोलने के लिए?
जोड़ा लेखक Bagorolin, स्रोत

एक और विकल्प ResourceHacker जैसे टूल का उपयोग करना है। यह सिर्फ आइकन से भी अधिक तरीके से संभालता है। चीयर्स!

0
जोड़ा
मैंने संसाधन हैकर का उपयोग करने की कोशिश की, लेकिन प्रत्येक आइकन में 12 डुप्लिकेट हैं (विभिन्न आकारों के साथ)।
जोड़ा लेखक HighTechProgramming15, स्रोत

यदि आप लिनक्स पर हैं, तो आप Windows DLL से gExtractWinIcons के साथ आइकन निकाल सकते हैं। यह gextractwinicons पैकेज में उबंटू और डेबियन में उपलब्ध है।

इस ब्लॉग आलेख में स्क्रीनशॉट और संक्षिप्त स्पष्टीकरण

0
जोड़ा

Resources Extract is another tool that will recursively find icons from a lot of DLLs, very handy IMO.

0
जोड़ा

बस DLL को IrfanView के साथ खोलें और परिणाम को .gif या .jpg के रूप में सहेजें।

मुझे पता है कि यह सवाल पुराना है, लेकिन यह "Google से निकालने वाले आइकन" से दूसरी Google हिट है, मैं अपने वर्कस्टेशन पर कुछ भी इंस्टॉल करने से बचना चाहता था और मुझे याद आया कि मैं इरफान व्यू का उपयोग करता हूं।

0
जोड़ा

आप फ्रीवेयर संसाधन हैकर डाउनलोड कर सकते हैं और फिर नीचे दिए गए निर्देशों का पालन करें:

  1. किसी भी डीएलएल फ़ाइल को खोलें जिसे आप आइकन ढूंढना चाहते हैं।
  2. विशिष्ट आइकन खोजने के लिए फ़ोल्डर ब्राउज़ करें।
  3. मेनू बार से, 'एक्शन' चुनें और फिर 'सेव करें'।
  4. .ico फ़ाइल के लिए गंतव्य का चयन करें।

Reference : http://techsultan.com/how-to-extract-icons-from-windows-7/

0
जोड़ा

मुझे shell32.dll से आइकन # 238 निकालने की आवश्यकता थी और विजुअल स्टूडियो या रिसोर्सहेकर डाउनलोड नहीं करना चाहता था, इसलिए मुझे तकनीक से कुछ पावरशेल स्क्रिप्ट मिलीं (धन्यवाद जॉन ग्रेफेल और # https://social.technet.microsoft। कॉम/फ़ोरम/विंडोज़ सर्वर/एन-यूएस/16444 सी 7 ए-एड 61-44 ए 7-8c6f-b8d619381a27/उपयोग-आइकन-इन-पावरहेल-स्क्रिप्ट्स? फोरम = winserverpowershell ) जिसने कुछ ऐसा किया और एक नई स्क्रिप्ट बनाई (नीचे) मेरी जरूरतों के अनुसार।

मेरे द्वारा दर्ज पैरामीटर (स्रोत डीएलएल पथ, लक्ष्य आइकन फ़ाइल नाम और डीएलएल फ़ाइल के भीतर आइकन इंडेक्स थे):

C: \ Windows \ System32 \ shell32.dll

C: \ अस्थायी \ Restart.ico

238

I discovered the icon index that I needed was #238 by trial and error by temporarily creating a new shortcut (right-click on your desktop and select New --> Shortcut and type in calc and press Enter twice). Then right-click the new shortcut and select Properties then click 'Change Icon' button in the Shortcut tab. Paste in path C: \ Windows \ System32 \ shell32.dll and click OK. Find the icon you wish to use and work out its index. NB: Index #2 is beneath #1 and not to its right. Icon index #5 was at the top of column two on my Windows 7 x64 machine.

अगर किसी के पास एक बेहतर तरीका है जो समान रूप से काम करता है लेकिन उच्च गुणवत्ता वाले आइकन प्राप्त करता है तो मुझे इसके बारे में सुनने में दिलचस्पी होगी। धन्यवाद, शॉन।

#Windows PowerShell Code###########################################################################
# http://gallery.technet.microsoft.com/scriptcenter/Icon-Exporter-e372fe70
#
# AUTHOR: John Grenfell
#
###########################################################################

<#
.SYNOPSIS
   Exports an ico and bmp file from a given source to a given destination
.Description
   You need to set the Source and Destination locations. First version of a script, I found other examples but all I wanted to do as grab and ico file from an exe but found getting a bmp useful. Others might find useful
   No error checking I'm afraid so make sure your source and destination locations exist!
.EXAMPLE
    .\Icon_Exporter.ps1
.Notes
        Version HISTORY:
        1.1 2012.03.8
#>
Param ( [parameter(Mandatory = $true)][string] $SourceEXEFilePath,
        [parameter(Mandatory = $true)][string] $TargetIconFilePath
)
CLS
#"shell32.dll" 238
If ($SourceEXEFilePath.ToLower().Contains(".dll")) {
    $IconIndexNo = Read-Host "Enter the icon index: "
    $Icon = [System.IconExtractor]::Extract($SourceEXEFilePath, $IconIndexNo, $true)    
} Else {
    [void][Reflection.Assembly]::LoadWithPartialName("System.Drawing")
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
    $image = [System.Drawing.Icon]::ExtractAssociatedIcon("$($SourceEXEFilePath)").ToBitmap()
    $bitmap = new-object System.Drawing.Bitmap $image
    $bitmap.SetResolution(72,72)
    $icon = [System.Drawing.Icon]::FromHandle($bitmap.GetHicon())
}
$stream = [System.IO.File]::OpenWrite("$($TargetIconFilePath)")
$icon.save($stream)
$stream.close()
Write-Host "Icon file can be found at $TargetIconFilePath"
0
जोड़ा
महान विधि लेकिन यह मेरे लिए काम नहीं करता है। मैं विंडोज 7x64 पर हूं जिस पर स्क्रिप्ट को काम करने की पुष्टि की जाती है। लेकिन मुझे System.NDrawing.Icon और System.Drawing.Bitmap के लिए TypeNotFound त्रुटियां मिलती हैं। मेरी पीएस-स्क्रिप्ट चलाने की पहली कोशिश है तो शायद मैं कुछ गलत करूँ?
जोड़ा लेखक Danny Lo, स्रोत
ठीक है, मुझे बस Add-type -AssemblyName System निष्पादित करने की आवश्यकता है। पहले <ड्रॉइंग
जोड़ा लेखक Danny Lo, स्रोत
बाकी की तुलना में कहीं अधिक उपयोगी उत्तर।
जोड़ा लेखक slashp, स्रोत

ऊपर दिए गए समाधान का एक अद्यतन संस्करण यहां दिया गया है। मैंने एक लापता असेंबली जो एक लिंक में दफनाया गया था। Novices समझ में नहीं आता है। यह नमूना बिना संशोधन के चलाएगा।

    <#
.SYNOPSIS
    Exports an ico and bmp file from a given source to a given destination
.Description
    You need to set the Source and Destination locations. First version of a script, I found other examples 
    but all I wanted to do as grab and ico file from an exe but found getting a bmp useful. Others might find useful
.EXAMPLE
    This will run but will nag you for input
    .\Icon_Exporter.ps1
.EXAMPLE
    this will default to shell32.dll automatically for -SourceEXEFilePath
    .\Icon_Exporter.ps1 -TargetIconFilePath 'C:\temp\Myicon.ico' -IconIndexNo 238
.EXAMPLE
    This will give you a green tree icon (press F5 for windows to refresh Windows explorer)
    .\Icon_Exporter.ps1 -SourceEXEFilePath 'C:/Windows/system32/shell32.dll' -TargetIconFilePath 'C:\temp\Myicon.ico' -IconIndexNo 41

.Notes
    Based on http://stackoverflow.com/questions/8435/how-do-you-get-the-icons-out-of-shell32-dll Version 1.1 2012.03.8
    New version: Version 1.2 2015.11.20 (Added missing custom assembly and some error checking for novices)
#>
Param ( 
    [parameter(Mandatory = $true)]
    [string] $SourceEXEFilePath = 'C:/Windows/system32/shell32.dll',
    [parameter(Mandatory = $true)]
    [string] $TargetIconFilePath,
    [parameter(Mandatory = $False)]
    [Int32]$IconIndexNo = 0
)

#https://social.technet.microsoft.com/Forums/windowsserver/en-US/16444c7a-ad61-44a7-8c6f-b8d619381a27/using-icons-in-powershell-scripts?forum=winserverpowershell
$code = @"
using System;
using System.Drawing;
using System.Runtime.InteropServices;

namespace System
{
    public class IconExtractor
    {

     public static Icon Extract(string file, int number, bool largeIcon)
     {
      IntPtr large;
      IntPtr small;
      ExtractIconEx(file, number, out large, out small, 1);
      try
      {
       return Icon.FromHandle(largeIcon ? large : small);
      }
      catch
      {
       return null;
      }

     }
     [DllImport("Shell32.dll", EntryPoint = "ExtractIconExW", CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
     private static extern int ExtractIconEx(string sFile, int iIndex, out IntPtr piLargeVersion, out IntPtr piSmallVersion, int amountIcons);

    }
}
"@

If  (-not (Test-path -Path $SourceEXEFilePath -ErrorAction SilentlyContinue ) ) {
    Throw "Source file [$SourceEXEFilePath] does not exist!"
}

[String]$TargetIconFilefolder = [System.IO.Path]::GetDirectoryName($TargetIconFilePath) 
If  (-not (Test-path -Path $TargetIconFilefolder -ErrorAction SilentlyContinue ) ) {
    Throw "Target folder [$TargetIconFilefolder] does not exist!"
}

Try {
    If ($SourceEXEFilePath.ToLower().Contains(".dll")) {
        Add-Type -TypeDefinition $code -ReferencedAssemblies System.Drawing
        $form = New-Object System.Windows.Forms.Form
        $Icon = [System.IconExtractor]::Extract($SourceEXEFilePath, $IconIndexNo, $true)    
    } Else {
        [void][Reflection.Assembly]::LoadWithPartialName("System.Drawing")
        [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
        $image = [System.Drawing.Icon]::ExtractAssociatedIcon("$($SourceEXEFilePath)").ToBitmap()
        $bitmap = new-object System.Drawing.Bitmap $image
        $bitmap.SetResolution(72,72)
        $icon = [System.Drawing.Icon]::FromHandle($bitmap.GetHicon())
    }
} Catch {
    Throw "Error extracting ICO file"
}

Try {
    $stream = [System.IO.File]::OpenWrite("$($TargetIconFilePath)")
    $icon.save($stream)
    $stream.close()
} Catch {
    Throw "Error saving ICO file [$TargetIconFilePath]"
}
Write-Host "Icon file can be found at [$TargetIconFilePath]"
0
जोड़ा

अगर कोई आसान तरीका ढूंढ रहा है, तो shell32.dll को अनजिप करने के लिए बस 7zip का उपयोग करें और फ़ोल्डर को देखें। एसआरसी/आईसीओएन /

0
जोड़ा
'rsrc/ICON/अब पर, सही धन्यवाद काम करता है
जोड़ा लेखक J-Dizzle, स्रोत
हां, मैं 7-ज़िप "खुले संग्रह" फ़ंक्शन का बहुत उपयोग करता हूं।
जोड़ा लेखक Niek, स्रोत
7Zip नहीं मिला है, लेकिन WinRAR में यह कोशिश की और कहा कि खोलने के लिए कोई संग्रह नहीं है।
जोड़ा लेखक Hashim, स्रोत
shell32.7z का नाम बदलें, फिर इसे 7-ज़िप, Peazip, या अपने अन्य Fav संपीड़न उपकरण के साथ खोलने का प्रयास करें
जोड़ा लेखक ronaldwidha, स्रोत
यह स्वीकार्य उत्तर होना चाहिए क्योंकि यह आसान और काम करता है।
जोड़ा लेखक Marco7757, स्रोत

There is also this resource available, the Visual Studio Image Library, which "can be used to create applications that look visually consistent with Microsoft software", presumably subject to the licensing given at the bottom. https://www.microsoft.com/en-ca/download/details.aspx?id=35825

0
जोड़ा