2

最も奇妙なことが起こっています。以下のプログラムでは、1 行を出力しています。そのまま、プログラムは次を出力します。

-----FOCUS-----:0x22fc80:

ただし、cout の後に 7 つのステートメントのいずれかをコメントアウトすると、次のようになります。

-----FOCUS-----:0:

tchar.h、windows.h、iostream、および Psapi.h を含めました。私は MinGW-64 を使用しており、コンパイルするコマンドは次のとおりです。

"C:\MinGW64\bin\g++.exe" -o MyProgram.exe MyProgram.cpp -lpsapi

プログラムは次のとおりです。

int main()
{
    HWND focusThreadWnd = GetForegroundWindow();
    DWORD focusThreadID = GetWindowThreadProcessId(focusThreadWnd,0);
    GUITHREADINFO focusThreadInfo;
    GetGUIThreadInfo(focusThreadID, &focusThreadInfo);
    HWND focus = focusThreadInfo.hwndFocus;
    cout << "-----FOCUS-----:" << focus << ":" << endl;

    HWND k1Focus = focusThreadWnd;
    HWND k2Focus = focusThreadWnd;
    HWND k3Focus = focusThreadWnd;
    HWND k4Focus = focusThreadWnd;
    HWND k5Focus = focusThreadWnd;
    HWND k6Focus = focusThreadWnd;
    HWND k7Focus = focusThreadWnd;
}

私の質問は、cout の後のコマンドが出力にどのように影響するかです。また、これら 7 つのコマンドのストレージによって出力が変わるのはなぜですか? そして、7の何が特別なのですか?

4

1 に答える 1