C++ Как сделать проверку на открытие файла?

Пользователь
Статус
Оффлайн
Регистрация
13 Мар 2018
Сообщения
306
Реакции[?]
52
Поинты[?]
1K
Вообщем, я делал проверку на откытие файла на c# так -
Код:
Dim getprocessbyname() As Process

        getprocessbyname = Process.GetProcessesByName("processname")
        If getprocessbyname.Count Then
как мне сделать так же, но на с++?
 
Участник
Статус
Оффлайн
Регистрация
30 Авг 2020
Сообщения
777
Реакции[?]
245
Поинты[?]
10K
Вообщем, я делал проверку на откытие файла на c# так -
Код:
Dim getprocessbyname() As Process

        getprocessbyname = Process.GetProcessesByName("processname")
        If getprocessbyname.Count Then
как мне сделать так же, но на с++?
Ну если по названию, то используй FindWindow
 
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Янв 2019
Сообщения
838
Реакции[?]
298
Поинты[?]
17K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну как тебе уже написали можно по FindWindow (но лучше не делай так)

C++:
DWORD GetProcId(const char* procName)
    {
        DWORD procId = 0;
        HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

        if (hSnap != INVALID_HANDLE_VALUE)
        {
            PROCESSENTRY32 procEntry;
            procEntry.dwSize = sizeof(procEntry);

            if (Process32First(hSnap, &procEntry))
            {
                do
                {
                    if (!_stricmp(procEntry.szExeFile, procName))
                    {
                        procId = procEntry.th32ProcessID;
                        break;
                    }
                } while (Process32Next(hSnap, &procEntry));
            }
        }
        CloseHandle(hSnap);
        return procId;
    }
можешь получать PId через название процесса. (тоже не лучший вариант)
использование:
C++:
GetProcId("explorer.exe");
 
куплю спирт
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2018
Сообщения
295
Реакции[?]
67
Поинты[?]
0
ну как тебе уже написали можно по FindWindow (но лучше не делай так)

C++:
DWORD GetProcId(const char* procName)
    {
        DWORD procId = 0;
        HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

        if (hSnap != INVALID_HANDLE_VALUE)
        {
            PROCESSENTRY32 procEntry;
            procEntry.dwSize = sizeof(procEntry);

            if (Process32First(hSnap, &procEntry))
            {
                do
                {
                    if (!_stricmp(procEntry.szExeFile, procName))
                    {
                        procId = procEntry.th32ProcessID;
                        break;
                    }
                } while (Process32Next(hSnap, &procEntry));
            }
        }
        CloseHandle(hSnap);
        return procId;
    }
можешь получать PId через название процесса. (тоже не лучший вариант)
использование:
C++:
GetProcId("explorer.exe");
А что тогда лучший?
 
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Янв 2019
Сообщения
838
Реакции[?]
298
Поинты[?]
17K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
А что тогда лучший?
ну раз заговорили об открытом файле, то целесообразней было бы ему сделать драйвер (если он собрался делать какой-нибудь проект) и уже в дальнейшем чекать по драйверу.
Но раз он создал такую тему, то естественно он не напишет свой драйвер, вариант для него я скинул.
 
Эксперт
Статус
Оффлайн
Регистрация
17 Янв 2020
Сообщения
2,197
Реакции[?]
718
Поинты[?]
79K
Товары в продаже
1
А что тогда лучший?
Например(FindWindow): хочешь проверить открыть ли раст. Открыта окно ияка - "Rust"(Название окна) и открыта папка в проводнике под названием "Rust". А твой код подумает что открыта раст. Думаю понял что лучше.
 
ЧВК EB_LAN
Забаненный
Статус
Оффлайн
Регистрация
12 Янв 2019
Сообщения
838
Реакции[?]
298
Поинты[?]
17K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ну если по названию, то используй FindWindow

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.


Вообщем, я делал проверку на откытие файла на c# так -
Код:
Dim getprocessbyname() As Process

        getprocessbyname = Process.GetProcessesByName("processname")
        If getprocessbyname.Count Then
как мне сделать так же, но на с++?
А ну и расскажу тебе почему не стоит юзать FindWindow. Так как его легко пропатчить и он уже будет бесполезен для тебя, да пропатчить тот участок кода что кинул я тоже можно, но смысла от этого не будет.
 
Участник
Статус
Оффлайн
Регистрация
15 Дек 2018
Сообщения
1,081
Реакции[?]
213
Поинты[?]
0
Какой нахуй драйвер? Зачем он вообще здесь нужен? Какой патч блять, если кто-то захочет он тебе весь процесс в юм перепатчит, будешь потом ныть: "я же драйвер сделал, как так". Человек попросил одну лишь проверку на спп, ты ему скинул ахуенный вариант с названиями процессов - то что надо! Какие драйвера, о чем ты ебать.
 
smoking on that #pragma pack
Пользователь
Статус
Оффлайн
Регистрация
10 Янв 2018
Сообщения
324
Реакции[?]
96
Поинты[?]
1K
Например(FindWindow): хочешь проверить открыть ли раст. Открыта окно ияка - "Rust"(Название окна) и открыта папка в проводнике под названием "Rust". А твой код подумает что открыта раст. Думаю понял что лучше.
класснейм для тебя какая-то шутка?
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вообщем, я делал проверку на откытие файла на c# так -
Код:
Dim getprocessbyname() As Process

        getprocessbyname = Process.GetProcessesByName("processname")
        If getprocessbyname.Count Then
как мне сделать так же, но на с++?
Файл на открытие твой или сторонний?
 
Сверху Снизу