<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Приостановить процесс - с возможностью его возобновления]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=6347&amp;type=atom" />
	<updated>2011-10-24T16:50:21Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=6347</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52864#p52864" />
			<content type="html"><![CDATA[<p>Спасибо большое за помощь.</p>]]></content>
			<author>
				<name><![CDATA[predator]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25217</uri>
			</author>
			<updated>2011-10-24T16:50:21Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52864#p52864</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52851#p52851" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>predator пишет:</cite><blockquote><p>Увы, у меня не запустился скрипт: указывает на ошибку в строке&nbsp; 142.</p></blockquote></div><p>Либо используйте <a href="http://www.autohotkey.net/~Lexikos/AutoHotkey_L/">AutoHotkey_L</a>, либо напишите свою функцию StrGet, которая конвертирует null-terminate строку в формат ahk.<br /></p><div class="quotebox"><cite>predator пишет:</cite><blockquote><p>Оболочка программы не нужна.</p></blockquote></div><p>Ну дык убери её //_-.<br /></p><div class="quotebox"><cite>predator пишет:</cite><blockquote><p>1. Запустить конкретную программу (aaa.exe).<br />2. Получить&nbsp; ее ID.</p></blockquote></div><p>Пример использования функции Run был ранее в этой теме.<br /></p><div class="quotebox"><cite>predator пишет:</cite><blockquote><p>3. Приостановить/поставить на паузу процесс.</p></blockquote></div><p>См. функцию Stop.<br /></p><div class="quotebox"><cite>predator пишет:</cite><blockquote><p>4. Возобновить.</p></blockquote></div><p>См. функцию Start. Только вместо<br /></p><div class="codebox"><pre><code>ret := ResumeThread(hThread)</code></pre></div><p>нужно составить цикл, выполняющийся пока ret&gt;1.</p>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2011-10-24T07:57:58Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52851#p52851</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52849#p52849" />
			<content type="html"><![CDATA[<p>Увы, у меня не запустился скрипт: указывает на ошибку в строке&nbsp; 142.</p><p><a href="http://s1.ipicture.ru/Gallery/Viewfull/6488106.html"><span class="postimg"><img src="http://s1.ipicture.ru/uploads/20111024/1ZOmrkDL.png" alt="http://s1.ipicture.ru/uploads/20111024/1ZOmrkDL.png" /></span></a></p><p>Оболочка программы не нужна.<br />Необходимо с помощью скрипта:<br />1. Запустить конкретную программу (aaa.exe).<br />2. Получить&nbsp; ее ID.<br />3. Приостановить/поставить на паузу процесс.<br />4. Возобновить.</p>]]></content>
			<author>
				<name><![CDATA[predator]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25217</uri>
			</author>
			<updated>2011-10-24T04:09:08Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52849#p52849</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52842#p52842" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>predator пишет:</cite><blockquote><p>Мне не понятно как поставить программу на паузу (вернее будет - приостановить/запустить потоки).</p></blockquote></div><p>Пример программы на AHK:<br /></p><div class="codebox"><pre><code>Unicode          := A_IsUnicode ? &quot;W&quot; : &quot;&quot;

TH32CS_SNAPPROCESS := 0x00000002
TH32CS_SNAPTHREAD  := 0x00000004 
CreateToolhelp32Snapshot(Flags, th32ProcessID)
{
   return DllCall(&quot;CreateToolhelp32Snapshot&quot;, &quot;int&quot;, Flags, &quot;int&quot;, th32ProcessID)
}
 
Process32First(hSnapshot, pe)
{
   global Unicode
   return DllCall(&quot;Process32First&quot; . Unicode, &quot;int&quot;, hSnapshot, &quot;int&quot;, pe)
}
 
Process32Next(hSnapshot, pe)
{
   global Unicode
   return DllCall(&quot;Process32Next&quot; . Unicode, &quot;int&quot;, hSnapshot, &quot;int&quot;, pe)
}
 
Thread32First(hSnapshot, te)
{
   return DllCall(&quot;Thread32First&quot;, &quot;int&quot;, hSnapshot, &quot;int&quot;, te)
}
 
Thread32Next(hSnapshot, te)
{
   return DllCall(&quot;Thread32Next&quot;, &quot;int&quot;, hSnapshot, &quot;int&quot;, te)
}
 
THREAD_SUSPEND_RESUME := 0x0002
OpenThread(DesiredAccess, InheritHandle, ThreadId)
{
   return DllCall(&quot;OpenThread&quot; , &quot;int&quot;, DesiredAccess, &quot;int&quot;, InheritHandle, &quot;int&quot;, ThreadId)
}
 
SuspendThread(hThread)
{
   return DllCall(&quot;SuspendThread&quot;, &quot;int&quot;, hThread)
}
 
ResumeThread(hThread)
{
   return DllCall(&quot;ResumeThread&quot;, &quot;int&quot;, hThread)
}
 
CloseHandle(Handle)
{
   return DllCall(&quot;CloseHandle&quot;, &quot;int&quot;, Handle)
}
 
Gui Add, Button, x10 y5 w75 gL_Update, Обновить
Gui Add, Button, x100 y5 w75 gL_Stop, Stop
Gui Add, Button, x200 y5 w75 gL_Start, Start
Gui Add, ListView, x10 y35 r20 w450 -Multi, PID|имя процесса|статус
LV_ModifyCol(1, 50)
LV_ModifyCol(2, 300)
LV_ModifyCol(3, 50)
Update()
Gui Show
return
 
L_Update:
   Update()
return
 
L_Stop:
   Stop()
return
 
L_Start:
   Start()
return
 
Start()
{
   global TH32CS_SNAPTHREAD, THREAD_SUSPEND_RESUME
   row := LV_GetNext(0, &quot;Focused&quot;)
   LV_GetText(id, row)
   hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, id)
   VarSetCapacity(te, 28)
   NumPut(28, te, 0)
   str := &quot;&quot;
   test := Thread32First(hSnapshot, &amp;te)
   while test
   {
      if (id=NumGet(te, 12))
      {
         hThread := OpenThread(THREAD_SUSPEND_RESUME, 0, NumGet(te, 8))
         if (hThread=0)
         {
            LV_Modify(row, &quot;Col3&quot; , &quot;-1 (&quot; . a_lasterror . &quot;)&quot;)
            CloseHandle(hSnapshot)
            return
         }
         ret := ResumeThread(hThread)
         CloseHandle(hThread)
      }
      test := Thread32Next(hSnapshot, &amp;te)
   }
   CloseHandle(hSnapshot)
   LV_Modify(row, &quot;Col3&quot; , ret=0 ? 0 : ret-1)
}
 
Stop()
{
   global TH32CS_SNAPTHREAD, THREAD_SUSPEND_RESUME
   row := LV_GetNext(0, &quot;Focused&quot;)
   LV_GetText(id, row)
   hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, id)
   VarSetCapacity(te, 28)
   NumPut(28, te, 0)
   test := Thread32First(hSnapshot, &amp;te)
   while test
   {
      if (id=NumGet(te, 12))
      {
         hThread := OpenThread(THREAD_SUSPEND_RESUME, 0, NumGet(te, 8))
         if (hThread=0)
         {
            LV_Modify(row, &quot;Col3&quot; , &quot;-1 (&quot; . a_lasterror . &quot;)&quot;)
            CloseHandle(hSnapshot)
               return
         }
         ret := SuspendThread(hThread)
         CloseHandle(hThread)
      }
      test := Thread32Next(hSnapshot, &amp;te)
   }
   CloseHandle(hSnapshot)
   LV_Modify(row, &quot;Col3&quot; , ret+1)
}
 
Update()
{
   global TH32CS_SNAPPROCESS
   LV_Delete()
   hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
   pesize := A_IsUnicode ? 556 : 296
   VarSetCapacity(pe, pesize)
   NumPut(pesize, pe, 0)
   test := Process32First(hSnapshot, &amp;pe)
   while test
   {
      LV_Add(&quot;&quot;, NumGet(pe,8), StrGet(&amp;pe+36),&quot;?&quot;)
      test := Process32Next(hSnapshot, &amp;pe)
   }
   CloseHandle(hSnapshot)
}
 
GuiClose:
   ExitApp
return</code></pre></div><p>В первом столбце PID процесса, во втором имя модуля и в третьем счётчик остановок. Если счётчик равен нулю, то процесс запущен, в противном случае он приостановлен. Изначально третий столбец не заполнен, т.к. я не знаю как получить значение счётчика не запуская/останавливая потоки. Если значение в третьем столбце равно -1, значит не удалось получить доступ к процессу, в скобках будет указан код ошибки(обычно 5, из-за нехватки прав). Остановка своего процесса не предусмотрена, хотя в принципе возможна.<br />В самой программе функция Update обновляет список процессов, Start уменьшает значение счётчика остановок на единицу, а Stop увеличивает его(счётчик всегда больше или равен нулю).</p>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2011-10-23T20:43:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52842#p52842</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52835#p52835" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>F1:: run notepad.exe,,,OutputVarPID
F2:: run pausep.exe %OutputVarPID% ,,hide
F3:: run pausep.exe %OutputVarPID% /r ,,hide</code></pre></div><p>Количество нажатий f2 д.б. равно количеству нажатий f3.</p>]]></content>
			<author>
				<name><![CDATA[mih]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24883</uri>
			</author>
			<updated>2011-10-23T17:49:05Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52835#p52835</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52830#p52830" />
			<content type="html"><![CDATA[<p>Мне не понятно как поставить программу на паузу (вернее будет - приостановить/запустить потоки).</p><div class="codebox"><pre><code>F1::Run, uTorrent.exe, C:\Program Files (x86)\uTorrent,, uTorrentID ; запуск программы
F2::Process, Close, %uTorrentID% ; закроет программу, а мне надо приостановить...</code></pre></div>]]></content>
			<author>
				<name><![CDATA[predator]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25217</uri>
			</author>
			<updated>2011-10-23T16:05:08Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52830#p52830</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52823#p52823" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>predator пишет:</cite><blockquote><p>Но, меня интересовала возможность сделать это посредством AHK.</p></blockquote></div><p>Что именно не ясно- как получить список потоков или как останавливать/запускать потоки?</p>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2011-10-23T11:54:21Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52823#p52823</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52811#p52811" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>mih пишет:</cite><blockquote><p><a href="http://www.codeproject.com/KB/threads/pausep.aspx">pausep.exe</a> — на WinXP работает.</p></blockquote></div><p>Во многих программах реализована эта функция.<br />Но, меня интересовала возможность сделать это посредством AHK.</p>]]></content>
			<author>
				<name><![CDATA[predator]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25217</uri>
			</author>
			<updated>2011-10-23T04:36:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52811#p52811</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52785#p52785" />
			<content type="html"><![CDATA[<p><a href="http://www.codeproject.com/KB/threads/pausep.aspx">pausep.exe</a> — на WinXP работает.</p>]]></content>
			<author>
				<name><![CDATA[mih]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24883</uri>
			</author>
			<updated>2011-10-21T17:51:45Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52785#p52785</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52783#p52783" />
			<content type="html"><![CDATA[<p>Остановить все потоки процесса <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> .</p>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2011-10-21T17:28:43Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52783#p52783</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52780#p52780" />
			<content type="html"><![CDATA[<p>Думаю, можно. А какой процесс интересует?</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2011-10-21T16:16:31Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52780#p52780</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52763#p52763" />
			<content type="html"><![CDATA[<p><span style="color: green"><strong>predator</strong>, читаем первую тему на странице, редактируем заголовок.</span></p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2011-10-21T07:24:41Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52763#p52763</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Приостановить процесс - с возможностью его возобновления]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=52761#p52761" />
			<content type="html"><![CDATA[<p>Возникла необходимость автоматизировать следующие действие.<br />Windows 7: есть приложение &quot;Монитор ресурсов&quot;, где можно выбрать запущенный процесс и приостановить его выполнение.<br />В последующем, можно продолжить выполнение процесса.<br />Возможно ли выполнить данную команду с помощью скрипта?</p>]]></content>
			<author>
				<name><![CDATA[predator]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25217</uri>
			</author>
			<updated>2011-10-21T07:05:16Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=52761#p52761</id>
		</entry>
</feed>
