如何在Python中运行音频和gdi效果而不需要音频剪切

问题描述 投票:0回答:1

我制作了一个运行 GDI PATCOPY 效果的 python 脚本。我想在它工作时添加音频,所以我使用 python 的

winsound
模块来发出蜂鸣声,并使用 python 的
Threading
模块同时运行 GDI 效果和蜂鸣声,但是当我运行脚本时,90% 的蜂鸣声都是发出的音频被切断或静音,如何修复静音?

这是我现在的代码:

from threading import Thread

import os    
from win32gui import *
from win32api import *
from win32ui import *
from win32con import *
from random import *


def func1():
    #sound generator
    import winsound

    freq = 500         
    dur = 1000
    freq1 = 600
    dur1 = 200
    freq2 = 100
    dur2 = 100
    freq3 = 900
    dur3 = 120
    freq4 = 700
    dur4 = 3000
    freq5 = 9000
    dur5 = 100
    freq6 = 5000
    dur6 = 500
    freq7 = 700
    dur7 = 700
    freq8 = 900
    dur8 = 400
    freq9 = 300
    dur9 = 900 
    winsound.Beep(freq, dur)
    winsound.Beep(freq1, dur1)
    winsound.Beep(freq2, dur2)
    winsound.Beep(freq3, dur3)
    winsound.Beep(freq4, dur4)
    winsound.Beep(freq5, dur5)
    winsound.Beep(freq6, dur6)
    winsound.Beep(freq7, dur7)
    winsound.Beep(freq8, dur8)
    winsound.Beep(freq9, dur9)

def func2():
    for i in range(1):
        desk = GetDC(0)
        x = GetSystemMetrics(0)
        y = GetSystemMetrics(1)
        print(x)
        print(y)
        #os.startfile('guiCorrupt.py')
        for i in range(50000):
            brush = CreateSolidBrush(RGB(
                randrange(255),
                randrange(255),
                randrange(255)
                )) #Creates a brush
            SelectObject(desk, brush) #Choose that we're drawing with our brush.
            PatBlt(desk, randrange(x), randrange(y), randrange(100), randrange(200), PATCOPY)
            DeleteObject(brush)
            #Sleep(1) #wait
        ReleaseDC(desk, GetDesktopWindow())
        DeleteDC(desk) #Deletes our DC.


if __name__ == '__main__':
    Thread(target = func1).start()
    Thread(target = func2).start()

我认为这与 GDI 效果本身有关,因为在不运行该效果的情况下,我可以很好地听到嘟嘟声,没有任何静音问题。

python python-3.x multithreading gdi winsound
1个回答
0
投票

尝试播放 wav 文件而不是单个音符

编辑: .wav 文件很大,真正的 GDI 恶意软件使用 bytebeat 来播放声音 这是 python 的存储库https://github.com/Itzsten/Python-ByteBeat

和一些示例:https://dollchan.net/bytebeat/#

© www.soinside.com 2019 - 2024. All rights reserved.