Embed Win32 resources in C# programs

Questa non la sapevo ed è stata una scoperta interessante e molto utile.

Internet Explorer supporta diversi protocolli, tra cui il protocollo res (Qui un articolo interessante del lontano gennaio 1999 di Dino Esposito). Il protocollo res consente di estrarre una risorsa Win32 da una dll o da un eseguibile. Quindi, se per esempio abbiamo un'applicazione che ospita Internet Explorer (ad es. IMHO Smile che strizza l'occhio ), possiamo dare in pasto al browser qualsiasi tipo di file senza renderlo facilmente fruibile e modificabile dall'utente (ad esempio un'immagine, un foglio di stile, del codice javascript). Questo semplicemente linkando la risorsa con la seguente sintassi:

res://[posizioneFisicaDelFileContenenteLaRisorsa]/[TipoDiRisorsa]/[NomeDellaRisorsa]

Quindi, ad esempio:

<img src="res://c:\Programmi\MioProgramma\Sample.dll/GIF/Logo.gif">

Rimane solo una questione... come includere una risorsa Win32 in un eseguibile/assembly .net?

Vi sono tre strade:

  1. Creando un file RES con il Resource Compiler e includendolo nell'exe/dll con il parametro di compilazione /win32res
  2. Aprendo l'eseguibile/assembly con visual studio (Resource Editor) e aggiungendo le risorse
  3. Utilizzando un software free come suggerito da questo articolo (del lontano dicembre 2002... ma dove sono stato tutto questo tempo?!?)

Personalmente, dopo aver provato la seconda (il resources editor di vs risulta poco funzionale), ho optato per la terza ipotesi.

powered by IMHO 1.2 with Emoticon Formatter

Print | posted on giovedì 31 marzo 2005 11:41

Copyright © Gabriele Gaggi

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski