1 (изменено: vinternete, 2011-02-04 23:46:13)

Тема: AHK: Splashimage длина полосы или картинка

Решил сделать нехитрый макрос, который постоянно делает splashimage, нашел такой код

#SingleInstance, force
Coordmode Mouse, Screen
drawxhair(516,399)
drawXhair(xcoord,ycoord)
{
    loop
    {
;SplashImage , crossfire.png, B
Splashimage 3:,% "B W" xcoord-1 "H1 Y" ycoord "X0 CW00FF00"
Splashimage 4:,% "B W" A_ScreenWidth-1-xcoord "H1 Y" ycoord "X" xcoord+2 "CW00FF00"
Splashimage 5:,% "B H" ycoord-1 "W1 X" xcoord "Y0 CW00FF00"
Splashimage 6:,% "B H" A_ScreenHeight-1-ycoord "W1 X" xcoord "Y" ycoord+2 "CW00FF00"
}
}

но тут зеленые полосы очень длинные, можно ли их как то укратить, скажем до 5 пикселей каждую?
И еще вопрос, создал png картинку, тоже для splashimage.

#SingleInstance, force
Coordmode Mouse, Screen
drawxhair(516,399)
drawXhair(xcoord,ycoord)
{
    loop
    {
SplashImage , crossfire.png, B
}
}

Но при запуске вылетает ошибка от майкрософт, и предлагает отправить отчет. Где я допустил ошибку?

2

Re: AHK: Splashimage длина полосы или картинка

vinternete пишет:

нашел такой код

Код, по-моему, абсолютно бредовый. SplashImage здесь никаким боком не нужен. Опиши поконкретнее, что бы ты хотел получить в первом и во втором случае.
В заголовке после названия языка программирования принято ставить двоеточие, отредактируй.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Splashimage длина полосы или картинка

Цель следующая, в КС 1.6  у снайперских винтовок нет перекрестия(crossfire) в центре экрана, вот и задался  вопросом, как это реализовать на AHK.

4

Re: AHK: Splashimage длина полосы или картинка

А как должно передвигаться это перекрестье, вместе с курсором, или как?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Splashimage длина полосы или картинка

Это перекрестие должно быть четко по центру и не двигаться.
Задача сводится к тому, что бы создать какую либо фигуру (крест, например) поверх полноэкранного приложения. Splashimage не будет отображаться в игре, запущенной в полный экран.
Может быть на WinApi это возможно.

6

Re: AHK: Splashimage длина полосы или картинка

InFlames пишет:

Задача сводится к тому, что бы создать какую либо фигуру (крест, например) поверх полноэкранного приложения

Ага, теперь понял смысл кода из первого поста. Изображение постоянно перерисовывается, и поэтому видимо поверх полноэкранного приложения.
Тогда так:

drawxhair(516,399)
Return

drawXhair(xcoord,ycoord)
{
   loop
   {
      Splashimage 3:,% "CW00FF00 B W5 H1 Y" ycoord "X" xcoord-6
      Splashimage 4:,% "CW00FF00 B W5 H1 Y" ycoord "X" xcoord+2
      Splashimage 5:,% "CW00FF00 B H5 W1 X" xcoord "Y" ycoord-6
      Splashimage 6:,% "CW00FF00 B H5 W1 X" xcoord "Y" ycoord+2
      Sleep, 10
   }
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Splashimage длина полосы или картинка

Этого креста все равно не видно, когда запущена игра. И 10 мс всё равно дает значительную нагрузку на процессор, в итоге курсор постоянно меняет свое состояние на app_starting, а в игре падает FPS.

8

Re: AHK: Splashimage длина полосы или картинка

Ну, я в сети ничего не нашёл, как вешать окна поверх полноэкранных приложений.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Splashimage длина полосы или картинка

Жаль конечно. Хотелось бы иметь возможность создания Gui поверх полноэкранных приложений.

10

Re: AHK: Splashimage длина полосы или картинка

Можно ещё так попробовать. Требует наличия Gdip.ahk в пользовательской библиотеке.

   X = 516
   Y = 399
   
   SetWinDelay, 0
   
   HWND_TOPMOST := -1, SWP_NOMOVE := 2, SWP_NOSIZE := 1, WS_EX_LAYERED := 0x80000

   Gui, -Caption +E%WS_EX_LAYERED% +LastFound +AlwaysOnTop +ToolWindow +Disabled
   WinGet, ID
   Gui, Show, NA
   
   If !pToken := Gdip_Startup()
   {
      MsgBox, 48, Ошибка GDI+!
         , Убедитесь в наличии gdiplus.dll в вашей системе!
      ExitApp
   }
   
   hBM := CreateDIBSection(12, 12)
   hDC := CreateCompatibleDC()
   oBM := SelectObject(hDC, hBM)
   
   G := Gdip_GraphicsFromHDC(hDC)
   
   pPen := Gdip_CreatePen(0xFF00FF00, 2)
   Gdip_DrawLine(G, pPen, 0, 6, 4, 6), Gdip_DrawLine(G, pPen, 8, 6, 12, 6)
   Gdip_DrawLine(G, pPen, 6, 0, 6, 4), Gdip_DrawLine(G, pPen, 6, 8, 6, 12)
   Gdip_DeletePen(pPen)

   UpdateLayeredWindow(ID, hDC, X-6, Y-6, 12, 12)
   
   SelectObject(hDC, oBM)
   DeleteObject(hBM)
   DeleteDC(hDC)
   Gdip_DeleteGraphics(G)
   Gdip_Shutdown(pToken)
   
   Loop
   {
      DllCall("SetWindowPos", UInt, ID, Int, HWND_TOPMOST
         , Int, 0, Int, 0, Int, 0, Int, 0, Int, SWP_NOMOVE|SWP_NOSIZE)
      Sleep, 10
   }
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Splashimage длина полосы или картинка

Всё равно, крестик исчезает при запуске полноэкранного приложения.

12

Re: AHK: Splashimage длина полосы или картинка

А у меня на XP виден!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: Splashimage длина полосы или картинка

У меня Windows7

В каком приложении Вы проверяли?

14

Re: AHK: Splashimage длина полосы или картинка

У меня никаких игр не установлено, так что испытывал на полноэкранном варианте работы видеоплеера.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: Splashimage длина полосы или картинка

Видимо это немного другое, чем полноэкранный режим игры.

16

Re: AHK: Splashimage длина полосы или картинка

teadrinker пишет:
InFlames пишет:

Задача сводится к тому, что бы создать какую либо фигуру (крест, например) поверх полноэкранного приложения

Ага, теперь понял смысл кода из первого поста. Изображение постоянно перерисовывается, и поэтому видимо поверх полноэкранного приложения.
Тогда так:

drawxhair(516,399)
Return

drawXhair(xcoord,ycoord)
{
   loop
   {
      Splashimage 3:,% "CW00FF00 B W5 H1 Y" ycoord "X" xcoord-6
      Splashimage 4:,% "CW00FF00 B W5 H1 Y" ycoord "X" xcoord+2
      Splashimage 5:,% "CW00FF00 B H5 W1 X" xcoord "Y" ycoord-6
      Splashimage 6:,% "CW00FF00 B H5 W1 X" xcoord "Y" ycoord+2
      Sleep, 10
   }
}

В кс 1.6 работает замечательно, в BF2 в окне тоже работает превосходно, спасибо за помощь!

17

Re: AHK: Splashimage длина полосы или картинка

Странно, а у меня не видно этого прицела.
vinternete, CS 1.6 запускается в обычном режиме (FullScreen)?

18

Re: AHK: Splashimage длина полосы или картинка

Да.

Windows XP SP3

19 (изменено: InFlames, 2011-02-07 15:39:44)

Re: AHK: Splashimage длина полосы или картинка

Вот что нашел на офф форуме. Но написано, что этот хук легко определяется и античит может подумать, что это чит.
http://www.autohotkey.net/~MasterFocus/AHK/Lib/GPF/Doc/