<?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=11911</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11911&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Скрипт сохранение имени файла с датой и по хоткею».]]></description>
		<lastBuildDate>Thu, 20 Oct 2016 14:49:27 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=108396#p108396</link>
			<description><![CDATA[<div class="codebox"><pre><code>
#IfWinActive ahk_group AllWindows
$F2::  
   k := 0
   ControlGetFocus, Control, A
   if InStr(Control, &quot;Edit&quot;)
      ControlGetText, FileName, %Control%, A
  else 
   {
      Send {F2}
      Sleep, 25
      k := 0
      WinGet, ControlList, ControlList, A
      Loop, parse, ControlList, `n
          if InStr(A_LoopField, &quot;Edit&quot;)
            k++
      k-- ; с этим работает с первого нажатия F2
      Control = Edit%k%
      ControlGetText, FileName, %Control%, A
   }
	
  oldFileName := FileName
  
	date := 20 . SubStr(FileName,1,6)
	if date is Not time 
	{
		FormatTime, date,, yyMMdd
    
    IfEqual,HideFileExt, 0,SplitPath,FileName, , ,Ext,FileName
		IfNotEqual,Ext,,try Ext := &quot;.&quot; Ext
    
    oldFileName := Filename . Ext
    
		FileName := StrReplace(FileName,&quot;@&quot;,&quot;(at)&quot;) 
		FileName := StrReplace(FileName,&quot;+&quot;,&quot;plus&quot;) 
		FileName := SubStr(FileName,1,192)

		FileName := date . &quot; &quot; . FileName . &quot; @ + &quot; . Ext
  }
  else
  {
    Filename := oldFileName
  }
ControlSetText, %Control%, % FileName
SendMessage, 0xB1,% InStr(FileName,&quot;@&quot;,0,0) , % InStr(FileName,&quot;@&quot;,0,0),%Control%	; EM_SETSEL

Return
#IF
</code></pre></div><p>Немного посидел, подумал и вот исправленный вариант, выкладываю измененную часть кода, где клавиша F2.<br />Теперь при единократном нажатии F2, сразу меняется текст контрола.</p>]]></description>
			<author><![CDATA[null@example.com (upsi_daezium)]]></author>
			<pubDate>Thu, 20 Oct 2016 14:49:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=108396#p108396</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=108311#p108311</link>
			<description><![CDATA[<p>Опять выхожу на связь.<br />Немного усовершенствовал скрипт<br /></p><div class="codebox"><pre><code>
; Замена запущенной программы
#SingleInstance force


; Читаем значение из реестра скрыты ли расширения типов файлов.
; Нужно для корректного добавления текста в конец имени.
RegRead,HideFileExt,HKEY_CURRENT_USER,Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced,	HideFileExt



; Создаем группу с окнами сохранений.
GroupAdd, SaveDialog,Save As ahk_class #32770
GroupAdd, SaveDialog,Сохранение ahk_class #32770
GroupAdd, SaveDialog,Сохранить как ahk_class #32770

; SetTitleMatchMode, 2 
; SendMode, input
GroupAdd, AllWindows
;GroupAdd, AllWindows,Program Manager ahk_class Progman
;GroupAdd, AllWindows,ahk_class CabinetWClass


loop
{
	; ожидаем возможные окна.
	WinWaitActive, ahk_group SaveDialog
	
	;Окно найдено.
	
	; В переменной ListSaveDialogOpened хрянятся id окон которые были уже открыты.
	;	Если переменная пустая, то условие хоть как истина.
	;	Иначе проверяем наличие id нового открытого окна в переменной.
	;	Если там этого id нет то условие истина.
	;Функция WinActive() сразу же делает это окно по умолчанию для ahk подпрограмм.
	;Оператор &#039;~=&#039; то же самое что и RegExMatch.
	;	(^|`|) означает что до начала номера id должно быть либо начало переменной, либо символ &#039;|&#039;
	;	($|`|) означает что после номера id должно быть либо конец переменной, либо символ &#039;|&#039;
	If ListSaveDialogOpened ? Not (WinActive(&quot;ahk_group SaveDialog&quot;) ~= (&quot;(^|`|)&quot; ListSaveDialogOpened &quot;($|`|)&quot;) ) : true
	{
		;Окно нам подходит, теперь можно работать с ним.
		
		; Так же добавим его id в переменную что бы в последующие разы игнорило.
		ListSaveDialogOpened .= (ListSaveDialogOpened ? &quot;|&quot; : &quot;&quot;)	WinActive()
		
		
		;Узнаем значение поля с именем файла. Заносим в переменную Text.
		ControlGetText,Text,Edit1
			
		; Если система показывает типы файлов, то в переменной Text убераем окончание и заносим в Extension.
		IfEqual,HideFileExt,0,SplitPath,Text,,DirFile,Extension,Text
		; Если переменная с типом файла не пуста, то в начале добавим точку.
		IfNotEqual,Extension,,try Extension := &quot;.&quot; Extension

		; Нужно проверить есть ли дата в начале.
		; Создаем переменную формата YYYYMMDD.
		; YYYY - год. Четырехзначное значение(пример 2016)
		; MM - Месяц. Двухзначное значение(пример 01)
		; DD - День. Двухзначное значение(пример 01)
		date := 20 . SubStr(Text,1,6)
		
		; Если это условие ложь значит в начале нет даты.
		if date is Not time
		{
			; Продолжаем если нет даты...
			; Перезапишит переменную date с сегодняшним числом.
			FormatTime, date,, yyMMdd
			
			; Замена и сокращение символов.
			Text := StrReplace(Text,&quot;@&quot;,&quot;(A)&quot;) 
			Text := StrReplace(Text,&quot;+&quot;,&quot;plus&quot;) 
			Text := SubStr(text,1,192)
			
			; Новое значение Text будет равно &quot;date + Text + свой текст + Extension&quot;.
			Text := date . &quot; &quot; . Text . &quot; @ + &quot; . Extension

			; Устанавливаем новый текст в контрол.
			ControlSetText, Edit1, % Text
			
			; EM_SETSEL это - сообщение для выделения текста в edit поле от определенного символа до другого.
			; Функция InStr выдает позицию искомого текста(всегда начало слева), не учитывая регистр и поиск должен быть с конца.
			SendMessage, 0xB1,% InStr(Text,&quot;@&quot;,0,0) , % InStr(Text,&quot;@&quot;,0,0),Edit1	; EM_SETSEL
		}
	}
	; Конец этого условия значит что все нужные манипуляции с окном сделаны.
	
	;Ожидаем его деактивации из фокуса.
	WinWaitNotActive
	
	; Если окон сохранения больше вообще нет, то очищаем переменную.
	If Not WinExist(&quot;ahk_group SaveDialog&quot;)
		ListSaveDialogOpened := &quot;&quot;
		
	; Если же окна сохранения еще существуют, то те с которым
	;	была работа будут игнорится в следующем цикле.
}


#IfWinActive ahk_group AllWindows
$F2::  
   i := k := 0
   ControlGetFocus, Control, A
   if InStr(Control, &quot;Edit&quot;)
      ControlGetText, FileName, %Control%, A
   else 
   {
      WinGet, ControlList, ControlList, A
      Loop, parse, ControlList, `n
         if InStr(A_LoopField, &quot;Edit&quot;)
            i++
      ;Send {F2}
      Send, % &quot;{&quot; . SubStr(A_ThisHotkey, 2) . &quot;}&quot;
      While k - i != 1
      {
         Sleep, 15
         k := 0
         WinGet, ControlList, ControlList, A
         Loop, parse, ControlList, `n
            if InStr(A_LoopField, &quot;Edit&quot;)
               k++
      }
      Control = Edit%k%
      ControlGetText, FileName, %Control%, A
   }
		
	date := 20 . SubStr(FileName,1,6)
  ; SubStr (FileName,1,7) = &quot; &quot; ; проверка что после даты стоит пробел
	if date is Not time ;todo добавить сюда доп. условие, после даты должен идти пробел
	{
		FormatTime, date,, yyMMdd

    IfEqual,HideFileExt, 0,SplitPath,FileName, , ,Ext,FileName
		IfNotEqual,Ext,,try Ext := &quot;.&quot; Ext
    oldFileName := Filename Ext
    
		FileName := StrReplace(FileName,&quot;@&quot;,&quot;(A)&quot;) 
		FileName := StrReplace(FileName,&quot;+&quot;,&quot;plus&quot;) 
		FileName := SubStr(FileName,1,192)

		FileName := date . &quot; &quot; . FileName . &quot; @ + &quot; . Ext
  }
  else
  {
    Filename := oldFileName
  }
ControlSetText, %Control%, % FileName
SendMessage, 0xB1,% InStr(FileName,&quot;@&quot;,0,0) , % InStr(FileName,&quot;@&quot;,0,0),%Control%	; EM_SETSEL

Return
</code></pre></div><p>Теперь все в одном скрипте, добавил горячую клавишу. Вдохновлялся скриптом из коллекции &quot;Выделение файла без расширения&quot;. <br />А проблема вот в чем, не могу отловить баг. Он появляется если в программе SynWrite (мой текстовый редактор) нажать F2 (и еще где-то не работает, но щас не помню). После этого скрипт зацикливается, я смотрел lines most recently executed, и перестает работать горячая клавиша и слежение за окнами сохранения. Не могу понять в чем дело?</p>]]></description>
			<author><![CDATA[null@example.com (upsi_daezium)]]></author>
			<pubDate>Tue, 11 Oct 2016 10:39:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=108311#p108311</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=107176#p107176</link>
			<description><![CDATA[<p>Снова добрый день.<br />Все еще допиливаю свой скрипт, уже дошел до того, как все это сделать в одном скрипте. Нашел такой пример на вашем форуме, при переименовывании файла идет выделение только имени (без расширения).<br />Вот код<br /></p><div class="codebox"><pre><code>
SetTitleMatchMode, 2 
SendMode, input
GroupAdd, RenameGroup
GroupAdd, RenameGroup, Program Manager ahk_class Progman
GroupAdd, RenameGroup, ahk_class CabinetWClass

#IfWinActive ahk_group RenameGroup
$F2::
   Islnk:=0
   Clipboard =
   Send ^{vk43}
   ClipWait
   IsDir := InStr(FileExist(Clipboard), &quot;D&quot;) ? 1 : 0
   If (not IsDir) and (RegExReplace(Clipboard, &quot;.*\.(.*)&quot;, &quot;$1&quot;)=&quot;lnk&quot;)
         Islnk:=1
   If (IsDir or IsLnk)
  {
    send {F2}
    return
  }
   i := k := 0
   ControlGetFocus, Control, A
   if InStr(Control, &quot;Edit&quot;)
      ControlGetText, FileName, %Control%, A
   else 
   {
      WinGet, ControlList, ControlList, A
      Loop, parse, ControlList, `n
         if InStr(A_LoopField, &quot;Edit&quot;)
            i++
      Send {F2}
      While k - i != 1
      {
         Sleep, 15
         k := 0
         WinGet, ControlList, ControlList, A
         Loop, parse, ControlList, `n
            if InStr(A_LoopField, &quot;Edit&quot;)
               k++
      }
      Control = Edit%k%
      ControlGetText, FileName, %Control%, A
   }
   FileNameNoExt := RegExReplace(FileName, &quot;(.*)\..*&quot;, &quot;$1&quot;)
   NameLengh := StrLen(FileNameNoExt) - 3 ; мое добавление для вопроса
   SendMessage, EM_SETSEL := 0xB1, 0, NameLengh, %Control%, A
   Return
</code></pre></div><p>У меня вин10, в ней скрипт работает так, нажимаешь впервый раз F2, выделает только имя, а если при этом еще раз нажать F2, то происходит выделение, как описано (отмечено комментарием). Вот щас не могу понять, как сделать, чтобы сразу работало с одного нажатия?</p>]]></description>
			<author><![CDATA[null@example.com (upsi_daezium)]]></author>
			<pubDate>Tue, 30 Aug 2016 21:01:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=107176#p107176</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=107046#p107046</link>
			<description><![CDATA[<p><span style="color: green"><strong>upsi_daezium</strong>, избегайте избыточного цитирования.</span></p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Thu, 25 Aug 2016 16:09:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=107046#p107046</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=107044#p107044</link>
			<description><![CDATA[<p>Низкий вам поклон, за проделанную работу. Первый скрипт меня впечатлил, а это уже совсем за гранью возможного.<br />Последний вопрос относится к скрипту переименования файлов по по клавише? Если такое возможно сделать, то конечно да.<br />Я, кстати, тоже не сидел без дела и кое-что наваял:<br /></p><div class="codebox"><pre><code>
mButton::
; Читаем значение из реестра скрыты ли расширения типов файлов.
; Нужно для корректного добавления текста в конец имени.
RegRead,HideFileExt,HKEY_CURRENT_USER,Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced,	HideFileExt

Send {F2}
Send ^a
Send ^x
;Узнаем значение поля с именем файла. Заносим в переменную Text.
	Text = %clipboard%
  oldText = %clipboard%
  
	; Нужно проверить есть ли дата в начале.
	; Создаем переменную формата YYYYMMDD.
	; YYYY - год. Четырехзначное значение(пример 2016)
	; MM - Месяц. Двухзначное значение(пример 01)
	; DD - День. Двухзначное значение(пример 01)
	date := 20 . SubStr(Text,1,6)
	
	; Если это условие ложь значит в начале нет даты.
	if date is Not time
	{
		; Продолжаем если нет даты...
		; Перезапишит переменную date с сегодняшним числом.
		FormatTime, date,, yyMMdd

		; Если система показывает типы файлов, то в переменной Text убераем окончание и заносим в Extension.
		IfEqual,HideFileExt,0,SplitPath,Text,,,Extension,Text
		; Если переменная с типом файла не пуста, то в начале добавим точку.
		IfNotEqual,Extension,,try Extension := &quot;.&quot; Extension
		
		; Замена и сокращение символов.
		Text := StrReplace(Text,&quot;@&quot;,&quot;(A)&quot;) 
		Text := StrReplace(Text,&quot;+&quot;,&quot;plus&quot;) 
		Text := SubStr(text,1,192)
		
		; Новое значение Text будет равно &quot;date + Text + свой текст + Extension&quot;.
		Text := date . &quot; &quot; . Text . &quot; @ + &quot; . Extension
    clipboard = %Text%
  }
  else
  {
    clipboard =%oldText%
  }
Send ^v
</code></pre></div><p>Это работает (с некоторыми оговорками) если запустить отдельным скриптом.</p>]]></description>
			<author><![CDATA[null@example.com (upsi_daezium)]]></author>
			<pubDate>Thu, 25 Aug 2016 13:22:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=107044#p107044</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=107020#p107020</link>
			<description><![CDATA[<p>Пока что без клавиш...<br />Может работать сразу снесколькими окнами сохранения(например от notepad и chrome browser и тд)<br /></p><div class="codebox"><pre><code>; Замена запущенной программы
#SingleInstance force


; Читаем значение из реестра скрыты ли расширения типов файлов.
; Нужно для корректного добавления текста в конец имени.
RegRead,HideFileExt,HKEY_CURRENT_USER,Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced,	HideFileExt



; Создаем группу с окнами сохранений.
GroupAdd, SaveDialog,Save As ahk_class #32770
GroupAdd, SaveDialog,Сохранение ahk_class #32770
GroupAdd, SaveDialog,Сохранить как ahk_class #32770


loop
{
	; ожидаем возможные окна.
	WinWaitActive, ahk_group SaveDialog
	
	;Окно найдено.
	
	; В переменной ListSaveDialogOpened хрянятся id окон которые были уже открыты.
	;	Если переменная пустая, то условие хоть как истина.
	;	Иначе проверяем наличие id нового открытого окна в переменной.
	;	Если там этого id нет то условие истина.
	;Функция WinActive() сразу же делает это окно по умолчанию для ahk подпрограмм.
	;Оператор &#039;~=&#039; то же самое что и RegExMatch.
	;	(^|`|) означает что до начала номера id должно быть либо начало переменной, либо символ &#039;|&#039;
	;	($|`|) означает что после номера id должно быть либо конец переменной, либо символ &#039;|&#039;
	If ListSaveDialogOpened ? Not (WinActive(&quot;ahk_group SaveDialog&quot;) ~= (&quot;(^|`|)&quot; ListSaveDialogOpened &quot;($|`|)&quot;) ) : true
	{
		;Окно нам подходит, теперь можно работать с ним.
		
		; Так же добавим его id в переменную что бы в последующие разы игнорило.
		ListSaveDialogOpened .= (ListSaveDialogOpened ? &quot;|&quot; : &quot;&quot;)	WinActive()
		
		
		;Узнаем значение поля с именем файла. Заносим в переменную Text.
		ControlGetText,Text,Edit1
			
		; Если система показывает типы файлов, то в переменной Text убераем окончание и заносим в Extension.
		IfEqual,HideFileExt,0,SplitPath,Text,,DirFile,Extension,Text
		; Если переменная с типом файла не пуста, то в начале добавим точку.
		IfNotEqual,Extension,,try Extension := &quot;.&quot; Extension

		; Нужно проверить есть ли дата в начале.
		; Создаем переменную формата YYYYMMDD.
		; YYYY - год. Четырехзначное значение(пример 2016)
		; MM - Месяц. Двухзначное значение(пример 01)
		; DD - День. Двухзначное значение(пример 01)
		date := 20 . SubStr(Text,1,6)
		
		; Если это условие ложь значит в начале нет даты.
		if date is Not time
		{
			; Продолжаем если нет даты...
			; Перезапишит переменную date с сегодняшним числом.
			FormatTime, date,, yyMMdd
			
			; Замена и сокращение символов.
			Text := StrReplace(Text,&quot;@&quot;,&quot;A&quot;) 
			Text := StrReplace(Text,&quot;+&quot;,&quot;plus&quot;) 
			Text := SubStr(text,1,192)
			
			; Новое значение Text будет равно &quot;date + Text + свой текст + Extension&quot;.
			Text := date . Text . &quot;@+&quot; . Extension

			; Устанавливаем новый текст в контрол.
			ControlSetText, Edit1, % Text
			
			; EM_SETSEL это - сообщение для выделения текста в edit поле от определенного символа до другого.
			; Функция InStr выдает позицию искомого текста(всегда начало слева), не учитывая регистр и поиск должен быть с конца.
			SendMessage, 0xB1,% InStr(Text,&quot;@&quot;,0,0) , % InStr(Text,&quot;@&quot;,0,0),Edit1	; EM_SETSEL
		}
	}
	; Конец этого условия значит что все нужные манипуляции с окном сделаны.
	
	;Ожидаем его деактивации из фокуса.
	WinWaitNotActive
	
	; Если окон сохранения больше вообще нет, то очищаем переменную.
	If Not WinExist(&quot;ahk_group SaveDialog&quot;)
		ListSaveDialogOpened := &quot;&quot;
		
	; Если же окна сохранения еще существуют, то те с которым
	;	была работа будут игнорится в следующем цикле.
}


</code></pre></div><p>А надо что бы была работа сразу с несколькими выделенными файлами?</p>]]></description>
			<author><![CDATA[null@example.com (yalanne)]]></author>
			<pubDate>Wed, 24 Aug 2016 14:11:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=107020#p107020</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=107008#p107008</link>
			<description><![CDATA[<p>Небольшой вопрос, а как можно управлять кореткой (курсором), например, я хочу чтобы она стояла после @, и можно ли сделать определенное выделение в поле?<br />Не нашел понятной документации по EM_SETSEL</p>]]></description>
			<author><![CDATA[null@example.com (upsi_daezium)]]></author>
			<pubDate>Tue, 23 Aug 2016 20:16:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=107008#p107008</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=106912#p106912</link>
			<description><![CDATA[<p><strong>ypppu</strong> спасибо за идею, но это уже какие-то сложные (для меня во всяком случае) материи, так что придется обойтись простым переименованием.<br /><strong>yalanne</strong> снимаю шляпу, большое дело, я проверил, скрипт работает замечательно.&nbsp; Я тоже без дела не сидел, вот мой вариант (с вашим, конечно, не сравнить):<br /></p><div class="codebox"><pre><code>
Menu, Tray, Icon, stobject.ICO, 1

SetTitleMatchMode, 1

maxFileNameLenght = 192 ; максимальная длина строки имени файла
tags := &quot; tags &quot;

Loop 
{
	WinWaitActive, ahk_class #32770 ; ahk_class #32770 класс окна сохранения
	ControlGetText, fileName, Edit1, ahk_class #32770
	if not RegExMatch(fileName, &quot;^\d{6}&quot; )
  {	
    SplitPath, fileName, , , fileExt, fileName
    fileName := SubStr(fileName, 1, maxFileNameLenght) 
    if fileExt fileExt := &quot;.&quot;fileExt ; если расширение есть, то добавляем к нему точку  
    FormatTime, date,, yyMMdd
    ControlSetText, Edit1, %date% %fileName%%tags%%fileExt%, ahk_class #32770 
    Send ^a
	}
	WinWaitClose, ahk_class #32770
</code></pre></div><p><strong>yalanne</strong>, ваш скрипт работает, за счет добавления к классу окна названия окна, перестал срабатывать где не надо, но, насколько я понимаю, там написано &quot;Сохранение&quot; (это для вин10), а в 7 написано &quot;Сохранить&quot; (щас не могу проверить, семерка у меня на работе), так что, может не срабатывать. А в английских программах написано &quot;Save as&quot;, так что в них не работает, можно ли добавить такой вариант?<br />У меня еще вопрос, мне нужно еще переименовывать файлы под такой шаблон, думаю, что смогу переписать ваш код, чтобы он срабатывал от горячих клавиш, и переименовывал выделенный текст где угодно, только я пока не понимаю, как это включить в общую программу?</p>]]></description>
			<author><![CDATA[null@example.com (upsi_daezium)]]></author>
			<pubDate>Fri, 19 Aug 2016 20:16:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=106912#p106912</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=106909#p106909</link>
			<description><![CDATA[<p>Надо указывать что надо ждать именно окно сохранения, а не все подряд с этим классом.<br />Вот мой вариант:<br /></p><div class="codebox"><pre><code>
; Читаем значение из реестра скрыты ли расширения типов файлов.
; Нужно для корректного добавления текста в конец имени.
RegRead,HideFileExt,HKEY_CURRENT_USER,Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced,	HideFileExt


;Бесконечный цикл.
Loop
{
	;Ожидаем окно сохранения класса 32770
	WinWaitActive Сохранение ahk_class #32770
	;Если мы тут значит скрипт нашел окно...
	;Устанавливаем это окно по умолчанию для подпрограмм autohotkey&#039;я.
	WinExist(&quot;Сохранение ahk_class #32770&quot;)

	;Узнаем значение поля с именем файла. Заносим в переменную Text.
	ControlGetText,Text,Edit1

	; Нужно проверить есть ли дата в начале.
	; Создаем переменную формата YYYYMMDD.
	; YYYY - год. Четырехзначное значение(пример 2016)
	; MM - Месяц. Двухзначное значение(пример 01)
	; DD - День. Двухзначное значение(пример 01)
	date := 20 . SubStr(Text,1,6)
	
	; Если это условие ложь значит в начале нет даты.
	if date is Not time
	{
		; Продолжаем если нет даты...
		; Перезапишит переменную date с сегодняшним числом.
		FormatTime, date,, yyMMdd

		; Если система показывает типы файлов, то в переменной Text убераем окончание и заносим в Extension.
		IfEqual,HideFileExt,0,SplitPath,Text,,,Extension,Text
		; Если переменная с типом файла не пуста, то в начале добавим точку.
		IfNotEqual,Extension,,try Extension := &quot;.&quot; Extension
		
		; Замена и сокращение символов.
		Text := StrReplace(Text,&quot;@&quot;,&quot;A&quot;) 
		Text := StrReplace(Text,&quot;+&quot;,&quot;plus&quot;) 
		Text := SubStr(text,1,192)
		
		; Новое значение Text будет равно &quot;date + Text + свой текст + Extension&quot;.
		Text := date . Text . &quot;@+&quot; . Extension

		; Устанавливаем новый текст в контрол.
		ControlSetText, Edit1, % Text
		
		; EM_SETSEL это - сообщение для выделения текста в edit поле от определенного символа до другого.
		; Выделяем все символы(делаем тот же эффект выделения что есть по умолчанию)
		; Если второй параметр указать так же % StrLen(Text), то каретка перейдет в конец строки без выделения.
		; Если убрать эту строку вообще, то каретка будет в самом начале строки.
		SendMessage, 0xB1,% 0, % StrLen(Text),Edit1	; EM_SETSEL
	}

	; Ожидаем закрытия.
	WinWaitClose
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (yalanne)]]></author>
			<pubDate>Fri, 19 Aug 2016 18:50:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=106909#p106909</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=106897#p106897</link>
			<description><![CDATA[<p>Вам нужно, чтобы скрипт всё время искал окна #32770, но игнорировал окна #32770, в которых он уже отработал. И чтобы после их закрытия переставал их игнорировать.<br />Наверное нужен какой-то динамически обновляющийся перечень, массив.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Fri, 19 Aug 2016 13:57:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=106897#p106897</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=106889#p106889</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><div class="codebox"><pre><code>WinWaitActive, ahk_class #32770</code></pre></div><p>Окон такого класса может быть много. <br />И если активизируется одно из них, то скрипт будет ждать его закрытия, игнорирую все остальные.</p></blockquote></div><p>О, спасибо! Действительно в этом было дело, а то я уже голову сломал.<br />А можно переделать скрипт, чтобы не было такой ситуации?<br />И еще хочу ввести проверку, чтобы имя файла не менялось, если оно уже соответствует формату (ГГММДД), делаю так:<br /></p><div class="codebox"><pre><code>
	if RegExMatch (fileName, &quot;^\d{6}&quot;, fileNameData){
		Msgbox % fileNameData
	}
</code></pre></div><p>Но пока ничего не возвращает</p>]]></description>
			<author><![CDATA[null@example.com (upsi_daezium)]]></author>
			<pubDate>Fri, 19 Aug 2016 12:02:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=106889#p106889</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=106878#p106878</link>
			<description><![CDATA[<div class="codebox"><pre><code>WinWaitActive, ahk_class #32770</code></pre></div><p>Окон такого класса может быть много. <br />И если активизируется одно из них, то скрипт будет ждать его закрытия, игнорирую все остальные.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 19 Aug 2016 08:54:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=106878#p106878</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=106877#p106877</link>
			<description><![CDATA[<p>На WinXP работает.<br />Чтобы найти проблему, зайдите в &quot;lines most recently executed&quot; и посмотрите, на чём скрипт остановился, что он делает.</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Fri, 19 Aug 2016 08:22:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=106877#p106877</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=106875#p106875</link>
			<description><![CDATA[<p>Вот несколько доработанный скрипт:<br /></p><div class="codebox"><pre><code>
Menu, Tray, Icon, stobject.ICO, 1

SetTitleMatchMode, 1

maxFileNameLenght = 19

Loop {
	WinWaitActive, ahk_class #32770
	ControlGetText, fileName, Edit1, ahk_class #32770
	SplitPath, fileName, , , fileExt, fileName1
	fileName := SubStr(fileName, 1, maxFileNameLenght) 
	FormatTime, date,, yyMMdd
	ControlSetText, Edit1, %date% %fileName1% %fileExt%, ahk_class #32770
	WinWaitClose, ahk_class #32770
}
</code></pre></div><p>Добавлена функция сплитпат, вместо регулярных выражений. Ограничение максимальной длины имени файла.<br />Проверял дома на 10х64 работает как надо, срабатывает каждый раз. А на работе 7х64, стабатывает 1 раз для одного окна, потом иконка висит, а ничего не меняется. Пока не могу понять в чем тут дело.<br />Как вам доработанный скрипт, мне кажется получилось неплохо, я быстро прогрессирую.</p>]]></description>
			<author><![CDATA[null@example.com (upsi_daezium)]]></author>
			<pubDate>Fri, 19 Aug 2016 06:55:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=106875#p106875</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Скрипт сохранение имени файла с датой и по хоткею]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=106857#p106857</link>
			<description><![CDATA[<p><strong>upsi_daezium</strong>, покажите, в каком виде запускаете код.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 17 Aug 2016 16:41:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=106857#p106857</guid>
		</item>
	</channel>
</rss>
