<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8616169664146917450</id><updated>2012-01-21T01:41:27.092-08:00</updated><category term='C#'/><category term='Vista'/><category term='Windows Phone 7'/><category term='Разное'/><category term='.NET Compact Framework'/><category term='Графика'/><category term='Книги'/><category term='справочник'/><category term='Новое в .NET Framework 3.0'/><category term='Программирование'/><category term='WP7'/><category term='Samsung'/><category term='эмулятор'/><category term='FUN'/><category term='IDE'/><category term='WPF'/><category term='API'/><category term='Новое в .NET Framework 2.0'/><category term='GT-i8000'/><category term='XAML'/><category term='Silverlight'/><category term='реестр'/><title type='text'>Русский .NET Framework</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>85</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-2008728686189834742</id><published>2011-10-12T11:06:00.000-07:00</published><updated>2011-10-12T11:16:24.291-07:00</updated><title type='text'>SetComputerName</title><content type='html'>Добавил в &lt;a href="http://developer.alexanderklimov.ru/guide.php"&gt;справочник по функциям Windows API&lt;/a&gt; описание для функции &lt;b&gt;SetComputerName&lt;/b&gt;. Кстати, я не нашел, как можно эту операцию сделать с помощью управляемого кода. Кто-нибудь знает?&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;[DllImport("kernel32.dll")]&lt;br /&gt;static extern bool SetComputerName(string lpComputerName);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;SetComputerName устанавливает новое имя компьютера пользователя. Имя помещено в строковую переменную lpComputerName. Чтобы изменения вступили в силу, требуется перезагрузка компьютера. Имя компьютера можно изменить также с помощью компонента Панели управления &lt;b&gt;Система&lt;/b&gt;.&lt;br /&gt;&lt;h3&gt;Параметры&lt;/h3&gt;&lt;dl&gt;&lt;dt&gt;lpComputerName&lt;/dt&gt;&lt;dd&gt;Строка, достаточно большая для хранения имени компьютера&lt;/dd&gt;&lt;h3&gt;Пример&lt;/h3&gt;&lt;pre&gt;' Устанавливаем новое имя компьютера&lt;br /&gt;bool done = SetComputerName("NewName");&lt;br /&gt;&lt;br /&gt;if (done)&lt;br /&gt;{&lt;br /&gt;   MessageBox.Show("Перезагрузите компьютер, чтобы изменения вступили в силу");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Зарегистрированные пользователи скоро получат новую версию электронного справочника.&lt;br /&gt;&lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-2008728686189834742?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/2008728686189834742/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=2008728686189834742' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2008728686189834742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2008728686189834742'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2011/10/setcomputername.html' title='SetComputerName'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-6217980084820018533</id><published>2011-04-03T07:33:00.000-07:00</published><updated>2011-04-03T07:53:38.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='справочник'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>ClipCursor</title><content type='html'>Недавно редактировал страницы описаний функций Windows API для Visual Basic 6.0 (&lt;a href="http://rusproject.narod.ru/api/winapi.htm"&gt;http://rusproject.narod.ru/api/winapi.htm&lt;/a&gt;) и обратил внимание, что не написал аналога функции ClipCursor для другого Справочника по функциям Windows API для .NET Framework. Решил восполнить пробел. Сама функция интересна тем, что с ее помощью можно запереть курсор мыши в замкнутом пространстве. Это дает простор для создания различных шуток и розыгрышей (эх, 1 апреля пропустил). Только учтите, что даже при закрытии приложения мышь будет метаться в заданном вами прямоугольнике! Поэтому необходимо предусмотреть возможность восстановить работоспособность бедной мышки. По секрету скажу, что комбинации клавиш Ctrl+Alt+Del или Alt+Tab позволяют освободить мышь из плена. Теперь сам пример.&lt;br /&gt;&lt;pre class="brush: csharp"&gt;&lt;br /&gt;// Временно ограничим перемещения курсора областью формы Form1&lt;br /&gt;[DllImport("user32.dll")]&lt;br /&gt;static extern bool ClipCursor(ref RECT lpRect);&lt;br /&gt;&lt;br /&gt;[DllImport("user32.dll")]&lt;br /&gt;public static extern int GetWindowRect(IntPtr hwnd, ref RECT lpRect);&lt;br /&gt;&lt;br /&gt;[DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]&lt;br /&gt;public static extern IntPtr GetDesktopWindow();&lt;br /&gt;&lt;br /&gt;[StructLayout(LayoutKind.Sequential)]&lt;br /&gt;public struct RECT&lt;br /&gt;{&lt;br /&gt;    public int left;&lt;br /&gt;    public int top;&lt;br /&gt;    public int right;&lt;br /&gt;    public int bottom;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void button1_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    RECT rc = new RECT();  // прямоугольник ограничения&lt;br /&gt;    GetWindowRect(this.Handle, ref rc); // помещаем координаты окна в прямоугольник&lt;br /&gt;    ClipCursor(ref rc); // ограничиваем перемещения курсора&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void button2_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    //код для "освобождения" курсора.&lt;br /&gt;    RECT rc = new RECT();  // прямоугольник ограничения&lt;br /&gt;    IntPtr hWind = GetDesktopWindow(); // получаем описатель рабочего стола&lt;br /&gt;    GetWindowRect(hWind, ref rc); // помещаем координаты рабочего стола в прямоугольник&lt;br /&gt;    ClipCursor(ref rc); // "ограничиваем" курсор целым экраном&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-6217980084820018533?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/6217980084820018533/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=6217980084820018533' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6217980084820018533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6217980084820018533'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2011/04/clipcursor.html' title='ClipCursor'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-8707668882471262894</id><published>2011-02-13T01:13:00.000-08:00</published><updated>2011-02-13T02:09:51.914-08:00</updated><title type='text'>Microsoft+Nokia: В одну кучку гоп!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Ya7e372efwc/TVehIj2ynMI/AAAAAAAAAIY/Ez8DLhOvRNQ/s1600/3310wp7.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 218px;" src="http://2.bp.blogspot.com/-Ya7e372efwc/TVehIj2ynMI/AAAAAAAAAIY/Ez8DLhOvRNQ/s400/3310wp7.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5573100232330353858" /&gt;&lt;/a&gt;В последние дни очень активно обсуждается тема будущего совместного сотрудничества между компаниями Nokia и Microsoft. Мнения по этому поводу разделились диаметрально противоположным образом. Я тоже решил высказать здесь свое мнение, чтобы спустя некоторое время проверить, насколько был прав.&lt;div&gt;Во-первых, для меня очевидно, что и Nokia и Microsoft переживают трудные времена в области мобильных телефонов. Рынок телефонов сейчас является лакомым кусочком для многих компаний, и поэтому таким гигантам очень обидно проигрывать на этом участке, учитывая их амбиции.&lt;/div&gt;&lt;div&gt;Примечательно, что сами компании вслух отрицают, что дела у них плохо. И стараются делать хорошую мину при плохой игре. Например, просто замалчивают результаты своих продаж, или составляют статистику немного хитрым образом. Но независимые аналитики доказывают, что доля Nokia и Microsoft на рынке падает. А потребитель выбирает iPhone и телефоны на базе Android. &lt;/div&gt;&lt;div&gt;В конце концов Nokia сдалась и призналась, что они стали аутсайдерами в гонке. Это признание сделал новый главный руководитель Nokia в закрытом письме для сотрудников. Позже он подтвердил свое авторство письма, когда оно стало достоянием общественности.&lt;/div&gt;&lt;div&gt;Microsoft пока держится и не делает никаких признаний. Но косвенные улики указывают на плачевное состояние дел. Во-первых, компания упорно не раскрывает статистику продаж. Особенно смешно это выглядит на фоне парадных рапортов о рекордных продажах Windows 7, MS Office, Kinect. Далее стали просачиваться осторожные высказывания некоторых партнеров MS, которые сетуют на то, что они рассчитывали на более высокие продажи, но при этом быстро добавляли, что сама система им очень-очень нравится (правда, правда). Видимо, чтобы не вызвать праведного гнева корпорации.&lt;/div&gt;&lt;div&gt;Я долго ждал, кто же первым произнесет слово &lt;b&gt;Провал&lt;/b&gt; в отношении Windows Phone 7. И, наконец-то, дождался. Первым смельчаком оказался известный аналитик Эльдар Муртазин.&lt;/div&gt;&lt;div&gt;Так что же нам ждать от объединения Nokia и Microsoft? А никто не знает. Во-первых, было произнесено слишком много общих слов. Во-вторых, две компании с богатыми потенциальными возможностями не всегда могут составить идеальную пару, даже став союзниками. Лично я скептически отношусь к новообразованному союзу. И вот почему. Nokia собирается переходить на систему Windows Phone 7, которая и так уже ничем не удивила пользователя. Да, число владельцев Windows Phone 7 увеличится, но оно увеличится только за счет уменьшения доли Symbian. А часть поклонников Nokia также перейдут на Android и iPhone.&lt;/div&gt;&lt;div&gt;Но на самом деле, для меня не так важно, какую часть рынка займут телефоны Windows Phone 7. Например, несмотря на растущую популярность Android и iPhone, я до сих пор пользуюсь Windows Mobile 6.5. Причина моего выбора была проста - я мог писать программы для себя на Visual Studio 2008. Но Microsoft сама обрубила сук, на котором сидела. Во-первых, она прекратила без объяснения причин поддержку Windows Mobile в Visual Studio 2010. Во-вторых, она решила полностью скопировать поведение Apple и ввела систему членства и ограничений. Теперь, чтобы написать программу и поделиться с другом, нужно заплатить 99 долларов в год и разместить ее в MarketPlace. Объединение с Nokia ничего не изменит в этой политике. Естественно, на фоне этих событий мне придется переходить на Android с ее более демократичным подходом.&lt;/div&gt;&lt;div&gt;Это очень обидно, так как программировать в Visual Studio для Windows Phone 7 гораздо приятнее, чем в Eclipse для Android. Например, приступая к изучению основ программирования под Windows Phone 7, совершенно не знал Silverlight и XNA. Но вхождение в новые технологии было очень простым и понятным. Для Android все немного сложнее и запутаннее. &lt;/div&gt;&lt;div&gt;Остается маленькая надежда, что в Microsoft будут сделаны кадровые перестановки и придет очень хороший руководитель, который сможет убедить руководство изменить систему в лучшую сторону. То, что мы видим сейчас - это, простите, убожество. Чем дальше я смотрю на дизайн Windows Phone, тем больше  в нем разочаровываюсь. Уже все знают о черной полоске со стрелкой на главном окне телефона и несимметричном расположении плиток. Но меня также удивляет и стиль Metro, который выдают за оригинальное дизайнерское решение. Я не дизайнер, и поэтому принимал данное утверждение на веру. А теперь выскажу свое скромное мнение. Посмотрим на эту ситуацию с такой стороны. На сегодняшний день все продающиеся телефоны с Windows Phone 7 можно отнести к дорогой ценовой категории от 500 долларов и выше. А теперь представьте, подобный телефон покупает состоятельный человек, который видит простенький интерфейс Metro без градиентов, округлостей, теней. Но состоятельный человек на метро не катается, зачем ему убогий интерфейс, если он привык к красивым блестящим машинам, ноутбукам, хрустальным бокалам и так далее. Красивые сайты в стиле Web 2.0 тоже еще не потеряли своей привлекательности. Сюда же можно добавить победное распространение HTML5 и CCS3, которые позволяют делать очень симпатичные вещи. На этом фоне интерфейс Windows Phone 7 выглядит шагом назад, а его функциональные возможности сравнимы с первыми моделями iPhone. &lt;/div&gt;&lt;div&gt;Таким образом, мой прогноз относительно будущего Windows Phone 7: в 2011 году будет полный провал по всем фронтам. Далее возможны варианты. Microsoft признает свое поражение и начнет кардинально улучшать систему. Либо компания упорно будет гнуть свою линию и делать косметические изменения, накапливая силы на другой проект, чтобы выстрелить в 2012 году.&lt;/div&gt;&lt;div&gt;Тем не менее, альянсу хочется пожелать удачи. Во-первых, это заставит шевелиться конкурентов, во-вторых у пользователя будет больше выбора, в-третьих, это просто интересно, что получится если скрестить ежа с колючей проволокой (шутка).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-8707668882471262894?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/8707668882471262894/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=8707668882471262894' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8707668882471262894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8707668882471262894'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2011/02/microsoftnokia.html' title='Microsoft+Nokia: В одну кучку гоп!'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Ya7e372efwc/TVehIj2ynMI/AAAAAAAAAIY/Ez8DLhOvRNQ/s72-c/3310wp7.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-5660815867112306111</id><published>2010-10-31T11:22:00.000-07:00</published><updated>2010-10-31T11:35:22.098-07:00</updated><title type='text'>ExtractAssociatedIcon</title><content type='html'>C помощью системной функции Windows API &lt;strong&gt;ExtractAssociatedIcon&lt;/strong&gt; можно извлечь значок, ассоциированный с файлом. Значки возвращаются с размером 32х32. &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[C#]&lt;br /&gt;[DllImport("shell32.dll")]&lt;br /&gt;static extern IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath,&lt;br /&gt;   out ushort lpiIcon);&lt;br /&gt;   &lt;br /&gt;или&lt;br /&gt;&lt;br /&gt;[DllImport("shell32.dll")]&lt;br /&gt;static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Пример&lt;/h3&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// Отобразим значок какого-нибудь файла&lt;br /&gt;// Добавим в проект элемент OpenFileDialog, кнопку и PictureBox&lt;br /&gt;&lt;br /&gt;openFileDialog1.ShowDialog();&lt;br /&gt;&lt;br /&gt;ushort uicon;&lt;br /&gt;StringBuilder strB = new StringBuilder(openFileDialog1.FileName);&lt;br /&gt;IntPtr handle = &lt;b&gt;ExtractAssociatedIcon&lt;/b&gt;(this.Handle, strB, out uicon);&lt;br /&gt;Icon ico = Icon.FromHandle(handle);&lt;br /&gt;&lt;br /&gt;pictureBox1.Image = ico.ToBitmap();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Запустите проект и выберите любой файл на диске. На форме в PictureBox отобразится значок, который используется для выбранного файла (как это мы видим в Проводники).&lt;br /&gt;&lt;br /&gt;Описание функции и ее параметров добавлено в &lt;a href="http://developer.alexanderklimov.ru/guide.php"&gt;справочник по функциям Windows API для .NET Framework&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;К слову сказать, совсем не обязательно использовать неуправлямый код. В .NET Framework есть метод &lt;b&gt;Icon.ExtractAssociatedIcon&lt;/b&gt; пространства имен System.Drawing, который делает ту же работу.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Добавьте в проект еще одну кнопку и напишите следующий код:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;if (openFileDialog1.ShowDialog() == DialogResult.OK)&lt;br /&gt;{&lt;br /&gt;    Icon icon = Icon.ExtractAssociatedIcon(openFileDialog1.FileName);&lt;br /&gt;    this.Icon = icon;&lt;br /&gt;    pictureBox1.Image = icon.ToBitmap();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-5660815867112306111?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/5660815867112306111/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=5660815867112306111' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5660815867112306111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5660815867112306111'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2010/10/extractassociatedicon.html' title='ExtractAssociatedIcon'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-7929199347023219646</id><published>2010-10-30T04:53:00.000-07:00</published><updated>2010-10-30T08:25:30.646-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone 7'/><title type='text'>Разлочка эмулятора Windows Phone 7</title><content type='html'>Эмулятор Windows Phone 7, который входит в состав Windows Phone Developer Tools, какой-то обрезанный. Непонятно, зачем Микрософт пошла на такой шаг. Доступен только Internet Explorer и собственные приложения, создаваемые в Visual Studio. К счастью, нашлись умельцы, которые сумели разлочить эмулятор, отредактировав его файл. Файл можно найти в интернете по слову &lt;b&gt;WM70C1.en-US.unlocked&lt;/b&gt;. Я скачивал &lt;a href="http://depositfiles.com/files/t8k28hugd"&gt;отсюда&lt;/a&gt;.&lt;br /&gt;Скачайте файл и перенесите его в папку &lt;b&gt;%programfiles%\Microsoft SDKs\Windows Phone\v7.0\Emulation\Images\&lt;/b&gt;. В этой папке вы найдет образ оригинального эмулятора (файл WM70C1.en-US.bin). Далее переименуйте оригинальный файл эмулятора и сохраните его на всякий случай. Теперь переименуйте ваш скачанный файл, чтобы он имел нужное имя. Запустите какой-нибуль проект на Visual Studio. Ваше приложение запустится в новом эмуляторе.&lt;br /&gt;Закройте свое приложение и просмотрите новый вид разлоченного эмулятора. Небо и земля. Естественно, вы все делаете на свой страх и риск. Я никаких сбоев не заметил, все работает.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Скриншоты&lt;/h3&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/TMw0koLjaQI/AAAAAAAAAH0/IA75f8_mCHM/s1600/unlockedemulator4.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 215px; height: 400px;" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/TMw0koLjaQI/AAAAAAAAAH0/IA75f8_mCHM/s400/unlockedemulator4.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5533855845997308162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/TMw0kgx7gsI/AAAAAAAAAHs/ZDUfGMGxEPo/s1600/unlockedemulator3.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 213px; height: 400px;" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/TMw0kgx7gsI/AAAAAAAAAHs/ZDUfGMGxEPo/s400/unlockedemulator3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5533855844010787522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_iaOeRqXXfwQ/TMw0kdUyRPI/AAAAAAAAAHk/FR4zsMxc1lc/s1600/unlockedemulator2.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 215px; height: 400px;" src="http://2.bp.blogspot.com/_iaOeRqXXfwQ/TMw0kdUyRPI/AAAAAAAAAHk/FR4zsMxc1lc/s400/unlockedemulator2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5533855843083240690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_iaOeRqXXfwQ/TMw0kbMLBXI/AAAAAAAAAHc/u5JuEa3ui5k/s1600/unlockedemulator1.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 217px; height: 400px;" src="http://3.bp.blogspot.com/_iaOeRqXXfwQ/TMw0kbMLBXI/AAAAAAAAAHc/u5JuEa3ui5k/s400/unlockedemulator1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5533855842510243186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Видео&lt;/h3&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/KLBY1h1o6ds?fs=1&amp;amp;hl=ru_RU&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/KLBY1h1o6ds?fs=1&amp;amp;hl=ru_RU&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Пользуйтесь на здоровье.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-7929199347023219646?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/7929199347023219646/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=7929199347023219646' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7929199347023219646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7929199347023219646'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2010/10/razlochka-emulyatora-windows-phone-7.html' title='Разлочка эмулятора Windows Phone 7'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iaOeRqXXfwQ/TMw0koLjaQI/AAAAAAAAAH0/IA75f8_mCHM/s72-c/unlockedemulator4.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-6320686650781241431</id><published>2010-09-12T01:31:00.000-07:00</published><updated>2010-09-12T04:32:02.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='XAML'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Изучайте XAML, WPF и Silverlight</title><content type='html'>В наше время происходит какой-то бум в языках программирования. Кажется, совсем недавно в ходу были C++, Visual Basic, Delphi, Java. Сейчас лидерами становятся совсем другие языки и технологии. И программистам очень трудно угнаться за этой гонкой.&lt;br /&gt;Я сам в свое время очень долго не мог соскочить с Visual Basic 5.0 на Visual Basic 6.0, хотя, казалось, это всего лишь обновление номера версии. Но, я настолько привык к привычному окружению, что просто боялся все поломать. Спустя некоторое время уже сам удивлялся другим коллегам, которые не собирались переходить на VB 6.0, объясняя тем, что VB5.0 гораздо быстрее и занимает меньше места. А изменения не настолько существенны, чтобы обновляться.&lt;br /&gt;Еще большим шоком стало появление .NET Framework со своей новой идеологией и полным отсутствием совместимости со старыми программами. Первые версии фреймворка благополучно пролетели мимо меня. Но Microsoft упорно гнула свою линию и убеждала переходить на новые языки. И я купил на Озоне Visual Basic.NET 2003. Но большу часть времени я все равно программировал на старом добром VB6.0.&lt;br /&gt;В какой-то момент времени я вдруг понял, что пока не поздно, лучше начать изучение .NET Framework на C#. Сейчас я понимаю, что тогда я сделал правильный выбор. И, хотя, Microsoft пытается параллельно поддерживать все языки, большинство материлов в сети базируется именно на C#.&lt;br /&gt;Но, успокаиваться было рано. Неожиданно на горизонте появилась новая технология XAML. Но, к тому времени я очень интенсивно изучал программирование для мобильной платформы Windows Mobile. Поэтому слова XAML, Silverlight, WPF были для меня пустым звуком, так как они не поддерживались мобильными телефонами. К сожалению, это был мой стратегический просчет. Технология XAML окрепла и стала завоевывать сердца разработчиков. Я пытался оттянуть тот момент, когда придется изучать XAML, жизнь внесла свои коррективы.&lt;br /&gt;Когда Microsoft в очередной раз поменяла правила игры и объявила, что следующая платформа Windows Phone 7 будет базироваться на Silverlight, я понял, что мне придется снова переучиваться.&lt;br /&gt;И чем больше я погружаюсь в этот неведомый мир, тем больше он мне нравится. Знаю, что многие программисты находятся в похожем состоянии и еще не приняли решения о переходе на новые технологии. На мой взгляд, на сегодняшний день в сети или в магазинах нет хороших материалов для начинающих, которые бы с самых азов объяснили возможности XAML. Как правило, все учебные материалы уже предполагают базовое знакомство с языком C# и имеют высокий порог вхождения.&lt;br /&gt;Но, на самом деле, язык XAML очень прост и элегантен. Сейчас я попытаюсь очень популярно объяснить, как пишется код на XAML, чтобы даже самые отъявленные новички поняли суть материала.&lt;br /&gt;Если у вас есть опыт работы с HTML, то вам будут понятны основные понятия. По-существу, XAML - это язык разметки, как и HTML. (Обязательно найдется зануда, который скажет, что это язык разметки XML). Код состоит из тегов: начальный, конечный, или укороченный вариант самозакрывающего тега.&lt;br /&gt;Предположим, нам для работы нужна кнопка. Достаточно написать следующее&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;Button Foreground="LightSeaGreen" FontSize="24pt" Width="200" Height="50"&amp;gt;&lt;br /&gt;Привет, XAML&lt;br /&gt;&amp;lt;/Button&amp;gt;&lt;/pre&gt;&lt;br /&gt;Как видите, все очень просто. Есть тег Button с параметрами цвета, шрифта, размеров. Также обстоят дела и с другими элементами. Нужно только запомнить, что существует самый главный единственный корневой тег (в HTML таким тегом можно считать &amp;lt;html&amp;gt;), внутри которого находятся дочерние элементы. Таким образом выстраивается целое дерево родительских и дочерних элементов. &lt;br /&gt;Обратите внимание, что код XAML можно написать даже в Блокноте и запустить из Проводника. Более подробно я описал этот материал в статье &lt;a href="http://developer.alexanderklimov.ru/wpf/aboutxaml.php"&gt;Что такое XAML&lt;/a&gt;.&lt;br /&gt;Рекомендую первое время писать код вручную, хотя в Visual Studio 2010 появился свой GUI-редактор, позволяющий визуально размещать элементы, как это делалось в Windows Forms.&lt;br /&gt;Когда вы наберетесь небольшого опыта, вы заметите, что некоторые вещи делать гораздо проще в WPF и Silverlight, которые тесно завязаны на XAML (но это не одно и то же).&lt;br /&gt;Даже, если вам еще не приходилось работать с WPF, все равно прочитайте другую мою статью &lt;a href="http://developer.alexanderklimov.ru/wpf/round-and-dropshadow.php"&gt;Закругляем углы и отбрасываем тень&lt;/a&gt;. Код настолько простой и понятный, что вы удивитесь, как легко создать различные эффекты отбрасывающей тени или закругления уголков. Причем, возможности XAML гораздо выше. Наверняка, вы слышали, что Silverlight считают конкурентом Flash. Так вот, XAML обладает широким арсеналом анимационных эффектов и других рюшечек.&lt;br /&gt;Просматривая свои старые проекты, написанные традиционным способом на WinForms, я все чаше испытываю соблазн переписать их на WPF. И, хотя я не волшебник, а только учусь, но XAML теперь стоит у меня на первом месте в плане изучения.&lt;br /&gt;Присоединяйтесь!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-6320686650781241431?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/6320686650781241431/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=6320686650781241431' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6320686650781241431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6320686650781241431'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2010/09/izuchaite-xaml-wpf-i-silverlight.html' title='Изучайте XAML, WPF и Silverlight'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-5691375619639400078</id><published>2010-06-06T10:03:00.000-07:00</published><updated>2010-06-06T10:13:44.662-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><category scheme='http://www.blogger.com/atom/ns#' term='реестр'/><title type='text'>ShowThumbnailsOnNavigation</title><content type='html'>&lt;p&gt;Хочу поделиться с вами одним трюком, который был описан в одном блоге MSDN.&lt;/p&gt;&lt;p&gt;В IDE-редакторе Visual Studio 2010 при нажатии Ctrl+Tab вы можете перемещаться между открытыми активными файлами. Менеджер окон выглядит следующим образом.&lt;/p&gt;&lt;a href="http://3.bp.blogspot.com/_iaOeRqXXfwQ/TAvVJDbd6oI/AAAAAAAAAGc/yrJB-pphOhE/s1600/showthubnail1.png"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 300px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5479707723142392450" border="0" alt="" src="http://3.bp.blogspot.com/_iaOeRqXXfwQ/TAvVJDbd6oI/AAAAAAAAAGc/yrJB-pphOhE/s400/showthubnail1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;При помощи небольшого трюка можно добавить в это окно эскизы файлов. Откройте редактор реестра и в разделе &lt;b&gt;HKCU\Software\Microsoft\VisualStudio\10.0\General&lt;/b&gt; добавьте параметр DWORD &lt;b&gt;ShowThumbnailsOnNavigation&lt;/b&gt; со значением 1. Перезапустите Visual Studio и вы увидите, что теперь появились эскизы.&lt;/p&gt;&lt;a href="http://1.bp.blogspot.com/_iaOeRqXXfwQ/TAvVJ0a8A0I/AAAAAAAAAGk/Xp3ocyJXyxI/s1600/showthubnail2.png"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 203px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5479707736293507906" border="0" alt="" src="http://1.bp.blogspot.com/_iaOeRqXXfwQ/TAvVJ0a8A0I/AAAAAAAAAGk/Xp3ocyJXyxI/s400/showthubnail2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Интересно отметить, что данные эскизы были доступны в Visual Studio 2008 и Visual Studio 2010beta, но затем эту функциональность убрали.&lt;/p&gt;&lt;p&gt;Примечание: большой сборник настроек реестра Windows вы можете найти в &lt;a href="http://user.alexanderklimov.ru/"&gt;справочнике по реестру Windows&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-5691375619639400078?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/5691375619639400078/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=5691375619639400078' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5691375619639400078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5691375619639400078'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2010/06/showthumbnailsonnavigation.html' title='ShowThumbnailsOnNavigation'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iaOeRqXXfwQ/TAvVJDbd6oI/AAAAAAAAAGc/yrJB-pphOhE/s72-c/showthubnail1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-4122784381920199662</id><published>2010-05-03T05:07:00.000-07:00</published><updated>2010-05-03T05:33:29.174-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Phone 7'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>Windows Phone Developer Tools CTP</title><content type='html'>На прошлой неделе на нашей улице наступил праздник и имя ему Апрельский фрэш Windows Phone Developer Tools CTP April Refresh. Объясню, почему праздник. Когда вышла финальная версия Visual Studio 2010, я снес предыдущую Visual Studio 2008 и остался у разбитого корыта. В новой версии напрочь отсутствует поддержка Windows Mobile 6 и я теперь не могу поддерживать свои старые проекты. А бету-версия Windows Phone Developer Tools нельзя было ставить на финальный релиз VS2010.&lt;br /&gt;Я плевался и ругался, потому что так нельзя работать. Все пошло коту под хвост. К счастью, ребята из Microsoft подсуетились и выпустили в свет упомянутый выше пакет разработки под Windows Phone.&lt;br /&gt;В состав пакета входит Visual Studio 2010 Express for Windows Phone и эмулятор. Если у вас уже стояла профессиональная версия VS2010, то у вас также появятся новые шаблоны для проектов под Windows Phone.&lt;br /&gt;Теперь можно более предметно изучать примеры под новую платформу. Несмотря на то, что теперь нет никакой совместимости со старым .NET Compact Framework, я не сильно переживаю по этому поводу. Как известно, теперь требуется программировать под Silverlight и XNA. Давно собирался вплотную заняться изучением этих технологий, но стимула не было. Теперь такой стимул появился.&lt;br /&gt;Сама технология интенсивно развивается, и, наверняка, много к концу года поменяется. Тем не менее можно уже сейчас создавать интересные примеры. Кстати, если вы не боитесь экспериментов, то можете разлочить эмулятор, чтобы увидеть скрытые возможности. Подробнее можете почитать на Хабре (&lt;a href="http://habrahabr.ru/blogs/mobiledev/92600/"&gt;http://habrahabr.ru/blogs/mobiledev/92600/&lt;/a&gt;).&lt;br /&gt;А для новичков я собираюсь подготовить учебный курс, который будет располагаться по адресу &lt;a href="http://developer.alexanderklimov.ru/winmobile/wp7/wp7-tutorial.php"&gt;http://developer.alexanderklimov.ru/winmobile/wp7/wp7-tutorial.php&lt;/a&gt;&lt;br /&gt;Не обещаю, что наполнение курса новыми материалами будет идти быстрыми темами, но одну-две статьи в неделю, я надеюсь, разместить смогу.&lt;br /&gt;Присоединяйтесь!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-4122784381920199662?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/4122784381920199662/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=4122784381920199662' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4122784381920199662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4122784381920199662'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2010/05/windows-phone-developer-tools-ctp.html' title='Windows Phone Developer Tools CTP'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-2471476077488705092</id><published>2010-03-14T08:14:00.001-07:00</published><updated>2010-03-14T08:38:57.823-07:00</updated><title type='text'>Small Basic</title><content type='html'>Некоторое время назад я установил на свой компьютер программу Small Basic версии 0.7. Сама программа предназначена для совсем юных программеров, которые хотели бы приобщиться к программированию. Программа получилась очень красивая и легкая и похожа на забаву. В Small Basic всего 15 (!) ключевых слов, но энтузиасты уже написали на этом языке тетрис, пинг-понг, удав и многое другое.&lt;br /&gt;Small Basic базируется на .NET Framework и полученные знания не пропадут впустую - можно затем перейти на Visual Basic или C#.&lt;br /&gt;Кроме того, программа позволяет создавать исполняемые файлы - достаточно сохранить исходники программы на диске и при следующем запуске программы в Small Basic в папке рядом с файлом-исходником *.SB появится EXE-файл.&lt;br /&gt;Также можно написать расширение для Small Basic на любом языке .NET Framework, например, C#.&lt;br /&gt;Особенно, мне понравился встроенный объект черепашка (Turtle). С ее помощью можно вычерчивать различные красивые узоры, используя команды поворота.&lt;br /&gt;Приятно отметить, что Small Basic локализован для многих стран, в том числе и для России. Если у вас в первых раз загрузилась неправильная версия (например, у меня почему-то загрузилась французская версия), то зайдите в Пуск/Все программы/Small Basic/Localized и выберите свою версию.&lt;br /&gt;Я немного поигрался с этой программой и забросил ее. Но сегодня узнал интересную новость - появилась новая версия 0.8, в которой появилась интересная функциональность - теперь вы можете размещать свои программы в интернете в виде Silverlight-приложения. Все, что вам нужно сделать - это нажать на кнопку &lt;strong&gt;Опубликовать&lt;/strong&gt;. Копия вашей программы будет загружена на сайт smallbasic.com и ей будет присвоен идентификатор. Также вам дадут ссылку на программу, и вы можете похвастаться перед своими знакомыми своей гениальной программой. Более того, на странице программы вы можете скопировать код для использования его в блогах. Попробую это сделать в этом посте, но возможно, в Blogger.com пока это будет недоступно, поэтому я сделаю копию на своей странице (см.дальше). Я скопировал один из примеров документации и добавил одну строчку кода, которая раскрашивает круги, которые наматывает черепашка.&lt;br /&gt;Я решил поглубше изучить эту среду разработки и завел для себя специальную страничку по адресу &lt;a href="http://developer.alexanderklimov.ru/smallbasic/smallbasic.php"&gt;http://developer.alexanderklimov.ru/smallbasic/smallbasic.php&lt;/a&gt; Пока не буду афишировать эту страницу на своем сайте, но если среди читателей блога будет интерес к этому продукту, то сделаю страницу доступной для публики.&lt;br /&gt;Удачного вам программирования!&lt;br /&gt;&lt;br /&gt;&lt;object id="sbapp" data="data:application/x-oleobject;base64,QfXq3+HzJEysrJnDBxUISgAIAADYEwAA2BMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" width="640" height="480" type="application/x-silverlight-2"&gt;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-2471476077488705092?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/2471476077488705092/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=2471476077488705092' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2471476077488705092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2471476077488705092'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2010/03/small-basic.html' title='Small Basic'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-5527702769657655281</id><published>2010-02-28T05:47:00.000-08:00</published><updated>2010-02-28T06:21:10.765-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><title type='text'>Windows Mobile 6.5.3 DTK</title><content type='html'>&lt;div&gt;&lt;div&gt;Совсем Microsoft недавно представила в Барселоне новую платформу Windows Phone 7 Series, которая привлекла к себе внимание специалистов и простых пользователей. На фоне этого ажиотажа, как-то незаметно прошла новость о выходе новой версии Windows Mobile 6.5.3 DTK. А ведь там тоже есть несколько интересных новинок, которые уже доступны для разбработчиков Windows Mobile. Дальнейшие описания действительны для Visual Studio 2008 (для Visual Studio 2005 есть небольшие отличия).&lt;br /&gt;&lt;br /&gt;Сначала несколько общих слов. В новом релизе Windows Mobile 6.5.3 DTK было добавлена новая документация, новые примеры, заголовки файлов и библиотеки и утилиты. А также добавлены новые образы эмуляторов под Windows Mobile 6.5.3. Не забывайте, что Windows Mobile 6.5.3 DTK необходимо устанавливать &lt;b&gt;после&lt;/b&gt; установки Windows Mobile 6 SDK Refresh. При установке DTK ничего из состава SDK не удаляется и вы можете спокойно разрабатывать приложения как для Windows Mobile 6, так и для Windows Mobile 6.5.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Документация&lt;/h3&gt;Как и прежде, вся необходимая документация доступна на сайте MSDN. Но, с установкой Windows Mobile 6.5.3 DTK, вы получаете доступ к документации по Windows Mobile в виде локальной отдельной версии справки (&lt;strong&gt;Пуск&lt;/strong&gt; &lt;strong&gt;Все программы&lt;/strong&gt; &lt;strong&gt;Windows Mobile 6.5.3 DTK&lt;/strong&gt; &lt;strong&gt;Documentation&lt;/strong&gt; &lt;strong&gt;Windows Mobile 6.5.3 DTK Help&lt;/strong&gt;). Это достаточно удобное решение, если у вас нет соединения с интернетом.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Пример Mobile Mapping Framework&lt;/h3&gt;В пакет Windows Mobile 6.5.3 DTK был добавлен новый пример, использующий Mobile Mapping Framework (папка ...\Samples\Common\CS\MMF). Что это такое и с чем его едят, я, честно говоря, не знаю. Если кто-то владеет информацией, то поделитесь, плиз.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Новый тип проекта - Widgets for Window Mobile&lt;/h3&gt;В Visual Studio 2008 появился новый тип проекта - Widgets for Window Mobile, позволяющий быстро создавать виджеты для Windows Mobile 6.5. О нем чуть ниже.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Образы эмуляторов&lt;/h3&gt;Вкусная новость - в состав Windows Mobile 6.5.3 DTK входят несколько новых эмуляторов для Windows Mobile 6.5.3. Я перечислю образы только для профессиональной версии (серия Standard мне не интересна, да и в продаже практически их нет):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Windows Mobile 6.5.3 Professional Emulator&lt;/li&gt;&lt;li&gt;Windows Mobile 6.5.3 Professional Square QVGA Emulator&lt;/li&gt;&lt;li&gt;Windows Mobile 6.5.3 Professional Square VGA Emulator&lt;/li&gt;&lt;li&gt;Windows Mobile 6.5.3 Professional VGA Emulator&lt;/li&gt;&lt;li&gt;Windows Mobile 6.5.3 Professional WQVGA Emulator&lt;/li&gt;&lt;li&gt;Windows Mobile 6.5.3 Professional WVGA Emulator&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Новые сертификаты&lt;/h3&gt;Также были добавлены новые сертификаты, которые заменяют устаревшие сертификаты, у который сроки истекли в 2009 году. Новые сертификаты будут действительны до 2015 года и доступны в папке ...\Tools\Security\SDK Development Certificates. Так как я не пользуюсь сертификатами, то мне от этого ни горячо, ни холодно.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Новая утилита xHopper&lt;/h3&gt;Опытные разработчики знают о программе Hopper, помогающей тестировать приложения в стрессовых ситуациях. Теперь появилась еще одна утилита &lt;b&gt;xHopper&lt;/b&gt;. По описанию, новой утилитой пользоваться стало еще удобнее. В ближайшее время я планирую изучить работу утилиты. Также вы можете найти дополнительную информацию о xHopper в документации к Windows Mobile 6.5.3 DTK, о которой говорилось выше.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Новый вид Windows Mobile 6.5.3&lt;/h3&gt;Посмотрим, что изменилось в Windows Mobile 6.5.3 по сравнению с Windows Mobile 6.5. Сразу хочу предупредить, что запустить отладку своей программы в Windows Mobile 6.5.3 не получится - в окне выбора эмуляторов при запуске отладки программы нужных версий эмуляторов вы не увидите. Поэтому, чтобы увидеть новую платформу, необходимо запустить менеджер эмуляторов (&lt;strong&gt;Tools Device Emulator Manager...&lt;/strong&gt;) и в диалоговом окне выбрать нужный эмулятор.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_iaOeRqXXfwQ/S4p3IAf9otI/AAAAAAAAAFc/w03Dxv2p17Y/s1600-h/devemulator.jpg"&gt;&lt;img style="WIDTH: 272px; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5443294079087387346" border="0" alt="" src="http://2.bp.blogspot.com/_iaOeRqXXfwQ/S4p3IAf9otI/AAAAAAAAAFc/w03Dxv2p17Y/s400/devemulator.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Например, выберем &lt;strong&gt;Windows Mobile 6.5.3 Professional VGA Emulator&lt;/strong&gt; (&lt;strong&gt;Actions&lt;/strong&gt; &lt;strong&gt;Connect&lt;/strong&gt;). Чтобы было легче сравнивать, запустим также эмулятор &lt;strong&gt;Windows Mobile 6.5 Professional VGA Emulator&lt;/strong&gt;.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_iaOeRqXXfwQ/S4p31VbY8QI/AAAAAAAAAFk/NTW-plevs2w/s1600-h/devemulator2.jpg"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 321px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5443294857799463170" border="0" alt="" src="http://2.bp.blogspot.com/_iaOeRqXXfwQ/S4p31VbY8QI/AAAAAAAAAFk/NTW-plevs2w/s400/devemulator2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Первое, что бросается в глаза - кнопка Пуск стала большой и круглой и находится в нижней части экрана, как на десктопных Windows и напоминает кнопку Пуск в Windows 7, только в черно-белом варианте. Соответственно, и панель задач тоже находится внизу. Если вы запустите какую-нибудь программу, то увидите, что кнопка закрытия (крестик Х) тоже стала большой и круглой. Эти изменения очень удобны для пользователя, которому теперь проще дотянуться пальцами одной руки до часто используемых кнопок. Также я заметил, что в Windows Mobile 6.5.3 исчезла игра Bubble Breaker. Могу только предположить, что игра расчитана на использование пера, а это теперь считается дурным тоном (к сожалению).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/S4p5JrK5TsI/AAAAAAAAAFs/Ollr1DnR8l8/s1600-h/devemulator3.jpg"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 328px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5443296306744872642" border="0" alt="" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/S4p5JrK5TsI/AAAAAAAAAFs/Ollr1DnR8l8/s400/devemulator3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Разработка виджетов&lt;/h3&gt;Теперь поговорим о разработке виджетов в Windows Mobile 6.5.3. Я уже затрагивал эту тему на своем сайте (&lt;a href="http://developer.alexanderklimov.ru/winmobile/widget.php"&gt;http://developer.alexanderklimov.ru/winmobile/widget.php&lt;/a&gt;), а также на &lt;a href="http://www.xakep.ru/post/48996/default.asp"&gt;страницах Хакера&lt;/a&gt;. Тогда речь шла о ручном создании виджетов в текстовом редакторе. Теперь можно заниматься разработкой в привычной среде Visual Studio. После установки Windows Mobile 6.5.3 DTK в шаблонах проектов появится новый тип проекта - &lt;strong&gt;Widgets for Window Mobile&lt;/strong&gt;. Я не сразу нашел этот тип на своем компьютере. По привычке я искал новый тип в разделе Smart Device, но там ничего нового не было. Сначала подумал, что DTK криво встала и хотел уже переставлять все заново. Но, к счастью, я вовремя заметил, что новый тип проекта находится в корневом разделе. Не повторяйте моих ошибок. Для примера я выбрал шаблон &lt;strong&gt;SimpleWidget&lt;/strong&gt;, который содержит все необходимые файлы для создания простого виджета.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_iaOeRqXXfwQ/S4p5hIjIgzI/AAAAAAAAAF0/KPuah3-cLb8/s1600-h/widgetType1.jpg"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 330px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5443296709768151858" border="0" alt="" src="http://1.bp.blogspot.com/_iaOeRqXXfwQ/S4p5hIjIgzI/AAAAAAAAAF0/KPuah3-cLb8/s400/widgetType1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Когда проект загрузился в Visual Studio, то стало видно, что проект содержит значок в формате PNG, веб-страницу, конфигурационный файл XML, а также папки с сценариями JavaScript и стилями CSS.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_iaOeRqXXfwQ/S4p5wgt-wwI/AAAAAAAAAF8/hFQeNdvycUw/s1600-h/widgetType2.jpg"&gt;&lt;img style="WIDTH: 311px; HEIGHT: 275px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5443296973954138882" border="0" alt="" src="http://1.bp.blogspot.com/_iaOeRqXXfwQ/S4p5wgt-wwI/AAAAAAAAAF8/hFQeNdvycUw/s400/widgetType2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Я стал щелкать по всем файлам, чтобы просмотреть их содержимое. И тут меня ждал приятный сюрприз - когда я щелкнул на файле &lt;strong&gt;config.xml&lt;/strong&gt;, то открылось окно редактора &lt;strong&gt;Manifest Editor&lt;/strong&gt;. Заполнить все поля в таком редакторе - дело нескольких секунд. Впрочем, вы можете выбрать из контекстного меню файла пункт &lt;strong&gt;View Source&lt;/strong&gt; и вручную прописать все необходимые данные.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/S4p7XQdihLI/AAAAAAAAAGU/VERnh7edvTM/s1600-h/widgetType3.jpg"&gt;&lt;img style="WIDTH: 361px; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5443298739116737714" border="0" alt="" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/S4p7XQdihLI/AAAAAAAAAGU/VERnh7edvTM/s400/widgetType3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Второй сюрприз меня ждал, когда я решил запустить проект. Нажав на зеленый треугольник, я ожидал увидеть запуск стандартного эмулятора. Как бы не так! У меня запустился Internet Explorer с встроенным &lt;strong&gt;Widget Debugger for Windows Mobile 6.5&lt;/strong&gt;.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/S4p6WQQ-EmI/AAAAAAAAAGM/Fh9zgX8eJw8/s1600-h/widgetType4.jpg"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 342px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5443297622372520546" border="0" alt="" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/S4p6WQQ-EmI/AAAAAAAAAGM/Fh9zgX8eJw8/s400/widgetType4.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;В окне дебаггера можно поиграться с некоторыми настройками.&lt;br /&gt;&lt;br /&gt;И, напоследок, даю бесплатный совет. Когда я попытался в сценарии JavaScript добавить для кнопок меню и сообщений слова на русском, то на выходе получил кракозябры. К моему удивлению, файл сценария хранился в ANSI-кодировке. Инструментов для настройки кодировки я не нашел, поэтому я просто открыл JS-файл в блокноте и пересохранил его в UTF-8. Visual Studio заметил, что файл был изменен во внешнем редакторе и спросил, нужно ли его открыть заново (да, нужно). После этого русские символы стали отображаться корректно.&lt;br /&gt;&lt;br /&gt;Таким образом, используя новинки, пришедшие к нам с Windows Mobile 6.5.3 DTK, мы можем создавать и тестировать приложения для Windows Mobile 6.5.3. А также мы ждем новостей, как будет происходить разработка приложениий для Windows Phone 7 Series. Ждать осталось недолго.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-5527702769657655281?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/5527702769657655281/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=5527702769657655281' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5527702769657655281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5527702769657655281'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2010/02/windows-mobile-653-dtk.html' title='Windows Mobile 6.5.3 DTK'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iaOeRqXXfwQ/S4p3IAf9otI/AAAAAAAAAFc/w03Dxv2p17Y/s72-c/devemulator.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-7794404324624272592</id><published>2010-02-09T12:39:00.000-08:00</published><updated>2010-02-09T13:53:39.891-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='Графика'/><category scheme='http://www.blogger.com/atom/ns#' term='Разное'/><title type='text'>Получить информацию о BMP-файле</title><content type='html'>&lt;p&gt;Если вам приходится работать с графическими файлами, то, возможно, у вас появится задача получить дополнительную информацию - узнать размеры файла, глубину цвета и т.п. Безусловно, вы можете загрузить картинку из файла на форму или подходящий элемент управления (PictureBox) и получить требуемую информацию. Но, предположим, ваш проект предназначен только для сбора информации о файлах. В этом случае загружать 10-мегапиксельный рисунок в форму неоправданно - получается слишком большой расход памяти. Есть другой способ получения нужной информации. О нем и пойдет речь сегодня.&lt;/p&gt;&lt;p&gt;Графические файлы являются бинарными файлами с определенной структурой. Так вот, в файле уже содержатся необходимые нам данные. Наша задача - уметь извлечь данную информацию. Не будем углубляться в технические детали форматов графических файлов. Достаточно знать, что, например, ширина картинки записана всегда в строго определенном месте от начала файла. Поэтому, нам нужно только открыть файл для считывания байтов, отсчитать нужное количество байт и получить необходимое число. Кстати, по такому принципу устроены не только графические файлы, но и многие другие файлы, например, музыкальные.&lt;/p&gt;&lt;p&gt;Но, вернемся к файлам BMP. В начале каждого файла в формате BMP идет так называемый заголовок файла. В документации он описывается структурой &lt;b&gt;BITMAPFILEHEADER&lt;/b&gt;, которая имеет общую длину 14 байтов: три UInt16 и два UInt32. Нас не интересует данный заголовок, поэтому вы его должны просто проигнорировать. Таким образом в коде нам нужно открыть файл и пропустить 14 байт:&lt;/p&gt;&lt;pre&gt;reader.ReadBytes(14);&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Обратите внимание, что функцию sizeof в данном случае использовать нельзя. Функция sizeof работает только с неуправляемыми ресурсами. После структуры BITMAPFILEHEADER идет структура &lt;b&gt;BITMAPINFOHEADER&lt;/b&gt;. Именно, в этой структуре хранится необходимая информация, которую необходимо извлечь (кстати, описание структуры можно найти в &lt;a href="http://rusproject.narod.ru/guide.htm"&gt;справочнике по функциям Windows API для Visual Basic&lt;/a&gt;). Вот как будет выглядеть код извлечения информации из файла:&lt;/p&gt;&lt;pre&gt;private void ShowBMPInfo(String file)&lt;br /&gt;{&lt;br /&gt;    FileStream fs = new FileStream(file, FileMode.Open);&lt;br /&gt;    BinaryReader reader = new BinaryReader(fs);&lt;br /&gt;&lt;br /&gt;    // Пропускаем заголовок файла (14 байтов)&lt;br /&gt;    reader.ReadBytes(14);&lt;br /&gt;&lt;br /&gt;    // Пропускаем размер структуры BITMAPINFOHEADER&lt;br /&gt;    reader.ReadUInt32();&lt;br /&gt;&lt;br /&gt;    // Получаем ширину и высоту&lt;br /&gt;    int width = reader.ReadInt32();&lt;br /&gt;    int height = reader.ReadInt32();&lt;br /&gt;&lt;br /&gt;    // опять пропускаем часть байтов&lt;br /&gt;    reader.ReadInt16();&lt;br /&gt;&lt;br /&gt;    // Получаем глубину цвета (битов на пиксел)&lt;br /&gt;    Int16 bitsPerPixel = reader.ReadInt16();&lt;br /&gt;&lt;br /&gt;    // Освобождаем ресурсы&lt;br /&gt;    reader.Close();&lt;br /&gt;    fs.Close();&lt;br /&gt;&lt;br /&gt;    // Выводим информацию&lt;br /&gt;    MessageBox.Show(width + " x " + height + " x " + bitsPerPixel);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void button1_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    ShowBMPInfo(textBox1.Text); // подставляем путь к файлу&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Тут есть одна тонкость. Пропускаемые в коде байты на самом деле все равно считываются. Чтобы действительно перепрыгнуть через заданное число байтов, вы должны использовать методы и свойства объекта потока (stream object). Например, получить текущий поток через свойство BaseStream и пропустить первые 14 байтов можно так:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;reader.BaseStream.Seek(14, SeekOrigin.Begin);&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Кроме того, можно передвинуть внутренний указатель на заданное смещение от конца потока или от текущей позиции. Вот как пропустить короткое целое (2 байта):&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;reader.BaseStream.Seek(2, SeekOrigin.Current);&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;С учетом этих особенностей я написал второй вариант извлечения данных из файла.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;private void ShowBMPInfo2(String file)&lt;br /&gt;{&lt;br /&gt;    FileStream fs = new FileStream(file, FileMode.Open);&lt;br /&gt;    BinaryReader reader = new BinaryReader(fs);&lt;br /&gt;&lt;br /&gt;    // Пропускаем заголовок файла (14 байтов) без считывания&lt;br /&gt;    reader.BaseStream.Seek(14, SeekOrigin.Begin);&lt;br /&gt;&lt;br /&gt;    // Пропускаем размер структуры без считывания&lt;br /&gt;    reader.BaseStream.Seek(4, SeekOrigin.Current);&lt;br /&gt;&lt;br /&gt;    // Получаем ширину и высоту&lt;br /&gt;    int width = reader.ReadInt32();&lt;br /&gt;    int height = reader.ReadInt32();&lt;br /&gt;&lt;br /&gt;    // Пропускаем&lt;br /&gt;    reader.ReadInt16();&lt;br /&gt;&lt;br /&gt;    // Получаем глубину цвета (битов на пиксел)&lt;br /&gt;    Int16 bitsPerPixel = reader.ReadInt16();&lt;br /&gt;&lt;br /&gt;    reader.Close();&lt;br /&gt;    fs.Close();&lt;br /&gt;&lt;br /&gt;    // Выводим информацию&lt;br /&gt;    MessageBox.Show(width + " x " + height + " x " + bitsPerPixel * planes);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void button2_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    ShowBMPInfo2(textBox1.Text);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Толчком к написаню данного топика послужила статья из &lt;a href="http://netsources.narod.ru/msdnmag.htm"&gt;журнала MSDN за август 2002 года&lt;/a&gt;. Там же вы можете найти код для Visual Basic.NET.&lt;/p&gt;&lt;p&gt;Данный совет также будет помещен в раздел &lt;a href="http://developer.alexanderklimov.ru/graphics.php"&gt;Графика&lt;/a&gt; на моем сайте.&lt;/p&gt;&lt;p&gt;Удачного вам программирования!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-7794404324624272592?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/7794404324624272592/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=7794404324624272592' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7794404324624272592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7794404324624272592'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2010/02/poluchit-informaciyu-o-bmp-faile.html' title='Получить информацию о BMP-файле'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-8974739787547246773</id><published>2010-01-31T05:26:00.000-08:00</published><updated>2010-01-31T06:08:40.765-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Samsung'/><category scheme='http://www.blogger.com/atom/ns#' term='эмулятор'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='GT-i8000'/><title type='text'>Установка шкурок (skin) к эмулятору в Visual Studio для коммуникаторов Samsung</title><content type='html'>&lt;p&gt;На Новый год я купил себе новый телефон Samsung GT-i8000 Omnia 2 с Windows Mobile 6.5 и экраном 800х480 на борту. Естественно, разрабатывая программы для своего мобильника в Visual Studio, хочется видеть, как будет выглядеть программа не в абстрактном эмуляторе, а в своем телефоне. К счастью, разработчики из компании Samsung Mobile сделали собственные шкурки для моделей GT-B7300 Omnia Lite, GT-B7330 Omnia Pro, GT-B7620 Armani, GT-i8000 Omnia 2, SPH-i350 Intrepid. Вы можете скачать файлы шкурок и внедрить их в Visual Studio. Я расскажу, как это делается на одном примере для своей модели GT-i8000.&lt;/p&gt;&lt;p&gt;Следует предупредить вас о некоторых особенностях шкурок: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Установленные шкурки от Samsung не изменяют функциональность эмулятора Microsoft. То есть, он будет работать как прежде, и никаких новых предустановленных программ, идущих в комплекте к телефонам Samsung, вы не увидите. &lt;/li&gt;&lt;li&gt;Некоторые кнопки на устройстве в эмуляторе могут работать некорректно. Поэтому рекомендуется нажимать на эти кнопки не в эмуляторе мышкой, а через обычную настольную клавиатуру. &lt;/li&gt;&lt;li&gt;Собственные кнопки устройств от Samsung, такие как кнопка камеры, в эмуляторе не поддерживаются.&lt;/li&gt;&lt;li&gt;Размеры самого устройства в эмуляторе нельзя изменять. Некоторые модели настолько большие, что могут не помещаться полностью на экране вашего монитора. Попробуйте увеличить разрешение вашего монитора.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Системные требования&lt;/h3&gt;&lt;p&gt;Чтобы использовать эмуляторы для Samsung-телефонов, необходимо иметь Windows 7, Visual Studio 2008 Professional (и выше), Windows Mobile 6 SDK Refresh и Windows Mobile 6.5 Developer Tool Kit.&lt;/p&gt;&lt;h3&gt;Установка&lt;/h3&gt;&lt;p&gt;Дальше пошагово расскажу процесс установки шкурки.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Скачиваем &lt;a href="http://depositfiles.com/files/j9rylqguc"&gt;пакет эмуляторов&lt;/a&gt; (около 6 мб), в котором содержатся все вышеперечисленные эмуляторы телефонов. Сами шкурки для эмуляторов состоят из нескольких файлов XML и PNG. В файле XML содержится информация о размерах экрана, раскладке клавиатуры и другие конфигурационные данные. Картинки в формате PNG содержат изображения самого телефона в различных состояниях. &lt;/li&gt;&lt;li&gt;Распаковываем файл DeviceSkins.zip и копируем файлы в удобное для вас место. По умолчанию, стандартные шкурки телефонов хранятся в папке C:\Program Files\Windows Mobile 6 SDK\PocketPC\DeviceemulationV650 или C:\Program&lt;br /&gt;Files\Windows Mobile 6 SDK\Smartphone\DeviceemulationV650. Но вы можете выбрать свою папку, например, на диске D:\.&lt;/li&gt;&lt;li&gt;Запускаем Visual Studio и открываем меню Tools Options. В диалоговом окне &lt;b&gt;Options&lt;/b&gt; открываем раздел &lt;b&gt;Device Tools&lt;/b&gt; &lt;b&gt;Devices&lt;/b&gt;. В списке &lt;b&gt;Devices&lt;/b&gt; выбираем подходящую модель для нашего телефоноа. В моем случае мне подходит модель &lt;b&gt;USA Windows Mobile 6.5 Professional WVGA&lt;/b&gt;. Для модели GT-B7330 Omnia Pro следует выбрать &lt;b&gt;USA Windows Mobile 6.5 Standard Square Emulator&lt;/b&gt;. &lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 268px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5432899028016231378" border="0" alt="" src="http://1.bp.blogspot.com/_iaOeRqXXfwQ/S2WI4Zl489I/AAAAAAAAAEU/58miIzBF5bY/s400/samsungemulator1.png" /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Выделив нужную модель, щелкните на кнопке &lt;b&gt;Save As&lt;/b&gt; и введите имя для сохраняемой модели, например, Samsung GT-i8000 Omnia 2.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_iaOeRqXXfwQ/S2WJcxSSMdI/AAAAAAAAAEc/MULQhH6Dh9U/s1600-h/samsungemulator2.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 140px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5432899652851741138" border="0" alt="" src="http://1.bp.blogspot.com/_iaOeRqXXfwQ/S2WJcxSSMdI/AAAAAAAAAEc/MULQhH6Dh9U/s400/samsungemulator2.png" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;После сохранения в списке появится ваш телефон. Выделите его и нажмите на кнопку &lt;b&gt;Properties&lt;/b&gt;. У вас откроется новое диалоговое окно.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/S2WJ4Ydn-qI/AAAAAAAAAEk/siPgETmbtu8/s1600-h/samsungemulator3.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 319px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5432900127224756898" border="0" alt="" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/S2WJ4Ydn-qI/AAAAAAAAAEk/siPgETmbtu8/s400/samsungemulator3.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Щелкните на кнопке &lt;b&gt;Emulator Options&lt;/b&gt;, чтобы открыть еще одно диалоговое окно. &lt;/li&gt;&lt;li&gt;Перейдите на вкладку &lt;strong&gt;Display&lt;/strong&gt; и для переключателя &lt;strong&gt;Skin&lt;/strong&gt; укажите местоположение XML-файла, который хранится в папке шкурок вашего телефона. Щелкните кнопку &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/S2WKXx4lGHI/AAAAAAAAAEs/zv2J7-4QN58/s1600-h/samsungemulator4.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 329px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5432900666624645234" border="0" alt="" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/S2WKXx4lGHI/AAAAAAAAAEs/zv2J7-4QN58/s400/samsungemulator4.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Возвращаемся к диалоговому окну &lt;strong&gt;Options&lt;/strong&gt; и выбираем раздел &lt;strong&gt;Device Tools Form Factors&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;В списке &lt;strong&gt;Form factors&lt;/strong&gt; выбираем опять подходящую модель эмулятора, как мы это уже делали несколько шагов назад и сохраняем через кнопку &lt;b&gt;Save As&lt;/b&gt; под тем же именем, под которым вы собираетесь работать.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_iaOeRqXXfwQ/S2WKYA1pBGI/AAAAAAAAAE0/LGApon83GRA/s1600-h/samsungemulator5.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 268px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5432900670638851170" border="0" alt="" src="http://1.bp.blogspot.com/_iaOeRqXXfwQ/S2WKYA1pBGI/AAAAAAAAAE0/LGApon83GRA/s400/samsungemulator5.png" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Выбираем свой телефон в списке и щелкаем на кнопке &lt;strong&gt;Properties&lt;/strong&gt;. &lt;/li&gt;&lt;li&gt;Снова указывем местоположение XML-файла, в котором содержится информация о шкурке.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Для моделей Omnia II, Omnia Lite, and Armani необходимо временно снять флажок &lt;strong&gt;Show skin&lt;/strong&gt;, ввести новые значения ширины и высоты экрана устройств (480x800 для Omnia II and Armani; 240x400 для Omnia Lite) и установить обратно флажок &lt;strong&gt;Show skin&lt;/strong&gt;. Нажмите кнопку &lt;strong&gt;OK&lt;/strong&gt;, чтобы закрыть окно.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_iaOeRqXXfwQ/S2WKYcmWIlI/AAAAAAAAAE8/frcpPa6lVn8/s1600-h/samsungemulator6.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 394px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5432900678090891858" border="0" alt="" src="http://3.bp.blogspot.com/_iaOeRqXXfwQ/S2WKYcmWIlI/AAAAAAAAAE8/frcpPa6lVn8/s400/samsungemulator6.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Совет: Если вы собираетесь постоянно работать с эмулятором Samsung, то можете в окне настроек выбрать из списка &lt;strong&gt;Default form factor&lt;/strong&gt; свою модель. В этом случае во время разработки программ в дизайнере форм у вас будет выводиться изображение вашего телефона (об этом чуть позже).&lt;/p&gt;&lt;p&gt;Если у вас возникнет задача удаления установленного эмулятора, то достаточно снова вызвать окно настроек &lt;b&gt;Options&lt;/b&gt;, выбрать нужную модель и нажать на кнопку &lt;strong&gt;Delete&lt;/strong&gt;.&lt;/p&gt;&lt;h3&gt;Использование шкурки в Device Emulator&lt;/h3&gt;&lt;p&gt;С настройками закончено. Теперь мы можем использовать шкурки в эмуляторе при отладке собственных программ. У вас есть два варианта - залить программу на стандартный Device Emulator или запустить эмулятор через Device Emulator Manager. Рассмотрим первый вариант:&lt;/p&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Выберите меню &lt;strong&gt;Debug&lt;/strong&gt; &lt;strong&gt;Start Debugging&lt;/strong&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Выберите из списка нужный вам телефон и щелкните кнопку &lt;strong&gt;Deploy&lt;/strong&gt;.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_iaOeRqXXfwQ/S2WKYipYQ8I/AAAAAAAAAFE/6M3vQhSlEKk/s1600-h/samsungemulator7.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 293px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5432900679714227138" border="0" alt="" src="http://2.bp.blogspot.com/_iaOeRqXXfwQ/S2WKYipYQ8I/AAAAAAAAAFE/6M3vQhSlEKk/s400/samsungemulator7.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Ваша программа запустится в эмуляторе Samsung. Так как даже на моем 22-дюймовом мониторе не помещается полностью эмулятор, я развернул его в горизонтальное положение.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_iaOeRqXXfwQ/S2WKY47mzJI/AAAAAAAAAFM/E9nkm4BsFfM/s1600-h/samsungemulator8.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 222px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5432900685696257170" border="0" alt="" src="http://1.bp.blogspot.com/_iaOeRqXXfwQ/S2WKY47mzJI/AAAAAAAAAFM/E9nkm4BsFfM/s400/samsungemulator8.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Использование шкурки во время разработки&lt;/h3&gt;&lt;p&gt;Вы можете использовать внешний вид телефона не только во время запуска программы, но и во время разработки в дизайнере форм. Когда мы устанавливали шкурку, то уже сделали необходимые настройки (настройка Form Factors). Поэтому вам достаточно открыть дизайнер форм, щелкнуть правой кнопкой мыши на самой форме и выбрать пункт &lt;strong&gt;Properties&lt;/strong&gt;. В окне свойств найдите параметр &lt;b&gt;FormFactor&lt;/b&gt; и выберите нужный пункт. В данном случае я опять развернул устройство на 90 градусов, чтобы показать, как выглядит устройство в дизайнере форм. &lt;p&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_iaOeRqXXfwQ/S2WMdOt-bHI/AAAAAAAAAFU/8watgv99hw4/s1600-h/samsungemulator9.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 156px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5432902959287397490" border="0" alt="" src="http://2.bp.blogspot.com/_iaOeRqXXfwQ/S2WMdOt-bHI/AAAAAAAAAFU/8watgv99hw4/s400/samsungemulator9.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Как видите, после несложной настройки, у вас появилась возможность увидеть свой телефон в Visual Studio. Следующим шагом будет использование SDK от Samsung, чтобы использовать возможности устройства в своих программах, например, акселерометр. Чем я и собираюсь заняться в ближайшее время.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-8974739787547246773?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/8974739787547246773/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=8974739787547246773' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8974739787547246773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8974739787547246773'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2010/01/ustanovka-shkurok-skin-k-emulyatoru-v.html' title='Установка шкурок (skin) к эмулятору в Visual Studio для коммуникаторов Samsung'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_iaOeRqXXfwQ/S2WI4Zl489I/AAAAAAAAAEU/58miIzBF5bY/s72-c/samsungemulator1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-5126472338856181025</id><published>2009-11-06T09:12:00.000-08:00</published><updated>2010-05-03T05:36:56.322-07:00</updated><title type='text'>Coding4Fun</title><content type='html'>Если сегодня зайти в книжный магазин и подойти к полке, где выставлены книги по C# или Visual Basic.NET, то глаза... нет, не разбегаются от изобилия названий. Да откуда взяться этому изобилию. Создается впечатление, что издатели тасуют некую колоду, состоящую из карт с подписанными словами. И мы видим на полках книги-близнецы: Полное-руководство-шаг за шагом-самоучитель-за 21 день-неделю-по 15 минут-для профессионалов-новичков-с примерами. Даже обложки одинаковы и выдержаны в одной цветовой гамме. А примеры в книгах для профессионалов на 70% совпадают с примерами в книгах для новичков. Спрашивается, какая между ними разница?&lt;br /&gt;И, как гром среди ясного неба, для меня стало известие, что издательство Символ и его интернет-магазин &lt;a href="http://www.books.ru/"&gt;Books.ru&lt;/a&gt; выпустили книгу &lt;strong&gt;Coding4Fun.Программируем для удовольствия&lt;/strong&gt;.&lt;br /&gt;Честно говоря, не ожидал, что в России напечатают эту книгу (и достаточно оперативно).&lt;br /&gt;Сам я давно являюсь постоянным читателем блога &lt;a href="http://blogs.msdn.com/coding4fun/default.aspx"&gt;Coding4Fun&lt;/a&gt;, начиная с самых первых выпусков 2005 года. Уже тогда статьи из блога привлекали меня своей нестандартностью. Несколько раз я не удержался и разместил на &lt;a href="http://developer.alexanderklimov.ru/"&gt;своем сайте&lt;/a&gt; статьи в вольном переводе. К счастью, недавно появилось русскоязычное зеркало блога, где достаточно оперативно выкладываются новые материалы. Но, к сожалению, по словам координатора русской версии, старые материалы переводиться не будут. А жаль, там встречаются интересные проекты.&lt;br /&gt;Вернемся к книге. В ней представлено 10 проектов из тех примеров, которые были описаны в блоге. Кто-то может спросить, а зачем читать эту книгу. Разве нельзя почитать эти же материалы в блоге? Конечно, можно. Но, иногда чтение книги более продуктивнее и удобнее. Возможно, это дело привычки. Лично мне было приятно держать бумажный вариант на руках и читать главу за главой об интересных примерах.&lt;br /&gt;Примеры поражают своей широтой - здесь есть примеры для Windows, Xbox, ASP.NET, Wiimote, светомузыки и т.д.&lt;br /&gt;Кстати, пусть вас не вводит в заблуждение малое количество проектов. Возьмем, для примера проект InnerTube. В этом проекте описывается процесс взаимодействия с популярным онлайн-сервисом YouTube. Авторы знакомят нас с YouTube API, при помощи которых мы можем скачать нужный ролик. Но это еще не все. Попутно, мы узнаем, как можно сконвертировать скачанный ролик в нужный нам формат, а также синхронизировать полученные материалы с iTunes и Zune. Фактически, в одном проекте описываются три разных задачи, каждая из которых вполне может потянуть на отдельный проект.&lt;br /&gt;Также мне порадовало наличие примеров для Wiimote, так как я являюсь счастливым обладателем &lt;a href="http://user.alexanderklimov.ru/wii/wii.php"&gt;приставки Wii&lt;/a&gt;. Надеюсь, что у меня дойдут руки для подробного изучения примеров, и я напишу какое-нибудь приложение, использующее возможности Wiimote.&lt;br /&gt;Теперь добавлю ложку дегтя в бочку меда, чтобы не перехвалить книгу. Откровенно говоря, меня удивило, что в текстах книги используется слово &lt;em&gt;броузер&lt;/em&gt;. Мне это напомнило далекие 90-е, когда половина людей использовала это слово, а другая половина говорила - &lt;em&gt;браузер&lt;/em&gt;. Мне кажется, что на данный момент больше прижился термин &lt;strong&gt;браузер&lt;/strong&gt;. Я даже не поленился, и во время написания этих строчек, запустил поиск в справочной системе Windows 7. По слову броузер было найдено 0 документов.&lt;br /&gt;Второй момент, который мне не понравился - это обложка. Оригинальная обложка американского издания мне нравится больше. Возможно, это дело вкуса. Не будем спорить.&lt;br /&gt;Если вы интересуетесь программированием под .NET Framework как хобби, то эта книга для вас из категории &lt;em&gt;Must Have&lt;/em&gt;. Советую вам поторопиться с приобретением книги. Тираж у книги небольшой и, есть предположение, что до книжных прилавков он не дойдет. Самый удобный способ - приобрести через интернет-магазины, например, &lt;a href="http://www.ozon.ru/context/detail/id/4839452/?partner=visual"&gt;ОЗОН&lt;/a&gt;.&lt;br /&gt;Приятного вам чтения!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-5126472338856181025?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/5126472338856181025/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=5126472338856181025' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5126472338856181025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5126472338856181025'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/11/coding4fun.html' title='Coding4Fun'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-6653187119807163503</id><published>2009-10-24T03:32:00.000-07:00</published><updated>2009-10-24T04:26:19.573-07:00</updated><title type='text'>Фотоотчет о посещении офиса Microsoft</title><content type='html'>&lt;div&gt;Утро 23 октября 2009 было мерзким. На улице шел противный дождь. Еще вчера я взял отгул в счет отпуска на работе и мог спокойно спать. Но пришлось вставать. Ведь отгул я брал не просто так. У меня было запланировано посещение офиса мегакорпорации Microsoft. Дело в том, что меня попросили возглавить московское представительство Microsoft. Впрочем, нет, Билл Гейтс и Стив Балмер еще не созрели для такого предложения.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Я поперся туда в такую погоду по другой причине - Microsoft проводила очередной семинар Techdays в Москве.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;В прошлом году семинар проходил в Бауманском Доме Культуры (или как он там называется). На этот раз устроители пригласили разработчиков к себе в логово. Упускать такой шанс было нельзя.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Преодолев стойкое желание поспать, я встал и стал собираться. Холодильник был пустой, если не считать замороженного мяса. Мясо предназначалось коту, я не имел права отнимать у него последний кусок. Попил пустой чай и поехал через всю Москву в Крылатское. Вся надежда была на Microsoft, которая не даст умереть с голоду разработчика под платформу Windows.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Мои надежды оправдались - в фойе, где проходила регистрация, были накрыты столы с пирожками, а также стояли термосы с чаем/кофем. Семинар проходил целый день с 10.00 до 19.00. Через каждый час устраивались перерывы - народ ломился из учебного зала, чтобы подкрепиться. Тут Microsoft не подкачал. Молодые девушки и юноши успевали к каждому такому перерыву обновлять содержимое стола. Кроме пирожков, появились также вкусные бутерброды, соки, минеральная вода.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Во время перерыва я изобразил из себя праздношатающего зеваку и стал обследовать офис. Конечно, в закрытые двери ломиться я стал, а просто прошелся по коридору. И, неожиданно, оказался в кафе для сотрудников и посетителей Windows Vista Cafe. В кафе оказалось четыре компа (два не работало), подключенных к интернету. Также имелась пара автоматов XBox. Повсюду были шарики по случаю релиза Windows 7 и Visual Studio 2010 beta.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;На семинаре одному из участников достался приз - фирменная банка пива Windows 7. Интересно, можно ее купить где-нибудь?&lt;/div&gt;&lt;br /&gt;&lt;div&gt;О самом семинаре рассказывать не буду. Все равно все материалы устроители выложат на сайте.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;После окончания семинара всех также угостили пивом и фирменными тортами с надписями MSDN и Windows 7. Решение объединить два продукта мне показалось спорным (я о пиве и торте). Лично я сначала выпил бокал пива, а потом уже стал пить чай с тортом. Рядом со мной находился человек, который совершал обряд в обратном порядке. Не знаю, не знаю.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Заинтересовался также бумажками, вывешенными в туалете. Удивило, что в московском представительстве тексты была набраны на английском и напрочь отсутствовала локализованная версия. Видимо, тексты предназначались только для иностранцев. Вникать в содержание плакатов не было желания, но иллюстрации на первой картинке напоминали азбуку жестов для глухонемых.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;По традиции всех участников одарили блокнотами, ручками, брошюрами. А вот футболки стали приятным сюрпризом. Только почему-то всегда дарят белые футболки (ворчу про себя).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Подписывать фотки я не стал. Думаю, что после прочтения данного поста, вы и сами разберетесь, что к чему.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Спасибо, Microsoft. Было очень вкусно.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/SuLjCtKtNHI/AAAAAAAAADc/BqzYaB91kTA/s1600-h/ms10.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 224px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5396124939167020146" border="0" alt="" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/SuLjCtKtNHI/AAAAAAAAADc/BqzYaB91kTA/s400/ms10.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_iaOeRqXXfwQ/SuLjCf1PwBI/AAAAAAAAADU/vL-BMDg-l3s/s1600-h/ms9.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 224px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5396124935587348498" border="0" alt="" src="http://1.bp.blogspot.com/_iaOeRqXXfwQ/SuLjCf1PwBI/AAAAAAAAADU/vL-BMDg-l3s/s400/ms9.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_iaOeRqXXfwQ/SuLjCJby_OI/AAAAAAAAADM/EJiSohxKm0w/s1600-h/ms8.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 224px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5396124929575025890" border="0" alt="" src="http://3.bp.blogspot.com/_iaOeRqXXfwQ/SuLjCJby_OI/AAAAAAAAADM/EJiSohxKm0w/s400/ms8.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/SuLjBkpZl-I/AAAAAAAAADE/JuAxbX1x-HA/s1600-h/ms7.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 224px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5396124919699970018" border="0" alt="" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/SuLjBkpZl-I/AAAAAAAAADE/JuAxbX1x-HA/s400/ms7.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_iaOeRqXXfwQ/SuLjBSabsoI/AAAAAAAAAC8/kpRSRZnWQxA/s1600-h/ms6.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 224px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5396124914805355138" border="0" alt="" src="http://1.bp.blogspot.com/_iaOeRqXXfwQ/SuLjBSabsoI/AAAAAAAAAC8/kpRSRZnWQxA/s400/ms6.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 224px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5396122963780698514" border="0" alt="" src="http://1.bp.blogspot.com/_iaOeRqXXfwQ/SuLhPuR6AZI/AAAAAAAAAC0/_RZAOP7SSL4/s400/ms5.JPG" /&gt;&lt;a href="http://2.bp.blogspot.com/_iaOeRqXXfwQ/SuLhPW1AYBI/AAAAAAAAACs/IF_lyZRMKPk/s1600-h/ms4.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 224px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5396122957485465618" border="0" alt="" src="http://2.bp.blogspot.com/_iaOeRqXXfwQ/SuLhPW1AYBI/AAAAAAAAACs/IF_lyZRMKPk/s400/ms4.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/SuLhPDzvf3I/AAAAAAAAACk/-3UhZokG9bE/s1600-h/ms3.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 224px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5396122952379891570" border="0" alt="" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/SuLhPDzvf3I/AAAAAAAAACk/-3UhZokG9bE/s400/ms3.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_iaOeRqXXfwQ/SuLhOwRS9MI/AAAAAAAAACc/YbUylv4L1YE/s1600-h/ms2.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 224px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5396122947135141058" border="0" alt="" src="http://2.bp.blogspot.com/_iaOeRqXXfwQ/SuLhOwRS9MI/AAAAAAAAACc/YbUylv4L1YE/s400/ms2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/SuLhOj7B7II/AAAAAAAAACU/zX6VwWg41wY/s1600-h/ms1.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 224px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5396122943820524674" border="0" alt="" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/SuLhOj7B7II/AAAAAAAAACU/zX6VwWg41wY/s400/ms1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-6653187119807163503?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/6653187119807163503/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=6653187119807163503' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6653187119807163503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6653187119807163503'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/10/fotootchet-o-poseschenii-ofisa.html' title='Фотоотчет о посещении офиса Microsoft'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iaOeRqXXfwQ/SuLjCtKtNHI/AAAAAAAAADc/BqzYaB91kTA/s72-c/ms10.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-1217003856571568970</id><published>2009-10-22T10:58:00.000-07:00</published><updated>2009-10-22T11:23:18.730-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><title type='text'>WM_APPCOMMAND</title><content type='html'>&lt;p&gt;Недавно в &lt;a href="http://developer.alexanderklimov.ru/guide.php"&gt;справочник по функциям Windows API&lt;/a&gt; я добавил новый материал - описание сообщения &lt;b&gt;WM_APPCOMMAND&lt;/b&gt;. Предлагаю вашему вниманию рассказ об этом интересном сообщении в сжатом виде. Само сообщение объявляется следующим образом:&lt;/p&gt;&lt;pre&gt;private const int WM_APPCOMMAND = 0x319;&lt;/pre&gt;&lt;p&gt;Сообщение &lt;b&gt;WM_APPCOMMAND&lt;/b&gt; уведомляет окно о том, что пользователь создал командное событие прикладной программы, например, щелкнул на кнопке в приложении, используя мышь, или нажал на клавиатуре клавишу управления приложением.&lt;/p&gt;&lt;p&gt;С помощью данного сообщения можно, например, отключить системный микшер, значок которого находится в области уведомлений рядом с часиками.&lt;/p&gt;&lt;pre&gt;private const int APPCOMMAND_VOLUME_MUTE = 0x8 * 0x10000;&lt;br /&gt;&lt;br /&gt;private void button2_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    // выключаем/включаем микшер&lt;br /&gt;    SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_VOLUME_MUTE);&lt;br /&gt;}&lt;/pre&gt;&lt;p&gt;Обратите внимание, что микшер включается или выключаетя циклически, т.е. для включения микшера нужно еще раз послать данное сообщение.&lt;/p&gt;&lt;p&gt;Также можно увеличивать или уменьшать уровень громкости микшера(константы APPCOMMAND_VOLUME_DOWN и APPCOMMAND_VOLUME_UP). Кроме того, среди используемых констант можно найти управление микрофоном, браузером или универсальным проигрывателем. Вот как можно поставить на паузу Windows Media Player из своей программы:&lt;/p&gt;&lt;pre&gt;private const int APPCOMMAND_MEDIA_PLAY_PAUSE = 0x14 * 0x10000;&lt;br /&gt;&lt;br /&gt;    SendMessageW(this.Handle, WM_APPCOMMAND, this.Handle, (IntPtr)APPCOMMAND_MEDIA_PLAY_PAUSE);&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Полный список доступных констант вы найдете в справочнике. Хочу обратить ваше внимание, что все значения констант в сообщении &lt;b&gt;WM_APPCOMMAND&lt;/b&gt; необходимо умножить на 0x10000, что я и сделал в предыдущих примерах. Используются ли данные константы без умножения в других сообщениях , я не знаю. Кто в курсе - отзовитесь.&lt;/p&gt;&lt;p&gt;Кстати, при изучении документации MSDN, я обнаружил еще одну интересную константу &lt;b&gt;APPCOMMAND_DWM_FLIP3D&lt;/b&gt;, который включает режим FLIP 3D в Windows 7 (Кстати, сегодня первый день розничной продажи Windows 7).&lt;/p&gt;&lt;p&gt;Удачного вам программирования!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-1217003856571568970?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/1217003856571568970/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=1217003856571568970' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1217003856571568970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1217003856571568970'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/10/wmappcommand.html' title='WM_APPCOMMAND'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-18360126548004724</id><published>2009-08-23T12:58:00.000-07:00</published><updated>2009-08-23T13:19:05.506-07:00</updated><title type='text'>Кнопка Пуск и панель задач в Windows 7</title><content type='html'>Недавно я установил себе новую операционную систему Windows 7. Свои первые впечатления о системе я описал в &lt;a href="http://blog.alexanderklimov.ru/post/Ustanovka-Windows-7.aspx"&gt;личном блоге&lt;/a&gt;. С появлением новой системы приходится пересматривать старые проекты, чтобы убедиться в работоспособности прежних проектов. Один из таких примеров - поведение кнопки Пуск. В своем справочнике по функциям Windows API для .NET Framework я использовал пример скрытия кнопки Пуск, а также панели задач, области уведомлений и часов. Все, кроме кнопки Пуск, работает замечательно. Вот только кнопка Пуск не желает исчезать. Ее можно скрыть только с панелью задач, но никак не отдельно. На сайте CodeProject приводится &lt;a href="http://www.codeproject.com/KB/miscctrl/Hide_Vista_Start_Orb_Simp.aspx"&gt;пример&lt;/a&gt;, в котором по утверждению автора, кнопка исчезает. Но тут есть одна проблема - в его коде используется слово Start для кнопки Пуск. Возможно, его пример работает в американской версии Windows, но в русской версии кнопка не исчезает. Я пробовал изменить слово на Пуск в коде, но это тоже не принесло результата.&lt;br /&gt;Также на CodeProject имеется &lt;a href="http://www.codeproject.com/KB/miscctrl/hide_vista_start_orb.aspx"&gt;другой пример &lt;/a&gt;для работы с кнопкой. Но он также мне ничем не помог.&lt;br /&gt;Сам пример описан в моей книге &lt;a href="http://www.ozon.ru/?context=detail&amp;amp;id=3907508&amp;amp;partner=visual"&gt;C#.Советы программистам&lt;/a&gt;, поэтому нет смысла его приводить здесь. Просто имейте в виду, что пример с кнопкой Пуск из книги в Windows 7 работать не будет.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-18360126548004724?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/18360126548004724/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=18360126548004724' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/18360126548004724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/18360126548004724'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/08/knopka-pusk-i-panel-zadach-v-windows-7.html' title='Кнопка Пуск и панель задач в Windows 7'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-5102534232003381150</id><published>2009-06-13T08:34:00.000-07:00</published><updated>2009-06-13T08:59:47.805-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><title type='text'>Windows Mobile</title><content type='html'>Сегодня новости будут посвящены платформе Windows Mobile. Во-первых, недавно был запущен &lt;a href="http://blogs.msdn.com/windowsmobile_ru/default.aspx"&gt;Русский блог Windows Mobile&lt;/a&gt;. Материалы для блога готовит команда из нескольких человек. Ребята с энтузиазмом взялись за работу, очень активно переводят статьи из зарубежных блогов. Качество перевода пока оставляет желать лучшего, но, надеюсь, это временные проблемы. Советую занести адрес блога в закладки.&lt;br /&gt;На моем сайте также появилось несколько новых материалов. Например, статья о &lt;a href="http://developer.alexanderklimov.ru/winmobile/widget.php"&gt;разработке виджетов для Windows Mobile 6.5&lt;/a&gt;. На самом деле, эта тема более обширна, чем изложено в статье. Я также написал расширенный вариант для одного журнала. Посмотрим, опубликуют ли статью.&lt;br /&gt;Кроме того, Андрей Коновалов (кстати, один из лучших участников блога о Windows Mobile) на Хабре стал публиковать статьи Криса Крафта, того самого человека, который обещал за тридцать дней написать тридцать приложений. Я сам подумывал о переводах этого цикла, но времени совсем нет. Поэтому я решил использовать с небольшими сокращениями переводы Андрея, внося свои изменения. Вот, например, вы можете прочитать первую статью &lt;a href="http://developer.alexanderklimov.ru/winmobile/30days-1.php"&gt;Обратный отсчёт до полуночи&lt;/a&gt;.&lt;br /&gt;Обратите внимание, кстати, что вышел набор разработчика Windows Mobile 6.5 DTK. В этом наборе появилось несколько новых эмуляторов с различными разрешениями. После установки эмуляторов, вы можете использовать их и для старых проектов. Например, для Windows Mobile 6.1 есть модели с разрешением 800х400. Раньше нельзя было посмотреть в эмуляторе, как выглядит ваше приложение на экране с таким разрешением. Теперь это стало возможным. Сам проект не обязательно компилировать под новую платформу, просто запускайте нужный эмулятор.&lt;br /&gt;И последнее. Как вы знаете, в этому году у меня вышла книга &lt;strong&gt;Программирование для мобильных устройств под управлением Windows Mobile&lt;/strong&gt;. Хочу провести небольшую акцию - за 250 рублей вы можете приобрести эту книгу + получите годовую подписку на мой справочник по Windows API  для .NET Framework. В эту цену входит и почтовая доставка. Так как количество книг ограничено, то вам сначала нужно написать мне письмо о своем желании (&lt;a href="mailto:rusproject@mail.ru"&gt;rusproject@mail.ru&lt;/a&gt;) и я вам вышлю свой номер кошелька WebMoney (также можно перечислить Яндекс-деньгами). Акция расчитана на жителей России. Заказывайте!&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-5102534232003381150?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/5102534232003381150/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=5102534232003381150' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5102534232003381150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5102534232003381150'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/06/windows-mobile.html' title='Windows Mobile'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-434367413828152092</id><published>2009-05-27T11:44:00.000-07:00</published><updated>2009-05-27T11:56:47.222-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='Книги'/><title type='text'>Microsoft Visual C# в задачах и примерах</title><content type='html'>Новая книга Н.Культина &lt;strong&gt;&lt;a href="http://www.ozon.ru/context/detail/id/4468316/?partner=visual"&gt;Microsoft Visual C# в задачах и примерах&lt;/a&gt;&lt;/strong&gt; является переработанным вариантом книги &lt;strong&gt;C# в задачах и примерах&lt;/strong&gt;. Изменения оказались в лучшую сторону. Если в раннем варианте для примеров использовался Turbo C#, то в этот раз используется Visual C#. Сами примеры также были переработаны, а также добавлены новые полезные задачи. В книге можно найти примеры различной степени сложности - от простейших программ вычисления курса валют до приложений, связанных с графикой и базами данных, том числе Microsoft Access и Microsoft SQL Server Compact Edition. Также в книге показано использование новой технологии LINQ. Справочник, входящий в книгу, содержит описание базовых компонентов, событий, исключений и наиболее часто используемых функций. К книге прилагается компакт-диск со всеми проектами, представленными в книге.&lt;br /&gt;Книга рассчитана для начинающих программистов, которые хотят повысить свою квалификацию. Автор предлагает практичные примеры, взятые из жизни, и понятные для восприятия. Я с удовольствием почитал эту книжку и, даже, нашел для себя что-то новое. Например, описание функции Windows API &lt;strong&gt;TaskDialog&lt;/strong&gt;, которая появилась в Windows Vista/Windows 7 (на момент покупки книги я еще не был близко знаком с библиотекой &lt;a href="http://developer.alexanderklimov.ru/articles/vbsl.php"&gt;Windows Vista Bridge Sample Library&lt;/a&gt;).&lt;br /&gt;Рекомендую приобрести и почитать книжку всем, кто только начинает программировать на C#.&lt;br /&gt;Счастливого вам чтения!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-434367413828152092?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/434367413828152092/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=434367413828152092' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/434367413828152092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/434367413828152092'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/05/microsoft-visual-c-v-zadachah-i.html' title='Microsoft Visual C# в задачах и примерах'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-4260819586294624904</id><published>2009-05-23T12:45:00.000-07:00</published><updated>2009-05-23T13:00:15.851-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Windows Vista Bridge Sample Library</title><content type='html'>Долгое время у меня не доходили руки до новой библиотеки Windows Vista Bridge Sample Library, которая позволяет использовать новые возможности Windows Vista и Windows 7 в своих программах. Я видел различные публикации как на американских блогах, так и переведенные статьи. И вот, наконец, я решил изучить эту библиотеку. После небольшого изучения я вновь перечитал статьи и ужаснулся. Насколько все поверхностно описано о возможностях библиотеки, как много осталось недосказанного. Статьи расчитаны на опытных программистов, которые могут самостоятельно изучить исходный код библиотеки и понять о чем идет речь в статьях. Но что делать менее опытным программистам, которые тоже хотят приобщиться к новых технологиям?&lt;br /&gt;Поэтому я решил написать свой вариант статьи на эту тему. Чтобы не начинать работу с нуля, я взял за основу уже имеющиеся статьи и немного поправил их. Предварительный вариант статьи можно прочитать по адресу &lt;a href="http://developer.alexanderklimov.ru/articles/vbsl.php"&gt;http://developer.alexanderklimov.ru/articles/vbsl.php&lt;/a&gt;. В дальнейшем я переработаю статью и постараюсь сделать ее более понятной. Если у вас есть вопросы по данной библиотеке, то можете обратиться ко мне. Самый лучший способ поделиться своим вопросом - это воспользоваться специальной формой &lt;strong&gt;Оставь свой отзыв, &lt;/strong&gt;которую можно найти в правой части главной страницы &lt;a href="http://developer.alexanderklimov.ru/"&gt;http://developer.alexanderklimov.ru&lt;/a&gt;. Также можете задать свой вопрос по электронной почте или в комментариях к этому посту.&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-4260819586294624904?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/4260819586294624904/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=4260819586294624904' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4260819586294624904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4260819586294624904'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/05/windows-vista-bridge-sample-library.html' title='Windows Vista Bridge Sample Library'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-1623222916578512792</id><published>2009-04-26T11:36:00.000-07:00</published><updated>2009-04-26T11:57:36.984-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='Разное'/><title type='text'>ToTitleCase</title><content type='html'>&lt;p&gt;В .NET Framework есть такой интересный метод как ToTitleCase, когда в заданной строке все первые буквы слов становятся большими, а остальные - маленькими. В MSDN можно найти описание и пример использования этого метода. Прочитав, вы узнаете, что у метода есть одна особенность: если все буквы в слове большие, то с этим словом ничего не происходит. Например, это удобно, когда встречаются такие слова как СССР, МГУ, ЗАГС и т.п. Но тем не менее, иногда, хочется обойти это ограничение. Что для этого нужно сделать. Правильно, сначала перевести все слова в нижний регистр, а затем вызвать метод ToTitleCase.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Именно так поступил программист Jan Schreuder, написав функции-обертки для этого метода (блог &lt;a href="http://bloggingabout.net/blogs/jschreuder/archive/2006/11/14/How-to_3A00_-Change-casing-in-Text-to-TitleCase.aspx"&gt;http://bloggingabout.net/&lt;/a&gt;)&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;private string ToTitleCase(string text, System.Globalization.CultureInfo culture, bool forceCasing)&lt;br /&gt;{    &lt;br /&gt;    if (forceCasing)    &lt;br /&gt;    {        &lt;br /&gt;        return culture.TextInfo.ToTitleCase(text.ToLower());&lt;br /&gt;    }    &lt;br /&gt;    return culture.TextInfo.ToTitleCase(text);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private string ToTitleCase(string text)&lt;br /&gt;{    &lt;br /&gt;    return ToTitleCase(text, System.Threading.Thread.CurrentThread.CurrentCulture, false);&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;private string ToTitleCase(string text, bool forceCasing)&lt;br /&gt;{    &lt;br /&gt;    return ToTitleCase(text, System.Threading.Thread.CurrentThread.CurrentCulture, forceCasing);&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;private string ToTitleCase(string text, System.Globalization.CultureInfo culture)&lt;br /&gt;{    &lt;br /&gt;    return ToTitleCase(text, culture, false);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//Вызываем какую-нибудь функцию&lt;br /&gt;label1.Text = ToTitleCase(textBox1.Text, true);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Как видите, в нашем распоряжении четыре перегруженных версий функции. В стандартном случае достаточно вызвать функцию с одним параметром, которая содержит нужную строку. Для других случаев вызываются перегруженные версии.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Вот как будут выглядеть строки после вызова всех вариантов функций.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;change this to title case =&gt; Change This To Title Case&lt;br /&gt;chanGe This to TITLE case =&gt; Change This To TITLE Case&lt;br /&gt;ChanGe This to TITLE case =&gt; Change This To TITLE Case&lt;br /&gt;ChanGe This to TITLE case =&gt; Change This To Title Case&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Возможно, пример покажется не самым полезным в вашей практике, ну, а вдруг пригодится.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-1623222916578512792?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/1623222916578512792/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=1623222916578512792' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1623222916578512792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1623222916578512792'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/04/totitlecase.html' title='ToTitleCase'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-450834329547057880</id><published>2009-04-05T01:31:00.000-07:00</published><updated>2009-04-05T01:37:39.558-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><title type='text'>Колокольчик для коровы</title><content type='html'>&lt;p&gt;Некоторое время назад я начал переводить статью для раздела Windows Mobile, взятую с Codin4Fun. А недавно обнаружил, что эту статью также перевели на русском варианте Coding4Fun. Честно говоря, мне не очень понравился тот перевод, поэтому я все-таки решил выложить на своем сайте свой вариант перевода. &lt;a href="http://developer.alexanderklimov.ru/winmobile/cowbell.php"&gt;Прочитать статью можно здесь&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Удачного вам программирования!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-450834329547057880?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/450834329547057880/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=450834329547057880' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/450834329547057880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/450834329547057880'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/04/kolokolchik-dlya-korovy.html' title='Колокольчик для коровы'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-1038388421810391841</id><published>2009-03-24T11:40:00.000-07:00</published><updated>2009-03-24T11:49:21.160-07:00</updated><title type='text'>Проверь знания и выиграй призы</title><content type='html'>&lt;p&gt;Перед Новым годом я предлагал вам поучаствовать в конкурсе на сайте ITquiz.ru. Те, кто принял мое приглашение, смогли выграть неплохие призы. Сам я также получил пивной бокал (см. предыдущие посты).&lt;p&gt;&lt;br /&gt;&lt;p&gt;И вот запускается новая серия. Попробуйте свои силы. Для того, чтобы принять участие в новом конкурсе, перейдите по ссылке &lt;a href='http://www.itquiz.ru/Invite.aspx?IID=a5314a85-c2c6-4eb6-b08f-05df28d9d138'&gt;&lt;img src='http://www.itquiz.ru/images/block/win7logo.png' /&gt;&lt;/a&gt; и зарегистрируйтесь (если у вас нет LiveID, OpenId).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Всем удачи!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-1038388421810391841?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/1038388421810391841/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=1038388421810391841' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1038388421810391841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1038388421810391841'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/03/prover-znaniya-i-vyigrai-prizy.html' title='Проверь знания и выиграй призы'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-5226698284726534417</id><published>2009-03-23T11:49:00.000-07:00</published><updated>2009-03-23T12:08:33.113-07:00</updated><title type='text'>Моя книга в Библио-Глобусе</title><content type='html'>Совсем недавно в издетельстве Питер вышла моя книга &lt;strong&gt;Программирование для мобильных устройств под управлением Windows Mobile&lt;/strong&gt;. Первое время она продавалась только в Петербурге, но недавно добралась и до прилавков московских магазинов. Несколько дней назад на сайте книжного магазина Библио-Глобус обнаружил, что у них тоже продается моя книга. Сегодня зашел в этот магазин и долго искал книгу на полках компьютерного отдела. Так и не нашел. Но, к счастью, магазин оборудован очень удобными терминалами с сенсорными дисплеями. Набираешь на экране название нужной книги и запускаешь поиск. Через несколько секунд система выдает тебе список найденных книг. При желании можно распечатать себе квитанцию с точным расположением книги. С удовольствием воспользовался этой услугой и уже через несколько секунд держал в руках свою книгу.&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 311px; DISPLAY: block; HEIGHT: 400px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5316459601138851234" border="0" alt="" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/Scfb1uSYnaI/AAAAAAAAACI/Q_JqcKqo88c/s400/biblioglobus.jpg" /&gt;&lt;br /&gt;Кстати, завтра 24 марта в магазине проходит акция - всем покупателям с 18.00 до 22.00 предоставляется скидка 20% на любую книгу. Поэтому, если вы покупаете книги в книжных магазинах, то приезжайте завтра в Библио-Глобус. Можно сэкономить неплохую сумму при нынешних ценах на компьютерную литературу.&lt;br /&gt;Приятного вам чтения!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-5226698284726534417?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/5226698284726534417/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=5226698284726534417' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5226698284726534417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5226698284726534417'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/03/moya-kniga-v-biblio-globuse.html' title='Моя книга в Библио-Глобусе'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iaOeRqXXfwQ/Scfb1uSYnaI/AAAAAAAAACI/Q_JqcKqo88c/s72-c/biblioglobus.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-5026770987290296135</id><published>2009-03-22T10:32:00.001-07:00</published><updated>2009-03-22T10:39:12.466-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><title type='text'>ShellAbout</title><content type='html'>&lt;p&gt;Сегодня познакомлю вас с простой функцией Windows API ShellAbout.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[DllImport("shell32.dll")]&lt;br /&gt;static extern int ShellAbout(IntPtr hWnd, string szApp, string szOtherStuff, IntPtr hIcon);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;ShellAbout&lt;/b&gt; выводит стандартное диалоговое окно Windows "О программе". Такое окно, например, вы можете увидеть при выборе меню О программе в Блокноте (notepad.exe). ЭТо окно можно использовать, когда у вас нет времени на разработку своего окна About.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Параметры&lt;/h3&gt;&lt;br /&gt;&lt;dl&gt;&lt;br /&gt;&lt;dt&gt;hwnd&lt;/dt&gt;&lt;dd&gt;Описатель родительского окна, вызывающего функцию&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;szApp&lt;/dt&gt;&lt;dd&gt;Выводит текст в заголовке диалогового окна и в первой строчке после слова "Microsoft". Если текст содержит разделитель (#), разделяющий текст на две части, то функция выводит первую часть в заголовке, а вторую после слова "Microsoft"&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;szOtherStuff&lt;/dt&gt;&lt;dd&gt;Выводит текст после информации о версии и копирайте&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;hIcon&lt;/dt&gt;&lt;dd&gt;Значок, выводимый в диалоговом окне. Если параметр равен NULL, функция показывает значок Microsoft Windows&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;&lt;h3&gt;Пример&lt;/h3&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ShellAbout(this.Handle, "Блокнотик", "Супер-программа Александра Климова", IntPtr.Zero);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Данная функция включена в &lt;a href="http://developer.alexanderklimov.ru/guide.php"&gt;справочник по функциям Windows API&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-5026770987290296135?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/5026770987290296135/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=5026770987290296135' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5026770987290296135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5026770987290296135'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/03/shellabout.html' title='ShellAbout'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-8826676498111992312</id><published>2009-02-28T08:41:00.000-08:00</published><updated>2009-02-28T08:48:32.886-08:00</updated><title type='text'>Удаление файлов из корзины</title><content type='html'>В своей книге C#.Советы программистам я привел несколько примеров удаления файлов в системную Корзину. Если вы хотите удалить файлы из самой корзины, то воспользуйтесь функцией Windows API &lt;strong&gt;SHEmptyRecycleBin&lt;/strong&gt;.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[C#]&lt;br /&gt;[DllImport("shell32.dll")]&lt;br /&gt;static extern int SHEmptyRecycleBin(IntPtr hWnd, string pszRootPath, uint dwFlags);&lt;br /&gt;[Visual Basic]&lt;br /&gt;Declare Function SHEmptyRecycleBin Lib "shell32.dll" Alias "SHEmptyRecycleBinA" (&lt;br /&gt;ByVal hwnd As Integer,&lt;br /&gt;ByVal pszRootPath As String,&lt;br /&gt;ByVal dwFlags As Integer) As Integer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь остается только вызвать функцию с нужными параметрами.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SHEmptyRecycleBin(IntPtr.Zero, "", SHERB_NOCONFIRMATION SHERB_NOSOUND);&lt;/span&gt;&lt;br /&gt;Полное описание функции будет добавлено в справочник по функциям Windows API в среде .NET Framework.&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-8826676498111992312?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/8826676498111992312/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=8826676498111992312' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8826676498111992312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8826676498111992312'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/02/udalenie-failov-iz-korziny.html' title='Удаление файлов из корзины'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-2479045057182811499</id><published>2009-02-14T04:07:00.000-08:00</published><updated>2009-02-14T04:24:25.682-08:00</updated><title type='text'>Создание кружочков с цифрами без Photoshop</title><content type='html'>&lt;p&gt;Сегодня в рассылке VB Helper Newsletter (&lt;a href="http://www.vb-helper.com/"&gt;http://www.vb-helper.com/&lt;/a&gt;) прочитал, как автор рассылки создавал специальные картинки для иллюстрации к своим книгам или статьям. Картинки представляют собой маленькие кружочки с цифрами внути. Подобные картинки обычно размещают для показа последоватьельности действий. Например, установите текст в текстовом поле (рис.1), нажмите на кнопку Далее (рис.2) и тому подобное. Безусловно, подобные вещи можно сделать в фотошопе и другом графическом редакторе. Но программисты не ищут легких путей. Гораздо интереснее самому генерировать картинки. Хотя, если серьезно, пример обладает определенным потенциалом для изучения техники работы с графикой, а также может послужить отправной точкой для создания других интересных вещей, например, генерирование лотерейных шаров с номерами.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Пример я портировал с Visual Basic на C#. Желающие ознакомиться с исходниками на VB, могут скачать пример с http://www.vb-helper.com/HowTo/howto_2005_make_number_icons.zip.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Привожу пример на C#. Одно маленькое замечание: в первоисточнике использовался цикл for для генерации десяти кружочков с цифрами от 0 до 9. Я ограничился одной цифрой 1. &lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;const int WID  = 24;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;string base_path = @"e:\down\"; // ваш путь к папке&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Font the_font = new Font("Arial", 10, FontStyle.Bold);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bitmap bm = new Bitmap(WID,WID);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Graphics gr = Graphics.FromImage(bm);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;gr.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;&lt;br /&gt;&lt;br /&gt;gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;&lt;br /&gt;&lt;br /&gt;gr.Clear(Color.White);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rectangle layout_rectangle = new Rectangle(0, 0, WID - 1, WID - 1);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;using (LinearGradientBrush br = new LinearGradientBrush(layout_rectangle,&lt;br /&gt;&lt;br /&gt;    Color.White,Color.Blue,&lt;br /&gt;&lt;br /&gt;    LinearGradientMode.ForwardDiagonal))&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    gr.FillEllipse(br,layout_rectangle);&lt;br /&gt;&lt;br /&gt;    gr.DrawEllipse(Pens.Blue, layout_rectangle);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;StringFormat string_format = new StringFormat();&lt;br /&gt;&lt;br /&gt;string_format.LineAlignment = StringAlignment.Center;&lt;br /&gt;&lt;br /&gt;string_format.Alignment = StringAlignment.Center;&lt;br /&gt;&lt;br /&gt;gr.DrawString("1",the_font,Brushes.White,layout_rectangle,string_format);&lt;br /&gt;&lt;br /&gt;bm.Save(base_path + "1" + ".bmp",System.Drawing.Imaging.ImageFormat.Bmp);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;MessageBox.Show("Готово");&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;Кстати, сегодня День святого Валентина. Поздавляю всех романтичных котиков и кошечек )))&lt;/p&gt;&lt;a href="http://4.bp.blogspot.com/_iaOeRqXXfwQ/SZa3xFmjP2I/AAAAAAAAACA/eZBow85fwEM/s1600-h/valentinka.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5302627665220681570" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 258px" alt="" src="http://4.bp.blogspot.com/_iaOeRqXXfwQ/SZa3xFmjP2I/AAAAAAAAACA/eZBow85fwEM/s320/valentinka.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-2479045057182811499?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/2479045057182811499/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=2479045057182811499' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2479045057182811499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2479045057182811499'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/02/photoshop.html' title='Создание кружочков с цифрами без Photoshop'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_iaOeRqXXfwQ/SZa3xFmjP2I/AAAAAAAAACA/eZBow85fwEM/s72-c/valentinka.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-807560984070009730</id><published>2009-01-17T08:18:00.000-08:00</published><updated>2009-01-17T08:41:12.498-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><title type='text'>Математические функции на мобильных устройствах или Справка тоже ошибается</title><content type='html'>&lt;p&gt;Здравствуйте!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Сегодня хочу поделиться с одним наблюдением, которое поможет некоторым программистам, использующих математические функции в проектах для .NET Framework.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;В составе класса &lt;b&gt;System.Math&lt;/b&gt; есть методы &lt;b&gt;Sinh&lt;/b&gt;, &lt;b&gt;Cosh&lt;/b&gt; и &lt;b&gt;Tanh&lt;/b&gt;, которые возвращают гиперболические синус, косинус и тангенс соответственно. Если вы посмотрите в справочной системе, то увидите, что данные методы поддерживаются, начиная с CF 1.0. Но так ли это на самом деле? Давайте попробуем проверить эти утверждения. Запустим новый проект для мобильных устройств и введем простой код для кнопки:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;textBox1.Text = Math.Sinh(1.2).ToString();&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Редактор кода не будет возражать против данной строчки и даже будет выводить подсказку во время ввода. Теперь запустим проект. Пока все идет хорошо, программа прекрасно компилируется и запускается в эмуляторе или на реальном устройстве. Теперь попробуем нажать на кнопку. Вуаля! Вылетает сообщение об ошибке NotSupportedException.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;К счастью, не все так страшно. Эти методы легко создать самостоятельно.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;double angle = 1.2;&lt;br /&gt;&lt;br /&gt;// sinh(double angle): (e^x - e^-x) / 2&lt;br /&gt;double res = (Math.Exp(angle) - Math.Exp(-angle)) / 2.0;&lt;br /&gt;&lt;br /&gt;// cosh(double angle): (e^x + e^-x) / 2&lt;br /&gt;res = (Math.Exp(angle) + Math.Exp(-angle)) / 2.0;&lt;br /&gt;&lt;br /&gt;// tanh(double angle): sinh / cosh&lt;br /&gt;res = (Math.Exp(angle) - Math.Exp(-angle)) / &lt;br /&gt;   (Math.Exp(angle) + Math.Exp(-angle));&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Сам я не математик и вряд ли мне придется использовать гиперболические синусы (я даже не знаю, что это такое), но, возможно, кто-то из читателей нарвется на эту неприятность. Отсюда вывод - не относитесь к справке MSDN как к догме.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Данный совет будет помещен на страницу &lt;a href="http://developer.alexanderklimov.ru/winmobile/faq_cf.php"&gt;Вопрос+ответ=совет&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Счастливого вам программирования!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-807560984070009730?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/807560984070009730/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=807560984070009730' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/807560984070009730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/807560984070009730'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/01/blog-post.html' title='Математические функции на мобильных устройствах или Справка тоже ошибается'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-255022673291136941</id><published>2009-01-04T08:42:00.000-08:00</published><updated>2009-01-04T09:02:14.767-08:00</updated><title type='text'>Ширина столбцов у ListView</title><content type='html'>Всех с Новым Годом!&lt;br /&gt;&lt;br /&gt;Сегодня поделюсь с вами одним наблюдением, о котором возможно не все знают. Если вы используете в своих проектах элемент управления ListView в режиме Details, то могли заметить одно неудобство. В некоторых случаях, слова обрезаются по ширине ColumnHeader и это слегка раздражает пользователя. Приходится самому вручную увеличивать ширину столбца, чтобы прочитать весь текст. Первое, что приходит в голову - это самостоятельно вычислять ширину слов с помощью MeasureString.&lt;br /&gt;Но не все так плохо. Если прочитать документацию по свойству &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.columnheader.width.aspx"&gt;ColumnHeader.Width&lt;/a&gt;, то можно узнать о двух интересных значениях - это отрицательные значения -1 и -2. Первое значение устанавливает ширину столбца по самому длинному слову в столбце, а второе значение устанавливает ширину по слову, содержащему в самом столбце.&lt;br /&gt;Вы можете установить эти значения в режиме разработки, но обратите внимание, что когда вы нажимаете на кнопку OK в редакторе свойств для ListView, то значения -1 или -2 автоматические заменяются на реальную ширину, которая IDE вычисляет автоматически за нас. Поэтому, если внесете изменения в ListView во время разработки, то еще раз установите нужные значения.&lt;br /&gt;Если вы хотите поддерживать нужные размеры столбцов во время выполнения программы, то делайте это программным способом.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ColumnHeader header;&lt;br /&gt;header.Width = -1;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Этот совет я помещаю на страницу &lt;a href="http://developer.alexanderklimov.ru/faq.php"&gt;Вопросов и ответов&lt;/a&gt;. Кстати, он справедлив и для .NET Compact Framework.&lt;br /&gt;&lt;br /&gt;Счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-255022673291136941?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/255022673291136941/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=255022673291136941' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/255022673291136941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/255022673291136941'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2009/01/listview.html' title='Ширина столбцов у ListView'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-4794034375271453785</id><published>2008-12-27T05:45:00.000-08:00</published><updated>2008-12-27T05:53:25.013-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUN'/><category scheme='http://www.blogger.com/atom/ns#' term='Разное'/><title type='text'>Что общего между Microsoft и пивом?</title><content type='html'>Ответ: пивной бокал. Не прекращается поток подарков от Microsoft. На следующий день после первого подарка (см. предыдущий пост) меня снова побеспокоила служба DHL. На этот раз компания Microsoft подарила мне пивной бокал.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_iaOeRqXXfwQ/SVYzCGCdJNI/AAAAAAAAABw/radZgLw1IU0/s1600-h/beer.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5284467323839522002" style="WIDTH: 162px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://2.bp.blogspot.com/_iaOeRqXXfwQ/SVYzCGCdJNI/AAAAAAAAABw/radZgLw1IU0/s320/beer.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Если вы помните, я предлагал вам участвовать в конкурсе, в котором можно было выиграть призы. Я тоже участвовал и мне удалось стать обладателем приза. Спустя несколько месяцев награда нашла героя.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Кстати, компания приготовила еще один подарок - можно бесплатно скачать электронную версию книги по Silverlight. Ссылку не даю, ищите сами.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;С наступающим Новым годом и счастливого вам программирования!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-4794034375271453785?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/4794034375271453785/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=4794034375271453785' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4794034375271453785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4794034375271453785'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/12/microsoft_27.html' title='Что общего между Microsoft и пивом?'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iaOeRqXXfwQ/SVYzCGCdJNI/AAAAAAAAABw/radZgLw1IU0/s72-c/beer.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-6883073749638723983</id><published>2008-12-25T10:36:00.000-08:00</published><updated>2008-12-25T10:51:40.650-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Разное'/><title type='text'>Новогодние подарки от Microsoft</title><content type='html'>Сегодня служба DHL доставила в мой дом большую посылку (41х34х27 см). Оказалось это подарок от Microsoft. Некоторое время назад по интернету прошел слух, что компания подарит набор из 8 книг по программированию всем, кто подпишется на их рассылку. Не особо веря в чудо, я все-же подписался. И вот, накануне Нового года Microsoft решила немного побыть Дедом Морозом и стала рассылать подарки. &lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_iaOeRqXXfwQ/SVPVaTILlsI/AAAAAAAAABg/0rqTTCrlZCk/s1600-h/MSGift1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5283801435623626434" style="WIDTH: 263px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://2.bp.blogspot.com/_iaOeRqXXfwQ/SVPVaTILlsI/AAAAAAAAABg/0rqTTCrlZCk/s320/MSGift1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;В коробке под толстым-толстым слоем упаковочной пленки (такая с кнопочками, которые так любят давить некоторые особы для успокоения нервов) оказалась еще одна красивая коробка &lt;strong&gt;Боекомплект ИТ-профессионала и разработчика&lt;/strong&gt;, а также DVD-диск с Библиотекой MSDN и Visual Studio 2008 Express. Перечислять все книги я не буду. Но все они очень интересные. &lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_iaOeRqXXfwQ/SVPVtYHTHUI/AAAAAAAAABo/8Y__8_U7YzY/s1600-h/MSGift2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5283801763379617090" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 239px" alt="" src="http://2.bp.blogspot.com/_iaOeRqXXfwQ/SVPVtYHTHUI/AAAAAAAAABo/8Y__8_U7YzY/s320/MSGift2.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;С Рождеством, вас, Microsoft! &lt;/div&gt;&lt;div&gt;И большое спасибо за подарки!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-6883073749638723983?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/6883073749638723983/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=6883073749638723983' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6883073749638723983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6883073749638723983'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/12/microsoft.html' title='Новогодние подарки от Microsoft'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_iaOeRqXXfwQ/SVPVaTILlsI/AAAAAAAAABg/0rqTTCrlZCk/s72-c/MSGift1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-2117122336063347453</id><published>2008-12-07T02:21:00.000-08:00</published><updated>2008-12-07T02:47:36.996-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Улучшенные элементы управления Windows Vista</title><content type='html'>Здравствуйте!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Продолжаем изучать новые возможности Windows Vista. Открываем &lt;a href="http://msdn.microsoft.com/ru-ru/magazine/cc163384.aspx"&gt;статью&lt;/a&gt; из MSDN Magazine за август 2007 года и внимательно ее читаем. Хотя статья написана для программистов C++, нас это не должно останавливать. Я позволю себе скопировать оттуда часть интересующей нас информации. Итак...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;&lt;strong&gt;Элементы управления редактирования и поля списка&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color:#666666;"&gt;Windows XP представил возможность показывать текстовую подсказку для элементов управления редактированием при помощи сообщения EM_SETCUEBANNER. Эта подсказка показывает пользователю информацию, которая исчезает при выделении элемента управления. Windows Vista добавил к этому весьма ценное свойство, позволяющее показывать текст подсказки даже тогда, когда элемент управления выделен. Это на первый взгляд незначительное улучшение во многих случаях снимает необходимость статических элементов управления. Просто используйте ранее незадействованный WPARAM и установите для него значение «истина», чтобы воспользоваться этим свойством.&lt;br /&gt;Примерно таким же образом Windows Vista придает это свойство и полям списка при помощи сообщения CB_SETCUEBANNER. Не существует, однако, варианта показа текста подсказки, когда элемент управления выделен, и только поля раскрывающегося списка продолжают показывать текст подсказки до тех пор, пока не сделан выбор.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Теперь чуть подробнее о том, что тут написано. Возьмем, к примеру браузер Internet Explorer. В верхнем правом углу мы видим строку поиска (текстовое поле), в котором находится слово-подсказка Google. Как только мы установим фокус на нем, то поле очистится и мы можем вводить запрос. Насколько я помню, в Firefox также реализована эта функция (под рукой нет этого браузера). Так вот, это легко реализуется при помощи соответствующего сообщения Windows.&lt;/span&gt;&lt;br /&gt;Аналогично и для комбинированного окна ComboBox. Надо заметить, что в Windows XP, если ComboBox получает фокус, то подсказка исчезает (не могу проверить, т.к. у меня Виста).&lt;br /&gt;В чем преимущество данных подсказок? У вас появляется возможность сэкономить место на форме, не прибегая к Label, так как подсказки позволяют разместить информацию для пользователя.&lt;br /&gt;Я набросал небольшой пример для демонстрации, можете взглянуть на картинку ниже.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_iaOeRqXXfwQ/STuozuLT1II/AAAAAAAAABY/dOMHbRRh354/s1600-h/vistacontrols.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5276996994916930690" style="WIDTH: 300px; CURSOR: hand; HEIGHT: 300px" alt="" src="http://3.bp.blogspot.com/_iaOeRqXXfwQ/STuozuLT1II/AAAAAAAAABY/dOMHbRRh354/s320/vistacontrols.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;По традиции, код и описание новых сообщений Windows будут доступны зарегистрированным пользователям справочника по функциям Windows API. Остальным придется самостоятельно написать программу. Информацию я вам предоставил.&lt;br /&gt;Счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-2117122336063347453?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/2117122336063347453/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=2117122336063347453' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2117122336063347453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2117122336063347453'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/12/windows-vista.html' title='Улучшенные элементы управления Windows Vista'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_iaOeRqXXfwQ/STuozuLT1II/AAAAAAAAABY/dOMHbRRh354/s72-c/vistacontrols.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-7690695647539458051</id><published>2008-12-01T11:04:00.000-08:00</published><updated>2008-12-01T11:25:45.201-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='Разное'/><title type='text'>PrintScreen, Codin4Fun и справочник по Visual Studio</title><content type='html'>Здравствуйте!&lt;br /&gt;Наступило 1 декабря, а на улицах Москвы нет снега. Перейдем к новостям. Сегодня перечитывал журнал &lt;a href="http://netsources.narod.ru/msdnmag.htm"&gt;MSDN Magazine &lt;/a&gt;за ноябрь 2005 года и наткнулся на статью, как отключить клавишу PrintScreen, чтобы пользователь не мог скопировать снимок экрана в буфер. Автор статьи рассказывает о том, что в принципе, помешать чужой программе получить снимок экрана невозможно. Но, тем не менее, если вам все-таки нужно отключить клавишу PrintScreen, то воспользуйтесь функцией Windows API &lt;strong&gt;RegisterHotKey&lt;/strong&gt; с константами &lt;strong&gt;IDHOT_SNAPDESKTOP&lt;/strong&gt; и &lt;strong&gt;IDHOT_SNAPWINDOW&lt;/strong&gt;. Далее в статье приводится пример на C++. Так как в &lt;a href="http://developer.alexanderklimov.ru/guide.php"&gt;моем справочнике по функциям Windows API&lt;/a&gt; уже было описание этой функции, то я решил написать тестовое приложение, чтобы проверить, как это все работает. Результат своих опытов я помещу в справочник в виде отдельной статьи, которая будет доступна зарегистрированным пользователям через несколько месяцев. Остальных приглашаю попробовать самостоятельно написать аналогичную программу.&lt;br /&gt;Также в разделе &lt;a href="http://developer.alexanderklimov.ru/guide.php"&gt;справочники&lt;/a&gt; появился еще один справочник по Visual Studio. В последнее время пополнение справочника идет за счет советов Сары Форд, которые доступны с русскоязычного блога. А сегодня появилась еще одна хорошая новость - был запущен русский Codin4Fun по адресу &lt;a href="http://blogs.msdn.com/rucoding4fun"&gt;http://blogs.msdn.com/rucoding4fun&lt;/a&gt;. К сожалению, на сайте появятся переводы постов, начиная с февраля 2008 года. Более ранние статьи (а среди них есть очень интересные) останутся без перевода. Если у вас есть желание перевести какие-нибудь старые статьи, то присылайте мне по адресу &lt;a href="mailto:rusproject@mail.ru"&gt;rusproject@mail.ru&lt;/a&gt;. В разделе &lt;a href="http://developer.alexanderklimov.ru/articles.php"&gt;Статьи&lt;/a&gt; я уже опубликовал несколько материалов оттуда.&lt;br /&gt;Присоединяйтесь!&lt;br /&gt;Всем удачного программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-7690695647539458051?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/7690695647539458051/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=7690695647539458051' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7690695647539458051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7690695647539458051'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/12/printscreen-codin4fun-visual-studio.html' title='PrintScreen, Codin4Fun и справочник по Visual Studio'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-5702111598280214175</id><published>2008-11-24T12:04:00.000-08:00</published><updated>2008-11-24T12:24:25.535-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Новое в .NET Framework 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Разное'/><title type='text'>CoCreateGuid, "Русалка" и блондинка</title><content type='html'>Начну свою запись в блоге с функции Windows API &lt;strong&gt;CoCreateGuid&lt;/strong&gt;. Если вы раньше использовали эту функцию в .NET Compact Framework 1.1, то можете отказаться от нее, так как в CF2.0 и выше поддерживается метод Guid.NewGuid. Я убрал описание этой функции из &lt;a href="http://developer.alexanderklimov.ru/guide.php"&gt;справочника по функциям Windows API &lt;/a&gt;и поместил ее на &lt;a href="http://netsources.narod.ru/oldapi/winapi.html"&gt;страницу устаревших функций&lt;/a&gt;.&lt;br /&gt;Кстати, если вы программируете для мобильных устройств, то обратите внимание, что вышли новые версии эмуляторов под Windows Mobile 6.1. (ссылки ищите &lt;a href="http://developer.alexanderklimov.ru/cf.php"&gt;здесь&lt;/a&gt;).&lt;br /&gt;Переходим к Русалке. Недавно я рассказывал о песне в исполнении певицы Массква про телефон за тысячу евро. Недавно по 1 каналу показали этот фильм. Я не мог пропустить это событие и посмотрел картину. Мне фильм понравился, и песня нормально слушается. А как вам?&lt;br /&gt;И, напоследок, расскажу о встрече с блондинкой. Шел я недавно в центре Москвы по Кривоколенному переулку. Навстречу мне идет молодая блондика и обращается за помощью. Ей нужен был дом 9, а мы стояли как раз между домами 8 и 10. Она мне и говорит: "Вы случайно не местный? Не подскажете, где дом 9, вот дом 8, а за ним сразу дом 10". Я немного растерялся, на миг потерял дар речи. Потом все-таки собрался, показал рукой на другую сторону переулка и сказал, что нечетные номера домов находятся на другой стороне. Она так удивилась...&lt;br /&gt;Удачи вам, блондинки!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-5702111598280214175?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/5702111598280214175/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=5702111598280214175' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5702111598280214175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5702111598280214175'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/11/cocreateguid.html' title='CoCreateGuid, &quot;Русалка&quot; и блондинка'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-3300043465392807165</id><published>2008-11-03T11:42:00.000-08:00</published><updated>2008-11-03T11:53:37.308-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Системные значки Windows</title><content type='html'>Если вам понадобится в приложении использовать системные значки Windows, которые мы обычно применяем в MessageBox, то воспользуйтесь классом &lt;strong&gt;SystemIcons&lt;/strong&gt;. Например, пользователям Windows Vista хорошо знаком значок с изображением щита, тесно связанного с функциями UAC. Чтобы вывести этот значок, используйте такой код:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;using (Graphics g = CreateGraphics())&lt;br /&gt;{&lt;br /&gt;    g.DrawIcon(SystemIcons.Shield, 20, 30);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Если вам необходимо вывести все системные значки Windows, то лучше воспользоваться отражением. Пример с щитом показывает, что набор системных значков постоянно пополняется, и Reflection поможет написать универсальный код для этой задачи:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;using System.Reflection;&lt;br /&gt;&lt;br /&gt;// Получаем PropertyInfo для всех статических&lt;br /&gt;// свойств SystemIcons&lt;br /&gt;PropertyInfo[] props = typeof(SystemIcons).GetProperties(BindingFlags.Public  BindingFlags.Static);&lt;br /&gt;Graphics g = CreateGraphics();&lt;br /&gt;&lt;br /&gt;int y = 0;&lt;br /&gt;// Отображаем каждый значок. Все статические члены&lt;br /&gt;// получаем через отражение — класс!&lt;br /&gt;//&lt;br /&gt;foreach (PropertyInfo p in props)&lt;br /&gt;{&lt;br /&gt;    Object obj = p.GetValue(null, null);&lt;br /&gt;    if (obj.GetType() == typeof(Icon))&lt;br /&gt;    {&lt;br /&gt;        Icon icon = (Icon)obj;&lt;br /&gt;        g.DrawIcon(icon, 0, y);&lt;br /&gt;        g.DrawString(String.Format("SystemIcons.{0}",&lt;br /&gt;        p.Name), new Font("Arial", 12), Brushes.Blue, icon.Width + 2, y);&lt;br /&gt;        y += icon.Height;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;g.Dispose();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-3300043465392807165?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/3300043465392807165/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=3300043465392807165' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3300043465392807165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3300043465392807165'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/11/windows.html' title='Системные значки Windows'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-8766000782866211290</id><published>2008-11-02T07:42:00.000-08:00</published><updated>2008-11-02T07:50:18.308-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Защита файлов</title><content type='html'>Поговорим о функции Windows API &lt;strong&gt;SfcIsFileProtected&lt;/strong&gt;.&lt;br /&gt;В Windows Vista есть защищенные файлы, которые нельзя изменять или удалять. Поэтому, если ваша программа занимается чем-то подобным, то проверьте сначала, не является ли используемый файл защищенным. Для этой цели и служит функция &lt;strong&gt;SfcIsFileProtected&lt;/strong&gt;, которая возвращает true, если файл защищен, и false, если файл не защищен. Проверяем.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Проверим, является ли Блокнот и утилита от NERO в папке Windows защищенными файлами&lt;br /&gt;MessageBox.Show(SfcIsFileProtected(IntPtr.Zero,@"c:\windows\notepad.exe").ToString());&lt;br /&gt;MessageBox.Show(SfcIsFileProtected(IntPtr.Zero,@"c:\windows\unnerovision.exe").ToString());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Полное описание функции, как всегда, будет доступно зарегистрированным пользователям &lt;a href="http://developer.alexanderklimov.ru/"&gt;справочника по функциям Windows API&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-8766000782866211290?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/8766000782866211290/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=8766000782866211290' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8766000782866211290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8766000782866211290'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/11/blog-post.html' title='Защита файлов'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-2468957695410046169</id><published>2008-10-28T14:47:00.000-07:00</published><updated>2008-10-28T15:04:18.075-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><title type='text'>Функция StrFormatByteSize</title><content type='html'>Сегодня хочу рассказать вам об интересной функции Windows API StrFormatByteSize. Особенность этой функции в том, что вы передаете ей большое число (размер вашего диска), а она автоматически выдает результат в удобном виде, например, 1.4кб или 1.4Гб и т.д. Хочу обратить ваше внимание, что ANSI-версия этой функции может работать до 1.99Гб. Конечно, такое ограничение нас не устроит, если даже флешки уже стали по 32 Гб и выше. Но, не все так плохо. Unicode-функция может возвращать до 7.99 Эбайт. Большинство из вас даже не знают, что такое Эбайт. Эбайт (сокр. от Эксабайт) - это очень огромная цифра. Вы уже слышали, что появились жесткие диски с объемом Терабайт. Так вот, после терабайтов идут петабайты и только потом эксабайты. Трудно представить, что в обозримом будущем появятся накопители такой емкости. Еще одна особенность функции - названия байтов выдается на родном языке. На русском - Кб, Мб, Гб, а английском - kb, gb и т.д.&lt;br /&gt;Вот как выглядит объявление функции на C#&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[DllImport("Shlwapi.dll", CharSet = CharSet.Auto)]public static extern long StrFormatByteSize( long dw,[MarshalAs(UnmanagedType.LPTStr)] StringBuilder pszBuf, int cchBuf );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Создаем для нее обертку и выводим результат&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public static string FormatByteSize(long fileSize)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    StringBuilder sbBuffer = new StringBuilder(20);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    StrFormatByteSize(fileSize, sbBuffer, 20);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    return sbBuffer.ToString();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Выбираем максимальное возможное значение&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;MessageBox.Show(FormatByteSize(long.MaxValue));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Описание параметров и примеры на Visual Basiс будут доступны в моем &lt;a href="http://developer.alexanderklimov.ru/guide.php"&gt;справочнике по фунциями Windows API&lt;/a&gt;.&lt;br /&gt;Счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-2468957695410046169?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/2468957695410046169/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=2468957695410046169' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2468957695410046169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2468957695410046169'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/10/strformatbytesize.html' title='Функция StrFormatByteSize'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-7844380273939145070</id><published>2008-10-28T01:00:00.000-07:00</published><updated>2008-10-28T01:24:32.013-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><title type='text'>Два события, достойные вашего внимания</title><content type='html'>Сегодня хочу поделиться с вами новостями. Первое - наконец-то запущен русский MSDN. Произошло это видимо сразу после полуночи, так как я уже сразу после 12 часов ночи заглянул на этот сайт и увидел страницы на русском. Главный интерес представляет справочный раздел по .NET Framework. Его главная страница находится по адресу &lt;a href="http://msdn.microsoft.com/ru-ru/library/d11h6832.aspx"&gt;http://msdn.microsoft.com/ru-ru/library/d11h6832.aspx&lt;/a&gt;. Название не очень удачное, поэтому лучше сразу занести в Избранное. Зато дальше уже лучше. Например, статья о пространстве имен System находится по адресу &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.aspx"&gt;http://msdn.microsoft.com/ru-ru/library/system.aspx&lt;/a&gt;, а статья о его классе Console находится на &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.console.aspx"&gt;http://msdn.microsoft.com/ru-ru/library/system.console.aspx&lt;/a&gt;, ну и так далее. Принцип уловили?&lt;br /&gt;Этого события я ждал более 10 лет, когда самостоятельно начал изучать Visual Basic. Так как в школе я изучал немецкий (Гитлер капут), то мне было труднее вдвойне. Новому поколению программистов будет гораздо легче. И не согласен с теми консерваторами, которые считают, что изучать язык программирования надо только на английском. Здесь все зависит от поставленных целей в жизни - кому-то вполне хватит и русской документации в работе.&lt;br /&gt;Второе событие - это открытие моего сайта &lt;a href="http://developer.alexanderklimov.ru/"&gt;http://developer.alexanderklimov.ru&lt;/a&gt; (заносим в Избранное). Да, мы опять переезжаем. Это, наверное, уже четвертая площадка для моих страниц. Может, кто-то еще помнит мой первый проект на &lt;a href="http://members.xoom.com/wwwind"&gt;http://members.xoom.com/wwwind&lt;/a&gt;, открытый лет 10 назад? Тогда, если помните еще не было бесплатных страничех Narod.ru, только-только появился сайт Mail.ru, потом появились ICQ и т.д. К сожалению, я не располагаю возможностями Microsoft, поэтому мой переезд на новое место будет происходить постепенно. Наберитесь терпения. Обратите внимание, что новые материалы будут появляться только на новом сайте.&lt;br /&gt;Счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-7844380273939145070?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/7844380273939145070/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=7844380273939145070' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7844380273939145070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7844380273939145070'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/10/blog-post_28.html' title='Два события, достойные вашего внимания'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-8894876118004970841</id><published>2008-10-23T07:24:00.000-07:00</published><updated>2008-10-23T07:34:48.007-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><title type='text'>Числа прописью на русском</title><content type='html'>У многих программистов (сужу по форумам) встает задача написать число прописью на русском. Если вам тоже нужно, то взгляните на следующие ссылки:&lt;br /&gt;&lt;a class="TitleLinkStyle" href="http://blogs.gotdotnet.ru/personal/avk/PermaLink.aspx?guid=9ce95762-7be1-4632-adcb-8a083faccc2b"&gt;Число прописью на C# 3.0&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.hash.su/374"&gt;http://code.hash.su/374&lt;/a&gt;&lt;br /&gt;&lt;a class="TitleLinkStyle" href="http://blogs.gotdotnet.ru/personal/alexey%20lyubko/PermaLink.aspx?guid=c324361e-7c5c-4196-bf00-8c470ea2f51f"&gt;Говорим по Русски - отображение числительных&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Во второй ссылке приводится код, в котором содержится ошибка. Программист забыл, что в русском языке имеется не только женский и мужской род, но и средний. Следовательно, в коде должно быть использовано слово одно (одно яблоко, одно перо). На всякий случай, я написал автору. Но, вы тоже имейте в виду.&lt;br /&gt;В других ссылках обязательно почитайте комментарии, которые дадут вам пищу для размышлений.&lt;br /&gt;Удачного вам подсчета!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-8894876118004970841?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/8894876118004970841/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=8894876118004970841' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8894876118004970841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8894876118004970841'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/10/blog-post_23.html' title='Числа прописью на русском'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-1962769274520769579</id><published>2008-10-17T13:39:00.000-07:00</published><updated>2008-10-17T13:40:20.318-07:00</updated><title type='text'>Угадайка</title><content type='html'>Итак, сегодня пятница и впереди два выходных дня. Развлечемся. Бороздя по бескрайним просторам Интернета, наткнулся на прикольный сайт, где предлагается сыграть в игру на угадывание персонажей. Вы задумываете какую-нибудь известную личность и начинаете отвечать на вопросы (на английском). После короткой серии вопросов вам показывается фотография персонажа. Результаты меня удивили. Судите сами: я загадал Аллу Пугачеву, Арнольда Шварценеггера, Леонардо Да Винчи и Карла Маркса. Отгадывающий угадал три варианта, за исключением Да Винчи. Впрочем, и его он показал в списке подозреваемых. Некоторые даже загадывали чебурашку (и его отгадали). Посетите сайт &lt;a href="http://www.devinettor.com/#"&gt;Akinator&lt;/a&gt; и попробуйте свои силы. О результатах можете рассказать в комментариях.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-1962769274520769579?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/1962769274520769579/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=1962769274520769579' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1962769274520769579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1962769274520769579'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/10/blog-post_17.html' title='Угадайка'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-8200296750086512271</id><published>2008-10-13T13:00:00.000-07:00</published><updated>2008-10-13T13:14:05.132-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><title type='text'>Укоротить длинный путь к файлу</title><content type='html'>В своей книге &lt;strong&gt;C#. Советы программистам&lt;/strong&gt; я приводил пример с использованием функции Windows API &lt;strong&gt;PathCompactPathEx&lt;/strong&gt;. Но сегодня в своих архивах нашел еще один пример, который забыл добавить в книгу. Этот пример использует регулярные выражения и использует следующий алгоритм: оставляет первые две папки, последнюю папку и имя файла, а среднюю часть путь заменяется многоточием (...). Делается это следующим образом:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;static string PathShortener(string path)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    const string pattern = @"^(\w+:\\)(&lt;/span&gt;&lt;a href="file://[%5e//]+//[%5E//]+//).*(//[%5E//]+//[%5E//]+)$"&gt;&lt;span style="font-family:courier new;"&gt;\\[^\\]+\\[^\\]+\\).*(\\[^\\]+\\[^\\]+)$&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    const string replacement = "$1$2...$3";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    if (Regex.IsMatch(path, pattern))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        return Regex.Replace(path, pattern, replacement);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        return path;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь, вы можете вызвать данный метод для укорачивания длинного пути.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;string myPath = @"C:\Documents and Settings\jatwood\My Documents\Visual Studio 2005&lt;br /&gt;\SimpleEncryption\UnitTests\UnitTests.vb\wumpus\public\Hilo Deliverables\Hilo&lt;br /&gt;Final\Introduction\Code\Intro\App_Themes\cellphone\photo-small.jpg";            &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;MessageBox.Show(PathShortener(myPath));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;У вас выведется путь: &lt;strong&gt;C:\Documents and Settings\jatwood\...\cellphone\photo-small.jpg&lt;/strong&gt;&lt;br /&gt;(Источник: &lt;a href="http://www.codinghorror.com/blog/archives/000650.html"&gt;Coding Horror&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Системная фукнция работает по другому алгоритму, поэтому вы можете выбрать удобный для вас способ.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-8200296750086512271?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/8200296750086512271/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=8200296750086512271' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8200296750086512271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8200296750086512271'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/10/blog-post_13.html' title='Укоротить длинный путь к файлу'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-3785192164719641060</id><published>2008-10-10T12:24:00.000-07:00</published><updated>2008-10-10T12:49:31.339-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUN'/><title type='text'>Мой телефон стоит тысячу евро, но я не хочу звонить первой</title><content type='html'>Я частенько посещаю блог Экслера. Особенно мне нравится читать комментарии к статьям автора блога. Сегодня меня очень порадовала статья об одной песне певицы Массква. Я слышал несколько ее песен, а также видел несколько передач с ее участием, и должен признаться, что ее песни мне нравятся больше, чем песни Тимати, Блестящих или Виагры (хотя я и не меломан). Но речь не о ней, а о песне из фильма Русалка, номинированной на Оскар от России. Алекса Экслера задела строчка из песни &lt;strong&gt;Мой телефон стоит тысячу евро, но я не хочу звонить первой&lt;/strong&gt;. Он предложил свои варианты:&lt;br /&gt;Мой телефон стоит тысячу баксов, но я не хочу носить слаксы.&lt;br /&gt;Мой телефон стоит тысячу йен, но кот сожрал весь пурген.&lt;br /&gt;Мой телефон стоит тысячу тугриков, но я предпочла бы рублики.&lt;br /&gt;&lt;br /&gt;Посетителям блога эти варианты понравились, и понеслась...&lt;br /&gt;Каждый изощрялся в своем остроумии. Я читал эти комментарии на работе и еле сдерживал свой смех. Работа просто встала.&lt;br /&gt;Надеюсь, уважаемый Алекс Экслер не обидится, если я размещу некоторые варианты на этой страничке. Ссылка на оригинал находится &lt;a href="http://www.exler.ru/blog/item/5932/?26"&gt;здесь&lt;/a&gt;, почитайте все комменты.&lt;br /&gt;Поехали:&lt;br /&gt;Мой телефон стоит тысячу злоты, но ты сдохнешь от икоты.&lt;br /&gt;Мой телефон стоит тысячу песо, но ты пойдёшь сегодня лесом.&lt;br /&gt;Мой телефон стоит тысячу евро и я не люблю преклонных годов негров.&lt;br /&gt;Мой телефон стоит тысячу денег, а ведь сегодня только понедельник.&lt;br /&gt;Мой телефон стоит тысячу сольдо, но это не повод чтоб выступить сольно.&lt;br /&gt;Мой телефон стоит тысячу зайчиков, у сестры в классе очень много мальчиков.&lt;br /&gt;Мой телефон стоит тысячу гривен, в десятом классе я был очень наивен.&lt;br /&gt;Мой телефон стоит тысячу теньге, четырнадцать дней мы блуждали в тайге.&lt;br /&gt;У меня нет мобилы, есть телефон с будкой, вот такой я лузер с барабаном и дудкой! (ржунимагу)&lt;br /&gt;Мой телефон стоит тыщщу рублей, а ты носи валенки и не болей.&lt;br /&gt;&lt;br /&gt;А мой телефон стоит мильон (его мне принес пивной павильон)!&lt;br /&gt;Давай, доставай свой за тысячу евро. Ломаться кончай, и звони первой! (это 5+)&lt;br /&gt;&lt;br /&gt;А мой телефон стоит пару монет. Давай, не упрямься, делай минет!&lt;br /&gt;Мой телефон стоит тысячу лари, но я лучше хлебну цинандали&lt;br /&gt;Мой телефон стоит тысячу лат, вот такой я богатый прибалт&lt;br /&gt;Мой телефон стоит тысячу крон, и я им с деревьев сбиваю ворон&lt;br /&gt;Мой телефон стоит 20 КОПЕЕК . Жду Вас на складе Б/У телогреек.&lt;br /&gt;Мой телефон стоит тыщу манат, походу я... ни х№уя не магнат.&lt;br /&gt;Мой телефон стоит тысячу лек, сдуру албанский учил я чучмек.&lt;br /&gt;Мой телефон стоит тыщу динаров, отсоси у меня, я отдам его даром. Мой телефон стоит тыщу песет, "сеть не доступна" - регулярный ответ.&lt;br /&gt;&lt;br /&gt;Не все варианты удачны, но какой азарт у людей. Видно, что день у многих прошел не зря, люди занимались творчеством.&lt;br /&gt;Удачных вам песен, певица Массква!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-3785192164719641060?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/3785192164719641060/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=3785192164719641060' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3785192164719641060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3785192164719641060'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/10/blog-post.html' title='Мой телефон стоит тысячу евро, но я не хочу звонить первой'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-2539082812326786611</id><published>2008-10-05T11:11:00.000-07:00</published><updated>2008-10-05T11:20:33.350-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Новое в .NET Framework 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><title type='text'>Устаревшая функция MessageBeep</title><content type='html'>Если в ваших старых проектах встречается функция Windows API &lt;strong&gt;MessageBeep&lt;/strong&gt;, то можете отказаться от нее, и использовать методы класса &lt;strong&gt;System.Media.SystemSounds&lt;/strong&gt;, который появился в .NET Framework/.NET Compact Framework 3.5. Единственное исключение - это проекты для Windows Mobile 6/6.1, в которых встроена версия CF2.0. Там эту функцию еще приходится использовать. Описание и пример использования функции можете посмотреть на &lt;a href="http://netsources.narod.ru/oldapi/winapi.html"&gt;странице устаревших функций Windows API&lt;/a&gt;.&lt;br /&gt;Счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-2539082812326786611?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/2539082812326786611/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=2539082812326786611' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2539082812326786611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2539082812326786611'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/10/messagebeep.html' title='Устаревшая функция MessageBeep'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-9185628342288054619</id><published>2008-09-23T12:00:00.000-07:00</published><updated>2008-09-23T12:11:20.835-07:00</updated><title type='text'>Функция IsProcessorFeaturePresent</title><content type='html'>Давно не разбирали какую-нибудь функцию Windows API. Сегодня познакомлю вас с функцией &lt;strong&gt;IsProcessorFeaturePresent&lt;/strong&gt;. Функция IsProcessorFeaturePresent определяет, поддерживается ли указанная особенность на процессоре текущего компьютера. Ее объявление выглядит следующим образом:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[DllImport("kernel32.dll")]&lt;br /&gt;static extern bool IsProcessorFeaturePresent(uint ProcessorFeature);&lt;br /&gt;&lt;/span&gt;Описывать все параметры ProcessorFeature я не буду, зарегистрированные пользователи смогут ознакомиться с ними в &lt;a href="http://netsources.narod.ru/guide.htm"&gt;справочнике&lt;/a&gt;. Приведу пример, где проверяется поддержка процессором MMX-инструкций (параметр PF_MMX_INSTRUCTIONS_AVAILABLE = 3).&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[DllImport("kernel32.dll")]&lt;br /&gt;static extern bool IsProcessorFeaturePresent(uint ProcessorFeature);&lt;br /&gt;private const int PF_MMX_INSTRUCTIONS_AVAILABLE = 3;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#009900;"&gt;// Проверяем доступность MMX-инструкций&lt;br /&gt;&lt;/span&gt;MessageBox.Show(IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE).ToString());&lt;br /&gt;&lt;/span&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-9185628342288054619?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/9185628342288054619/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=9185628342288054619' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/9185628342288054619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/9185628342288054619'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/09/isprocessorfeaturepresent.html' title='Функция IsProcessorFeaturePresent'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-153630730449167641</id><published>2008-09-13T08:36:00.000-07:00</published><updated>2008-09-13T08:41:57.438-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><category scheme='http://www.blogger.com/atom/ns#' term='Новое в .NET Framework 2.0'/><title type='text'>Есть ли подключение к интернету</title><content type='html'>Достаточно распространненая задача - проверка на наличие подключения к интернету. Определить, подключен ли компьютер к интернету, можно при помощи метода &lt;b&gt;NetworkInterface.GetIsNetworkAvailable&lt;/b&gt;, который появился в .NET Framework 2.0.&lt;br /&gt;Следует заметить, что если компьютер подключен к локальной сети, то этот способ окажется бесполезным, так как ваша машина&lt;br /&gt;может иметь подключение к сети, но не иметь выхода в интернет. В этом случае попробуйте воспользоваться функцией Windows API&lt;br /&gt;&lt;b&gt;InternetGetConnectedState&lt;/b&gt;, которая описана в моей книге &lt;a href="http://netsources.narod.ru/book.htm"&gt;C#.Cоветы программистам&lt;/a&gt; или в &lt;a href="http://netsources.narod.ru/guide.htm"&gt;справочнике по функциям Windows API&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;MessageBox.Show("Наличие подключения: " +     System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable().ToString());&lt;/span&gt;&lt;br /&gt;&lt;span &gt;Удачного вам подключения к интернету!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-153630730449167641?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/153630730449167641/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=153630730449167641' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/153630730449167641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/153630730449167641'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/09/blog-post_13.html' title='Есть ли подключение к интернету'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-4607091153532479082</id><published>2008-09-11T13:19:00.000-07:00</published><updated>2008-09-11T13:25:45.150-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUN'/><category scheme='http://www.blogger.com/atom/ns#' term='Разное'/><title type='text'>Microsoft готова обменять твои знания на призы</title><content type='html'>Microsoft запустила любопытную акцию - вам необходимо пройти тест из пяти вопросов. Если вы пройдете тест, то у вас есть шанс выиграть какой-нибудь приз. Вопросы совсем не сложные, поэтому попробовать свои силы может даже программист-любитель. На данный момент существует более 50 тестов на самые разные темы. Ссылку на сайт с викториной я разместил на своей &lt;a href="http://netsources.narod.ru/"&gt;главной странице&lt;/a&gt;. Поэтому заходим на &lt;a href="http://netsources.narod.ru/"&gt;нее&lt;/a&gt;, кликаем на кнопочке или ссылке и участвуем.&lt;br /&gt;Счастливого вам прохождения тестов!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-4607091153532479082?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/4607091153532479082/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=4607091153532479082' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4607091153532479082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4607091153532479082'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/09/microsoft.html' title='Microsoft готова обменять твои знания на призы'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-6498746611182549436</id><published>2008-09-05T13:55:00.000-07:00</published><updated>2008-09-05T14:05:04.153-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Книги'/><title type='text'>Обмен книгами</title><content type='html'>Недавно узнал о существовании замечательного проекта &lt;a href="http://www.bookriver.ru/"&gt;БукРивер&lt;/a&gt;, который проходит под девизом &lt;span style="color:#33cc00;"&gt;Поменяй книгу - спаси дерево&lt;/span&gt;. Проект построен по принципу социальных сетей, наподобие Одноклассники.ру, VKontakte.ru и т.п. Цель проекта - обменять свои книги на другие (или подарить). На странице есть ТОП активных участников, у которых счет обменянных книг идет десятками. Если у вас скопилась гора прочитанных книг, то вступайте в эту сеть.&lt;br /&gt;Удачного вам чтения!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-6498746611182549436?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/6498746611182549436/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=6498746611182549436' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6498746611182549436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6498746611182549436'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/09/blog-post_05.html' title='Обмен книгами'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-1783829845398173064</id><published>2008-09-05T13:44:00.000-07:00</published><updated>2008-09-05T13:53:35.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUN'/><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><title type='text'>Пошутим над коллегой</title><content type='html'>Недавно вышел совет от Сары Форд в блоге &lt;a href="http://blogs.msdn.com/rusaraford/archive/2008/09/03/8921618.aspx"&gt;Секреты Visual Studio&lt;/a&gt;, в котором рассказывалось, как изменить цвет фона в редакторе кода на черный. А ведь это неплохая возможность подшутить над коллегой. Улучите минутку, когда сосед-программист отойдет от своего компьютера и сделайте цвет фона и символов одинаковым белым цветом. Когда коллега вернется на свое рабочее место и начнет печатать, то ничего не увидит на экране. Как вариант, можно показать своему руководителю или знакомому, как вы запускаете программу на исполнение при девственно чистом редакторе кода и ваше приложение запускается словно по волшебству.&lt;br /&gt;P.S. Сегодня пятница, поэтому пост не очень серьезный. Удачного вам отдыха в выходные!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-1783829845398173064?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/1783829845398173064/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=1783829845398173064' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1783829845398173064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1783829845398173064'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/09/blog-post.html' title='Пошутим над коллегой'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-9158671271751507754</id><published>2008-08-31T10:57:00.000-07:00</published><updated>2008-08-31T12:00:07.717-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><title type='text'>О перечислении Enum, стилях для HatchBrush и документации на MSDN</title><content type='html'>В своей книге &lt;a href="http://netsources.narod.ru/book.htm"&gt;C#. Советы программистам&lt;/a&gt; я привел несколько примеров для работы с перечислением Enum. Недавно для одного проекта мне понадобилось воспользоваться одним из описанных способов для перечисления всех стилей для кисти HatchBrush. Я написал следующее:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;foreach (HatchStyle hatch_style in Enum.GetValues(typeof(HatchStyle)))&lt;br /&gt;{&lt;br /&gt;listBox1.Items.Add(hatch_style.ToString());&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Когда я посмотрел на список, то увидел, что некоторые элементы списка повторяются. Например, стиль Horizontal повторяется два раза, а стиль LargeGrid - три раза. Сначала я подумал, что совершил ошибку в коде. Не найдя ошибки в этом примере, я решил прогуляться на сайт MSDN и посмотреть, что пишут про &lt;a href="http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.hatchstyle.aspx"&gt;перечисление HatchStyle&lt;/a&gt;. Просматривая все значения стилей, я заметил, что стилю Min соответствует стиль Horizontal. Стало понятно, откуда взялось в моем списке два одинаковых стиля Horizontal. Обрадовшись, стал искать соответствия для трех значений LargeGrid. И тут я столкнулся с проблемой. В документации говорилось, что этому стилю соответствует сам LargeGrid и стиль Cross. А как же быть с третьим вариантом? Больше нигде не упоминалось о связи стилей с значением LargeGrid. Тут меня осенило. Взглянув еще раз на примеры из книги, я решил написать дополнительно еще несколько строчек кода, которые выводят имена стилей HatchBrush при помощи Enum.GetNames:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;string[] hatchstyles = Enum.GetNames(typeof(HatchStyle));&lt;br /&gt;foreach (string s in hatchstyles)&lt;br /&gt;{&lt;br /&gt;listBox2.Items.Add(s);&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Расположив два списка рядом, сразу стало видно, что чему соответствует. Как уже говорилось выше, значению Horizontal соответствовали стили Horizontal и Min, а значению LargeGrid соответствовали стили Cross, LargeGrid, Max. Обратившись снова к документации, обнаружил, что стилю Max соответствует значение SolidDiamond. Удивившись, я решил просто вывести на форме три прямоугольника с разными стилями:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;private void Form1_Paint(object sender, PaintEventArgs e)&lt;br /&gt;{&lt;br /&gt;HatchBrush hatchbrush = new HatchBrush(HatchStyle.Max, Color.Blue);&lt;br /&gt;e.Graphics.FillRectangle(hatchbrush, 20, 20, 300, 100);&lt;br /&gt;&lt;br /&gt;hatchbrush = new HatchBrush(HatchStyle.LargeGrid, Color.Blue);&lt;br /&gt;e.Graphics.FillRectangle(hatchbrush, 20, 130, 300, 100);&lt;br /&gt;&lt;br /&gt;hatchbrush = new HatchBrush(HatchStyle.SolidDiamond, Color.Blue);&lt;br /&gt;e.Graphics.FillRectangle(hatchbrush, 20, 240, 300, 100);&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Запустив пример, я убедился, что мой код для списков выдает правильные результаты. Если вы посмотрите на форму, то увидите, что первые два прямоугольника закрашены одинаковыми узорами (Max и LargeGrid), а третий прямоугольник закрашен совсем по другому. Таким образом, получается, что в документацию MSDN вкралась ошибка. Поэтому, когда вы обращаетесь к документации, старайтесь перепроверять написанное. Документацию пишут тоже живые люди, которые могут ошибаться.&lt;br /&gt;А завтра начинается новый учебный год для школьников и студентов. Некоторые из них начнут или продолжат изучение программирования.&lt;br /&gt;Счастливого вам программирования, девочки и мальчики!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-9158671271751507754?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/9158671271751507754/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=9158671271751507754' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/9158671271751507754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/9158671271751507754'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/08/enum-hatchbrush-msdn.html' title='О перечислении Enum, стилях для HatchBrush и документации на MSDN'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-4756499309582841915</id><published>2008-08-17T03:29:00.000-07:00</published><updated>2008-08-17T03:35:03.462-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUN'/><title type='text'>Трудности перевода</title><content type='html'>Зайдите на &lt;a href="http://www.translate.ru/"&gt;www.Translate.ru&lt;/a&gt; и введите следующую фразу: &lt;span style="color:#cc33cc;"&gt;my cat has given birth to four kittens, two yellow, one white and one black&lt;/span&gt;. Посмотрите, что у вас получится.&lt;br /&gt;Для ленивых: переводчик выдает следующую фразу:&lt;br /&gt;&lt;span style="color:#cc33cc;"&gt;мой кот родил четырех котят, два желтых цвета, одно белое и одного афроамериканца&lt;/span&gt;.&lt;br /&gt;Классно получилось. И политкорректно. Кстати, не стоит говорить, что черная кошка перебежала вам дорогу. Афроамериканка перебежала вам дорогу (а то еще засудят).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-4756499309582841915?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/4756499309582841915/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=4756499309582841915' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4756499309582841915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4756499309582841915'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/08/blog-post.html' title='Трудности перевода'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-8098454715575950975</id><published>2008-08-10T11:34:00.000-07:00</published><updated>2008-08-10T11:44:42.669-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUN'/><title type='text'>Поговорки и пословицы на C#</title><content type='html'>Недавно разбирал свои архивы и наткнулся на ссылку в Избранном. Ссылка вела на один из форумов RSDN, где предлагалось оформить любую поговорку или пословицу в виде кода на любом языке программирования. Естественно, меня больше заинтересовали варианты, написанные на C#.&lt;br /&gt;Вот один из примеров (ГИББД посвящается)&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;if (!подмажешь)&lt;br /&gt;{&lt;br /&gt;поедешь = false;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Остальные примеры найдете на моей странице &lt;a href="http://netsources.narod.ru/jokes.htm"&gt;Занимательное программирование&lt;/a&gt;. Если у вас будет желание, то присылайте свои варианты на мою почту klimoff{собака}csfan.ru.&lt;br /&gt;Могу предложить следующие фразы для упражнений:&lt;br /&gt;&lt;span style="color:#33ff33;"&gt;Истина в вине&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#33ff33;"&gt;Не имей 100 рублей, а имей 100 друзей&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#33ff33;"&gt;Не тяни кота за хвост&lt;/span&gt;&lt;br /&gt;Веселого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-8098454715575950975?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/8098454715575950975/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=8098454715575950975' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8098454715575950975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8098454715575950975'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/08/c.html' title='Поговорки и пословицы на C#'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-7114918584902736699</id><published>2008-08-10T01:12:00.000-07:00</published><updated>2008-08-10T01:22:16.808-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><title type='text'>Функции для Aero Glass</title><content type='html'>Наверняка, вы слышали, что в Windows Vista имеется схема Aero Glass, поддерживающую полупрозрачность и стеклянный интерфейс. При помощи функций DwmIsCompositionEnabled и DwmEnableComposition можно управлять схемой Aero Glass. Сначала объявим эти функции&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[DllImport("dwmapi.dll", PreserveSig = false)]public static extern bool DwmIsCompositionEnabled();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[DllImport("dwmapi.dll", PreserveSig = false)]public static extern void DwmEnableComposition(bool bEnable);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Теперь можно использовать их следующим образом:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Если компновка рабочего стола доступна (включен Aero Glass)&lt;br /&gt;if (DwmIsCompositionEnabled())&lt;br /&gt;{&lt;br /&gt;MessageBox.Show("Aero Glass включен");&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;MessageBox.Show("Aero Glass выключен");&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Отключаем компоновку рабочего стола (отключаем Aero Glass)&lt;br /&gt;DwmEnableComposition(false);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Описания функций добавлены в &lt;a href="http://netsources.narod.ru/guide.htm"&gt;Справочник по функциям Windows API для .NET Framework&lt;/a&gt; и будут доступны зарегистрированным пользователям в течение ближайших месяцев.&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-7114918584902736699?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/7114918584902736699/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=7114918584902736699' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7114918584902736699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7114918584902736699'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/08/aero-glass.html' title='Функции для Aero Glass'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-4550046859400878287</id><published>2008-08-02T12:33:00.000-07:00</published><updated>2008-08-02T12:38:49.650-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Книги'/><title type='text'>Visual Basic 2005. Рецепты программирования</title><content type='html'>Недавно у меня был День Варенья. Решил к празднику купить себе какую-нибудь книжку по программированию. Остановил свой выбор на книжке &lt;a href="http://netsources.narod.ru/book.htm"&gt;Visual Basic 2005. Рецепты программирования&lt;/a&gt;. Книга по сути похожа на мою книгу &lt;strong&gt;C#. Советы программистам&lt;/strong&gt;. Где-то наши советы пересекаются, но имеются и другие советы и темы, которые я не затрагивал. Книга очень толстая, советов много. Даются хорошие пояснения и комментарии. Наверняка, часть примеров я перепишу для C#. Если вы програмируете на Visual Basic, то рекомендую и вам приобрести эту книгу.&lt;br /&gt;Удачного вам чтения!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-4550046859400878287?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/4550046859400878287/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=4550046859400878287' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4550046859400878287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4550046859400878287'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/08/visual-basic-2005.html' title='Visual Basic 2005. Рецепты программирования'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-1335170607847749567</id><published>2008-07-31T12:24:00.000-07:00</published><updated>2008-07-31T12:33:35.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Разное'/><title type='text'>11 правил Билла Гейтса</title><content type='html'>Попался мне на глаза еженедельник Upgrade. Там наткнулся на интересную статью. Якобы Билл Гейтся, выступая перед американскими школьниками, привел 11 правил, которым не учат в школе. Неизвестно, насколько достоверна эта информация, но правила представляют определенный интерес. Эти правила элементарно находятся по поисковому запросу. Поэтому, я не стал перепечатывать правила из журнала, а скопировал из первого попавшего источника в сети. Литературный перевод правил на некоторых сайтах различается, но общий смысл одинаков.&lt;br /&gt;Правило 1: Жизнь не справедлива – привыкайте.&lt;br /&gt;Правило 2: Общество совершенно не волнует Ваша САМООЦЕНКА. От вас ждут ДОСТИЖЕНИЙ прежде всего.&lt;br /&gt;Правило 3: Вы НЕ БУДЕТЕ зарабатывать $60,000 в год сразу по окончании школы. Вы не станете вице-президентом с личным водителем, пока вы не заработаете на то и другое.&lt;br /&gt;Правило 4: Если вы думаете, что учитель слишком суров по отношению к вам, - это еще цветочки. Подождите, пока у вас появится босс.Правило&lt;br /&gt;5: Жарить гамбургеры - ниже вашего достоинства? Ваши дедушки и бабушки считали совсем по-другому. Для них жарить гамбургеры было возможностью зацепиться в этой жизни.&lt;br /&gt;Правило 6: Если у вас что-то не вышло, это не вина ваших родителей, так что не надо хныкать, УЧИТЕСЬ на своих ошибках.&lt;br /&gt;Правило 7: Родители не всегда были такие скучные, как вам сейчас кажется. Может быть постоянная забота о вас сделала их такими? Они вас кормят, одевают, постоянно слушают какие вы замечательные. Так что прежде чем критиковать поколение своих родителей, начните с себя.&lt;br /&gt;Правило 8: Быть может в вашей школе не корректно открыто называть неудачника неудачником и в вашей школе уже не осталось неудачников, но не в жизни. В некоторых школах уже не возможно остаться на второй год, потому что вам дается СТОЛЬКО попыток СДАТЬ экзамены, сколько необходимо для перевода в другой класс. В жизни все СОВСЕМ по-другому.&lt;br /&gt;Правило 9: Жизнь не делится на семестры. У вас не будет летних каникул, и ваш работодатель не будет помогать вам НАЙТИ СЕБЯ. Вам придется делать это самим в свое свободное время.&lt;br /&gt;Правило 10: В телевизоре не показывают НАСТОЯЩУЮ жизнь. В реальной жизни не получится весь день сидеть в кафе и болтать с друзьями.&lt;br /&gt;Правило 11: Поласковее с «ботаниками». Один из них может оказаться вашим боссом после окончания школы.&lt;br /&gt;Удачи вам в этой жизни! (это от меня)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-1335170607847749567?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/1335170607847749567/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=1335170607847749567' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1335170607847749567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1335170607847749567'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/07/11.html' title='11 правил Билла Гейтса'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-726895872979652256</id><published>2008-07-26T09:29:00.000-07:00</published><updated>2008-07-26T10:09:07.429-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Книги'/><title type='text'>Обновление совета: Определение версии операционки</title><content type='html'>В своей книге &lt;a href="http://netsources.narod.ru/book.htm"&gt;C#. Советы программистам&lt;/a&gt; я приводил пример определения версии операционной системы. Хотелось бы дополнить слегка устаревший пример. На данный момент, операционные системы Windows Vista SP1 и Windows Server 2008 имеют одинаковые номер 6.0.6001. Поэтому возникает проблема в определении операционки. На сайте &lt;a href="http://www.vb-helper.com/howto_2005_os_version.html"&gt;http://www.vb-helper.com/howto_2005_os_version.html&lt;/a&gt; предлагается для решения проблемы прочитать значение ключа из реестра (пример на Visual Basic). Ниже предлагается мой вариант для C# (для краткости я не учитываю устаревшие версии Windows 3.1/95/98/Me/NT)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;private const string REG_PRODUCT_KEY = @"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion";&lt;br /&gt;private string GetOSVersion()&lt;br /&gt;{&lt;br /&gt;OperatingSystem osInfo = Environment.OSVersion;&lt;br /&gt;string osName = "Не определено";&lt;br /&gt;switch (osInfo.Platform)&lt;br /&gt;{&lt;br /&gt;case PlatformID.Win32NT:&lt;br /&gt;{&lt;br /&gt;switch (osInfo.Version.Major)&lt;br /&gt;{&lt;br /&gt;case 5:&lt;br /&gt;{&lt;br /&gt;if (osInfo.Version.Minor == 0)&lt;br /&gt;{&lt;br /&gt;osName = "Windows 2000";&lt;br /&gt;}&lt;br /&gt;else if (osInfo.Version.Minor == 1)&lt;br /&gt;{&lt;br /&gt;osName = "Windows XP";&lt;br /&gt;}&lt;br /&gt;else if (osInfo.Version.Minor == 2)&lt;br /&gt;{&lt;br /&gt;osName = "Windows Server 2003";&lt;br /&gt;}&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;case 6:&lt;br /&gt;{&lt;br /&gt;string info = Microsoft.Win32.Registry.GetValue(REG_PRODUCT_KEY, "ProductName", "").ToString();&lt;br /&gt;if (info.ToLower().Contains("vista"))&lt;br /&gt;{&lt;br /&gt;osName = "Windows Vista";&lt;br /&gt;}&lt;br /&gt;if (info.ToLower().Contains("server"))&lt;br /&gt;{&lt;br /&gt;osName = "Windows 2008";&lt;br /&gt;}&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return osName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void button2_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;MessageBox.Show(GetOSVersion());&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-726895872979652256?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/726895872979652256/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=726895872979652256' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/726895872979652256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/726895872979652256'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/07/blog-post_26.html' title='Обновление совета: Определение версии операционки'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-3645973387344043997</id><published>2008-07-20T08:07:00.000-07:00</published><updated>2008-07-20T08:18:55.820-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Новое в .NET Framework 3.0'/><title type='text'>Modern Talking</title><content type='html'>Нет, речь пойдет не творчестве некогда очень популярного немецкого дуэта Modern Talking. Я покажу вам способ, заставить компьютер разговаривать. Начиная с .NET Framework 3.0, в библиотеке классов появилось новое пространство имен System.Speech, которое отвечает за голосовые движки. Вот простейший пример. Добавьте сначала ссылку на System.Speech в проекте и напишите следующий код.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;using System.Speech.Synthesis;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Код для кнопки&lt;br /&gt;SpeechSynthesizer synth = new SpeechSynthesizer();&lt;br /&gt;synth.Speak("I love .NET Framework!");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Запустите пример и щелкните на кнопку. На компьютере под управлением Windows Vista есть уже предустановленный голос Microsoft Anna, в чем вы можете убедиться, если откроете в Панели управления настройку &lt;strong&gt;Текст и речь&lt;/strong&gt;. Если вы обнаружите, что у вас установлено несколько голосов, то сначала можете выбрать нужный при помощи дополнительной строчки&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;synth.SelectVoice("Microsoft Lili");&lt;/span&gt;&lt;br /&gt;Удачных вам современных разговоров с компьютером!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-3645973387344043997?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/3645973387344043997/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=3645973387344043997' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3645973387344043997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3645973387344043997'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/07/modern-talking.html' title='Modern Talking'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-3128790425010474908</id><published>2008-07-13T09:19:00.000-07:00</published><updated>2008-07-13T09:25:36.519-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Новое в .NET Framework 2.0'/><title type='text'>UseSystemPasswordChar</title><content type='html'>Давно мы с вами не говорили о новинках в .NET Framework 2.0. Сегодня я расскажу вам о новом свойстве UseSystemPasswordChar, которое появилось у элемента управления TextBox.&lt;br /&gt;Свойство TextBox.UseSystemPasswordChar получает или устанавливает значение, показывающее, вводятся ли в элементе управления TextBox символы пароля, визуально заданные на уровне системы. Например, в Windows Vista символы пароля имеют вид крупных точек, а не звездочек. Свойство UseSystemPasswordChar имеет преимущество перед свойством PasswordChar  и при использовании системных символов для пароля любые символы, заданные при помощи PasswordChar, игнорируются.&lt;br /&gt;Значение свойства:&lt;br /&gt;Тип: System.Boolean. true, если текст в TextBox должен отображаться в виде стандартного вида парольного символа на уровне системы. В других случаях равно false.&lt;br /&gt;Пример:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Используем системные символы для пароля при вводе&lt;br /&gt;textBox1.UseSystemPasswordChar = true;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span &gt;Счастливого вам программирования!&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-3128790425010474908?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/3128790425010474908/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=3128790425010474908' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3128790425010474908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3128790425010474908'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/07/usesystempasswordchar.html' title='UseSystemPasswordChar'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-5594101140252541550</id><published>2008-07-05T03:04:00.000-07:00</published><updated>2008-07-05T03:15:45.379-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUN'/><title type='text'>Приемная Путина</title><content type='html'>Сегодня с утра меня в квартире несколько раз зазвенел телефон.&lt;br /&gt;-Алло?&lt;br /&gt;-Здравствуйте, это приемная Путина?&lt;br /&gt;-Нет.&lt;br /&gt;-А что?&lt;br /&gt;-Квартира.&lt;br /&gt;-Извините.&lt;br /&gt;На моей памяти, когда по ошибке набирали мой номер телефона, то спрашивали детский сад, налоговую инспекцию, баню. Но, приемная Путина - это круто. Даже с учетом, что он теперь не Президент России.&lt;br /&gt;И хотя сегодня суббота и первый выходной день после рабочей недели, этот звонок с утра не вызвал раздражения, что не дали мне отдохнуть.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-5594101140252541550?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/5594101140252541550/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=5594101140252541550' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5594101140252541550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5594101140252541550'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/07/blog-post.html' title='Приемная Путина'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-150896019200117690</id><published>2008-07-01T13:04:00.000-07:00</published><updated>2008-07-01T13:14:36.985-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Новое в .NET Framework 2.0'/><title type='text'>Картинки для TreeView</title><content type='html'>Если вам приходилось раньше использовать элемент TreeView в своих проектах, то, наверняка, задавались вопросом - как использовать вместо плюсиков-минусов привычные картинки открытой или закрытой папки как в Проводнике или использовать свои собственные картинки. Для решения этой проблемы нужно было использовать системное сообщение Windows TVM_SETIMAGELIST. Готовый пример можно посмотреть например на странице &lt;a href="http://www.gotdotnet.ru/DotNet/FAQ/WindowsForms/TreeView/129335.aspx"&gt;FAQ от GotDotNet&lt;/a&gt;. Я также поместил этот пример на &lt;a href="http://netsources.narod.ru/oldapi/winapi.html"&gt;страницу устаревших функций Windows API&lt;/a&gt;.&lt;br /&gt;Но, начиная с .NET Framework 2.0 у элемента TreeView есть свойства ImageIndex и SelectedImageIndex, которые в сочетании с элементом ImageList, помогут вам обеспечить необходимую функциональность. Пересмотрите свои старые примеры и внесите необходимые изменения.&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-150896019200117690?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/150896019200117690/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=150896019200117690' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/150896019200117690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/150896019200117690'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/07/treeview.html' title='Картинки для TreeView'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-2574989362518498666</id><published>2008-06-29T06:29:00.000-07:00</published><updated>2008-06-29T07:06:55.054-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Книги'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><title type='text'>Солянка</title><content type='html'>Сегодня не будет какой-то конкретной темы. Поговорим понемногу обо всем. Начнем с поисковой системы. Когда-то давно в сети (лет 10 назад) появилась поисковая система, которая искала запросы в исходных кодах. Я в то время увлекался программированием на Visual Basic 5.0/6.0 и тем поисковым сайтом я пользовался достаточно регулярно. К сожалению, уже не помню адрес этого сайта. Сейчас появились другие поисковые системы, которые также ищут ответы в исходных кодах. Но я ими не пользуюсь. Мне хватает обычного Google. Но недавно наткнулся на интересный проект. На этот раз предлагают искать ответы в текстах книг по программированию. Адрес  проекта - &lt;a href="http://www.codefetch.com/"&gt;http://www.codefetch.com&lt;/a&gt;.&lt;br /&gt;Выбираем язык программирования, вбиваем запрос и вперед. Понятно, что поиск идет среди англоязычных книг. Возьмите на заметку.&lt;br /&gt;Вторая тема - .NET Compact Framework. Очень интересное предложение сделал в своем блоге программист Крис Крафт. Он обещал в течение месяца написать 30 полезных программ, по одной программе в день. И свое обещание сдержал. На данный момент уже выложено 27 программ. Все программы поставляются в двух вариантах - готовые приложения и исходные коды. Найти это чудо можно по адресу &lt;a href="http://www.cjcraft.com/blog/default,month,2008-06.aspx"&gt;http://www.cjcraft.com/blog/default,month,2008-06.aspx&lt;/a&gt;.&lt;br /&gt;Меня поразила схожесть наших интересов. Одна треть этих программ уже имелась в моем арсенале. Вторую треть программ я только собирался написать. Теперь сэкономлю время и изучу готовые примеры. А остальная часть программ - это приложения, которые я хотел бы написать, но не представлял, с чего начинать. Эти примеры меня восхитили больше всего. С удовольствием изучу их, найти бы только время на изучение.&lt;br /&gt;Третья тема - изучение IDE. Недавно стал нажимать на все кнопочки и менюшки в Visual Studio и обнаружил в ней новое окно Document Outline. Честно признаюсь, не знаю, когда это окно появилось в Visual Studio, может оно всегда там было? Окно это можно вызвать через View  Other Windows или через Ctrl+Alt+T.&lt;br /&gt;В этом окне как на ладони видны все элементы управления проекта. Их можно перемещать, удалять и добавлять из панели инструментов. Я пока не оценил практическую ценность окна, так как использовал простые проекты для исследования. Но, что-то мне подсказывает, что это полезная вещь в хозяйстве.&lt;br /&gt;Четвертая тема - функции Windows API. Недавно я закончил писать пример выключения компьютера при помощи функции ExitWindowsEx. Чтобы использовать эту функцию в Windows XP/Vista, необходимо также вызывать функции GetCurrentProcess, OpenProcessToken, LookupPrivilegeValue, AdjustTokenPrivileges. Я не стану приводить этот пример здесь. Он будет доступен пользователям, которые приобрели мой &lt;a href="http://netsources.narod.ru/guide.htm"&gt;справочник по фунциям Windows API&lt;/a&gt;. Остальные могут поискать ответ самостоятельно в интернете. Следующими функциями для изучения станут функции Windows Vista, связанные с Aero Glass. Немного об этих функциях было сказано в апрельском номере журнал MSDN Magazine за 2007 год. Надо это дело разобрать по косточкам и поместить в справочник.&lt;br /&gt;Есть еще несколько интересных тем для разговора. Но, я, пожалуй, оставлю их до следующего раза.&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-2574989362518498666?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/2574989362518498666/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=2574989362518498666' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2574989362518498666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2574989362518498666'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/06/blog-post_29.html' title='Солянка'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-4122174603480920845</id><published>2008-06-24T11:43:00.000-07:00</published><updated>2008-06-24T12:08:13.627-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUN'/><title type='text'>Ангел мой, пойдем со мной: ты впереди, я - за тобой</title><content type='html'>Если вы смотрели футбольный матч Россия-Голландия по телевизору, то, возможно, обратили внимание, как рассказывал о ходе встречи телекомментатор Геннадий Орлов. Еще до начала матча неожиданно стали обсуждать, кто должен стать комментатором этой встречи и на каком канале ее показывать. Все боялись вспугнуть удачу. В конце концов все-таки решили не переносить показ матча на другой канал, но попросили поработать на матче Орлова, считая его фартовым комментатором. И он выдал такой репортаж! Постоянно путал фамилии футболистов, оговаривался, обращался к судье с вопросами и замечаниями. В дополнительное время немного напутал со временем и ждал окончания матча на 115 минуте вместо положенных 120 минут. В конце концов ему подсказали и он поправился и извинился. Но, кульминацией его репортажа стала фраза в конце матча&lt;br /&gt;&lt;strong&gt;Ангел мой, пойдем со мной: ты впереди, я - за тобой.&lt;/strong&gt;&lt;br /&gt;На моей памяти это первый случай, когда в эфире ведущий спортивного канала произносит своеобразный оберег. Это была бомба. На многих спортивных форумах обсуждали этот удивительный репортаж. Один из участников форума даже назвал его белым магом, в отличие от другого популярного комментатора, названного черным магом. Должен признаться, меня тоже поразила эта фраза. От нее повеяло чем-то таким необыкновенным...&lt;br /&gt;Удачного вам боления!&lt;br /&gt;P.S. А вы обратили внимание, что у нас комментаторы носят птичьи фамилии: Орлов, Гусев, Уткин.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-4122174603480920845?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/4122174603480920845/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=4122174603480920845' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4122174603480920845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4122174603480920845'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/06/blog-post_24.html' title='Ангел мой, пойдем со мной: ты впереди, я - за тобой'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-3533740863591185959</id><published>2008-06-21T23:04:00.001-07:00</published><updated>2008-06-21T23:19:10.251-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Книги'/><title type='text'>Советы Сары Форд на русском</title><content type='html'>Постоянные читатели моего блога помнят, что я предлагал ознакомиться с советами Сары Форд, которые она публиковала с завидной периодичностью на своей англоязычной страничке. У меня для вас хорошая новость. Эти же советы теперь можно будет читать и на русском языке. Найти это чудо можно по адресу &lt;a href="http://blogs.msdn.com/rusaraford/"&gt;http://blogs.msdn.com/rusaraford/&lt;/a&gt;. Надеюсь, советы на русском будут также появляться регулярно.&lt;br /&gt;Первый совет был посвящен инкрементному поиску. Кстати, такой же совет имеется и в моей книге &lt;a href="http://netsources.narod.ru/book.htm"&gt;C#. Советы программистам&lt;/a&gt; (глава Интегрированная среда разработки (IDE)).&lt;br /&gt;P.S. А сборная России по футболу уже в полуфинале Чемпионата Европы!&lt;br /&gt;Удачного вам боления!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-3533740863591185959?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/3533740863591185959/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=3533740863591185959' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3533740863591185959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3533740863591185959'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/06/blog-post_21.html' title='Советы Сары Форд на русском'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-1548978645466645904</id><published>2008-06-07T14:03:00.000-07:00</published><updated>2008-06-22T01:24:00.727-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Книги'/><title type='text'>Админ ли ты?</title><content type='html'>Продолжаю читать книжку &lt;a href="http://www.ozon.ru/?context=detail&amp;amp;id=3723467&amp;amp;partner=visual"&gt;Защищенный код для Windows Vista&lt;/a&gt;. Оказывается, если вы регистрировались в системе как Администратор, то все равно администратором по сути не являетесь. По умолчанию система дает вам права стандартного пользователя. Если вам необходимо выполнить административную задачу, то система предложит вам повысить свои права. Срабатывает механизм UAC (контроль учетных записей пользователей), который так раздражает многих пользователей. Автор книги рекомендует использовать системную функцию IsUserAnAdmin для проверки ваших текущих прав. К счастью, синтаксис этой функции очень прост и мне не составило труда написать объявление этой функции для C# через механизм P/Invoke:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[DllImport("shell32.dll")]&lt;br /&gt;private static extern bool IsUserAnAdmin();&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;// Является ли пользователь администратором&lt;br /&gt;Console.WriteLine("Вы админ?: {0}", IsUserAnAdmin().ToString());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Если запустите эту программу, то можете убедиться, что вы не являетесь администратором (False). Теперь найдите исполняемый файл проекта в Проводнике, щелкните правой кнопкой для вызова контекстного меню и выберите команду &lt;strong&gt;Запуск от имени администратора&lt;/strong&gt;. Теперь программа будет выводить значение True. Вы повысили себе права до уровня администратора ручным способом.&lt;br /&gt;Существует и другой аспект. Предположим, вы сами хотите реализовать возможность повышения уровня привилегий в своей программе. В таком случае воспользуйтесь следующим кодом:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Process p = new Process();&lt;br /&gt;ProcessStartInfo psi = new ProcessStartInfo(@"cmd.exe");&lt;br /&gt;psi.UseShellExecute = true;&lt;br /&gt;psi.Verb = "runas";&lt;br /&gt;p.StartInfo = psi;&lt;br /&gt;p.Start(); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;В приведенном примере показано, как можно запускать новый процесс с повышенными привилегиями.&lt;br /&gt;&lt;br /&gt;Итак, после прочтения очередных страниц книги, мы познакомились с новой функцией Windows API IsUserAnAdmin, которую я сразу же поместил в свой &lt;a href="http://netsources.narod.ru/guide.htm"&gt;справочник по функциям Windows API&lt;/a&gt; и узнали, как программно повышать права при вызове нового процесса.&lt;br /&gt;Удачного вам программирования!&lt;br /&gt;P.S. Чемпионат Европы по футболу стартовал. Удачного вам боления!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-1548978645466645904?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/1548978645466645904/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=1548978645466645904' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1548978645466645904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/1548978645466645904'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/06/blog-post.html' title='Админ ли ты?'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-6496523244944305516</id><published>2008-05-27T12:51:00.000-07:00</published><updated>2008-05-27T13:04:50.562-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Книги'/><title type='text'>Назад в будущее</title><content type='html'>В прошлом выпуске я поведал вам о выходе в свет книги &lt;a href="http://netsources.narod.ru/book.htm"&gt;C#. Советы программистам&lt;/a&gt;. Одна из глав книги посвящена различным трюкам, которые можно использовать в IDE Visual Studio. Сегодня узнал еще один интересный прием, который, похоже, не имеется в книге. Суть в следующем. Предположим у вас имеется большой проект. Вы выбираете в редакторе кода какое-нибудь слова и вызываете из контекстного меню команду &lt;strong&gt;Go To Definition&lt;/strong&gt;. Вам мгновенно переносит в нужное место. Все это, безусловно, прекрасно. Но нам нужно вернуться теперь обратно, а проект очень большой... Неужели придется прокручивать редактор в поисках места, с которого вас выбросило? Запомните волшебную комбинацию клавиш &lt;span style="color:#ff0000;"&gt;Ctrl&lt;/span&gt; + &lt;span style="color:#ff0000;"&gt;-&lt;/span&gt;. Как только вы нажмете эту комбинацию, вы снова вернетесь на предыдущую позицию. Строго говоря, эта комбинация в паре с комбинацией &lt;span style="color:#ff0000;"&gt;Ctrl&lt;/span&gt; + &lt;span style="color:#ff0000;"&gt;Shift&lt;/span&gt; + &lt;span style="color:#ff0000;"&gt;-&lt;/span&gt; работает как кнопки Вперед и Назад в Internet Explorer.&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-6496523244944305516?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/6496523244944305516/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=6496523244944305516' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6496523244944305516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6496523244944305516'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/05/blog-post_27.html' title='Назад в будущее'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-7863100541875213556</id><published>2008-05-24T05:21:00.000-07:00</published><updated>2008-05-24T05:33:02.485-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Книги'/><title type='text'>Моя новая книжка C#. Советы программистам</title><content type='html'>Издательство BHV-Петербург выпустило мою новую книжку &lt;strong&gt;C#. Советы программистам&lt;/strong&gt;. Я постарался отобрать наиболее интересные примеры, которые я использовал в своей практике или собираюсь использовать в будущем. Более полную информацию о книге вы можете почерпуть с моей &lt;a href="http://netsources.narod.ru/book.htm"&gt;специальной странички, посвященной книжным новинкам&lt;/a&gt;. За написание книги я приступил около двух лет назад. Естественно, часть советов просто не попала в это издание. Поэтому я буду выкладывать новые советы на страницу &lt;a href="http://netsources.narod.ru/faq.htm"&gt;FAQ&lt;/a&gt;. Наиболее интересные решения, возможно, попадут в следующее издании книги. Буду рад, если вы поделитесь своими замечаниями и предложениями по книге. Также можете присылать свои советы, которые я с удовольствием рассмотрю.&lt;br /&gt;Счастливого вам чтения!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-7863100541875213556?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/7863100541875213556/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=7863100541875213556' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7863100541875213556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7863100541875213556'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/05/c.html' title='Моя новая книжка C#. Советы программистам'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-7763312479266598590</id><published>2008-05-11T08:12:00.000-07:00</published><updated>2008-05-11T08:23:10.595-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Книги'/><title type='text'>Новая книга Защищенный код для Windows Vista</title><content type='html'>Здравствуйте!&lt;br /&gt;Недавно издательство Питер выпустило книгу &lt;strong&gt;&lt;a href="http://www.ozon.ru/?context=detail&amp;amp;id=3723467&amp;amp;partner=visual"&gt;Защищенный код для Windows Vista&lt;/a&gt;&lt;/strong&gt;. Книга содержит очень много полезной информации о том, как правильно нужно писать программы под новую операционную систему Windows Vista. Большинство примеров в книге приводится на C++ и только небольшая часть на C#. Но тем не менее, книга очень нужная и своевременная. Я с удовольствием начал ее читать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-7763312479266598590?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/7763312479266598590/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=7763312479266598590' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7763312479266598590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7763312479266598590'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/05/windows-vista.html' title='Новая книга Защищенный код для Windows Vista'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-3047492687985601514</id><published>2008-05-09T03:12:00.000-07:00</published><updated>2008-05-09T03:34:11.258-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Узнать редакцию Vista</title><content type='html'>В каждой новой операционной системе появляются новые функции. Не стала исключением и Windows Vista. Как вы, вероятно, знаете, Vista поставляется в нескольких редакциях: Home Basic, Home Premium, Business и так далее. Чтобы узнать, какая версия используется у пользователя, можно воспользоваться двумя способами. Первый способ - использовать WMI (свойство OperatingSystemSKU из класса Win32_OperatingSystem). Пример использования этого свойства можно найти в &lt;a href="http://winchanger.whatis.ru/tutor.shtml"&gt;справочнике по WMI&lt;/a&gt;.&lt;br /&gt;Но нас интересует пример на C#. Для этой цели нам подойдет новая функция Windows API GetProductInfo, которая появилась в Windows Vista. Описание этой функции я поместил в &lt;a href="http://netsources.narod.ru/guide.htm"&gt;справочник по функциям Windows API для .NET Framework&lt;/a&gt;, а здесь приведу небольшой пример использования в функции в проекте на C#:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[DllImport("kernel32.dll")]&lt;br /&gt;public static extern bool GetProductInfo(&lt;br /&gt;int dwOSMajorVersion,&lt;br /&gt;int dwOSMinorVersion,&lt;br /&gt;int dwSpMajorVersion,&lt;br /&gt;int dwSpMinorVersion,&lt;br /&gt;out uint pdwReturnedProductType);&lt;br /&gt;// констанды для pdwReturnedProductType&lt;br /&gt;public const uint PRODUCT_BUSINESS = 0x00000006; // Business&lt;br /&gt;public const uint PRODUCT_ENTERPRISE = 0x00000004; // Enterprise&lt;br /&gt;public const uint PRODUCT_HOME_BASIC = 0x00000002; // Home Basic&lt;br /&gt;public const uint PRODUCT_HOME_PREMIUM = 0x00000003; // Home Premium&lt;br /&gt;public const uint PRODUCT_ULTIMATE = 0x00000001; // Ultimate&lt;br /&gt;public const uint PRODUCT_UNDEFINED = 0x00000000;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;int majorVersion = Environment.OSVersion.Version.Major;&lt;br /&gt;int minorVersion = Environment.OSVersion.Version.Minor;&lt;br /&gt;int spMajorVersion = Environment.OSVersion.Version.MajorRevision;&lt;br /&gt;int spMinorVersion = Environment.OSVersion.Version.MinorRevision;&lt;br /&gt;// Vista GerProductInfo&lt;br /&gt;uint edition = PRODUCT_UNDEFINED;&lt;br /&gt;if (GetProductInfo(&lt;br /&gt;majorVersion,&lt;br /&gt;minorVersion,&lt;br /&gt;spMajorVersion,&lt;br /&gt;spMinorVersion,&lt;br /&gt;out edition))&lt;br /&gt;{&lt;br /&gt;switch (edition)&lt;br /&gt;{&lt;br /&gt;case PRODUCT_ENTERPRISE:&lt;br /&gt;textBox1.Text += " Enterprise";&lt;br /&gt;break;&lt;br /&gt;case PRODUCT_ULTIMATE:&lt;br /&gt;textBox1.Text += " Ultimate";&lt;br /&gt;break;&lt;br /&gt;case PRODUCT_BUSINESS:&lt;br /&gt;textBox1.Text += " Business";&lt;br /&gt;break;&lt;br /&gt;case PRODUCT_HOME_PREMIUM:&lt;br /&gt;textBox1.Text += " Home Preminum";&lt;br /&gt;break;&lt;br /&gt;case PRODUCT_HOME_BASIC:&lt;br /&gt;textBox1.Text += " Home Basic";&lt;br /&gt;break;&lt;br /&gt;default:&lt;br /&gt;textBox1.Text += " Unknown";&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Программисты, которые по-прежнему работают на Visual Basic 6.0, также не будут забыты. Я постараюсь включить эту фунцию в &lt;a href="http://rusproject.narod.ru/guide.htm"&gt;справочник по функциям Windows API для Visual Basic 6.0&lt;/a&gt;.&lt;br /&gt;Всех с праздником Победы!&lt;br /&gt;И счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-3047492687985601514?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/3047492687985601514/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=3047492687985601514' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3047492687985601514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3047492687985601514'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/05/vista.html' title='Узнать редакцию Vista'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-2543988671331770742</id><published>2008-05-06T12:31:00.000-07:00</published><updated>2008-05-06T13:20:20.638-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><title type='text'>Массив байтов и файловые потоки</title><content type='html'>В одном из проектов мне понадобилось конвертировать массив байтов bytes[] в поток System.IO.Stream. Так как я вплотную потоками не работал, то моя работа затормозилась. Пришлось искать решение в интернете. Оказалось, что мы не одиноки во Вселенной. Одного человека также интересовал этот вопрос, который он задал на форуме ASP.NET Mania. Добрый человек откликнулся на просьбу и предложил решение в виде класса. Я вытащил из кода нужную мне функциональность, но своей странице &lt;a href="http://netsources.narod.ru/faq.htm"&gt;FAQ&lt;/a&gt; оставил оригинальную версию. Вдруг, спустя некоторое время, мне опять понадобится работать с потоками.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;public static class StreamConverter&lt;br /&gt;{&lt;br /&gt;public static Stream ToStream(byte[] bytes)&lt;br /&gt;{&lt;br /&gt;return new MemoryStream(bytes);&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;public static byte[] ToBytes(Stream stream)&lt;br /&gt;{&lt;br /&gt;long initialPosition = stream.Position;&lt;br /&gt;stream.Position = 0;&lt;br /&gt;byte[] bytes = new byte[stream.Length];&lt;br /&gt;stream.Read(bytes, 0, bytes.Length);&lt;br /&gt;stream.Position = initialPosition;&lt;br /&gt;return bytes;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;Удачного вам программирования!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-2543988671331770742?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/2543988671331770742/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=2543988671331770742' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2543988671331770742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2543988671331770742'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/05/blog-post.html' title='Массив байтов и файловые потоки'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-5682517787789195716</id><published>2008-04-27T10:30:00.000-07:00</published><updated>2008-04-27T11:07:51.515-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Программирование'/><title type='text'>Как создавать zip-архивы</title><content type='html'>Каждое утро на моей работе начинается с одной и той же операции. Необходимо скопировать с сервера пять xls-файлов на свой компьютер и заархивировать их в zip-файлы, чтобы выложить их на ftp-сервер. Раньше эту работу делали вручную, но в конце концов мне надоело выполнять одну и ту же последовательность действий и я решил написать для себя небольшую утилитку. Копирование файлов с одного компьютера на другой не представляет интереса, а вот архивирование файлов в zip-формат оказалось не таким простым делом. Пришлось обратиться к помощи Google, чтобы узнать больше об этой проблеме. После непродолжительных поисков я нашел пять различных способов архивации файлов. Например, можно запустить процесс WinZip c необходимыми параметрами. Но у меня на компьютере нет программы WinZip, поэтому такой способ мне не подходит. Существуют более удобные способы для архивации в виде специальных библиотек. Большинство этих библиотек бесплатны и с открытым исходным кодом. Я протестировал часть самых популярных библиотек в своих примерах и решил остановиться на библиотеке  DotNet Zip, которую можно найти по адресу &lt;a href="http://www.codeplex.com/DotNetZip"&gt;http://www.codeplex.com/DotNetZip&lt;/a&gt;.&lt;br /&gt;Чтобы воспользоваться этой библиотекой, необходимо добавить ссылку на Ionic.Utils.Zip и написать, например, такой код:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;using (ZipFile zip = new ZipFile("MyZipFile.zip")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    zip.AddFile(@"c:\photos\cat.jpg");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    zip.AddFile(@"c:\Desktop\kitty.jpg");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    zip.AddFile("ReadMe.txt");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    zip.Save();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span &gt;Вы можете скачать готовую библиотеку, исходный код, документацию, инсталлятор. На сегодняшний день библиотека DotNet Zip имет версию 1.3 (есть еще бета-версия 1.4).&lt;/span&gt;&lt;br /&gt;Сразу оговорюсь, что я не проверял производительность при архивации файлов разными библиотеками, а также не рассматривал их функциональные возможности. Я решал конкретную задачу и данное решение полностью удовлетворило меня. Теперь работа, которая отнимала у меня полчаса драгоценного времени, выполняется в течении минуты. Сейчас я тестирую программу на предмет отправки файлов на ftp-сервер. Но об этом в следующий раз.&lt;br /&gt;А вам удачного программирования!&lt;br /&gt;Христос воскресе!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-5682517787789195716?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/5682517787789195716/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=5682517787789195716' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5682517787789195716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/5682517787789195716'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/04/zip.html' title='Как создавать zip-архивы'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-769851184183956460</id><published>2008-04-20T12:19:00.000-07:00</published><updated>2008-04-20T12:40:11.381-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Новое в .NET Framework 2.0'/><title type='text'>SoundPlayer</title><content type='html'>В .NET Framework 2.0 появилась поддержка звуковых файлов и теперь не нужно прибегать к услугам функций Windows API PlaySound. Для проигрывания звуковых файлов используется класс SoundPlayer из пространства имен System.Media. Приведу небольшой кусок с использованиме этого класса. Более подробно о новых классах вы можете прочитать в документации MSDN или в &lt;a href="http://netsources.narod.ru/guide.htm"&gt;моем справочнике по .NET Framework&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;using System.Media;&lt;br /&gt;SoundPlayer player = new SoundPlayer();&lt;br /&gt;player.SoundLocation = "c:/tada.wav";&lt;br /&gt;player.Play();&lt;/span&gt;&lt;br /&gt;Будьте внимательны, поддержка этого класса в .NET Compact Framework доступна только в версии 3.5.&lt;br /&gt;P.S. Кстати, я обзавелся новым электронным адресом &lt;a href="mailto:klimoff@csfan.ru"&gt;klimoff@csfan.ru&lt;/a&gt;. CSFAN - это, наверное, фанат C#. Ну что ж, пусть будет еще один адрес. Можете слать на это мыло свои сообщения. Вы также можете приобрести такой адрес, если пройдете на сайт &lt;a href="http://www.mailnica.ru/"&gt;http://www.mailnica.ru/&lt;/a&gt;. На этом сайте Майкрософт предлагает на выбор самые разнообразные адреса, например, дочь танкиста.ру или дайте-денег.ру&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-769851184183956460?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/769851184183956460/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=769851184183956460' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/769851184183956460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/769851184183956460'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/04/soundplayer.html' title='SoundPlayer'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-2660733807725643131</id><published>2008-04-14T11:45:00.000-07:00</published><updated>2008-04-14T12:03:36.043-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUN'/><title type='text'>Не прислоняться или детская забава</title><content type='html'>Когда я учился в школе, мне приходилось ездить каждый день на метро, начиная с 5 класса. Чтобы первым успевать к экскалатору или к переходу на другую ветку, я старался держаться около дверей вагона. В течении получаса передо мной маячила надпись &lt;strong&gt;Не прислоняться&lt;/strong&gt;, написанная на каждой двери вагона московского метро. Сначала я смотрел на эту надпись снизу вверх, потом надпись была на уровне моих глаз, а когда заканчивал школу, то смотрел на нее уже свысока))). Чтобы не скучать, я придумал себе простое занятие - составлять слова из букв, входящих в эту надпись. Слова из трех или четырех букв придумать было достаточно просто: стол, слон, нос, сон, лот и т.п. Когда легкие слова закончились, я пытался найти уже более сложные слова. И испытывал радость, когда получалось составить какое-нибудь новое слово. Например, удалось найди шестибуквенные слова типа пистон, пионер. Были даже семибуквенные находки - престол. Позже, когда я увлекся программированием, я поймал себя на мысли - как было бы здорово написать программу, которая сама найдет все существующие варианты. Эта была моя детская мечта. Как хорошо было бы, если эту задачку предложили на олимпиаде для программистов. Так хочется узнать все слова, зашифрованные в этой незамысловатой надписи. Как я себе представляю, эту задачу можно разделить на два этапа. Первый этап - комбинаторная задача, которая сводится к получению всех возможных перестановок букв. Вторая задача - сверка получившихся комбинаций с каким-то большим словарем, чтобы оставить только осмысленные слова. Вот такая у меня была детская забава.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-2660733807725643131?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/2660733807725643131/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=2660733807725643131' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2660733807725643131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2660733807725643131'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/04/blog-post.html' title='Не прислоняться или детская забава'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-4295861112094932150</id><published>2008-03-20T13:03:00.000-07:00</published><updated>2008-11-15T02:02:22.598-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Новое в .NET Framework 2.0'/><title type='text'>GetDrives и IsReady</title><content type='html'>Сегодня продолжим разговор о новинках, которые появились в .NET Framework 2.0. Рассмотрим метод GetDrives и свойство IsReady из класса DriveInfo. Метод GetDrives получает массив имен всех логических дисков на компьютере. Естественно, используя этот массив, мы можем пройтись по всем дискам и получить информацию о каждой диске. Но, чтобы не нарваться на ошибку, желательно воспользоваться свойством IsReady, который определяет доступность диска, например, можно определить наличие компакт-диска в CD-ROM. Берем на вооружение все вышесказанное и пишем следующий пример.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;using System;&lt;br /&gt;using System.IO;&lt;br /&gt;class Test&lt;br /&gt;{&lt;br /&gt;public static void Main()&lt;br /&gt;{&lt;br /&gt;DriveInfo[] allDrives = DriveInfo.GetDrives();&lt;br /&gt;foreach (DriveInfo d in allDrives)&lt;br /&gt;{&lt;br /&gt;Console.WriteLine("Диск {0}", d.Name);&lt;br /&gt;Console.WriteLine(" Тип диска: {0}", d.DriveType);&lt;br /&gt;if (d.IsReady == true)&lt;br /&gt;{&lt;br /&gt;Console.WriteLine(" Полный размер диска: {0, 15} bytes ", d.TotalSize);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;Описываемые метод и свойство я добавил в свой &lt;a href="http://netsources.narod.ru/guide.htm"&gt;справочник по .NET Framework&lt;/a&gt;, доступный зарегистрированным пользователям. Кстати, вы можете бесплатно получить один выпуск справочника, если выполните одно условие. Вам необходимо выбрать любой пример, написанный на Visual Basic 6.0 с сайта &lt;a href="http://rusproject.narod.ru/"&gt;Русский_Проект &lt;/a&gt;и портировать его на язык C# или VB.NET. Хочу обратить ваше внимание, что нужно, именно, портировать исходник, а не присылать похожий пример. Примеры можете присылать по адресу &lt;a href="mailto:rusproject@mail.ru"&gt;rusproject@mail.ru&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Times New Roman;"&gt;Удачного вам программирования!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-4295861112094932150?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/4295861112094932150/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=4295861112094932150' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4295861112094932150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4295861112094932150'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/03/getdrives-isready.html' title='GetDrives и IsReady'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-4135876245637862469</id><published>2008-03-12T13:38:00.000-07:00</published><updated>2008-03-12T13:48:34.466-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><title type='text'>Перетаскивание строчек кода в IDE</title><content type='html'>Сегодня в блоге Сары Форд (надеюсь, все уже нашли адрес ее блога и подписались?) прочитал очень интересный совет.&lt;br /&gt;Сначала вспомним, как обычно мы управляем строчками кода. Если нужно переместить строчки кода в другое место, то просто выделяем нужный фрагмент и перемещаем текст (а-ля Word). Если нужно скопировать кусочек текста, то мы сначала выделяем текст, выбираем команду Copy, щелкаем мышкой в другом месте редактора кода и сновы вызываем контекстное меню для команды Paste (либо пользуемся комбинациями клавиш). Но есть еще один интересный способ. Выделите строчку кода, затем нажмите на правую кнопку мыши и, удерживая ее, перетащите выделенную строчку в нужное место. Когда вы отпустите кнопку мыши, то&lt;br /&gt;увидите всплывающее меню с командами "Move here, Copy here и Cancel."  Очень удобно для быстрого копирования или перемещения кода. Возьмите на заметку. Счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-4135876245637862469?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/4135876245637862469/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=4135876245637862469' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4135876245637862469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4135876245637862469'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/03/ide.html' title='Перетаскивание строчек кода в IDE'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-7257024386199501006</id><published>2008-03-02T12:45:00.000-08:00</published><updated>2008-03-02T13:02:38.758-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><title type='text'></title><content type='html'>Недавно в справочник добавил пример с применением функций SetPowerRequirement и ReleasePowerRequirement. С помощью этих функций можно сделать так, чтобы экран мобильного устройства не выключался, если долго не нажимать на кнопки или не пользоваться пером. Это может пригодиться, например, при просмотре видео. Приведу объявление одной функции на VB:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Declare Function SetPowerRequirement Lib "coredll.dll" (ByVal pvDevice As String,  _          ByVal DeviceState As PowerState,  _          ByVal DeviceFlags As Integer,  _          ByVal pvSystemState As IntPtr,  _          ByVal StateFlags As Integer) As IntPtr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Чтобы экран не выключался, нужно сделать так:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;' Отключаем автоматическое выключение экрана&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Public Sub Activate() &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   'request full power    handle = SetPowerRequirement("BKL1:", &lt;/span&gt;&lt;a href="file:///D:/Help/DOTNETAPI/winapi/c/cedevice_power_state.html"&gt;&lt;span style="font-family:courier new;"&gt;CEDEVICE_POWER_STATE&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;.D0, 1, IntPtr.Zero, 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;End Sub&lt;/span&gt;&lt;br /&gt;Более полное описание функций и примеры на C# и Visual Basic можно найти в &lt;a href="http://netsources.narod.ru/guide.htm"&gt;справочнике по функциям Windows API&lt;/a&gt;.&lt;br /&gt;Кстати, новость для тех, кто интересуется программированием для мобильных устройств. Microsoft поменяла главную страницу &lt;a href="http://msdn2.microsoft.com/en-us/windowsmobile/default.aspx"&gt;Windows Mobile Developer Center&lt;/a&gt;. Теперь на этой странице в более удобном виде собраны ресурсы для разработчика под платформу Windows Mobile. Рекомендую всем. (А вечером многие страницы Microsoft были недоступны. Надеюсь, это временное явление).&lt;br /&gt;&lt;br /&gt;&lt;pre&gt; &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-7257024386199501006?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/7257024386199501006/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=7257024386199501006' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7257024386199501006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7257024386199501006'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/03/setpowerrequirement-releasepowerrequire.html' title=''/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-6818708856012801155</id><published>2008-02-23T14:04:00.000-08:00</published><updated>2008-02-23T14:12:57.526-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Новое в .NET Framework 2.0'/><title type='text'></title><content type='html'>Сегодня снова поговорим о новинках .NET Framework 2.0. В новом классе DriveInfo есть свойство VolumeLabel, которое позволяет получать или устанавливать метку тома диска. Данное свойство позволяет отказаться от вызова неуправляемых функций Windows API &lt;strong&gt;SetVolumeLabel&lt;/strong&gt; и &lt;strong&gt;GetVolumeInformation&lt;/strong&gt;. Описание свойства мы можете найти в моем справочнике, который можно скачать с моей &lt;a href="http://netsources.narod.ru/"&gt;страницы&lt;/a&gt;, а здесь я приведу лишь пример использования этого свойства:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DriveInfo di = new DriveInfo("d");&lt;br /&gt;&lt;span style="color:#33cc00;"&gt;// Устанавливаем новую метку для диска D:&lt;/span&gt;&lt;br /&gt;di.VolumeLabel = "DriveD";&lt;br /&gt;&lt;span style="color:#33cc00;"&gt;// Получим метку тома&lt;/span&gt;&lt;br /&gt;Console.WriteLine(new DriveInfo("d").VolumeLabel);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-6818708856012801155?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/6818708856012801155/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=6818708856012801155' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6818708856012801155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6818708856012801155'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/02/blog-post_23.html' title=''/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-3259071906680426193</id><published>2008-02-17T00:35:00.000-08:00</published><updated>2008-02-17T00:43:22.785-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Книги'/><title type='text'></title><content type='html'>На прошлой неделе купил книгу Чарльза Петцольда &lt;strong&gt;Microsoft Windows Presentation Foundation. Базовый курс.&lt;/strong&gt; Мне нравится стиль изложения материала этого писателя, поэтому в моей библиотеке есть практически все его книги. Советую и вам &lt;a href="http://www.ozon.ru/?context=detail&amp;amp;id=3658608&amp;amp;partner=visual"&gt;приобрести&lt;/a&gt; эту книгу и освоить новую технологию WPF.&lt;br /&gt;А на моем сайте есть специальный раздел &lt;strong&gt;&lt;a href="http://netsources.narod.ru/book.htm"&gt;Книги&lt;/a&gt;&lt;/strong&gt;, в котором вы найдете другие полезные и интересные произведения, связанные с .NET Framework.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-3259071906680426193?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/3259071906680426193/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=3259071906680426193' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3259071906680426193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3259071906680426193'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/02/microsoft-windows-presentation.html' title=''/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-34992367877961759</id><published>2008-02-07T12:52:00.000-08:00</published><updated>2008-02-07T13:00:18.211-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FUN'/><title type='text'>Лошадиная фамилия</title><content type='html'>Сегодня пришло письмо от одного клиента. Фамилия у него была весьма необычна. Девушка, которая обрабатывает письма клиентов, засомневалась, что фамилия настоящая и стала показывать письмо всем сотрудникам офиса. Там было написано, что человека зовут Бляблин. Возник спор по поводу такой фамилии - стоит ли выходить замуж за такого человека и так далее. Вечером пришел домой и решил немного погуглить. К моему удивлению, фамилия оказалась достаточно популярной и распространенной!&lt;br /&gt;Счастливого вам программирования, господин Бляблин! )))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-34992367877961759?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/34992367877961759/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=34992367877961759' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/34992367877961759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/34992367877961759'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/02/blog-post.html' title='Лошадиная фамилия'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-3326647499464569111</id><published>2008-01-27T00:47:00.000-08:00</published><updated>2008-01-27T00:51:01.645-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><title type='text'>Открыть папку, содержащую файл</title><content type='html'>Впрочем, кроме получения полного пути к файлу (смотри предыдущий совет), еще требуется быстро открыть саму папку, в которой содержится нужный файл проекта. В контекстном меню той же файловой закладки есть пункт &lt;strong&gt;Open Containing Folder&lt;/strong&gt;. Эта команда позволяет мгновенно оказаться в нужной папке и произвести необходимые действия с файлом: поменять атрибуты файла, переименовать его и т.д.&lt;br /&gt;P.S. Может есть смысл размещать эти советы на сайте &lt;a href="http://netsources.narod.ru/"&gt;http://netsources.narod.ru&lt;/a&gt;?&lt;br /&gt;Счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-3326647499464569111?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/3326647499464569111/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=3326647499464569111' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3326647499464569111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3326647499464569111'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/01/blog-post_27.html' title='Открыть папку, содержащую файл'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-6224317011414368214</id><published>2008-01-26T06:57:00.000-08:00</published><updated>2008-01-26T07:11:01.694-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><title type='text'>Путь к файлу</title><content type='html'>Вот вам еще один совет, который вам пригодится. Иногда, требуется быстро получить полный путь к файлу, с которым вы работаете в IDE Visual Studio. Раньше приходилось открывать Проводник, искать нужный файл, смотреть его свойства и т.д. Теперь достаточно щелкнуть правой кнопкой на закладке с именем файла и выбрать пункт &lt;strong&gt;Copy Full Path&lt;/strong&gt;.&lt;br /&gt;Кстати, если вам интересна тема советов, связанных со средой разработки Visual Studio, то советую посетить блог &lt;strong&gt;Sara Ford's WebLog&lt;/strong&gt;. Специально не даю прямую ссылку, чтобы вы самостоятельно нашли эту страницу. Поработайте, ребята.&lt;br /&gt;Часть советов из ее блога уже были в моей коллекции, но иногда попадаются и новинки.&lt;br /&gt;Счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-6224317011414368214?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/6224317011414368214/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=6224317011414368214' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6224317011414368214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/6224317011414368214'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/01/blog-post_26.html' title='Путь к файлу'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-2449922941708723319</id><published>2008-01-20T03:46:00.000-08:00</published><updated>2008-01-20T03:53:04.422-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Новое в .NET Framework 2.0'/><title type='text'>TotalFreeSpace</title><content type='html'>Поговорим о новых методах, свойствах, классах и т.д., которые появились в .NET Framework 2.0. Иногда, просматривая старые проекты, написанные под .NET Framework 1.0/1.1, видишь, устаревшие строчки кода. Например, в NF 2.0 появилось новое свойство &lt;strong&gt;TotalFreeSpace&lt;/strong&gt; класса DriveInfo. Это свойство возвращает общее количество свободного места на диске. Например, можно написать так:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;MessageBox.Show(new DriveInfo("c").TotalFreeSpace.ToString());&lt;/span&gt;&lt;br /&gt;&lt;span &gt;&lt;/span&gt;Просто и понятно.&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-2449922941708723319?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/2449922941708723319/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=2449922941708723319' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2449922941708723319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/2449922941708723319'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/01/totalfreespace.html' title='TotalFreeSpace'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-4451180056218486071</id><published>2008-01-17T12:20:00.000-08:00</published><updated>2008-01-17T12:31:32.854-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><title type='text'>Прозрачная подсказка IntelliSense</title><content type='html'>Продолжим изучение среды разработки Visual Studio 2008. Меня очень часто раздражало, когда выпадающее окно подсказки IntelliSense закрывало часть кода, написанного строчками ниже. Приходилось прекращать печатать код, чтобы посмотреть, что же было написано на этих строчках, и потом снова возвращаться на редактируемую строку. Видимо, это раздражало не только меня, но и многих программистов. В Visual Studio 2008 можете поступить следующим образом. Когда подсказка снова закроет нужную часть кода, то просто нажмите на клавишу Ctrl. Вау, подсказка стала прозрачной и вы видите нужные данные. Отпустите клавишу - подсказка снова примет свой стандартный вид. Снова нажмите на клавишу. Снова отпустите ))). Уверен, вам понравится. Теперь поводов для раздражения стало меньше, а значит жизнь прекрасна! На этой радостной ноте и закончим. Счастливого вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-4451180056218486071?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/4451180056218486071/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=4451180056218486071' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4451180056218486071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/4451180056218486071'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/01/intellisense.html' title='Прозрачная подсказка IntelliSense'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-8999020530429130130</id><published>2008-01-11T07:01:00.000-08:00</published><updated>2008-01-11T07:15:09.188-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><title type='text'>Изучайте среду разработки</title><content type='html'>Сегодня хотелось бы поговорить о среде разработки IDE для Visual Studio 2008. Данная среда разработки является очень мощным инструментом, который используется программистами не на полную катушку. Программисты основное внимание уделяют написанию своего кода и компиляции. На изучение возможностей IDE у ленивых разработчиков нет времени. Тогда читайте мой блог. Я буду рассказывать вам понемногу о всяких полезных мелочах. Авось, пригодится. Начнем с начального экрана при запуске IDE. У большинства пользователей при начальной загрузке отображается RSS-ридер, который показывает последние новости с сайта Майкрософт. Вы можете установить свой адрес для чтения RSS-новостей. Для этого идем в &lt;strong&gt;Tools  Options…  Environment  Startup.&lt;/strong&gt; В списке &lt;strong&gt;At Startup: &lt;/strong&gt;вы выбираете, что должно появляться при загрузке IDE. А в поле &lt;strong&gt;Start Page news channel&lt;/strong&gt; вы можете указать свой адрес для чтения RSS-новостей. По умолчанию там стоит строка &lt;strong&gt;http://go.microsoft.com/fwlink/?linkid=35587&amp;amp;clcid=409&lt;/strong&gt;. Также вы можете определить время обновления новостей.&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-8999020530429130130?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/8999020530429130130/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=8999020530429130130' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8999020530429130130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8999020530429130130'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/01/blog-post.html' title='Изучайте среду разработки'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-8123011260760876442</id><published>2008-01-08T02:24:00.000-08:00</published><updated>2008-01-08T02:40:02.613-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><title type='text'>Устаревшие функции Windows API (продолжение)</title><content type='html'>Продолжаем избавляться от устаревших функций Windows API. Просматривая книгу &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Программирование КПК и смартфонов на .NET Compact Framework&lt;/span&gt;&lt;/strong&gt;, обнаружил код для работы с реестром. Описание функций заняло около 10 страниц книги. К счастью, в .NET Compact Framework 2.0 появилась поддержка работы с реестром при помощи класса Registry. В качестве примера можете посмотреть устаревшую функцию RegOpenKeyEx на странице &lt;a href="http://netsources.narod.ru/oldapi/winapi.html"&gt;Функций Windows API&lt;/a&gt;.&lt;br /&gt;Старые функции в топку! Теперь аналогичный пример с использованием управляемого кода займет полстраницы вместо десяти страниц (почувствуйте разницу).&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-8123011260760876442?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/8123011260760876442/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=8123011260760876442' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8123011260760876442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8123011260760876442'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/01/windows-api_08.html' title='Устаревшие функции Windows API (продолжение)'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-7991487404281822334</id><published>2008-01-03T02:39:00.000-08:00</published><updated>2008-01-03T02:48:16.011-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Compact Framework'/><title type='text'>Устаревшие функции Windows API</title><content type='html'>Я сейчас пересматриваю старые проекты для  .NET Compact Framework. Теперь в Windows Mobile 6 зашита 2 версия  .NET Compact Framework, поэтому некоторые конструкции с применением вызовов функций Windows API выглядят устаревшими. Например, вместо функции &lt;strong&gt;GetSystemPowerStatusEx&lt;/strong&gt; можно воспользоваться свойствами &lt;strong&gt;SystemState.PowerBatteryStrength&lt;/strong&gt; и &lt;strong&gt;SystemState.PowerBatteryState&lt;/strong&gt; пространства имен &lt;strong&gt;Microsoft.WindowsMobile.Status&lt;/strong&gt;.&lt;br /&gt;Если вас интересуют описания устаревших функций Windows API, то можете посетить специальную страничку на моем сайте (&lt;a href="http://netsources.narod.ru/oldapi/winapi.html"&gt;http://netsources.narod.ru/oldapi/winapi.html&lt;/a&gt;).&lt;br /&gt;Удачного вам программирования!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-7991487404281822334?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/7991487404281822334/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=7991487404281822334' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7991487404281822334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/7991487404281822334'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/01/windows-api.html' title='Устаревшие функции Windows API'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-3548775244754041913</id><published>2008-01-01T04:43:00.000-08:00</published><updated>2008-01-01T04:57:37.171-08:00</updated><title type='text'>С Новым 2008 годом!</title><content type='html'>В первый день нового года нет смысла грузить вас листингами кодов и умными словами. Просто позвольте пожелать вам удачи в новом году. Тем более, что символом года является мышь, которая является другом программиста. Пусть левая и правая кнопка мыши тихо щелкают под вашей рукой. Ладно, приведу небольшой код.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;private void Form1_MouseClick(object sender, MouseEventArgs e)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    MessageBox.Show("Счастливого вам программирования!");&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;Для зарегистрированных пользователей сообщаю, что вышло обновления справочника по функциям Windows API для .NET Framework. Проверьте вашу почту.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-3548775244754041913?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/3548775244754041913/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=3548775244754041913' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3548775244754041913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/3548775244754041913'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2008/01/2008.html' title='С Новым 2008 годом!'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8616169664146917450.post-8043241474472333995</id><published>2007-12-16T10:33:00.000-08:00</published><updated>2007-12-16T10:37:43.766-08:00</updated><title type='text'>Добро пожаловать!</title><content type='html'>Здравствуйте, кодеры!&lt;br /&gt;Вот и я решил податься в блоггеры. Зачем? Помните из фильма: &lt;strong&gt;Все побежали, и я побежал&lt;/strong&gt;.&lt;br /&gt;Как видно из названия - основной темой блога будет .NET Framework для русскоязычной аудитории.&lt;br /&gt;До встречи!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8616169664146917450-8043241474472333995?l=rusnetframework.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rusnetframework.blogspot.com/feeds/8043241474472333995/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8616169664146917450&amp;postID=8043241474472333995' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8043241474472333995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8616169664146917450/posts/default/8043241474472333995'/><link rel='alternate' type='text/html' href='http://rusnetframework.blogspot.com/2007/12/blog-post.html' title='Добро пожаловать!'/><author><name>AK</name><uri>http://www.blogger.com/profile/06260079966243851946</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
