.NET библиотека для получения системных иконок ассоциированных с файлом, папкой или диском.



Очень удобны, например доя построения дерева, как в Windows Explorer и для многого другого.

Пример получения иконки:

var geAssociatedtIcon = AssociatedIcon.AssociatedIcon.Get(@«D:\», IconSize.Large);
if (geAssociatedtIcon != null) pictureBox1.Image = geAssociatedtIcon.ToBitmap();

Вернет в pictureBox иконку диска D.

Купить: 50 руб.

Библиотека для получения котировок валют ЦБ РФ

Предлагаю Вашему вниманию библиотеку для получения котировок валют Центрального Банка Российской Федерации.

Качаем тут.

Использовать так:


ExchangeRates er = new ExchangeRates(DateTime.Now); //передаем любую дату в формате DateTime
ExchangeRates.CurrencyResult res = new ExchangeRates.CurrencyResult();

//получаем результат в виде структуры для выбранной валюты
er.GetCurrencyRate(ref res, ExchangeRatesWWWCBRRU.ExchangeRates.erCurrency.USD);

MessageBox.Show(res.latterCode.ToString() + "\r\n" + res.currecyName + "\r\n" + res.units.ToString() + "\r\n" + res.rate.ToString());

Передача HBitmap из dll на Delphi в приложение на C#

Есть библиотека на Delphi. У нее функция, которая рисует изображение и возвращает его HBitmap:

function TRGOpenHandle(FileName:PAnsiChar; Release:boolean):LongWord; stdcall; export;
begin
if FActive then
  begin
    try
    TRG.Clear;
    TRG.ClearBackground;
    TRG.LoadFromFile(FileName);
    TRG.ClearBackground;
    if Release then result:=TRG.Image.Picture.Bitmap.ReleaseHandle
    else            result:=TRG.Image.Picture.Bitmap.Handle;
    except on E:Exception do
      begin
      MessageBox(0, PAnsiChar(E.Message), 'TRG.DLL', MB_OK + MB_ICONWARNING);
      FActive:=false;
      result:=0;
     end;
    end;
  end else
  begin
  result:=0;
  end;
end;


( Читать дальше )

Воспроизведение файлов в формате OGG (аудио и видео)

При разработке очередного ПО столкнулся с проблемой использования в коммерческих целях известные форматы видео и аудио. Например, mp3, mp4 и т.п. По google-в наткнулся на абсолютно свободный формат — ogg. Этот формат позволяет хранить видео и аудио контент. Решил остановиться на нем, но тут возникла следующая проблема: для разработки самого простого проигрывателя для данного формата необходимо в систему установить свободный проигрыватель VideoLan и использовать его или как ActiveX или напрямую его библиотеки и плагины. Это не очень удобно, а точнее совсем не удобно! После нескольких дней поисков и ковыряний решение было найдено.

( Читать дальше )

работа с OSM картами (QGIS) в среде Compact Framework

Разрабатывая очередное приложение, наткнулся на проблему связанную с открытием карт созданных в системе QGIS на мобильном устройстве с системой Windows Mobile. Проблему решил в течении 2-х недель. Кому это интересно пишете, с радостью отвечу. Почему не пишу сразу? Тема очень обширная, будет вопрос будет ответ. Классы разработанные мной можно переписать и для Phone 7 и для Android.

Работа с GPS на Windows Mobile

Была задача, написать приложение, которое с определенным интервалом времени получает координаты GPS приемника телефона и отправляет их в удаленную базу данных, а за тем выводит на Яндекс-карту. Долго искал каким способом это лучше осуществить и нашел его у себя на компьютере.

1. Открываем проект gps.sln (путь: c:\program files\windows mobile 6 sdk\samples\pocket pc\cs\gps);
2. Строим решение, получаем dll;
3. Подключаем полученую dll как ссылку к своему проекту;
4. Добавляем
using Microsoft.WindowsMobile.Samples.Location;


Объявляю глобальные переменные, что бы в них всегда хранились актуальные данные координат

double Latitude = 0;
        double Longitude = 0;


5. Инициализируем и включаем gps (я это делал в
Form.Load
):

updateDataHandler = new EventHandler(UpdateData);
                gps.DeviceStateChanged += new DeviceStateChangedEventHandler(gps_DeviceStateChanged);
                gps.LocationChanged += new LocationChangedEventHandler(gps_LocationChanged);
                if (!gps.Opened)
                {
                    gps.Open();
                }

6. Добавим функции:

void UpdateData(object sender, System.EventArgs args)
            {
                //получаем обновленные данные с GPS
                if (gps.Opened)
                {
                    if (device != null)
                    {
                        WriteLog(DateTime.Now.ToUniversalTime() + " Can not turn on your GPS device!");  
                    }

                    if (position != null)
                    {

                        if (position.LatitudeValid)
                        {
                            //выводим широту
                            Latitude = position.Latitude;
                        }

                        if (position.LongitudeValid)
                        {
                            //выводим долготу
                            Longitude = position.Longitude;
                        }
                    }
                }
            }

            void gps_DeviceStateChanged(object sender, DeviceStateChangedEventArgs args)
            {
                device = args.DeviceState;
                Invoke(updateDataHandler);
            }

            protected void gps_LocationChanged(object sender, LocationChangedEventArgs args)
            {
                position = args.Position;
                Invoke(updateDataHandler);

            }

Когда мне надо получить координаты я делаю так:

//работает ли GPS
                                    if (!position.LatitudeValid) 
                                    {
                                       //не работает
                                    }
else
{
 double lat = latitude;
 double lon = longitude;
}

Кординаты представленны как тип double, но можно представить как градусы, минуты и секунды для этого надо

position.Latitude
заменить на
position.LatitudeInDegreesMinutesSeconds;


Все отлично работает!