<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=10240</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10240&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."».]]></description>
		<lastBuildDate>Fri, 19 Dec 2014 19:54:28 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89616#p89616</link>
			<description><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>Браво! Помнится, в &quot;Коллекции скриптов и идей&quot; уже есть скрипт для снятия скриншотов с (части) экрана, логично было бы объединить их в очень удобное средство для быстрой публикации снимков.</p></blockquote></div><p><a href="https://github.com/Drugoy/Autohotkey-scripts-.ahk/tree/master/SilentScreenshotter">SilentScreenshotter</a>. Работает с imgur. Поддерживает drag&#039;n&#039;drop файлов картинок на скрипт для их заливки на сервер.</p>]]></description>
			<author><![CDATA[null@example.com (Drugoy)]]></author>
			<pubDate>Fri, 19 Dec 2014 19:54:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89616#p89616</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89612#p89612</link>
			<description><![CDATA[<p>Для публикации изображений с облака Mail.Ru такой вариант:<br /></p><div class="codebox"><pre><code>SourcePictureFile := &quot;D:\Screenshots\2014.12.18-17.03.25.9.jpg&quot;   ; указать путь к файлу, если его не будет в параметре
if (SourcePictureFile = &quot;&quot;)
   SourcePictureFile = %1%

if !IsObject(oPictures := GetMailRuPictureLinks(SourcePictureFile))
{
   MsgBox, Не удалось получить ссылки
   ExitApp
}

Gui, Margin, 15, 15
Gui, Font,, Tahoma
Loop % oPictures.MaxIndex()
{
   Gui, +LastFound
   size := oPictures[A_Index].size
   SizeStr .= (A_Index = 1 ? &quot;&quot; : &quot;|&quot;) . (A_Index = 4 ? &quot;|&quot; : &quot;&quot;) . size
   Gui, Add, Edit, x15 y+15 r1 w65, % size
   Gui, Add, Edit, x+5 yp r1 w400, % oPictures[A_Index].url
   Number1 := 1 + (A_Index - 1)*2, Number2 := Number1 + 1
   Gui, Add, Button, v%Number1% x+5 hp gShow, Show
   Gui, Add, Button, v%Number2% x+5 wp hp gCopy, Copy
}
GuiControlGet, Pos, Pos, % Number2

Gui, Add, Checkbox, vCheck gCheck x15 y+25, Использовать превью
Gui, Add, DDL, vDDL x+10 yp-3 w80 Disabled, % SizeStr  ; 
Gui, Add, Text, vText x+5 yp+3 Disabled, Размер превью
Gui, Add, Button, % &quot;vBBCode gCopyBBCode x&quot; PosX + PosW - 150 &quot; yp-3 w150 Default&quot;, Копировать BBCode
GuiControl, Focus, BBCode

if hIcon := ExtractIcon(GetCloudExe(), 0)
   Loop 2
      PostMessage, WM_SETICON := 0x80, A_Index - 1, hIcon
Gui, Show,, Прямые ссылки
Return

Show:
Copy:
   EditNumber := A_GuiControl + mod(A_GuiControl, 2)
   GuiControlGet, url,, Edit%EditNumber%
   if (A_ThisLabel = &quot;Show&quot;)
      Run, % url
   else
      Clipboard := url
   Return
   
Check:
   GuiControlGet, Check
   Loop 2
      GuiControl, % (Check ? &quot;Enable&quot; : &quot;Disable&quot;), % A_Index = 1 ? &quot;DDL&quot; : &quot;Text&quot;
   Return
   
CopyBBCode:
   GuiControlGet, Check
   for k, v in oPictures
      if (v.size = &quot;original&quot; &amp;&amp; OriginalSizeUrl := v.url)
         break
   
   if !Check
      Clipboard := &quot;[img]&quot; . OriginalSizeUrl . &quot;[/img]&quot;
   else {
      GuiControlGet, DDL
      for k, v in oPictures
         if (v.size = DDL)
            break
      Clipboard := &quot;[url=&quot; . OriginalSizeUrl . &quot;][img]&quot; . v.url . &quot;[/img][/url]&quot;
   }
   ToolTip, BBCode скопирован в буфер обмена
   SetTimer, ToolTipDel, -1000
   Return
   
ToolTipDel:
   ToolTip
   Return

GuiClose:
GuiEscape:
   (hIcon &amp;&amp; DllCall(&quot;DestroyIcon&quot;, Ptr, hIcon))
   ExitApp
   
GetMailRuPictureLinks(filePath)
{
   static i
   if !Verify(filePath)
      Return
   
   Process, Exist, Cloud.exe
   if !ErrorLevel {
      if !(CloudExe := GetCloudExe()) {
         MsgBox, Не удалось определить путь к Cloud.exe
         Return
      }
      Run, % CloudExe
      Process, Wait, Cloud.exe
   }
   
   if !(MailRuFolder := GetMailRuFolder()) {
      MsgBox, Не удалось определить путь к папке облака
      Return
   }
   
   SplitPath, filePath, FileName
   if FileExist(Dest := MailRuFolder . &quot;\&quot; FileName)  {
      MsgBox, 4,, Файл %Dest% уже существует.`nПереписать?
      IfMsgBox, No
         NoOverwrite := 1
   }
   
   if !NoOverwrite  {
      FileCopy, % filePath, % Dest, 1
      if ErrorLevel {
         MsgBox, Не удалось скопировать файл %filePath% в папку %MailRuFolder%
         Return
      }
   }
   
   PrevClipboard := ClipboardAll, Clipboard := &quot;&quot;, i := 0
   SetTimer, LoadFile, 500
   link := GetPublicLink(MailRuFolder, Dest), Clipboard := PrevClipboard
   SetTimer, LoadFile, Off
   TrayTip
   if !InStr(link, &quot;http&quot;) = 1  {
      MsgBox, Не удалось получить публичную ссылку
      Return
   }
   
   if !(html := GetHtml(link)) {
      MsgBox, Не удалось получить код страницы с файлом
      Return
   }
   Return ExtractData(html)
   
LoadFile:
   m := mod(++i, 4)
   TrayTip,, % &quot;Идёт загрузка файла&quot; . (m = 1 ? &quot;.   &quot; : m = 2 ? &quot;..  &quot; : m = 3 ? &quot;... &quot; : &quot;....&quot;)
   Return
}

Verify(filePath)
{
   if !FileExist(filePath) {
      MsgBox, Файл %filePath% не найден
      Return
   }
   if !Ping(&quot;cloud.mail.ru&quot;) {
      MsgBox, Нет связи с cloud.mail.ru`nПроверьте подключение к интернету!
      Return
   }
   Return 1
}
   
Ping(strHost)
{
   oWMI := ComObjGet(&quot;winmgmts:&quot;)
   Loop 2
      bRet :=  oWMI.Get(&quot;Win32_PingStatus.address=&#039;&quot; . strHost . &quot;&#039;&quot;).StatusCode = 0
   until bRet
   return bRet
}

GetCloudExe()
{
   IniRead, CloudExe, % A_ScriptDir &quot;\GetImageLink.ini&quot;, Paths, CloudExePath, % &quot; &quot;
   if CloudExe
      Return CloudExe
   
   SetBatchLines, -1
   Loop 2   {
      if (A_Index = 1 &amp;&amp; !A_Is64bitOS)
         continue

      SubKey := &quot;SOFTWARE&quot; . (A_Index = 1 ? &quot;\Wow6432Node&quot; : &quot;&quot;) . &quot;\Microsoft\Windows\CurrentVersion\Uninstall&quot;
      Loop, HKLM, % SubKey, 1, 1
      {
         if (A_LoopRegName = &quot;DisplayName&quot;)   {
            RegRead, DisplayName
            if (DisplayName = &quot;Mail.Ru Cloud&quot;)   {
               RegRead, Location, HKLM, % A_LoopRegSubKey, InstallLocation
               break 2
            }
         }
      }
   }
   if FileExist(CloudExe := RTrim(Location, &quot;\&quot;) . &quot;\Cloud.exe&quot;) {
      IniWrite, % CloudExe, % A_ScriptDir &quot;\GetImageLink.ini&quot;, Paths, CloudExePath
      Return CloudExe
   }
   
   FileSelectFile, CloudExe, 1, ::{20d04fe0-3aea-1069-a2d8-08002b30309d}, Укажите файл Cloud.exe`, путь будет сохранён:, Executable (*.exe)
   if !CloudExe
      Return
   
   IniWrite, % CloudExe, % A_ScriptDir &quot;\GetImageLink.ini&quot;, Paths, CloudExePath
   Return CloudExe
}

GetMailRuFolder()
{
   IniRead, CloudFolder, % A_ScriptDir &quot;\GetImageLink.ini&quot;, Paths, CloudFolder, % &quot; &quot;
   if !FileExist(CloudFolder)
      RegRead, CloudFolder, HKCU, Software\Mail.Ru\Mail.Ru_Cloud, folder
   
   FileSelectFolder, CloudFolder, *%CloudFolder%, 1, Укажите папку или подпапку Облака для копирования файла:
   if !CloudFolder
      Return
   
   IniWrite, % CloudFolder, % A_ScriptDir &quot;\GetImageLink.ini&quot;, Paths, CloudFolder
   Return CloudFolder
}

GetPublicLink(MailRuFolder, Dest)
{
   Loop 3  {
      error := oVerb := &quot;&quot;
      try {
         for item in ComObjCreate(&quot;Shell.Application&quot;).Namespace(MailRuFolder).Items
            if (item.Path = Dest)
               for Verb in item.Verbs
                  if InStr(Verb.Name, &quot;публич&quot;) &amp;&amp; oVerb := Verb
                     break 2
            
         if !IsObject(oVerb) {
            MsgBox, Меню «Скопировать публичную ссылку» не найдено
            Return
         }
         
         Loop {
            Loop 30  {
               Sleep 1000
               Clipboard := &quot;&quot;
               oVerb.DoIt
            } until Clipboard != &quot;&quot;
            
            if (Clipboard = &quot;&quot;)  {
               MsgBox, 4,, Пока не удалось скопировать публичную ссылку.`nВозможно`, файл ещё не загрузился на Олако.`nПодождать?
               IfMsgBox, No
                  break
            }
         } until Clipboard != &quot;&quot;
      }
      catch
         continue
      break
   }
   Return Clipboard
}

GetHtml(link)
{
   Loop 3 {
      Sleep, 100
      try     {
         WebRequest := ComObjCreate(&quot;WinHttp.WinHttpRequest.5.1&quot;)
         WebRequest.Open(&quot;GET&quot;, link)
         WebRequest.Send()
         html := WebRequest.ResponseText
      }
      catch
         continue
   } until html
   Return html
}

ExtractData(html)
{
   urls := RegExReplace(html, &quot;s).+&quot;&quot;thumbnails&quot;&quot;: \{\s*(.+?)\s*}.+&quot;, &quot;$1&quot;)
   oPictures := []
   Loop, parse, Urls, `n, `r
   {
      RegExMatch(Trim(A_LoopField), &quot;U)&quot;&quot;(\d+x\d+|original)&quot;&quot;.+&quot;&quot;(http.+)&quot;&quot;&quot;, found)
      if !(found1 &amp;&amp; found2)  {
         MsgBox, Mail.ru изменили структуру страницы
         Return
      }
      oPictures[A_Index] := {size: found1, url: found2}
   }
   Return oPictures
}

ExtractIcon(sFile, idx)
{
   Return DllCall(&quot;Shell32\ExtractIcon&quot;, Ptr, DllCall(&quot;GetModuleHandle&quot;, UInt, 0, Ptr), Str, sFile, UInt, idx, Ptr)
}</code></pre></div><p>Во время работы скрипта появляются всякие сообщения от иконки Cloud Mail.Ru, но на них можно не обращать внимания.<br />Скрипт написан с целью добавления в контекстное меню файлов с изображениями, но можно использовать и так.<br />Может, по интерфейсу будут какие-нибудь предложения?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 19 Dec 2014 18:57:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89612#p89612</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89586#p89586</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Ну в целом аккаунта может хватить на такие цели, на 1 - 2 года.</p></blockquote></div><p>Можно посчитать. Скриншот ну самое большее может занимать 1 МБ. Скрипты тогда можно в расчёт не брать. 2 ГБ — это 2048 скриншотов по одному МБ. Чтобы потратить это пространство за два года, нужно в день постить примерно по 3 таких скриншота, и все должны быть разные. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> А теперь прикинь, на какой объём данных реально ты даёшь ссылки.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 18 Dec 2014 21:07:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89586#p89586</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89585#p89585</link>
			<description><![CDATA[<p>2 больше чем 100? Или фиолетово? <br /></p><div class="quotebox"><blockquote><p>Так, на самом деле, сколько бы пространства не давали, всё равно мало покажется</p></blockquote></div><p>Фильмами можно лихо забить &quot;не важно сколько терабайт&quot;.</p><p>Я же про скриншоты и скрипты. Картинки забьют память быстрее конечно, чем сама суть. Ну в целом аккаунта может хватить на такие цели, на 1 - 2 года. Аккаунтов, под разную медию можно создавать сколько душе угодно (видно у мэйл.мутников места, никто ни чем не ест).</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 18 Dec 2014 20:28:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89585#p89585</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89584#p89584</link>
			<description><![CDATA[<p>Почему не будет? Когда 2 гига кончатся? Так, на самом деле, сколько бы пространства не давали, всё равно мало покажется. У меня на mail.ru из одного ТБ уже половина фильмами занята. Можно разные облака использовать для разных целей, приложение много места на диске не занимает.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 18 Dec 2014 20:09:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89584#p89584</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89583#p89583</link>
			<description><![CDATA[<p><img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Ну извините.</p><div class="quotebox"><blockquote><p>А с чего она мёртвая-то будет?</p></blockquote></div><p>Ааа, файла то уже не будет.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 18 Dec 2014 20:04:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89583#p89583</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89582#p89582</link>
			<description><![CDATA[<p>А с чего она мёртвая-то будет? Ты уже на форуме больше, чем на 2 гига ссылок надавал? <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 18 Dec 2014 19:52:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89582#p89582</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89581#p89581</link>
			<description><![CDATA[<p>Так мы сейчас удобства и хотим добится. А удалять в последствии <span class="bbu">совсем недавнюю</span> мелочь, неудобно.<br />По мне, так на первом месте не парится, что ссылка которую дал месяц назад, уже мёртвая.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 18 Dec 2014 19:50:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89581#p89581</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89580#p89580</link>
			<description><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>Тот же mail.ru предоставляет 100Гб бесплатно</p></blockquote></div><p>Ну, <a href="http://forum.script-coding.com/profile.php?id=24515">некоторым</a> повезло <a href="http://habrahabr.ru/post/206860/">чуть больше</a>. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br /></p><div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>Dropbox ссылки не меняет при редактировании?</p></blockquote></div><p>Нет, проверял.<br /></p><div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Ну это минусует плюсы.</p></blockquote></div><p>Почему, в основном приходится давать ссылки на небольшие файлы, тут на первом месте удобство работы с облаком.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 18 Dec 2014 19:44:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89580#p89580</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89579#p89579</link>
			<description><![CDATA[<p>Можно расширить до 16Гб, по 500Мб за каждого приглашенного друга. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Thu, 18 Dec 2014 19:00:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89579#p89579</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89578#p89578</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Бесплатно только 2 гигабайта.</p></blockquote></div><p>Ну это минусует плюсы. Не-прямая ссылка на файлы уже не кажется, чем-то плохим.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 18 Dec 2014 18:51:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89578#p89578</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89577#p89577</link>
			<description><![CDATA[<p>Тот же <strong>mail.ru</strong> предоставляет 100Гб бесплатно, Яндекс - 15Гб, вроде бы. У яндекса мне не нравится то, что при редактировании файла ссылка на него становится недействительной, приходится заново включать общий доступ. Dropbox ссылки не меняет при редактировании?</p>]]></description>
			<author><![CDATA[null@example.com (Irbis)]]></author>
			<pubDate>Thu, 18 Dec 2014 18:49:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89577#p89577</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89576#p89576</link>
			<description><![CDATA[<p>Бесплатно только 2 гигабайта. Считается одним из самых надёжных, да и <a href="https://ru.wikipedia.org/wiki/Dropbox">всяких возможностей больше</a>.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 18 Dec 2014 18:47:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89576#p89576</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89575#p89575</link>
			<description><![CDATA[<p>Я бегло поискал, так и не понял, у них сколько гигов? И этот сервер ведь где то за бугром, а то что-то после github`а и прочего, зарубежные ресурсы как то приходится рассматривать в последнюю очередь.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 18 Dec 2014 18:38:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89575#p89575</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Написал и отладил программу --X--> "Коллекция скриптов и идей."]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=89574#p89574</link>
			<description><![CDATA[<p>Ну да, только места меньше. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 18 Dec 2014 18:31:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=89574#p89574</guid>
		</item>
	</channel>
</rss>
