1

Тема: AHK: Как сделать появление картинки в определенных координатах

Нужно сделать появление картинки с пути C:/картинка.jpg в определенных координатах на экране, при этом так, чтобы картинка была без рамки и при появлении не считалась активным окном, а затем нужно, чтобы через секунду эта картинка сменялась на картинку с пути C:/картинка2.jpg, которая должна быть также расположена в тех же координатах что и первая, и также появляясь как неактивное окно. Все картинки должны быть поверх всех окон, но при этом не должны быть активными(!). К сожалению, со своими знаниями о GUI я не смогу очень долго написать именно такое, получилось лишь активное окно и не более того.

2

Re: AHK: Как сделать появление картинки в определенных координатах

Самое главное сделано. Вы сформулировали задачу и изучили документацию. Ещё хорошо было бы поискать по форуму.
Выложите свой код и опишите, в чём затруднения.

3

Re: AHK: Как сделать появление картинки в определенных координатах

Gui, 1: -Caption +Owner +AlwaysOnTop -Border +Disabled
Gui, 2: -Caption +Owner +AlwaysOnTop -Border +Disabled
Gui, 1: Add, Picture,, c:\картинка.bmp
Gui, 2: Add, Picture,, c:\картинка2.bmp
Gui, 1: Show, Center AutoSize
sleep 1000
Gui, 2: Show, Center AutoSize
sleep 1000
ExitApp

4 (изменено: Странник, 2013-06-07 08:29:26)

Re: AHK: Как сделать появление картинки в определенных координатах

Большое спасибо за код. Я его доработал, но, к сожалению, до сих пор не могу понять почему фон картинки белый, а не прозрачный.
Вот код:

#NoEnv
#SingleInstance Force
F12::
Gui, 1: -Caption +Owner +AlwaysOnTop -Border +Disabled -Lastfound 
Gui, 2: -Caption +Owner +AlwaysOnTop -Border +Disabled -Lastfound
Gui, 1: Add, Picture,, C:\Users\Денис\Desktop\2.png
Gui, 2: Add, Picture,, C:\Users\Денис\Desktop\1.png
Gui, 1: Show, NoActivate x0 y0 
sleep 1000
Gui, 2: Show, NoActivate x0 y0 
sleep 1000
Gui, 1: Cancel
Gui, 2: Cancel
return

Картинки:
http://savephoto.ru/f/kkc02wmt0nv  (скачивание оригинала http://www.sendspace.com/file/3vko70)
http://savephoto.ru/F/43hkfj3e2zh (скачивание оригинала http://www.sendspace.com/file/vyepu3)
Картинки созданы в фотошопе с прозрачным фоном в формате png. Почему они имеют белый фон, когда их запускает скрипт мне не понятно.
Еще есть вопрос касательно запускной клавиши - как сделать при повторном нажатии на F12 возврат к прочтению сверху? То есть если в данном коде я нажму на F12, когда показана картинка с цифрой 1, то скрипт не  вернется к началу прочтения, чтобы показать картинку с цифрой 2, а продолжит выполнение пока не дойдет до параметра return.

5

Re: AHK: Как сделать появление картинки в определенных координатах

Самый простой способ (из известных мне) прекратить выполнение в любом месте и запустить скрипт снова - через команду Reload.
Правда, в этом случае при запуске происходит первоначальное выполнение секции автозапуска и однократный показ картинок. Чтобы этого не происходило, я сделал проверку на передачу параметров в скрипт. (if !%0%)
Если запустить скрипт с любым параметром, например МойСкрипт.ahk /1 , то картики будут показаны только по хоткею.

#NoEnv
#SingleInstance Force
if !%0%
{
   Gui, 1: -Caption +Owner +AlwaysOnTop -Border +Disabled +Lastfound 
   Gui, 1: Color, 0
   WinSet, TransColor, 0
   Gui, 2: -Caption +Owner +AlwaysOnTop -Border +Disabled +Lastfound
   Gui, 2: Color, FFFFFF
   WinSet, TransColor, FFFFFF
   Gui, 1: Add, Picture,, C:\Users\Денис\Desktop\2.png
   Gui, 2: Add, Picture,, C:\Users\Денис\Desktop\1.png
   Gui, 1: Show, NoActivate x0 y0 
   sleep 1000
   Gui, 1: Cancel
   Gui, 2: Show, NoActivate x0 y0 
   sleep 1000
   Gui, 2: Cancel
}
return
F12:: Reload

6 (изменено: Странник, 2013-06-09 09:14:56)

Re: AHK: Как сделать появление картинки в определенных координатах

Я не могу сделать так, чтобы при первом нажатии 1 запускался GUI, а при втором нажатии 1 делался Reload (с сбросом sleep). Можно все это реализовать в виде запуска при первом нажатии 1 отдельного скрипта с GUI кодом, а при втором нажатии 1 просто выход скрипта с GUI кодом и снова его запуск, но этот вариант не подходит так как цель стоит сделать все в одном скрипте.

7

Re: AHK: Как сделать появление картинки в определенных координатах

Ничего не понятно. Что такое "сброс sleep"? Распиши алгоритм подробней при первом запуске, и последующих нажатиях.

8

Re: AHK: Как сделать появление картинки в определенных координатах

В общем, при каждом нажатии клавиши 1 должны появляться показ цифр 2 и 1 длительностью одной секундой каждой из цифр. Проблема сейчас в том, что в текущем коде нельзя нажать клавишу 1 пока не закончится показ цифр 2 и 1 так как в нем есть sleep. Если нажать после того, как показ закончится, то цифры появятся снова, как и должно быть, но задумка состоит в том, чтобы можно было нажать клавишу 1 в тот момент, когда идет уже текущий показ цифр, и если идет текущий показ цифр, то закрыть текущий показ и запустить его по-новому (то есть сделать Reload скрипта).

9

Re: AHK: Как сделать появление картинки в определенных координатах

Вы скрипт из поста №5 пробовали запускать? Он именно так и работает. Только F12:: на 1:: замените. У меня он прекрасно справился с задачей и на Win7 и на XP, версия AHK_L 1.1.9.4
Чтобы при первом запуске, без клавиши 1, скрипт не срабатывал, добавьте к строке запуска любой параметр:
http://savepic.ru/4644653m.png

10 (изменено: Странник, 2013-06-10 12:49:41)

Re: AHK: Как сделать появление картинки в определенных координатах

Да, но проблема в том, что нужно поставить клавишу 1 (как запускную) в начало скрипта и функцию Reload при втором нажатии клавиши 1.

11

Re: AHK: Как сделать появление картинки в определенных координатах

f11::
if (n != 1)
{
   msgbox
   n = 1
}
Else
   Reload
return

12

Re: AHK: Как сделать появление картинки в определенных координатах

1::        
if (n != 1)
{
ImageSearch, FoundX, FoundY, 940, 968, 956, 977, C:\Скрипты\1.bmp
if ErrorLevel = 0
SendInput IШ

if ErrorLevel = 1
SendInput O

   Gui, 1: -Caption +Owner +AlwaysOnTop -Border +Disabled +Lastfound 
   Gui, 1: Color, 0
   WinSet, TransColor, 0
   Gui, 2: -Caption +Owner +AlwaysOnTop -Border +Disabled +Lastfound
   Gui, 2: Color, FFFFFF
   WinSet, TransColor, FFFFFF
   Gui, 1: Add, Picture,, C:\Users\Денис\Desktop\2.png
   Gui, 2: Add, Picture,, C:\Users\Денис\Desktop\1.png
   Gui, 1: Show, NoActivate x927 y960 
   sleep, 1000
   Gui, 1: Cancel
   Gui, 2: Show, NoActivate x927 y960
   sleep, 1000
   Gui, 2: Cancel
  n = 1
}
Else
    Reload
return

Вот скрипт. Ваш код тоже не работает как должно быть.

13 (изменено: Malcev, 2013-06-10 17:14:24)

Re: AHK: Как сделать появление картинки в определенных координатах

http://forum.script-coding.com/viewtopi … 862#p58862

14

Re: AHK: Как сделать появление картинки в определенных координатах

Malcev привел в посте #11 рабочий пример, только нужно разрешить повторный запуск хоткея первой директивой.

#MaxThreadsPerHotkey 2
1::
if !n
{
  n = 1
  MsgBox,,, Поехали!,10
  Sleep 10000 
}
Else
    Reload
return

15 (изменено: serzh82saratov, 2013-06-17 08:45:15)

Re: AHK: Как сделать появление картинки в определенных координатах

Можно сделать скучнее - без Reload и новых окон под каждую картинку.


MaxIndex := 2, Path := "C:\Users\sergey\Desktop\", Ext := ".png"
Gui Margin, 0, 0
Gui Color, D3DAED 
Gui -Caption +AlwaysOnTop +E0x08000000 +Lastfound 
WinSet, TransColor, D3DAED
Gui Add, Picture, vPicture 
Return

1::
    Index := MaxIndex
    SetTimer, Hide, Off 
    
Picture:  
    GuiControl,, Picture, % Path "" Index-- "" Ext
    Gui Show, NA x5 y5 AutoSize
    SetTimer, % Index = 0 ? "Hide" : "Picture", -1000
    Return
    
Hide:
    Gui Hide 
    Return

+ В обратном порядке:

MaxIndex := 2, Path := "C:\Users\sergey\Desktop\", Ext := ".png"
Gui Margin, 0, 0
Gui Color, D3DAED 
Gui -Caption +AlwaysOnTop +E0x08000000 +Lastfound 
WinSet, TransColor, D3DAED
Gui Add, Picture, vPicture 
Return

1::
    Index := 0
    SetTimer, Hide, Off 
    
Picture:  
    GuiControl,, Picture, % Path "" ++Index "" Ext
    Gui Show, NA x5 y5 AutoSize
    SetTimer, % Index = MaxIndex ? "Hide" : "Picture", -1000
    Return
    
Hide:
    Gui Hide 
    Return

+ Или "типа картинки"

MaxIndex := 20, Chr := 0x2460
Gui Margin, 0, 0
Gui, Font, s100, Calibri
Gui -Caption +AlwaysOnTop +E0x08000000 +Lastfound 
Gui Color, 0x1C9900
WinSet, TransColor, 0x1C9900
Gui Add, Text, vText cDBC935, % Chr
Return

1:: 
    iChr := Chr+MaxIndex
    SetTimer, Hide, Off 
    
Picture:  
    GuiControl,, Text, % Chr(--iChr)
    Gui Show, NA x5 y5 AutoSize
    SetTimer, % iChr = Chr ? "Hide" : "Picture", -100
    Return
    
Hide:
    Gui Hide 
    Return    
+ Или просто цифры

MaxIndex := 100
Gui Margin, 0, 0
Gui, Font, s64 Bold, Tempus Sans ITC 
Gui -Caption +AlwaysOnTop +E0x08000000 +Lastfound 
Gui Color, 0x1C9900
WinSet, TransColor, 0x1C9900
Gui Add, Text, vText cDBC935 Center, % MaxIndex
Return

1:: 
    Num := MaxIndex
    SetTimer, Hide, Off 
    Gui Show, NA x5 y5 
    
Picture:  
    GuiControl,, Text, % Num--
    SetTimer, % Num = 0 ? "Hide" : "Picture", -100
    Return
    
Hide:
    Gui Hide 
    Return 


+ Показ превью всех картинок из папки

Array := []
Loop, D:\Images\*.*
   A_LoopFileExt ~= "(jpg|png|gif|ico|bmp)" 
   ? Array.Insert(A_LoopFileLongPath) : ""
Gui Margin, 0, 0
Gui -Caption +AlwaysOnTop +E0x08000000 +Lastfound 
Gui Color, F2F5FA
WinSet, TransColor, F2F5FA
Gui Add, Picture, vPicture
Return

1::
    Index := 0 
    SetTimer, Hide, Off
    
Picture:  
    GuiControl, -Redraw, Picture
    GuiControl,, Picture, % "*w200 *h-1 " Array[++Index] 
    GuiControl, +Redraw, Picture 
    Gui Show, NA x5 y5 AutoSize
    SetTimer, % Index = Array.MaxIndex() ? "Hide" : "Picture", -1000
    Return
    
Hide:
    Gui Hide
    Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui