<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; Warface: Переименовка окон UPDATE 26.08.17]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=12945&amp;type=atom" />
	<updated>2017-08-27T00:55:40Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=12945</id>
		<entry>
			<title type="html"><![CDATA[Re: Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118827#p118827" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong><br />Еще раз больше спасибо за помощь <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Все работает как часы <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[carenov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38734</uri>
			</author>
			<updated>2017-08-27T00:55:40Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118827#p118827</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118825#p118825" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>F11::
	Win := {}, Win.Free := {}, Win.Count := 0
	WinGet, List, List, ahk_exe %exe%
	Loop %List%
	{ 
		hwnd := List%A_Index%
		WinSetTitle, ahk_id %hwnd%, , Warface
    }
	Return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-08-26T19:36:35Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118825#p118825</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118824#p118824" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong><br />UPDATE.</p><p>Не знаю в чем была проблема, но работает, и на отлично, следующий код:</p><div class="codebox"><pre><code>exe = game.exe  ;	можно полный путь

Win := {}, Win.Free := {}, Win.Count := 0

F10::
	WinGet, List, List, ahk_exe %exe%
    Loop %List%
	{ 
		hwnd := List%A_Index%
		If !DllCall(&quot;IsWindowVisible&quot;, &quot;Ptr&quot;, hwnd) || Win.Haskey(hwnd)
			Continue
		Min := Win.Free.MinIndex()
		i := (Min ? Min : Win.Count + 1)
		WinSetTitle, ahk_id %hwnd%, , WF%i%
		(Min &amp;&amp; Win.Free.Delete(Min))
		Win[hwnd] := i, Win.Count++
	}
	  Return

F11::
	WinGet, List, List, ahk_exe %exe%
	Loop %List%
	{ 
		hwnd := List%A_Index%
		WinSetTitle, ahk_id %hwnd%, , Warface
    }
	Return</code></pre></div><p>Огромное Вам спасибо за помощь, остался один маленький вопросик.<br />Как вы видите, в коде добавил возврат окон в стандартные, изначальные названия, на клавишу &quot;Ф11&quot;.<br />Оно работает отлично, но только один раз.<br />Грубо говоря, запускаю скрипт, жму ф10, окна переименовывались как нужно, далее жму ф11, окна вернулись в первоначальное состояние.<br />Но при повторном нажатии ф10 и ф11, ни один из скриптов не работает, помогает только перезапуск AHK. В чем может быть проблема?</p>]]></content>
			<author>
				<name><![CDATA[carenov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38734</uri>
			</author>
			<updated>2017-08-26T18:30:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118824#p118824</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118820#p118820" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong><br />Нарыл то что мне нужно на С++.<br />Проверил, полностью работает и окна переименовываются как надо<br />Вот основная, нужная мне, часть кода:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>...
 
var
  Form8: TForm8;
  n: Integer;
 
...
 
function EnumWindowsProc(wHandle: HWND; Param: Pointer): BOOL; stdcall;
var
  Title, ClassName: array[0..255] of char;
begin
  GetWindowText(wHandle, Title, 255);
  GetClassName(wHandle, ClassName, 255);
  if IsWindowVisible(wHandle) and (Title = &#039;НазваниеОкна&#039;)
  then begin
       Inc(n);
       SetWindowText(wHandle, Format(&#039;Префикс %d&#039;, [n]));
       end;
  Result := True;
end;
 
procedure TForm8.Timer1Timer(Sender: TObject);
begin
  n := 0;
  EnumWindows(@EnumWindowsProc, 0);
end;
 
...</code></pre></div></div></div><p>В С++ вообще не шарю, понимаю, что языки разные, но может вы поймете что есть в этом коде, чего нет в Вашем на АХК и сможете добавить?<br />Буду очень признателен&nbsp; <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[carenov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38734</uri>
			</author>
			<updated>2017-08-26T17:15:44Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118820#p118820</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118817#p118817" />
			<content type="html"><![CDATA[<p>Очень плохое решение, я в этом участия принимать не буду. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Надо просто выяснить признаки по каким нужные окна отличаются от ненужных.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-08-26T16:41:10Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118817#p118817</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118816#p118816" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong><br />Также всё выходит.<br />Я придумал выход, только не знаю как реализовать.<br />В переименовке нужно чтобы сами числа отнимались по одному.<br />Т.е., WF1, далее WF(формула (переименованное 3)-1=2, итог WF2), WF3, далее (формула (переименованное 5)-1=4, итог WF4), и так далее<br />По сути, каждое нечетное число остается, а от каждого четного отнимается один и результат записывается в &quot;WF(номер)&quot;.</p>]]></content>
			<author>
				<name><![CDATA[carenov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38734</uri>
			</author>
			<updated>2017-08-26T16:09:28Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118816#p118816</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118803#p118803" />
			<content type="html"><![CDATA[<p>Может те окна не скрыты а свернуты, пробуйте добавить заголовок окон. А вообще гаданиями не охота заниматся, тут дело за вами.<br /></p><div class="codebox"><pre><code>WinGet, List, List, Одинаковый заголовок ahk_exe %exe% </code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-08-26T08:57:00Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118803#p118803</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118794#p118794" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong><br />Проверил новый код - тоже самое.<br />Заметил одну интересную вещь, Вы правы, если оставить строку с WinMove, окна идут по порядку и появляются в столбике и все скрытые окна (которые закрываются при закрытии их основного окна)<br />Если же строку с WinMove убрать скрытых не видно.<br />Но факт в том, что так, что так, все осталось как и было, переименовка основных окон идет не по порядку.</p><p>Благодарю за Вашу активную помощь, но пока ничего не выходит <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[carenov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38734</uri>
			</author>
			<updated>2017-08-26T00:02:30Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118794#p118794</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118793#p118793" />
			<content type="html"><![CDATA[<p>Значит у процесса есть ещё одно окно, если оно скрытое, то я код поправил, должно работать.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-08-25T23:14:49Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118793#p118793</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118790#p118790" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong><br />Ваш скрипт полностью рабочий.<br />Фишка в том, что окна игры УЖЕ запущены.<br />Я понимаю, можно убрать запуск с скрипта, но дело не в этом. <br />Если окна уже запущены, и запустить скрипт, они все равно каким-то магическим образом начинают переименовываться через один. (1,3,5,7,9 итд)<br />ПРИЧЕМ! В блокноте всё работает как надо, по порядку и так и так. А в игре и нескольких еще прогах (для теста чисто проверил) через один.<br />Даже и не знаю что делать уже...) прошу помощи</p>]]></content>
			<author>
				<name><![CDATA[carenov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38734</uri>
			</author>
			<updated>2017-08-25T22:56:26Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118790#p118790</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118784#p118784" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>carenov пишет:</cite><blockquote><p>по второй горячей клавише, сделать поиск и восстановить имя 8ому окну</p></blockquote></div><p>Со второй клавишей не пошло, потому всё на одной.<br /></p><div class="codebox"><pre><code>
exe = notepad.exe  ;	можно полный путь

Win := {}, Win.Free := {}, Win.Count := 0

Loop 10
	Run notepad
Sleep 333
WinGet, List, List, ahk_exe %exe% 
Loop %List%
	WinMove, % &quot;ahk_id&quot; List%A_Index%, , 1500, % A_Index * 40, 300, 30
Return

1:: 
	For k, v in Win 
		(k + 0 &amp;&amp; !WinExist(&quot;ahk_id&quot; k) 
		&amp;&amp; (Win.Free[Win.Delete(k)] := 1)
		&amp;&amp; Win.Count--)
	WinGet, List, List, ahk_exe %exe%
	Loop %List%
	{ 
		hwnd := List%A_Index%
		If !DllCall(&quot;IsWindowVisible&quot;, &quot;Ptr&quot;, hwnd) || Win.Haskey(hwnd)
			Continue
		Min := Win.Free.MinIndex()
		i := (Min ? Min : Win.Count + 1)
		WinSetTitle, ahk_id %hwnd%, , WF%i%
		(Min &amp;&amp; Win.Free.Delete(Min))
		Win[hwnd] := i, Win.Count++
	}
	Return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-08-25T21:51:20Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118784#p118784</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Warface: Переименовка окон UPDATE 26.08.17]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118744#p118744" />
			<content type="html"><![CDATA[<p>Доброго времени суток всем обитателям форума <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>Стоит такая нетривиальная задача:<br />Есть N-ное количество окон с игрой, нужно по горячей клавише активировать переименование всех запущенных окон с игрой (К примеру &quot;WF1 - WF10&quot;).<br />Класс окон везде разный. Одинаковые названия самих окон и ехешник.<br />Желательно переименование должно быть по порядку (слева направо в панели задач)<br />И самое основное, допустим из 10 окон, 8ое закроется, при его перезапуске оно снова будет иметь стандартное название, и нужно по второй горячей клавише, сделать поиск и восстановить имя 8ому окну (если рассматривать мой пример &quot;WF8&quot;). Это второй хоткей.</p><p>Я сделал уже более 10 разных команд в своем скрипте, и на переименовании застопорился... <br />Прошу помощи, заранее огромное спасибо!</p><p><strong>UPDATE 25.08.17</strong></p><p>Получилось сделать первую часть, пока что так:<br /></p><div class="codebox"><pre><code>WinGet, WinMass, List, ahk_class КЛАСС программки ;(можно посмотреть программой Window Spy).
Loop %WinMass%
{
    WinList .= WinMass%A_Index%
    TmpID := WinMass%A_Index%
    WinGetTitle, WinTitle, ahk_id%TmpID%
    WinSetTitle, ahk_id%TmpID%,, Bot%A_Index%
    WinList .= &quot;(%A_Index%)&quot;| n
}</code></pre></div><p>Дело в том, что у игры все классы разные, а если ставить вместо класса ехешник, переименовка будет через 1 число (1,3,5,9,11 итд)<br />Не знаю почему, тестил на другом окне с одинаковым классом, все работает и переименовывает по порядку.</p>]]></content>
			<author>
				<name><![CDATA[carenov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38734</uri>
			</author>
			<updated>2017-08-24T17:13:30Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118744#p118744</id>
		</entry>
</feed>
