C++ Поиск файла

Участник
Участник
Статус
Оффлайн
Регистрация
18 Май 2023
Сообщения
1,011
Реакции
230
Мне нужно чтобы лоадер искал нужную мне игру(не стим) и сам ее запускал. К примеру игра находится в D:\Games\Game\Game.exe. И мне нужно чтобы лоадер нашел данный путь и запустил ее. Прочитал кучу доков и не нашел примерный код, который будет это делать
 
можешь по Start Menu бегать и искать ярлык на игру, но это же бред ссаный
 
можешь по Start Menu бегать и искать ярлык на игру, но это же бред ссаный
Я рот ебал в ручную запускать игру, а потом лоадер. Я хочу тупо 1 экхешник запустить и ждать запуска игры
Пытался через filesystem реализовать, но без успешно
 
Я рот ебал в ручную запускать игру, а потом лоадер. Я хочу тупо 1 экхешник запустить и ждать запуска игры
Пытался через filesystem реализовать, но без успешно
shellexecute/createprocess же
 
shellexecute/createprocess же
Понятное дело, но мне нужно чтобы он искал именно путь и сам ехе файл. Путь до игры может находится в рандомных местах у других пользователей. В моем случае она находится на диске D. У друга на C.
 
если речь про игру стима или ориджина (вроде тоже сохраняет) - ищи в реестре в InstallLocation или чет такое.
если ты хочешь найти какую-либо екзешку допустим по имени из всех папок - не думаю что это возможно адекватным образом, либо тебе придётся енумить все файлы, а это пиздец

p.s. возможно и существует оптимальный способ, но я лично о таком не знаю и подозреваю что подобного не существует
 
Мне нужно чтобы лоадер искал нужную мне игру(не стим) и сам ее запускал. К примеру игра находится в D:\Games\Game\Game.exe. И мне нужно чтобы лоадер нашел данный путь и запустил ее. Прочитал кучу доков и не нашел примерный код, который будет это делать
Код:
Expand Collapse Copy
system("steam://run/730");
В гугл не вариант было написать?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Понятное дело, но мне нужно чтобы он искал именно путь и сам ехе файл. Путь до игры может находится в рандомных местах у других пользователей. В моем случае она находится на диске D. У друга на C.
поищи в реестре, так же как ексешник унинсталлера вносится для удаления через панель, по идее можно найти и ексешник игры, но я не проверял.
 
Вообще как вариант можно использовать BrowseFolder , что бы юзер, или ты, сами указали папку до игры.

C++:
Expand Collapse Copy
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 "";
 
Можешь попробовать поискать через
Пожалуйста, авторизуйтесь для просмотра ссылки.
или
Пожалуйста, авторизуйтесь для просмотра ссылки.
(ужас, я никогда не использовал ни то ни другое) но наверное лучше всего будет давать юзеру самому выбрать место с экзешником игры один раз и потом его куда-то закешировать чтобы он это не делал каждый раз поскольку может быть несколько инсталляций игры или рандомнейший экзешник с таким-же названием или ещё что-то в этом духе.
 
Назад
Сверху Снизу