Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 39

Функция не принимает аргумент

15.07.2017, 11:24. Показов 1146. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
const char SDFN[] = "dhcpcsvc.dll", SL[] = "Стерео", procName[] = "launcher.exe";
так выглядят константы

C++
1
DWORD PID = processIdPlease(procName);
так я вызываю функцию для поиска ида по названию экзешника

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    DWORD processIdPlease(const char* __processName)
{
    HANDLE hnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    char exeName[sizeof(__processName)];
    PROCESSENTRY32 processStruct;
    Process32First(hnap, &processStruct);
    CharToOemW(processStruct.szExeFile, exeName);
    if (strcmp(exeName, __processName))
    {
        do
        {
            Process32Next(hnap, &processStruct);
            processStruct.dwSize = sizeof(PROCESSENTRY32);
            CharToOemW(processStruct.szExeFile, exeName);
                        if (!strcmp(exename, __processName))
                                 break;
        } while (strcmp(exeName, __processName));
    }
    DWORD PID = processStruct.th32ProcessID;
    return PID;
}
Суть проблемы: функция processIdPlease не принимает имя процесса, хотя указал вроде всё правильно ._.
Ну, и из-за этого у меня не удаётся компиляция. Что я не так сделал? Помогите пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.07.2017, 11:24
Ответы с готовыми решениями:

Ошибка: функция не принимает 1 аргумент
Не пойму в чём дело. Ошибку выдаёт на этой строчке - timeinfo = localtime (&now); Вот сам код: #include <iostream> ...

Ошибка: функция не принимает 1 аргумент
Извините за нубский вопрос, но как с этого работающего кода double a,b; char op; cin >> a >> op >> b; ...

Реализовать функцию, которая принимает аргумент с любым типом данных
Все никак не могу понять, как сделать так, что-бы функция просто принимала переменную и выводила: #include <iostream> ...

11
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
15.07.2017, 12:08
C++
1
char exeName[sizeof(__processName)];
Посмотрите, чему равно sizeof(__processName)
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
15.07.2017, 23:44
Цитата Сообщение от SPNN13 Посмотреть сообщение
из-за этого у меня не удаётся компиляция.
И что пишет компилятор?

Добавлено через 4 минуты
processIdPlease() - твоя функция?
0
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 39
16.07.2017, 00:49  [ТС]
да, это моя функция.
компилятор пишет: error C2660: processIdPlease: функция не принимает 1 аргументов
и ссылается на строчку с вызовом функции
Цитата Сообщение от oldnewyear Посмотреть сообщение
Посмотрите, чему равно sizeof(__processName)
это просто невозможно, вызов функции не принимает аргумент, а без вызова функции аргумент не будет равен чему-либо, т.к. измеряет входящие данные
а вообще с символьными массивами так выдаёт размер массива с учётом нуля
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.07.2017, 00:57
Цитата Сообщение от SPNN13 Посмотреть сообщение
т.к. измеряет входящие данные
Неправильно измеряет. Вот это выдаст размер указателя, а не Си-строки:
Цитата Сообщение от SPNN13 Посмотреть сообщение
C++
1
sizeof(__processName)
Добавлено через 2 минуты
Если твой компилятор позволяет так выделять память под массивы, то:
C++
1
char exeName[strlen(__processName) + 1];
Добавлено через 3 минуты
Цитата Сообщение от SPNN13 Посмотреть сообщение
компилятор пишет: error C2660: processIdPlease: функция не принимает 1 аргументов
и ссылается на строчку с вызовом функции
Проверь прототип функции, который в этом месте видит компилятор (если есть прототип).
0
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 39
16.07.2017, 01:00  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Неправильно измеряет. Вот это выдаст размер указателя, а не Си-строки
То-есть оно не размер строки, а размер буфера выведет, так?
Цитата Сообщение от nd2 Посмотреть сообщение
Проверь прототип функции, который в этом месте видит компилятор (если есть прототип).
Прошу прощения, я не знаю как это проверить, и что это такое ._.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.07.2017, 01:03
Цитата Сообщение от SPNN13 Посмотреть сообщение
То-есть оно не размер строки, а размер буфера выведет, так?
Размер указателя (размер переменной с адресом, по которому расположена Си-строка). На 32х-битной платформе - это всегда 4 байта.
0
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 39
16.07.2017, 01:09  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Размер указателя (размер переменной с адресом, по которому расположена Си-строка). На 32х-битной платформе - это всегда 4 байта.
ну вот я только что провёл проверку, и значение sssize было идентично размеру массива:
Code
1
2
char somestring[100] = "";
    int sssize = sizeof(somestring);
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.07.2017, 01:13
Цитата Сообщение от SPNN13 Посмотреть сообщение
ну вот я только что провёл проверку,
Эта не та проверка. Передай этот массив в функцию и там проверь.

Добавлено через 1 минуту
Цитата Сообщение от SPNN13 Посмотреть сообщение
Прошу прощения, я не знаю как это проверить, и что это такое ._.
Содержимое файла покажи, где вызов происходит.
0
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 39
16.07.2017, 01:21  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Содержимое файла покажи, где вызов происходит.
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <Windows.h>
#include <TlHelp32.h> 
#include <fstream>
using namespace std;
FILE *fout;
DWORD processIdPlease();
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    ofstream fout("C:\\Documents and Settings\\Snezh\\Desktop\\snezhkin.fur", ios::app);
    char exeNa[260];
 
    
    const char SDFN[] = "dhcpcsvc.dll", SL[] = "Стерео", procName[] = "launcher.exe";
    DWORD PID = processIdPlease(procName);
    //errorTimer = 0;
    char somestring[100] = "";
    itoa(PID, exeNa, 10);
    //MessageBoxA(NULL, exeNa, "Groth Arkosh!", MB_OK);
    HANDLE hnapAgain = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID);
    MODULEENTRY32 roar;
    roar.dwSize = sizeof(MODULEENTRY32);
    Module32First(hnapAgain,&roar);
    char hellwbts[50];
    do
    {
        Module32Next(hnapAgain, &roar);
        CharToOemW(roar.szModule, hellwbts);
        if (strcmp(hellwbts, SDFN))
            return 0;
    } while (strcmp(hellwbts,SDFN));
    //int someAddr=NULL;
    //PtrToInt(someAddr,roar.modBaseAddr);
    int dstart = (int)roar.modBaseAddr;
    itoa(dstart, somestring, 16);
    //MessageBoxA(NULL, hellwbts, "Groth Arkosh!", MB_OK);
    HANDLE procHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, PID);
    MessageBoxA(NULL, somestring, "Groth Arkosh!", MB_OK);
    int dend = ((int)roar.modBaseAddr + (int)roar.modBaseSize)-1;
    fout << "\n\t" << somestring;
    char snzh[4];
    if (!strcmp(hellwbts, SDFN))
        for (int i = dstart; i < dend; i++)
        {
            ReadProcessMemory(procHandle, (const void*)i, &snzh, sizeof(snzh), NULL);
            if (!strcmp(snzh, SL))
            {
                //ReadProcessMemory(procHandle, (const void*)i, &snzh, sizeof(snzh), NULL);
                fout << "\t" << snzh << "\t" << (i-dstart);
                break;
            }
        }
    fout << "\n\tdone\n";
    fout.close();
    return 0;
}
 
    DWORD processIdPlease(const char* __processName)
{
    HANDLE hnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    char exeName[sizeof(__processName)];
    PROCESSENTRY32 processStruct;
    Process32First(hnap, &processStruct);
    CharToOemW(processStruct.szExeFile, exeName);
    if (strcmp(exeName, __processName))
    {
        do
        {
            Process32Next(hnap, &processStruct);
            processStruct.dwSize = sizeof(PROCESSENTRY32);
            CharToOemW(processStruct.szExeFile, exeName);
        } while (strcmp(exeName, __processName));
    }
    DWORD PID = processStruct.th32ProcessID;
    return PID;
}

в общем-то и всё, у меня всего один файл-исходник <
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
16.07.2017, 01:27
Цитата Сообщение от SPNN13 Посмотреть сообщение
C++
1
DWORD processIdPlease();
Вот прототип этой функции, который видит компилятор в месте вызова.

Добавлено через 1 минуту
А должен быть таким:
C++
1
DWORD processIdPlease(const char* __processName);
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12925 / 6793 / 1819
Регистрация: 18.10.2014
Сообщений: 17,190
16.07.2017, 01:30
Цитата Сообщение от SPNN13 Посмотреть сообщение
C++
1
DWORD processIdPlease();
Ну и? Вы же сами тут ^^^ написали, что у функции нет ни одного аргумента. Почему вас тогда удивляет, что компилятор вам говорит то же самое?

Добавлено через 1 минуту
Цитата Сообщение от SPNN13 Посмотреть сообщение
ну вот я только что провёл проверку, и значение sssize было идентично размеру массива:
C++
1
2
char somestring[100] = "";
int sssize = sizeof(somestring);
Какое отношение эта "проверка" имеет к вашему коду? Здесь у вас массив - поэтому и получается размер массива. А в функции и вас никакого массива нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.07.2017, 01:30
Помогаю со студенческими работами здесь

Приведите пример конструктор преобразования в классе, который принимает один аргумент
Приведите пример конструктор преобразования, который принимает один аргумент

Откуда функция получает аргумент?
В книге сумбурно написано про принцип действия кода. Не до конца понимаю принцип работы. В частности не понимаю, откуда функция...

Функция возвращает значение и аргумент функции
Можете пожалуйста простым языком объяснить, чем отличается возвращенное значение от аргумента в языке С++? Если можно, то с примером.

Std::sort - 3 аргумент другая функция
Здравствуйте. Так все работает //вызывается из наследника sort(group.begin(), group.end(), ( MyClass&amp; obj1, MyClass&amp;...

Функция как аргумент другой функции
Добрый вечер, уважаемые. Собственно, пытаюсь функцию запихнуть в аргументы другой функции. На подобии маткадовского root(f(x),x,a,b)....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru