Странникх пишет:Ваш способ ведь будет работать с другими файлами (картинками например для GUI) ?
Нет, это только для wav-ресурсов, с картинками по-другому.
С помощью FileInstall:
ResRead(Sound, "C:\Windows\Media\tada.wav") && PlaySound(Sound)
Return
FileInstall, C:\Windows\Media\tada.wav, tada.wav ; эта команда сработает только для компилятора
Return
ResRead(ByRef Data, FilePath)
{
if !A_IsCompiled
{
FileGetSize, nSize, %FilePath%
FileRead, Data, *c %FilePath%
}
else if (hMod := DllCall("GetModuleHandle", UInt, 0, Ptr))
&& (hRes := DllCall("FindResource", Ptr, hMod, Str, FilePath, UInt, RT_RCDATA := 10, Ptr))
&& (hResData := DllCall("LoadResource", Ptr, hMod, Ptr, hRes, Ptr))
&& (pResData := DllCall("LockResource", Ptr, hResData, Ptr))
VarSetCapacity(Data, nSize := DllCall("SizeofResource", Ptr, hMod, Ptr, hResData))
, DllCall("RtlMoveMemory", Str, Data, Ptr, pResData, Ptr, nSize)
Return nSize
}
PlaySound(ByRef Sound)
{
Return DllCall("Winmm\PlaySound", Ptr, &Sound, UInt, 0, UInt, SND_MEMORY := 0x4 | SND_NODEFAULT := 0x2)
}
С помощью Ресторатора. Создать идентификатор ресурса WAVE, назвать ресурс числом (ResourceName := 123)
ResourceName := 123
SND_NODEFAULT := 2, SND_ASYNC := 0x1, SND_RESOURCE := 0x40004
DllCall("Winmm\PlaySound", UInt, ResourceName, Ptr, DllCall("GetModuleHandle", UInt, 0, Ptr), UInt, SND_NODEFAULT|SND_ASYNC|SND_RESOURCE)
Разработка AHK-скриптов:
e-mail
dfiveg@mail.ruTelegram
jollycoder