<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635784</guid>
        <pubDate>Fri, 20 Nov 2015 17:09:33 +0000</pubDate>
        <title>LVM_GETITEMTEXT в чужой процесс Win 64</title>
        <link>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635784</link>
        <description><![CDATA[TheTrik: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406899&view=findpost&p=3635782'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2015-11-20T20:06:23+03:00">20.11.15, 17:06</time></span><div class='quote '>И убедился, что функция мало того, что не документирована, даже не распространена. Ввиду этого возникает вопрос, откуда тебе известно об её использовании и поведении?</div></div><br>
Если посмотреть обратную задачу то можно увидеть довольно-таки распространненую функцию <strong class='tag-b'>NtWow64ReadVirtualMemory64</strong>, соответственно если есть Read, то есть и Write - это если следовать логике. А так я ее неоднократно применял в задаче для запуска потока в x64 процессе.]]></description>
        <author>TheTrik</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635782</guid>
        <pubDate>Fri, 20 Nov 2015 17:06:23 +0000</pubDate>
        <title>LVM_GETITEMTEXT в чужой процесс Win 64</title>
        <link>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635782</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406899&view=findpost&p=3635779'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>TheTrik &#064; <time class="tag-quote__quoted-time" datetime="2015-11-20T17:01:04+00:00">20.11.15, 17:01</time></span><div class='quote '>А слабо самому погуглить?</div></div><br>
Мне не слабо, я погуглил. И убедился, что функция мало того, что не документирована, даже не распространена. Ввиду этого возникает вопрос, откуда тебе известно об её использовании и поведении?]]></description>
        <author>B.V.</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635779</guid>
        <pubDate>Fri, 20 Nov 2015 17:01:04 +0000</pubDate>
        <title>LVM_GETITEMTEXT в чужой процесс Win 64</title>
        <link>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635779</link>
        <description><![CDATA[TheTrik: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406899&view=findpost&p=3635730'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2015-11-20T14:59:12+00:00">20.11.15, 14:59</time></span><div class='quote '>А слабо тебе, TheTrik, дать ссылочку на документацию по запощенной функции?</div></div><br>
А слабо самому погуглить? Это недокументированная функция, но присутствует во всех x64 разрядных системах.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406899&view=findpost&p=3635752'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SOY &#064; <time class="tag-quote__quoted-time" datetime="2015-11-20T16:16:13+00:00">20.11.15, 16:16</time></span><div class='quote '>да, действительно, не плохо бы взлянуть</div></div><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">NTSTATUS __stdcall</div><div class="code_line">NtWow64WriteVirtualMemory64(</div><div class="code_line">&nbsp;&nbsp; &nbsp;HANDLE ProcessHandle,</div><div class="code_line">&nbsp;&nbsp; &nbsp;PVOID64 BaseAddress,</div><div class="code_line">&nbsp;&nbsp; &nbsp;PVOID Buffer,</div><div class="code_line">&nbsp;&nbsp; &nbsp;ULONGLONG BufferSize,</div><div class="code_line">&nbsp;&nbsp; &nbsp;PULONGLONG NumberOfBytesWritten</div><div class="code_line">&nbsp;&nbsp; &nbsp;);</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Public Type LARGE_INTEGER</div><div class="code_line">&nbsp;&nbsp; &nbsp;LowPart As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp;HighPart As Long</div><div class="code_line">End Type</div><div class="code_line">&nbsp;</div><div class="code_line">Public Declare Function NtWow64WriteVirtualMemory64 Lib &quot;ntdll&quot; ( _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal ProcessHandle As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal BaseAddressL As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal BaseAddressH As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByRef Buffer As Any, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal BufferSizeL As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal BufferSizeH As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByRef NumberOfBytesWritten As LARGE_INTEGER) As Long</div></ol></div></div></div></div><br>
Пишу по памяти, а проверить не могу, т.к. на данный момент нет x64 системы.]]></description>
        <author>TheTrik</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635752</guid>
        <pubDate>Fri, 20 Nov 2015 16:16:13 +0000</pubDate>
        <title>LVM_GETITEMTEXT в чужой процесс Win 64</title>
        <link>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635752</link>
        <description><![CDATA[SOY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406899&view=findpost&p=3635620'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>TheTrik &#064; <time class="tag-quote__quoted-time" datetime="2015-11-20T08:11:32+00:00">20.11.15, 08:11</time></span><div class='quote '>NtWow64WriteVirtualMemory64</div></div><br>
да, действительно, не плохо бы взлянуть]]></description>
        <author>SOY</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635730</guid>
        <pubDate>Fri, 20 Nov 2015 14:59:12 +0000</pubDate>
        <title>LVM_GETITEMTEXT в чужой процесс Win 64</title>
        <link>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635730</link>
        <description><![CDATA[B.V.: А слабо тебе, TheTrik, дать ссылочку на документацию по запощенной функции?]]></description>
        <author>B.V.</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635620</guid>
        <pubDate>Fri, 20 Nov 2015 08:11:32 +0000</pubDate>
        <title>LVM_GETITEMTEXT в чужой процесс Win 64</title>
        <link>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635620</link>
        <description><![CDATA[TheTrik: NtWow64WriteVirtualMemory64]]></description>
        <author>TheTrik</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635519</guid>
        <pubDate>Thu, 19 Nov 2015 17:14:58 +0000</pubDate>
        <title>LVM_GETITEMTEXT в чужой процесс Win 64</title>
        <link>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635519</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406899&view=findpost&p=3635424'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SOY &#064; <time class="tag-quote__quoted-time" datetime="2015-11-19T13:59:00+00:00">19.11.15, 13:59</time></span><div class='quote '>как тогда быть</div></div><br>
Написать другим компилятором 64-битный прокси-процесс, выполняющий необходимые действия.]]></description>
        <author>B.V.</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635424</guid>
        <pubDate>Thu, 19 Nov 2015 13:59:00 +0000</pubDate>
        <title>LVM_GETITEMTEXT в чужой процесс Win 64</title>
        <link>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635424</link>
        <description><![CDATA[SOY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406899&view=findpost&p=3635282'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>B.V. &#064; <time class="tag-quote__quoted-time" datetime="2015-11-18T21:09:51+00:00">18.11.15, 21:09</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406899&view=findpost&p=3635240'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SOY &#064; <time class="tag-quote__quoted-time" datetime="2015-11-18T16:23:13+00:00">18.11.15, 16:23</time></span><div class='quote '>Item.pszText = VarPtr(CInt64(pCh))&#39;Win64</div></div><br>
Из 32-битного процесса выделяется память в 64-битном, затем указатель приводится обратно к 32-битному и передается в 64-битный процесс. Как оно вообще запустилось?</div></div><br>
<br>
как тогда быть, если в WriteProcessMemory(ProcessHandle, Item.pszText, ByVal abText(0), CB_MAXLVITEMTEXT, retv) в качестве параметра pszText, все равно придется ставить указатель, а иначе структуру Int64 функция не воспринемает]]></description>
        <author>SOY</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635282</guid>
        <pubDate>Wed, 18 Nov 2015 21:09:51 +0000</pubDate>
        <title>LVM_GETITEMTEXT в чужой процесс Win 64</title>
        <link>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635282</link>
        <description><![CDATA[B.V.: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=406899&view=findpost&p=3635240'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SOY &#064; <time class="tag-quote__quoted-time" datetime="2015-11-18T16:23:13+00:00">18.11.15, 16:23</time></span><div class='quote '>Item.pszText = VarPtr(CInt64(pCh))&#39;Win64</div></div><br>
Ужас какой.<br>
<br>
Из 32-битного процесса выделяется память в 64-битном, затем указатель приводится обратно к 32-битному и передается в 64-битный процесс. Как оно вообще запустилось?]]></description>
        <author>B.V.</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635240</guid>
        <pubDate>Wed, 18 Nov 2015 16:23:13 +0000</pubDate>
        <title>LVM_GETITEMTEXT в чужой процесс Win 64</title>
        <link>https://forum.sources.ru/index.php?showtopic=406899&amp;view=findpost&amp;p=3635240</link>
        <description><![CDATA[SOY: Помогите, что не так в коде? Пример видел на делфи, перевел.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Private Declare Function GetSystemDefaultLCID Lib &quot;kernel32.dll&quot; () As Long</div><div class="code_line">Private Declare Function GetClassNameA Lib &quot;user32&quot; (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long</div><div class="code_line">Private Declare Function FindWindow Lib &quot;user32&quot; Alias &quot;FindWindowA&quot; _</div><div class="code_line">(ByVal lpClassName As String, ByVal lpWindowName As String) As Long</div><div class="code_line">Private Declare Function FindWindowEx Lib &quot;user32&quot; Alias &quot;FindWindowExA&quot; (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long</div><div class="code_line">Private Declare Function IsWindow Lib &quot;user32&quot; (ByVal hWnd As Long) As Long</div><div class="code_line">Private Declare Function CloseHandle Lib &quot;Kernel32&quot; (ByVal hObject As Long) As Long</div><div class="code_line">&nbsp;</div><div class="code_line">Private Declare Function SendMessage Lib &quot;user32&quot; Alias &quot;SendMessageA&quot; _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(ByVal hWnd As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ByVal wMsg As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ByVal wParam As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lParam As Any) As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">Private Const LVM_FIRST = &amp;H1000</div><div class="code_line">Private Const LVM_SETIMAGELIST = (LVM_FIRST + 3)</div><div class="code_line">Private Const LVM_GETITEMCOUNT = (LVM_FIRST + 4)</div><div class="code_line">Private Const LVM_GETITEM = (LVM_FIRST + 5)</div><div class="code_line">Private Const LVM_SETITEM = (LVM_FIRST + 6)</div><div class="code_line">Private Const LVM_INSERTITEM = (LVM_FIRST + 7)</div><div class="code_line">Private Const LVM_DELETEITEM = (LVM_FIRST + 8)</div><div class="code_line">Private Const LVM_GETNEXTITEM = (LVM_FIRST + 12)</div><div class="code_line">Private Const LVM_GETITEMRECT = (LVM_FIRST + 14)</div><div class="code_line">Private Const LVM_SETITEMPOSITION = (LVM_FIRST + 15)</div><div class="code_line">Private Const LVM_GETITEMPOSITION = (LVM_FIRST + 16)</div><div class="code_line">Private Const LVM_HITTEST = (LVM_FIRST + 18)</div><div class="code_line">Private Const LVM_ENSUREVISIBLE = (LVM_FIRST + 19)</div><div class="code_line">Private Const LVM_SCROLL = (LVM_FIRST + 20)</div><div class="code_line">Private Const LVM_ARRANGE = (LVM_FIRST + 22)</div><div class="code_line">Private Const LVM_SETCOLUMNWIDTH = (LVM_FIRST + 30)</div><div class="code_line">Private Const LVM_GETVIEWRECT = (LVM_FIRST + 34)</div><div class="code_line">Private Const LVM_GETORIGIN = (LVM_FIRST + 41)</div><div class="code_line">Private Const LVM_SETITEMSTATE = (LVM_FIRST + 43)</div><div class="code_line">Private Const LVM_GETITEMTEXT = (LVM_FIRST + 45)</div><div class="code_line">Private Const LVM_SETITEMPOSITION32 = (LVM_FIRST + 49)</div><div class="code_line">Private Const LVM_GETWORKAREAS = (LVM_FIRST + 70)</div><div class="code_line">&nbsp;</div><div class="code_line">Public Declare Function loword Lib &quot;TLBINF32&quot; (ByVal dWord As Long) As Integer</div><div class="code_line">Public Declare Function hiword Lib &quot;TLBINF32&quot; (ByVal dWord As Long) As Integer</div><div class="code_line">Public Declare Sub CopyMemory Lib &quot;Kernel32&quot; Alias &quot;RtlMoveMemory&quot; (lpDst As Any, lpSrc As Any, ByVal Length As Long)</div><div class="code_line">Public Declare Sub FillMemory Lib &quot;kernel32.dll&quot; Alias &quot;RtlFillMemory&quot; (Destination As Any, ByVal Length As Long, ByVal Fill As Byte)</div><div class="code_line">&nbsp;</div><div class="code_line">Type POINTAPI</div><div class="code_line">&nbsp;&nbsp; &nbsp;X As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp;Y As Long</div><div class="code_line">End Type</div><div class="code_line">&nbsp;</div><div class="code_line">Private Enum AccessProtectionFlags</div><div class="code_line">&nbsp;&nbsp;PAGE_NOACCESS = &amp;H1</div><div class="code_line">&#39; &nbsp;PAGE_READONLY = &amp;H2</div><div class="code_line">&nbsp;&nbsp;PAGE_READWRITE = &amp;H4</div><div class="code_line">&#39; &nbsp;PAGE_WRITECOPY = &amp;H8</div><div class="code_line">&nbsp;&nbsp;PAGE_EXECUTE = &amp;H10</div><div class="code_line">&nbsp;&nbsp;PAGE_EXECUTE_READ = &amp;H20</div><div class="code_line">&nbsp;&nbsp;PAGE_EXECUTE_READWRITE = &amp;H40</div><div class="code_line">&#39; &nbsp;PAGE_EXECUTE_WRITECOPY = &amp;H80</div><div class="code_line">&nbsp;&nbsp;PAGE_GUARD = &amp;H100</div><div class="code_line">&nbsp;&nbsp;PAGE_NOCACHE = &amp;H200</div><div class="code_line">&nbsp;&nbsp;PAGE_WRITECOMBINE = &amp;H400</div><div class="code_line">End Enum</div><div class="code_line">&nbsp;</div><div class="code_line">Private Enum VirtualAllocExTypes &nbsp; &#39; commented defs are for APIs other than VirtualAllocEx</div><div class="code_line">&nbsp;&nbsp;MEM_COMMIT = &amp;H1000</div><div class="code_line">&nbsp;&nbsp;MEM_RESERVE = &amp;H2000</div><div class="code_line">&nbsp;&nbsp;MEM_DECOMMIT = &amp;H4000</div><div class="code_line">&nbsp;&nbsp;MEM_FREE = &amp;H10000</div><div class="code_line">&nbsp;&nbsp;MEM_RELEASE = &amp;H8000&amp;</div><div class="code_line">&#39; &nbsp;MEM_public = &amp;H20000</div><div class="code_line">&#39; &nbsp;MEM_MAPPED = &amp;H40000</div><div class="code_line">&nbsp;&nbsp;MEM_RESET = &amp;H80000 &nbsp; &#39; &nbsp;(Win2K oinly)</div><div class="code_line">&nbsp;&nbsp;MEM_TOP_DOWN = &amp;H100000</div><div class="code_line">&#39; &nbsp;MEM_WRITE_WATCH = &amp;H200000 &nbsp; &#39; Win98 only</div><div class="code_line">&#39; &nbsp;MEM_PHYSICAL = &amp;H400000 &nbsp; &#39; Win2K only</div><div class="code_line">&#39; &nbsp;MEM_4MB_PAGES = &amp;H80000000 &nbsp; &#39; ??</div><div class="code_line">&#39; &nbsp;SEC_IMAGE = &amp;H1000000</div><div class="code_line">&#39; &nbsp;MEM_IMAGE = SEC_IMAGE</div><div class="code_line">&#39; &nbsp;WRITE_WATCH_FLAG_RESET = &amp;H1 &nbsp; &#39; Win98 only</div><div class="code_line">End Enum</div><div class="code_line">&nbsp;</div><div class="code_line">Private Const STANDARD_RIGHTS_REQUIRED = &amp;HF0000</div><div class="code_line">Private Const CB_LVITEM As Long = 36 &nbsp; &#39; user-defined</div><div class="code_line">&nbsp;</div><div class="code_line">&#39; CodePage</div><div class="code_line">Private Const CP_ACP = 0 &nbsp; &nbsp; &nbsp; &nbsp;&#39; ANSI code page</div><div class="code_line">&nbsp;</div><div class="code_line">Private Enum ProcessAccessTypes</div><div class="code_line">&nbsp;&nbsp;PROCESS_TERMINATE = (&amp;H1)</div><div class="code_line">&nbsp;&nbsp;PROCESS_CREATE_THREAD = (&amp;H2)</div><div class="code_line">&nbsp;&nbsp;PROCESS_SET_SESSIONID = (&amp;H4)</div><div class="code_line">&nbsp;&nbsp;PROCESS_VM_OPERATION = (&amp;H8)</div><div class="code_line">&nbsp;&nbsp;PROCESS_VM_READ = (&amp;H10)</div><div class="code_line">&nbsp;&nbsp;PROCESS_VM_WRITE = (&amp;H20)</div><div class="code_line">&nbsp;&nbsp;PROCESS_DUP_HANDLE = (&amp;H40)</div><div class="code_line">&nbsp;&nbsp;PROCESS_CREATE_PROCESS = (&amp;H80)</div><div class="code_line">&nbsp;&nbsp;PROCESS_SET_QUOTA = (&amp;H100)</div><div class="code_line">&nbsp;&nbsp;PROCESS_SET_INFORMATION = (&amp;H200)</div><div class="code_line">&nbsp;&nbsp;PROCESS_QUERY_INFORMATION = (&amp;H400)</div><div class="code_line">&#39; &nbsp;STANDARD_RIGHTS_REQUIRED = &amp;HF0000</div><div class="code_line">&nbsp;&nbsp;SYNCHRONIZE = &amp;H100000</div><div class="code_line">&nbsp;&nbsp;PROCESS_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &amp;HFFF)</div><div class="code_line">End Enum</div><div class="code_line">&nbsp;</div><div class="code_line">Private Declare Function GetWindowThreadProcessId Lib &quot;user32&quot; _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(ByVal hWnd As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lpdwProcessId As Long) As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">Private Declare Function OpenProcess Lib &quot;Kernel32&quot; _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(ByVal dwDesiredAccess As ProcessAccessTypes, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal bInheritHandle As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal dwProcessId As Long) As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">Private Declare Function GetCurrentProcessId Lib &quot;Kernel32&quot; () As Long</div><div class="code_line">&nbsp;</div><div class="code_line">Private Declare Function VirtualAllocEx Lib &quot;Kernel32&quot; _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(ByVal hProcess As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal lpAddress As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal dwSize As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal flAllocationType As VirtualAllocExTypes, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal flProtect As AccessProtectionFlags) As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">Private Declare Function VirtualFreeEx Lib &quot;Kernel32&quot; _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(ByVal hProcess As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal lpAddress As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal dwSize As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal dwFreeType As Long) As Long</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">Private Declare Function ReadProcessMemory Lib &quot;Kernel32&quot; _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(ByVal hProcess As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal lpBaseAddress As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lpBuffer As Any, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal nSize As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lpNumberOfBytesRead As Long) As Long</div><div class="code_line">&nbsp;</div><div class="code_line">Private Declare Function WriteProcessMemory Lib &quot;Kernel32&quot; _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(ByVal hProcess As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal lpBaseAddress As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lpBuffer As Any, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal nSize As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lpNumberOfBytesWritten As Long) As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">Private Declare Function lstrlenA Lib &quot;Kernel32&quot; (ByRef lpstring As Long) As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">Private Declare Function MultiByteToWideChar Lib &quot;Kernel32&quot; _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (ByVal CodePage As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal dwFlags As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lpMultiByteStr As Any, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal cchMultiByte As Long, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;lpWideCharStr As Any, _</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByVal cchWideChar As Long) As Long</div><div class="code_line">Private Const SIZEOF_INT64 As Long = 8</div><div class="code_line">&nbsp;</div><div class="code_line">Private Type INT64</div><div class="code_line">&nbsp;&nbsp; LoPart As Long</div><div class="code_line">&nbsp;&nbsp; HiPart As Long</div><div class="code_line">End Type</div><div class="code_line">&nbsp;</div><div class="code_line">Private Type lvItem64 &nbsp; &#39; was LV_ITEM</div><div class="code_line">&nbsp;&nbsp;mask As Long</div><div class="code_line">&nbsp;&nbsp;iItem As Long</div><div class="code_line">&nbsp;&nbsp;iSubItem As Long</div><div class="code_line">&nbsp;&nbsp;state As Long</div><div class="code_line">&nbsp;&nbsp;stateMask As Long</div><div class="code_line">&nbsp;&nbsp;pszText As Long &#39;INT64 &nbsp;&#39; if String, must be pre-allocated</div><div class="code_line">&nbsp;&nbsp;cchTextMax As Long</div><div class="code_line">&nbsp;&nbsp;iImage As Long</div><div class="code_line">&nbsp;&nbsp;lParam64 As Long</div><div class="code_line">&#39;#If (WIN32_IE &#62;= &amp;H300) Then</div><div class="code_line">&nbsp;&nbsp;iIndent As Long</div><div class="code_line">&#39;#End If</div><div class="code_line">&nbsp;&nbsp;iGroup &nbsp; As Long</div><div class="code_line">&nbsp;&nbsp;cColumns As Long</div><div class="code_line">&nbsp;&nbsp;puColumns As INT64</div><div class="code_line">&nbsp;&nbsp;alignment2 As Long</div><div class="code_line">&nbsp;&nbsp;piColFmt As INT64</div><div class="code_line">&nbsp;&nbsp;alignment3 As Long</div><div class="code_line">End Type</div><div class="code_line">&nbsp;</div><div class="code_line">Public LVhWnd As Long</div><div class="code_line">Dim LangNonUnicodeName_ As String</div><div class="code_line">&nbsp;</div><div class="code_line">Public Function Find_LV_TskMngr() As Long</div><div class="code_line">Dim ret As Long, sClassText As String * 100, tWnd As Long</div><div class="code_line">Dim hHandle As Long</div><div class="code_line">If GetLangNameByCultureCode = &quot;RU&quot; Then</div><div class="code_line">&nbsp;&nbsp;hHandle = FindWindow(&quot;#32770&quot;, &quot;Диспетчер задач Windows&quot;)</div><div class="code_line">ElseIf GetLangNameByCultureCode = &quot;EN&quot; Then</div><div class="code_line">&nbsp;&nbsp;hHandle = FindWindow(&quot;#32770&quot;, &quot;Windows Task Manager&quot;)</div><div class="code_line">End If</div><div class="code_line">If hHandle &#60;&#62; 0 Then</div><div class="code_line">tWnd = FindWindowEx(hHandle, 0, &quot;#32770&quot;, vbNullString) &#39;menu</div><div class="code_line">LVhWnd = FindWindowEx(tWnd, 0, &quot;SysListView32&quot;, vbNullString)</div><div class="code_line">ret = GetClassNameA(LVhWnd, sClassText, 100)</div><div class="code_line">If Left(sClassText, ret) = &quot;SysListView32&quot; Then Find_LV_TskMngr = LVhWnd</div><div class="code_line">End If</div><div class="code_line">End Function</div><div class="code_line">Function GetLangNameByCultureCode() As String</div><div class="code_line">&nbsp;&nbsp; &nbsp;Dim Lang$, CultureCode As Long</div><div class="code_line">&nbsp;&nbsp; &nbsp;CultureCode = GetSystemDefaultLCID Mod &amp;H10000</div><div class="code_line">&nbsp;&nbsp; &nbsp;Select Case CultureCode</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Case &amp;H419&amp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;Lang = &quot;ru-RU&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Lang = &quot;RU&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Case &amp;H409&amp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;Lang = &quot;en-US&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Lang = &quot;EN&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Case Else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Lang = &quot;unknown&quot;</div><div class="code_line">&nbsp;&nbsp; &nbsp;End Select</div><div class="code_line">&nbsp;&nbsp; &nbsp;GetLangNameByCultureCode = Lang</div><div class="code_line">End Function</div><div class="code_line">&nbsp;</div><div class="code_line">Private Function ListView_GetItemCount(hWnd As Long) As Long</div><div class="code_line">On Local Error Resume Next</div><div class="code_line">&nbsp;&nbsp; &nbsp;ListView_GetItemCount = SendMessage(hWnd, LVM_GETITEMCOUNT, ByVal 0&amp;, ByVal 0&amp;)</div><div class="code_line">End Function</div><div class="code_line">&nbsp;</div><div class="code_line">Public Function GetLVItemTextEx64(hwndLV As Long) As Boolean</div><div class="code_line">Dim i As Long, ItemCount As Long, PID As Long, ProcessHandle As Long, Dummy As Long, Item As lvItem64, hProcess As Long, sL As String, retv</div><div class="code_line">Dim lpMem As Long, pCh As Long, abText(CB_MAXLVITEMTEXT) As Byte, pItem As INT64</div><div class="code_line">&nbsp;&nbsp;GetLVItemTextEx64 = False</div><div class="code_line">&nbsp;&nbsp;hProcess = hwndLV</div><div class="code_line">&nbsp;&nbsp;If hProcess = 0 Then Exit Function</div><div class="code_line">&nbsp;&nbsp;If GetWindowThreadProcessId(hProcess, PID) = 0 Then Exit Function</div><div class="code_line">&nbsp;&nbsp;ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, PID)</div><div class="code_line">&nbsp;&nbsp;If ProcessHandle = 0 Then Exit Function</div><div class="code_line">&nbsp;&nbsp;pCh = VirtualAllocEx(ProcessHandle, 0, CB_MAXLVITEMTEXT, MEM_COMMIT, PAGE_EXECUTE_READWRITE)</div><div class="code_line">&nbsp;&nbsp;lpMem = VirtualAllocEx(ProcessHandle, 0, Len(Item), MEM_RESERVE Or MEM_COMMIT, PAGE_EXECUTE_READWRITE)</div><div class="code_line">&nbsp;&nbsp;If lpMem Then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ItemCount = ListView_GetItemCount(hwndLV)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;For i = 0 To ItemCount - 1</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Item.mask = LVIF_TEXT</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Item.iItem = i</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Item.iSubItem = 0</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Item.pszText = VarPtr(CInt64(pCh))&#39;Win64</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Item.cchTextMax = CB_MAXLVITEMTEXT</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WriteProcessMemory ProcessHandle, lpMem, Item, LenB(Item), Dummy</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Call WriteProcessMemory(ProcessHandle, Item.pszText, ByVal abText(0), CB_MAXLVITEMTEXT, retv)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;retv = SendMessage(hwndLV, LVM_GETITEMTEXT, i, ByVal lpMem)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;If ReadProcessMemory(ProcessHandle, Item.pszText, ByVal VarPtr(abText(0)), CB_MAXLVITEMTEXT, Dummy) &#62; 0 Then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sL = GetStrFromPtrA(VarPtr(abText(0)))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Debug.Print sL&#39; тут лезут одинаковые крякозябры</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;End If</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Next</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;VirtualFreeEx ProcessHandle, pCh, 0, MEM_RELEASE</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;VirtualFreeEx ProcessHandle, lpMem, 0, MEM_RELEASE</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CloseHandle ProcessHandle</div><div class="code_line">&nbsp;&nbsp;End If</div><div class="code_line">End Function</div><div class="code_line">&nbsp;</div><div class="code_line">Private Function GetStrFromPtrA(lpszA As Long) As String</div><div class="code_line">On Local Error Resume Next</div><div class="code_line">&nbsp;&nbsp;Dim nChars As Long</div><div class="code_line">&nbsp;&nbsp;nChars = lstrlenA(ByVal lpszA)</div><div class="code_line">&nbsp;&nbsp;If nChars Then</div><div class="code_line">&nbsp;&nbsp; &nbsp;GetStrFromPtrA = Space$(nChars)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Call MultiByteToWideChar(CP_ACP, 0, ByVal lpszA, nChars, ByVal StrPtr(GetStrFromPtrA), nChars)</div><div class="code_line">&nbsp;&nbsp;End If</div><div class="code_line">End Function</div><div class="code_line">&nbsp;</div><div class="code_line">Private Function CInt64(ByVal vCur As Currency) As INT64</div><div class="code_line">vCur = (CCur(vCur) * 0.0001@)</div><div class="code_line">Call CopyMemory(CInt64, vCur, SIZEOF_INT64)</div><div class="code_line">End Function</div></ol></div></div></div></div>]]></description>
        <author>SOY</author>
        <category>Visual Basic: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	