<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>andrey_halin</title>
  <link>http://andrey-halin.livejournal.com/</link>
  <description>andrey_halin - LiveJournal.com</description>
  <lastBuildDate>Mon, 20 Jul 2009 19:24:20 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>andrey_halin</lj:journal>
  <lj:journalid>13396546</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <atom10:link rel='hub' href='http://pubsubhubbub.appspot.com/' />
<item>
  <guid isPermaLink='true'>http://andrey-halin.livejournal.com/1737.html</guid>
  <pubDate>Mon, 20 Jul 2009 19:24:20 GMT</pubDate>
  <title>Программистам c++викам наверное будет интересно</title>
  <link>http://andrey-halin.livejournal.com/1737.html</link>
  <description>&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Небольшая библиотечка - &quot;comtools&quot; для упрощения работы с COM Automation.&lt;br /&gt;Описание смотрите &lt;a href=&quot;http://andreyog.by.ru/comtools.html&quot;&gt;здесь&lt;/a&gt;.Там же на странице ссылка на архив с исходниками&lt;br /&gt;Небольшой пример:&lt;br /&gt;&lt;p&gt;&lt;br /&gt;В качестве примера я взял вот &lt;a href=&quot;http://support.microsoft.com/kb/216686&quot;&gt;этот код&lt;/a&gt; и переписал его с использованием Comtools,сохранив функциональность.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;font color=&quot;#a020f0&quot;&gt;#include&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#ff00ff&quot;&gt;&amp;lt;iostream&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#a020f0&quot;&gt;#include&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;comtools.hpp&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#804040&quot;&gt;&lt;b&gt;using&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#2e8b57&quot;&gt;&lt;b&gt;namespace&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#008080&quot;&gt;std&lt;/font&gt;;&lt;br /&gt;&lt;font color=&quot;#2e8b57&quot;&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt;&amp;nbsp;main(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#804040&quot;&gt;&lt;b&gt;try&lt;/b&gt;&lt;/font&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;CoInitialize(&lt;font color=&quot;#804040&quot;&gt;&lt;b&gt;static_cast&lt;/b&gt;&lt;/font&gt;&amp;lt;LPVOID&amp;gt;(&lt;font color=&quot;#ff00ff&quot;&gt;0&lt;/font&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;//Запускаем Excel&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Variant xlApp = startApp(OLESTR(&lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;Excel.Application&amp;quot;&lt;/font&gt;));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;//Делаем Excel видимым &lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;invokeSetProperty(xlApp,OLESTR(&lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;Visible&amp;quot;&lt;/font&gt;), &lt;font color=&quot;#ff00ff&quot;&gt;true&lt;/font&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;//Получаем свойство &apos;Application.Workbooks&apos;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Variant Wkbooks = invokeGetProperty(xlApp, OLESTR(&lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;Workbooks&amp;quot;&lt;/font&gt;));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;//Вызываем метод &apos;Workbooks.Add&apos; - создание новой книги&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Variant Wkbook = invokeMethod(Wkbooks,OLESTR(&lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;Add&amp;quot;&lt;/font&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;//Получаем свойство &apos;Workbook.ActiveSheet&apos; - Активный лист&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Variant ActSht = invokeGetProperty(Wkbook,OLESTR(&lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;ActiveSheet&amp;quot;&lt;/font&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;//Получаем свойство &apos;Range(&amp;quot;A1:O15&amp;quot;)&apos; активного листа&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Variant Range = invokeGetProperty(ActSht,OLESTR(&lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;Range&amp;quot;&lt;/font&gt;), Convert2WideChar ( (&lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;A1:O15&amp;quot;&lt;/font&gt;)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;// Create a 15x15 safearray&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;SAFEARRAYBOUND sab[&lt;font color=&quot;#ff00ff&quot;&gt;2&lt;/font&gt;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;sab[&lt;font color=&quot;#ff00ff&quot;&gt;0&lt;/font&gt;].lLbound = &lt;font color=&quot;#ff00ff&quot;&gt;1&lt;/font&gt;; sab[&lt;font color=&quot;#ff00ff&quot;&gt;0&lt;/font&gt;].cElements = &lt;font color=&quot;#ff00ff&quot;&gt;15&lt;/font&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;sab[&lt;font color=&quot;#ff00ff&quot;&gt;1&lt;/font&gt;].lLbound = &lt;font color=&quot;#ff00ff&quot;&gt;1&lt;/font&gt;; sab[&lt;font color=&quot;#ff00ff&quot;&gt;1&lt;/font&gt;].cElements = &lt;font color=&quot;#ff00ff&quot;&gt;15&lt;/font&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;SAFEARRAY* sarray = SafeArrayCreate (VT_VARIANT, &lt;font color=&quot;#ff00ff&quot;&gt;2&lt;/font&gt;, sab);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;font color=&quot;#0000ff&quot;&gt;// Fill safearray with some values...&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#804040&quot;&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;(&lt;font color=&quot;#2e8b57&quot;&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt;&amp;nbsp;i=&lt;font color=&quot;#ff00ff&quot;&gt;1&lt;/font&gt;; i&amp;lt;=&lt;font color=&quot;#ff00ff&quot;&gt;15&lt;/font&gt;; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#804040&quot;&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt;(&lt;font color=&quot;#2e8b57&quot;&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt;&amp;nbsp;j=&lt;font color=&quot;#ff00ff&quot;&gt;1&lt;/font&gt;; j&amp;lt;=&lt;font color=&quot;#ff00ff&quot;&gt;15&lt;/font&gt;; j++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;// Create entry value for (i,j)&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Variant tmp = i*j;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;// Add to safearray...&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2e8b57&quot;&gt;&lt;b&gt;long&lt;/b&gt;&lt;/font&gt;&amp;nbsp;indices[] = {i,j};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HRESULT hr = SafeArrayPutElement(sarray, indices, &lt;font color=&quot;#804040&quot;&gt;&lt;b&gt;static_cast&lt;/b&gt;&lt;/font&gt;&amp;lt;&lt;font color=&quot;#2e8b57&quot;&gt;&lt;b&gt;void&lt;/b&gt;&lt;/font&gt;*&amp;gt;(&lt;font color=&quot;#804040&quot;&gt;&lt;b&gt;dynamic_cast&lt;/b&gt;&lt;/font&gt;&amp;lt;VARIANT*&amp;gt;(&amp;amp;tmp)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#804040&quot;&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;&amp;nbsp;(FAILED(hr))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#804040&quot;&gt;&lt;b&gt;throw&lt;/b&gt;&lt;/font&gt;&amp;nbsp;hr;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;//Для автоматической очистки созданного массива&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Variant array = sarray;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;//&apos;Range.Value&apos; заполняем значениями из массива&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;invokeSetProperty(Range,OLESTR(&lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;Value&amp;quot;&lt;/font&gt;),array);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;::MessageBox(&lt;font color=&quot;#ff00ff&quot;&gt;NULL&lt;/font&gt;, &lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;All done.&amp;quot;&lt;/font&gt;, &lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;Notice&amp;quot;&lt;/font&gt;, &lt;font color=&quot;#ff00ff&quot;&gt;0x10000&lt;/font&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;//Типа, книгу мы уже сохранили&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;invokeSetProperty(Wkbook, OLESTR(&lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;Saved&amp;quot;&lt;/font&gt;), &lt;font color=&quot;#ff00ff&quot;&gt;true&lt;/font&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;//Выход&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;invokeMethod(xlApp,OLESTR(&lt;font color=&quot;#ff00ff&quot;&gt;&amp;quot;Quit&amp;quot;&lt;/font&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;CoUninitialize();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#804040&quot;&gt;&lt;b&gt;catch&lt;/b&gt;&lt;/font&gt;(HRESULT hr){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#008080&quot;&gt;cerr&lt;/font&gt;&amp;nbsp;&amp;lt;&amp;lt; hex &amp;lt;&amp;lt; hr &amp;lt;&amp;lt; &amp;quot;-&amp;quot; &amp;lt;&amp;lt; translateHRESULT(hr)&amp;lt;&amp;lt; endl;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#804040&quot;&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&amp;nbsp;&lt;font color=&quot;#ff00ff&quot;&gt;0&lt;/font&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
  <comments>http://andrey-halin.livejournal.com/1737.html</comments>
  <category>программизм</category>
  <category>cpp</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://andrey-halin.livejournal.com/1451.html</guid>
  <pubDate>Thu, 12 Feb 2009 22:44:19 GMT</pubDate>
  <title>:)</title>
  <link>http://andrey-halin.livejournal.com/1451.html</link>
  <description>&lt;a href=&quot;http://smerd-andreyka.livejournal.com/169041.html&quot;&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; скрижалей со срачем в камментах..&lt;br /&gt;&lt;/a&gt;</description>
  <comments>http://andrey-halin.livejournal.com/1451.html</comments>
  <category>юмор</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://andrey-halin.livejournal.com/1180.html</guid>
  <pubDate>Sun, 30 Nov 2008 00:02:00 GMT</pubDate>
  <title>Про пословицы и поговорки</title>
  <link>http://andrey-halin.livejournal.com/1180.html</link>
  <description>Размышлял недавно над высказыванием &amp;quot;Кто не рискует, тот не пьет шампанское&amp;quot;, пришел к выводу, что оно довольно глупо звучит, ибо умные люди риски того или иного действия оценивают, а особо хитромудрые стремятся переложить риски на чужие плечи.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;А вот поговорку &amp;quot;Дареному коню в зубы не смотрят&amp;quot; наверняка придумали те, кто снаряжал троянского коня :))</description>
  <comments>http://andrey-halin.livejournal.com/1180.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://andrey-halin.livejournal.com/924.html</guid>
  <pubDate>Sat, 28 Jun 2008 20:19:34 GMT</pubDate>
  <title>Афоризм</title>
  <link>http://andrey-halin.livejournal.com/924.html</link>
  <description>В мире нет ничего сверхъестественного, все что люди называют сверхъестественным - это то естественное, что находится за гранью нашего познания.</description>
  <comments>http://andrey-halin.livejournal.com/924.html</comments>
  <category>Атеизм</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://andrey-halin.livejournal.com/669.html</guid>
  <pubDate>Tue, 17 Jul 2007 08:43:47 GMT</pubDate>
  <link>http://andrey-halin.livejournal.com/669.html</link>
  <description>Test</description>
  <comments>http://andrey-halin.livejournal.com/669.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>7</lj:reply-count>
</item>
</channel>
</rss>
