Форум программистов, компьютерный форум CyberForum.ru

IsProcessRun ошибочка - C++

Восстановить пароль Регистрация
 
willpower
-18 / 0 / 0
Регистрация: 27.09.2014
Сообщений: 27
20.11.2014, 10:45     IsProcessRun ошибочка #1
Всем привет. Недавно начал изучать C++ и сразу столкнулся с проблемкой.
Делаю проверку на процесс таким образом:
Код
bool IsProcessRun(const char * const processName)
{
	HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

	PROCESSENTRY32 pe;
	pe.dwSize = sizeof(PROCESSENTRY32);
	Process32First(hSnapshot, &pe);
	while (1) 
	{
		if (strcmp(pe.szExeFile, processName) == 0) return true;
		if (!Process32Next(hShapshot, &pe)) return false;
	}
}
И компилятор (Visual Studio 2013) выдаёт мне таковые ошибки:
Код
1	error C2664: 'int strcmp(const char *,const char *)' : cannot convert argument 1 from 'WCHAR [260]' to 'const char *'	
2	error C2065: 'Shapshot' : undeclared identifier
3	IntelliSense: argument of type "WCHAR *" is incompatible with parameter of type "const char *"	
4	IntelliSense: identifier "hShapshot" is undefined
Инклуд tlhelp32 подключен, не знаю что и делать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 10:45     IsProcessRun ошибочка
Посмотрите здесь:

Перегрузка оператора, ошибочка C++
C++ Ошибочка маленькая и не понятная(((
C++ ATOI конвертации, непонятная ошибочка
Работа с матрицами. Ошибочка C++
Ошибочка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
20.11.2014, 10:48     IsProcessRun ошибочка #2
написано ж, strcmp принимает char*, а pe.szExeFile возвращает wchar*

Добавлено через 1 минуту
вроде есть wstrcmp...и в ф-цию тогда передайте не char* а wchar*
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
20.11.2014, 10:51     IsProcessRun ошибочка #3
Используйте версию для широких символов http://www.cplusplus.com/reference/cwchar/wcscmp/ и конвертируйте char в wchar.
willpower
-18 / 0 / 0
Регистрация: 27.09.2014
Сообщений: 27
20.11.2014, 11:40  [ТС]     IsProcessRun ошибочка #4
В связи с тем, что я глуп и пока не совсем понял, не могли бы вы сделать полный код и кинуть его в топик? А я уже попробую его разобрать и понять =)
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
20.11.2014, 11:48     IsProcessRun ошибочка #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool IsProcessRun(const wchar* processName)
{
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 
    PROCESSENTRY32 pe;
    pe.dwSize = sizeof(PROCESSENTRY32);
    Process32First(hSnapshot, &pe);
    while (1) 
    {
        if (wcscmp (pe.szExeFile, processName) == 0) return true;
        if (!Process32Next(hShapshot, &pe)) return false;
    }
}
Добавлено через 34 секунды
C++
1
IsProcessRun(L"calc.exe");//так вызывать
willpower
-18 / 0 / 0
Регистрация: 27.09.2014
Сообщений: 27
20.11.2014, 11:52  [ТС]     IsProcessRun ошибочка #6
Код
error C2065: 'processName' : undeclared identifiererror C2143: syntax error : missing ',' before '*'error C3861: 'IsProcessRun': identifier not founderror C4430: missing type specifier - int assumed. Note: C++ does not support default-int	IntelliSense: identifier "wchar" is undefined
=(
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
20.11.2014, 11:59     IsProcessRun ошибочка #7
WCHAR попробуйте в качестве аргумента..

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool IsProcessRun(const WCHAR* processName)
{
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 
    PROCESSENTRY32 pe;
    pe.dwSize = sizeof(PROCESSENTRY32);
    Process32First(hSnapshot, &pe);
    while (1) 
    {
        if (wcscmp (pe.szExeFile, processName) == 0) return true;
        if (!Process32Next(hSnapshot, &pe)) return false;
    }
}
willpower
-18 / 0 / 0
Регистрация: 27.09.2014
Сообщений: 27
20.11.2014, 12:12  [ТС]     IsProcessRun ошибочка #8
Использую
PHP
1
if(IsProcessRun(L"calc.exe"))
PHP
1
Error   1   error C3861: 'IsProcessRun': identifier not found
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
20.11.2014, 12:14     IsProcessRun ошибочка #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <TlHelp32.h> 
using namespace std;
 
bool IsProcessRun(const WCHAR* processName)
{
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 
    PROCESSENTRY32 pe;
    pe.dwSize = sizeof(PROCESSENTRY32);
    Process32First(hSnapshot, &pe);
    while (1) 
    {
        if (wcscmp (pe.szExeFile, processName) == 0) return true;
        if (!Process32Next(hSnapshot, &pe)) return false;
    }
}
int main()
{
    std::cout<<IsProcessRun(L"calc.exe")<<std::endl;
    system("pause");
}
willpower
-18 / 0 / 0
Регистрация: 27.09.2014
Сообщений: 27
20.11.2014, 12:17  [ТС]     IsProcessRun ошибочка #10
АШ ТРИСЁТ
PHP
1
'IsProcessRun': identifier not found
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
20.11.2014, 12:18     IsProcessRun ошибочка #11
переустановите операционную систему....
не знаю, попробуйте прямо мой код скопировать чтоли...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 12:23     IsProcessRun ошибочка
Еще ссылки по теме:

C++ ошибочка с корнем
Class Book ошибочка C++
C++ ошибочка

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

Или воспользуйтесь поиском по форуму:
willpower
-18 / 0 / 0
Регистрация: 27.09.2014
Сообщений: 27
20.11.2014, 12:23  [ТС]     IsProcessRun ошибочка #12
Ахаха, моя глупость меня погубит. Функцию ставил в конец кода, закрыто.
Yandex
Объявления
20.11.2014, 12:23     IsProcessRun ошибочка
Ответ Создать тему
Опции темы

Текущее время: 07:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru