C++ Вопрос Поиск файла

Участник
Статус
Оффлайн
Регистрация
18 Май 2023
Сообщения
658
Реакции[?]
173
Поинты[?]
0
Мне нужно чтобы лоадер искал нужную мне игру(не стим) и сам ее запускал. К примеру игра находится в D:\Games\Game\Game.exe. И мне нужно чтобы лоадер нашел данный путь и запустил ее. Прочитал кучу доков и не нашел примерный код, который будет это делать
 
Участник
Статус
Оффлайн
Регистрация
18 Май 2023
Сообщения
658
Реакции[?]
173
Поинты[?]
0
можешь по Start Menu бегать и искать ярлык на игру, но это же бред ссаный
Я рот ебал в ручную запускать игру, а потом лоадер. Я хочу тупо 1 экхешник запустить и ждать запуска игры
Пытался через filesystem реализовать, но без успешно
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,605
Реакции[?]
607
Поинты[?]
48K
Я рот ебал в ручную запускать игру, а потом лоадер. Я хочу тупо 1 экхешник запустить и ждать запуска игры
Пытался через filesystem реализовать, но без успешно
shellexecute/createprocess же
 
Участник
Статус
Оффлайн
Регистрация
18 Май 2023
Сообщения
658
Реакции[?]
173
Поинты[?]
0
shellexecute/createprocess же
Понятное дело, но мне нужно чтобы он искал именно путь и сам ехе файл. Путь до игры может находится в рандомных местах у других пользователей. В моем случае она находится на диске D. У друга на C.
 
Stop Staring At the Shadows
Участник
Статус
Оффлайн
Регистрация
10 Окт 2020
Сообщения
519
Реакции[?]
497
Поинты[?]
86K
если речь про игру стима или ориджина (вроде тоже сохраняет) - ищи в реестре в InstallLocation или чет такое.
если ты хочешь найти какую-либо екзешку допустим по имени из всех папок - не думаю что это возможно адекватным образом, либо тебе придётся енумить все файлы, а это пиздец

p.s. возможно и существует оптимальный способ, но я лично о таком не знаю и подозреваю что подобного не существует
 
Начинающий
Статус
Оффлайн
Регистрация
28 Авг 2023
Сообщения
175
Реакции[?]
24
Поинты[?]
24K
Мне нужно чтобы лоадер искал нужную мне игру(не стим) и сам ее запускал. К примеру игра находится в D:\Games\Game\Game.exe. И мне нужно чтобы лоадер нашел данный путь и запустил ее. Прочитал кучу доков и не нашел примерный код, который будет это делать
Код:
system("steam://run/730");
В гугл не вариант было написать?
 
Забаненный
Статус
Оффлайн
Регистрация
16 Апр 2020
Сообщения
155
Реакции[?]
53
Поинты[?]
33K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Участник
Статус
Оффлайн
Регистрация
4 Мар 2021
Сообщения
898
Реакции[?]
179
Поинты[?]
93K
Понятное дело, но мне нужно чтобы он искал именно путь и сам ехе файл. Путь до игры может находится в рандомных местах у других пользователей. В моем случае она находится на диске D. У друга на C.
поищи в реестре, так же как ексешник унинсталлера вносится для удаления через панель, по идее можно найти и ексешник игры, но я не проверял.
 
На самом деле я Zodiak
Участник
Статус
Оффлайн
Регистрация
22 Дек 2020
Сообщения
1,052
Реакции[?]
183
Поинты[?]
72K
Вообще как вариант можно использовать BrowseFolder , что бы юзер, или ты, сами указали папку до игры.

C++:
static int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{

    if (uMsg == BFFM_INITIALIZED)
    {
        std::string tmp = (const char*)lpData;
        std::cout << "path: " << tmp << std::endl;
        SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
    }

    return 0;
}

std::string BrowseFolder(std::string saved_path)
{
    TCHAR path[MAX_PATH];

    const char* path_param = saved_path.c_str();

    BROWSEINFO bi = { 0 };
    bi.lpszTitle = "Сука найди уже папку ебаную...";
    bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;
    bi.lpfn = BrowseCallbackProc;
    bi.lParam = (LPARAM)path_param;

    LPITEMIDLIST pidl = SHBrowseForFolder(&bi);

    if (pidl != 0)
    {
        SHGetPathFromIDList(pidl, path);

        IMalloc* imalloc = 0;
        if (SUCCEEDED(SHGetMalloc(&imalloc)))
        {
            imalloc->Free(pidl);
            imalloc->Release();
        }

        return path;
    }

    return "";
 
Pa$$ter
Пользователь
Статус
Оффлайн
Регистрация
9 Июн 2020
Сообщения
241
Реакции[?]
83
Поинты[?]
12K
Можешь попробовать поискать через
Пожалуйста, авторизуйтесь для просмотра ссылки.
или
Пожалуйста, авторизуйтесь для просмотра ссылки.
(ужас, я никогда не использовал ни то ни другое) но наверное лучше всего будет давать юзеру самому выбрать место с экзешником игры один раз и потом его куда-то закешировать чтобы он это не делал каждый раз поскольку может быть несколько инсталляций игры или рандомнейший экзешник с таким-же названием или ещё что-то в этом духе.
 
Сверху Снизу