とあるゲームで、ゲームを収録している人には特殊演出が入る仕様があると聞きました。
面白そうと思ったので、これの実装方法を考えてみました。メタ要素のあるゲームを作りたい方は参考にしてみて下さい。
……あ、言い忘れていましたがC言語です。C++でももちろん動きます。あと、Windowsでしか動きません。
#include <Windows.h>
#include <stdio.h>
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lp) {
TCHAR window_text[1024];
GetWindowText(hWnd, window_text, 1024);
if (window_text[0] == L'O' && window_text[1] == L'B' && window_text[2] == L'S') {
*(bool*)lp = true;
}
return TRUE;
}
int main(void) {
bool is_obs = false;
EnumWindows(EnumWindowsProc, (LPARAM)(&is_obs));
if (is_obs) {
printf("収録してる\n");
}
}
Windows APIのEnumWindows
という関数を使っています。ウィンドウ名がOBSの三文字で始まる時、「収録してる」と表示されるプログラムです。