1

Тема: AHK: Кастомное уведомление

Сделал кастомное уведомления. Все отлично, но есть одно но. Оно у меня немного прозрачное, за основу взят черный цвет и при прозрачности текст который в уведомлении тоже меняет прозрачность. Нужно чтобы фон был полупрозрачный, а текст белый.


#SingleInstance, Force
#NoEnv
DetectHiddenWindows, On

F4::
{
	WindowTip("Тестовое сообщение", "10000")
	Return
}

WindowTip(Description, Sleep) {
    global tipState := !tipState
    If tipState
    {
        customColor := "EEAA99"
        Gui, Tip:+LastFound
        Gui, Tip:+AlwaysOnTop
        Gui, Tip:-Caption
        Gui, Tip:+ToolWindow
        Gui, Tip:Margin, 30, 15
        Gui, Tip:Color, 000000
        Gui, Tip:Font, s10 Consolas cFFFFFF
        Gui, Tip:Add, Text,, % Description
        Gui, Tip:Show, xCenter y15 NoActivate, windowTip
        WinGetPos, X, Y, Width, Height, windowTip
        WinSet, Region, 0-0 w%Width% h%Height% R8-8, windowTip
        global loopTC := 0
        Loop, 5
        {
            global loopTC += 10
            WinSet, TransColor, %customColor% %loopTC%
            Sleep, 20
        }
        Sleep, % Sleep
        Loop, 5
        {
            global loopTC -= 10
            WinSet, TransColor, %customColor% %loopTC%
            Sleep, 100
        }
        Gui, Tip:Hide
        Gui, Tip:Destroy
        global tipState := !tipState
    }
    Else {
        Gui, Tip:Destroy
    }
    Return
}

https://i.imgur.com/pqtIniD.png

AHK Province — сообщество.

2

Re: AHK: Кастомное уведомление

Создавайте окно на GDI+.

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

3

Re: AHK: Кастомное уведомление

Штука конечно классная, но так и не понял как сделать размер окошка автоматическим, чтобы оно под размер текста подстраивалось.
https://i.imgur.com/jQiMzm2.png

AHK Province — сообщество.

4

Re: AHK: Кастомное уведомление

Смотрите, что Gdip_TextToGraphics() возвращает.

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

5 (изменено: Phoenixxx_Czar, 2023-06-01 12:18:14)

Re: AHK: Кастомное уведомление

Немного покритикую код, с вашего позволения).
1. Почему вы вторым аргументом передаете строку, а не число?
2. Зачем создание gui вы помещаете в такой огромный блок if`а? Вы же можете сделать сделать просто:


if (!tipState)
{
	Gui, Tip:Destroy
	return
}

; остальной код

3. Зачем вы объявляете глобальную переменную "tipState" ВНУТРИ функции? Или еще проще - зачем она глобальная? Прочитайте про "static" переменные.
4. Теперь "customColor", вынесите ее либо глобально, либо сделайте ее статической.
4. loopTC - тоже не понятно, зачем она глобальная и тем более зачем при каждой операции дописывать "global" в начало.
5. Какой в этом смысл?


Gui, Tip:Hide
Gui, Tip:Destroy

Вам достаточно сделать "destroy".
6. Какой смысл return`а в конце функции?

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

6

Re: AHK: Кастомное уведомление

1. А какая разница? Как по мне строку более компактней.
2. Так от получилось)
3. Вне функции этой переменной нет, она просто используется в другой части кода.
4. Это я уже сделал пока ждал тут ответ)
5. Этого я даже не заметил...
6. Если без hide делать то окно становиться черным и пропадает, а с hide такой штуки нет.
7. Изначально это была не функция.

AHK Province — сообщество.

7

Re: AHK: Кастомное уведомление

Ещё некликабельность добавить бы, чтобы фокус на окно случайно не попал (если например использовать во время игры).

Win11x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101

8

Re: AHK: Кастомное уведомление

В моей версии, которую я показал ещё в первом сообщении есть эта функция. Окно просто не функционально. Так то я уже обошел полупрозрачный текст и всё отлично теперь выглядит. И без всяких gdip+)

AHK Province — сообщество.

9 (изменено: __Михаил__, 2023-06-03 02:27:53)

Re: AHK: Кастомное уведомление

alexsokolin, Нет, при запуске этого кода на окно можно кликнуть и фокус с текущего перейдёт в него. Более того я могу его перемещать (через 'WinMove').

;07:27 31.12.2020	[Irbis] мод.
^#LButton::	; Ctrl + Win + LButton - Включить режим перемещения окна пока зажат Ctrl.
CoordMode, Mouse
SetWinDelay, -1
SetBatchLines, -1

MouseGetPos, Start_X, Start_Y, Win
WinGetPos, X_Win, Y_Win,,, ahk_id %Win%

While GetKeyState("Ctrl", P){
 MouseGetPos, Current_X, Current_Y
 WinMove, ahk_id %Win%,, X_Win + Current_X - Start_X, Y_Win + Current_Y - Start_Y
}
Return
Win11x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101