Почему в моем окне сообщений windows всегда выбирается путь c ++? - PullRequest
0 голосов
/ 19 апреля 2020

Ниже приведена программа, которую я пытаюсь прикрепить к окну, она работает, но я хотел, чтобы у пользователя была возможность попытаться прикрепить окно без повторного открытия программы. Я попытался сделать это с помощью оператора switch, но если процесс не был найден, и пользователь открыл его, затем нажал «повторить», почему он повторяет ошибку, когда процесс не открыт.
Код -

class attach 
{
DWORD ProcID;
HWND hwnd = FindWindowA(NULL, "SONIC HEROES(TM)");
void attempt()
{
    if (hwnd == NULL)
    {
        const int Window = MessageBoxA(0, "Failed to attach Window!", "Attention", MB_RETRYCANCEL | MB_ICONERROR);
        switch (Window)
        {
        case IDRETRY:
            attempt();
            break;
        case IDCANCEL:
            exit(-1);
            break;
        }
    }
    else
    {
        MessageBoxA(0, "Window Found!", "Attention", MB_OK | MB_ICONHAND);
    }
}
};

1 Ответ

0 голосов
/ 20 апреля 2020

Вы можете поместить FindWindowA в attempt() функцию и создать массив для завершения.

Вот пример минимального кода:

#include <Windows.h>
#include <iostream>

using namespace std;

CHAR* name = (CHAR*)malloc(1024);

class attach
{
public:     
    void attempt();

private:
    DWORD ProcID;
    HWND hwnd;
};

void attach::attempt()
{      
    hwnd = FindWindowA(NULL, name);
    if (hwnd == NULL)
    {
        hwnd = FindWindowA(NULL, name);
        const int Window = MessageBoxA(0, "Failed to attach Window!", "Attention", MB_RETRYCANCEL | MB_ICONERROR);
        switch (Window)
        {
        case IDRETRY:
            attempt();
            break;
        case IDCANCEL:
            return;
        }
    }
    else
    {
        MessageBoxA(0, "Window Found!", "Attention", MB_OK | MB_ICONHAND);
        cout << "If you want to attach new process, please input new application name:" << endl;
        cin >> name;
        attempt();
    }
}

int main()
{
    cout << "Input your application name:" << endl;
    cin >> name;
    attach a;
    a.attempt();

    free(name);

    return 0;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...