<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Определить процесс выделенного файла и закрыть его]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=9335</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9335&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Определить процесс выделенного файла и закрыть его».]]></description>
		<lastBuildDate>Thu, 06 Apr 2017 11:29:43 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=114665#p114665</link>
			<description><![CDATA[<p><strong>becauseim</strong><br />Вы же по ссылке <a href="http://forum.script-coding.com/viewtopic.php?pid=114624#p114624">отсюда</a> пришли. Так и чем не вариант?</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Thu, 06 Apr 2017 11:29:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=114665#p114665</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=114657#p114657</link>
			<description><![CDATA[<p><strong>Flasher</strong>, тогда не понял, который из предложенных вариантов использовать отдельно для проводника, т.к. перепробовал вроде бы все, но заметил результат работы только тех примеров, которые ориентированы на рабочий стол.</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Thu, 06 Apr 2017 08:46:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=114657#p114657</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=114645#p114645</link>
			<description><![CDATA[<p><strong>becauseim</strong><br />Я бы не тащил в функцию, т.к. проводниковый SelectedItems из неё не лезет, в ином случае будет лишний цикл с переменной как в первых примерах.<br />По приложению: если оно поддерживает списки, то почему нет? Пути же возвращаются.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Wed, 05 Apr 2017 23:05:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=114645#p114645</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=114635#p114635</link>
			<description><![CDATA[<p>Какую функцию наряду с <em>GetDesktopIShellFolderViewDual()</em> использовать для работы с проводником?<br />Может ли данная функция использоваться, например, для импорта выделенных файлов в определенное приложение?</p>]]></description>
			<author><![CDATA[null@example.com (becauseim)]]></author>
			<pubDate>Wed, 05 Apr 2017 19:45:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=114635#p114635</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83600#p83600</link>
			<description><![CDATA[<p>Ну, &quot;писал&quot; — это громко сказано. Так, скорректировал просто.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 02 Jun 2014 15:07:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83600#p83600</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83599#p83599</link>
			<description><![CDATA[<p>Ну, в том смысле, что интересно стало, вот и спросил.<br /></p><div class="quotebox"><blockquote><p>Универсальностью, наверное.</p></blockquote></div><p>В смысле, &quot;наверное&quot;? Код-то ты писал или нет? <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Mon, 02 Jun 2014 15:01:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83599#p83599</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83598#p83598</link>
			<description><![CDATA[<p>В смысле? Универсальностью, наверное. Получаем IShellFolderViewDual для рабочего стола, можем использовать и другие его методы.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 02 Jun 2014 14:49:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83598#p83598</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83597#p83597</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Наверное, лучше так:</p></blockquote></div><p>А чем лучше?</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Mon, 02 Jun 2014 14:46:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83597#p83597</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83596#p83596</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>И возможно ли получать его для других окон проводника?</p></blockquote></div><p>А зачем для других окон? В других работает Shell.Application.<br /></p><div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Вот так, например.</p></blockquote></div><p>Наверное, лучше так:<br /></p><div class="codebox"><pre><code>IShellFolderViewDual := GetDesktopIShellFolderViewDual()
Return
    
F11::
    for item in IShellFolderViewDual.SelectedItems
        MsgBox, % item.Path
Return
    

GetDesktopIShellFolderViewDual()
{
    IShellWindows := ComObjCreate(&quot;{9BA05972-F6A8-11CF-A442-00A0C90A8F39}&quot;)
    desktop := IShellWindows.Item(ComObj(19, 8)) ; VT_UI4, SCW_DESKTOP                
   
    ; Retrieve top-level browser object.
    if ptlb := ComObjQuery(desktop
        , &quot;{4C96BE40-915C-11CF-99D3-00AA004AE837}&quot;  ; SID_STopLevelBrowser
        , &quot;{000214E2-0000-0000-C000-000000000046}&quot;) ; IID_IShellBrowser
    {
        ; IShellBrowser.QueryActiveShellView -&gt; IShellView
        if DllCall(NumGet(NumGet(ptlb+0)+15*A_PtrSize), &quot;ptr&quot;, ptlb, &quot;ptr*&quot;, psv) = 0
        {
            ; Define IID_IDispatch.
            VarSetCapacity(IID_IDispatch, 16)
            NumPut(0x46000000000000C0, NumPut(0x20400, IID_IDispatch, &quot;int64&quot;), &quot;int64&quot;)
           
            ; IShellView.GetItemObject -&gt; IDispatch (object which implements IShellFolderViewDual)
            DllCall(NumGet(NumGet(psv+0)+15*A_PtrSize), &quot;ptr&quot;, psv
                , &quot;uint&quot;, 0, &quot;ptr&quot;, &amp;IID_IDispatch, &quot;ptr*&quot;, pdisp)
           
            IShellFolderViewDual := ComObjEnwrap(pdisp)
            ObjRelease(psv)
        }
        ObjRelease(ptlb)
    }
    return IShellFolderViewDual
}</code></pre></div><p>Пробовал получить IShellBrowser для XP через WM_GETISHELLBROWSER, указатель возвращает, но выяснилось, что он в адресном пространстве проводника, так что для нас бесполезен.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 02 Jun 2014 14:27:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83596#p83596</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83589#p83589</link>
			<description><![CDATA[<p>Собственно, там проблема выше, где получается объект desktop. Константа SCW_DESKTOP введена только в Висте. Поэтому в XP получить таким образом desktop не удаётся.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Mon, 02 Jun 2014 06:51:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83589#p83589</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83588#p83588</link>
			<description><![CDATA[<p>А почему так, ведь:</p><div class="quotebox"><cite>IShellFolderViewDual&nbsp; пишет:</cite><blockquote><p> Minimum supported client	Windows XP desktop apps only</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 02 Jun 2014 06:37:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83588#p83588</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83587#p83587</link>
			<description><![CDATA[<p>Кстати, на XP SP3 вот это не работает:<br /></p><div class="codebox"><pre><code>
if ptlb := ComObjQuery(desktop
        , &quot;{4C96BE40-915C-11CF-99D3-00AA004AE837}&quot;  ; SID_STopLevelBrowser
        , &quot;{000214E2-0000-0000-C000-000000000046}&quot;) ; IID_IShellBrowser
</code></pre></div><p>No valid COM object.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Mon, 02 Jun 2014 06:31:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83587#p83587</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83586#p83586</link>
			<description><![CDATA[<p>Нет, это <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd894076(v=vs.85).aspx">IShellFolderViewDual</a>, насколько понимаю. Про другие окна не знаю пока.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Mon, 02 Jun 2014 05:48:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83586#p83586</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83583#p83583</link>
			<description><![CDATA[<p><strong>YMP</strong>, круто!<br />А тут </p><div class="codebox"><pre><code>ComObjEnwrap(pdisp)</code></pre></div><p> мы получаем объект <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb775541(v=vs.85).aspx">IFolderView2</a> принадлежащий рабочему столу, и можем использовать все методы по ссылке? И возможно ли получать его для других окон проводника?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Mon, 02 Jun 2014 05:19:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83583#p83583</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Определить процесс выделенного файла и закрыть его]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=83582#p83582</link>
			<description><![CDATA[<p>Да, это работает. Вот так, например.<br /></p><div class="codebox"><pre><code>
F11::
    SelectedItems := DesktopGetSelectedItems()
    Loop, % SelectedItems.Count
        MsgBox, % SelectedItems.Item(A_Index - 1).Name
Return
    

DesktopGetSelectedItems()
{
    shellWindows := ComObjCreate(&quot;{9BA05972-F6A8-11CF-A442-00A0C90A8F39}&quot;)
    
    desktop := shellWindows.Item(ComObj(19, 8)) ; VT_UI4, SCW_DESKTOP                
   
    ; Retrieve top-level browser object.
    if ptlb := ComObjQuery(desktop
        , &quot;{4C96BE40-915C-11CF-99D3-00AA004AE837}&quot;  ; SID_STopLevelBrowser
        , &quot;{000214E2-0000-0000-C000-000000000046}&quot;) ; IID_IShellBrowser
    {
        ; IShellBrowser.QueryActiveShellView -&gt; IShellView
        if DllCall(NumGet(NumGet(ptlb+0)+15*A_PtrSize), &quot;ptr&quot;, ptlb, &quot;ptr*&quot;, psv:=0) = 0
        {
            ; Define IID_IDispatch.
            VarSetCapacity(IID_IDispatch, 16)
            NumPut(0x46000000000000C0, NumPut(0x20400, IID_IDispatch, &quot;int64&quot;), &quot;int64&quot;)
           
            ; IShellView.GetItemObject -&gt; IDispatch (object which implements IShellFolderViewDual)
            DllCall(NumGet(NumGet(psv+0)+15*A_PtrSize), &quot;ptr&quot;, psv
                , &quot;uint&quot;, 0, &quot;ptr&quot;, &amp;IID_IDispatch, &quot;ptr*&quot;, pdisp:=0)
           
            Items := ComObjEnwrap(pdisp).SelectedItems()
            ObjRelease(psv)
        }
        ObjRelease(ptlb)
    }
    return Items
}
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Mon, 02 Jun 2014 04:58:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=83582#p83582</guid>
		</item>
	</channel>
</rss>
