Сайт для программистов

воскресенье, 31 октября 2010 г.

ExtractAssociatedIcon

C помощью системной функции Windows API ExtractAssociatedIcon можно извлечь значок, ассоциированный с файлом. Значки возвращаются с размером 32х32.

[C#]
[DllImport("shell32.dll")]
static extern IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath,
out ushort lpiIcon);

или

[DllImport("shell32.dll")]
static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);


Пример



// Отобразим значок какого-нибудь файла
// Добавим в проект элемент OpenFileDialog, кнопку и PictureBox

openFileDialog1.ShowDialog();

ushort uicon;
StringBuilder strB = new StringBuilder(openFileDialog1.FileName);
IntPtr handle = ExtractAssociatedIcon(this.Handle, strB, out uicon);
Icon ico = Icon.FromHandle(handle);

pictureBox1.Image = ico.ToBitmap();


Запустите проект и выберите любой файл на диске. На форме в PictureBox отобразится значок, который используется для выбранного файла (как это мы видим в Проводники).

Описание функции и ее параметров добавлено в справочник по функциям Windows API для .NET Framework.

К слову сказать, совсем не обязательно использовать неуправлямый код. В .NET Framework есть метод Icon.ExtractAssociatedIcon пространства имен System.Drawing, который делает ту же работу.



Добавьте в проект еще одну кнопку и напишите следующий код:

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Icon icon = Icon.ExtractAssociatedIcon(openFileDialog1.FileName);
this.Icon = icon;
pictureBox1.Image = icon.ToBitmap();
}


Удачного вам программирования!

суббота, 30 октября 2010 г.

Разлочка эмулятора Windows Phone 7

Эмулятор Windows Phone 7, который входит в состав Windows Phone Developer Tools, какой-то обрезанный. Непонятно, зачем Микрософт пошла на такой шаг. Доступен только Internet Explorer и собственные приложения, создаваемые в Visual Studio. К счастью, нашлись умельцы, которые сумели разлочить эмулятор, отредактировав его файл. Файл можно найти в интернете по слову WM70C1.en-US.unlocked. Я скачивал отсюда.
Скачайте файл и перенесите его в папку %programfiles%\Microsoft SDKs\Windows Phone\v7.0\Emulation\Images\. В этой папке вы найдет образ оригинального эмулятора (файл WM70C1.en-US.bin). Далее переименуйте оригинальный файл эмулятора и сохраните его на всякий случай. Теперь переименуйте ваш скачанный файл, чтобы он имел нужное имя. Запустите какой-нибуль проект на Visual Studio. Ваше приложение запустится в новом эмуляторе.
Закройте свое приложение и просмотрите новый вид разлоченного эмулятора. Небо и земля. Естественно, вы все делаете на свой страх и риск. Я никаких сбоев не заметил, все работает.

Скриншоты






Видео




Пользуйтесь на здоровье.