ethical.blue Magazine

// Cybersecurity clarified.

Odegranie melodii Syn marnotrawny przez funkcję Beep(); z WinAPI

28.03.2022   Dawid Farbaniec
...
W interfejsie programowania aplikacji dla Windows nazywanym w skrócie WinAPI można znaleźć funkcję Beep. Pozwala ona na odegranie dźwięku na głośniczku systemowym. Odgrywany dźwięk jest prosty, ale można ustawić mu częstotliwość (pierwszy parametr) oraz czas trwania w milisekundach (drugi parametr). Prototyp funkcji prezentuje się następująco:
BOOL WINAPI Beep(

  _In_ DWORD dwFreq,
  _In_ DWORD dwDuration
);

Odegranie melodii Syn marnotrawny

Przykładowy kod w języku C++ jest następujący:
#include <iostream>

#include <vector>
#include <Windows.h>

class N
{
public:
    int frequency;
    int duration;

    N(int a, int b)
    {
        frequency = a;
        duration = b;
    }
};

int main(int argc, char* argv[])
{
    std::vector<N> melody(
        {
            N(1044, 237), N(1044, 475), N(1044, 237), N(1044, 475), N(833, 475), N(934, 475),
            N(934, 950), N(934, 475), N(934, 475), N(934, 237), N(1044, 475), N(1175, 237),
            N(1044, 950), N(1044, 237), N(1044, 475),N(1044, 237), N(1044, 475), N(833, 475),
            N(934, 475), N(934, 950), N(833, 475), N(833, 237), N(833, 237), N(783, 475),
            N(783, 475), N(698, 950), N(1044, 950),N(833, 475), N(934, 475), N(1044, 950),
            N(1175, 237), N(1044, 475), N(934, 950), N(934, 950), N(783, 475), N(833, 475),
            N(934, 950), N(1044, 475), N(833, 237), N(783, 475), N(698, 950)
        });

    for (auto const& x : melody)
    {
        std::cout << " Beep(" << x.frequency << "," << x.duration << ");" << std::endl;
        ::Beep(x.frequency, x.duration);
    }

    std::cout << "-== ethical.blue ==-" << std::endl;

    return EXIT_SUCCESS;
}

Posłuchaj melodii

Wykaz literatury

https://docs.microsoft.com/en-us/windows/win32/api/utilapiset/nf-utilapiset-beep [access: 2022-03-28]