Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2010, 12:34   #11
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

сдела так но при компиляции вот такие ошибки:
Error 6 error LNK2019: unresolved external symbol _GetModuleFileNameExA@16 referenced in function "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl search_anti(void)" (?search_anti@@YA?AV?$basic_string@ DU?$char_traits@D@std@@V?$allocator @D@2@@std@@XZ)

Error 8 error LNK1120: 2 unresolved externals

Error 7 error LNK2019: unresolved external symbol _EnumProcessModules@16 referenced in function "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl search_anti(void)" (?search_anti@@YA?AV?$basic_string@ DU?$char_traits@D@std@@V?$allocator @D@2@@std@@XZ)
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 29.08.2010, 12:36   #12
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

вот весь код:
Код:
//=============================================================================================================
//		sparky
//=============================================================================================================	

#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include "TlHelp32.h"
#include "conio.h"
#include "string.h"
#include "psapi.h"
#include "iostream"

//=============================================================================================================
//		отдельные функции
//=============================================================================================================

std::string search_anti()	//поиск  return полный путь к файлу
{
//=============================================================================================================
//			описание данных
//=============================================================================================================
	HANDLE h,hp;
	PROCESSENTRY32 pe;
	int id;
	bool bl,flag=false;
	char name_ava[256],str[256];
	char path[MAX_PATH];
	DWORD dw;
	HMODULE hmod;
	std::string result;
	
	h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS|TH32CS_SNAPMODULE,0);
	strcpy(name_ava,"AIMP2.exe");

//=============================================================================================================
//			просмотр всех процессов и поиск нужного
//=============================================================================================================
	for(bl = Process32First(h, &pe); bl; bl = Process32Next(h, &pe))
	{
		strcpy(str, pe.szExeFile);
		if(strcmp(str,name_ava)==0)	//если процесс найден то записываем полный путь к нему
		{
			hp = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,false,pe.th32ProcessID);
			EnumProcessModules(hp, &hmod,sizeof(hmod),&dw);  // получаем первый модуль, связанный с процессом, то есть сам exe-файл
			GetModuleFileNameEx(hp, hmod, path, MAX_PATH);   // получаем путь к модулю
//=============================================================================================================
//			закрываем дескрипторы и выходим из цикла
//=============================================================================================================
			CloseHandle(hp);
			CloseHandle(h);
			flag=true;
			break;      
		}
	}
//=============================================================================================================
//			узнаем есть ли процесс и выходим из процедуры
//=============================================================================================================
	CloseHandle(h);
	if (flag)	//если есть в result пишем путь 
		result = "yes";
	else	//иначе result=""
		result = "no";
		
	return result;

}



	
//=============================================================================================================
//		главная программа
//=============================================================================================================
int _tmain(int argc, _TCHAR* argv[])
{
	std::string my = search_anti();
	return 0;
}
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 29.08.2010, 12:42   #13
Fog
Пользователь
 
Аватар для Fog
 
Регистрация: 29.08.2010
Сообщений: 76
По умолчанию

Так не пробовал:
String stroka = UnicodeString(path);
Fog вне форума Ответить с цитированием
Старый 29.08.2010, 15:19   #14
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

сделала вот так и появились эти ошибки:
Error 6 error LNK2019: unresolved external symbol _GetModuleFileNameExA@16 referenced in function "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl search_anti(void)" (?search_anti@@YA?AV?$basic_string@ DU?$char_traits@D@std@@V?$allocator @D@2@@std@@XZ)

Error 8 error LNK1120: 2 unresolved externals

Error 7 error LNK2019: unresolved external symbol _EnumProcessModules@16 referenced in function "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl search_anti(void)" (?search_anti@@YA?AV?$basic_string@ DU?$char_traits@D@std@@V?$allocator @D@2@@std@@XZ)

Как исправить, код приведен выше
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 29.08.2010, 15:57   #15
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

вернула стандартые настройки проекта и добавила процедуру преобразования из const char* в wchar*
Код:
char* wtoc(const wchar_t* w, size_t max)
{
  char* c = new char[max];
  wcstombs(c,w,max);
  return c;
}
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 29.08.2010, 16:08   #16
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

вот весь код:
Код:
//=============================================================================================================
//		sparky
//=============================================================================================================	

#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include "TlHelp32.h"
#include "conio.h"
#include "string.h"
#include "psapi.h"
#include "iostream"

//=============================================================================================================
//		отдельные функции
//=============================================================================================================
void add_auto()	//функция добавления в автозагрузку
{

}


char* wtoc(const wchar_t* w)	//преобразование из const char* в wchar*
{
  char* c = new char[256];
  wcstombs(c,w,256);
  return c;
}


std::string search_anti()	//поиск антивируса return полный путь к файлу
{
//=============================================================================================================
//			описание данных
//=============================================================================================================
	HANDLE h,hp;
	PROCESSENTRY32 pe;
	int id;
	bool bl,flag=false;
	char name_avast[256],str[256];
	char path[MAX_PATH];
	DWORD dw;
	HMODULE hmod;
	std::string result;
	
	h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS|TH32CS_SNAPMODULE,0);
	strcpy(name_avast,"AIMP2.exe");

//=============================================================================================================
//			просмотр всех процессов и поиск нужного
//=============================================================================================================
	for(bl = Process32First(h, &pe); bl; bl = Process32Next(h, &pe))
	{
		strcpy(str,wtoc(pe.szExeFile));
		if(strcmp(str,name_avast)==0)	//если процесс найден то записываем полный путь к нему
		{
			hp = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,false,pe.th32ProcessID);
			EnumProcessModules(hp, &hmod,sizeof(hmod),&dw);  // получаем первый модуль, связанный с процессом, то есть сам exe-файл
			GetModuleFileNameEx(hp, hmod, path, MAX_PATH);   // получаем путь к модулю
//=============================================================================================================
//			закрываем дескрипторы и выходим из цикла
//=============================================================================================================
			CloseHandle(hp);
			CloseHandle(h);
			flag=true;
			break;      
		}
	}
//=============================================================================================================
//			узнаем есть ли процесс и выходим из процедуры
//=============================================================================================================
	CloseHandle(h);
	if (flag)	//если есть в result пишем путь 
		result = "yes";
	else	//иначе result=""
		result = "no";
		
	return result;

}
	
//=============================================================================================================
//		главная программа
//=============================================================================================================
int main()
{
	std::string my = search_anti();
	return 0;
}
Ошибка Error 6 error C2664: 'GetModuleFileNameExW' : cannot convert parameter 3 from 'char [260]' to 'LPWSTR'
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 29.08.2010, 16:22   #17
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

попробовала еще так:
Код:
//=============================================================================================================
//		sparky
//=============================================================================================================	

#include "stdafx.h"
#include "windows.h"
#include "stdio.h"
#include "TlHelp32.h"
#include "conio.h"
#include "string.h"
#include "psapi.h"
#include "iostream"

//=============================================================================================================
//		описание общих данных
//=============================================================================================================
	LPWSTR path;	//полный путь к файлу


//=============================================================================================================
//		отдельные функции
//=============================================================================================================
char* in_char_to_wchar(const wchar_t* c)	//преобразование из const char* в wchar*
{
  char* w = new char[256];
  wcstombs(w,c,256);
  return w;
}

bool search_anti()	//поиск процесса
{
//=============================================================================================================
//			описание данных
//=============================================================================================================
	HANDLE h,hp;	//дескрипторы процессов
	PROCESSENTRY32 pe;
	bool bl;
	bool flag=false;
	char name_avast[256],str[256];
	DWORD dw;
	HMODULE hmod;

//=============================================================================================================
//			создание списка процессов и задание имени процесса, которого будем искать
//=============================================================================================================
	h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS|TH32CS_SNAPMODULE,0);
	strcpy(name_avast,"AIMP2.exe");	//ищем процесс с названием AIMP2.exe

//=============================================================================================================
//			просмотр всех процессов и поиск нужного
//=============================================================================================================
	for(bl = Process32First(h, &pe); bl; bl = Process32Next(h, &pe))
	{
		strcpy(str,in_char_to_wchar(pe.szExeFile));
		if(strcmp(str,name_avast)==0)	//если процесс найден то записываем полный путь к нему
		{
			hp = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,false,pe.th32ProcessID);
			EnumProcessModules(hp, &hmod,sizeof(hmod),&dw);  // получаем первый модуль, связанный с процессом, то есть сам exe-файл
			GetModuleFileNameEx(hp, hmod, path, 512);   // получаем путь к модулю

//=============================================================================================================
//			закрываем дескрипторы и выходим из цикла
//=============================================================================================================
			CloseHandle(hp);
			CloseHandle(h);
			flag=true;
			break;   
		}
	}

//=============================================================================================================
//			узнаем есть ли процесс и выходим из процедуры
//=============================================================================================================
	CloseHandle(h);
	if (flag)	
		return true;
	else	
		return false;
}





//=============================================================================================================
//		главная программа
//=============================================================================================================
int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}
Но теперь другая ошибка Error 9 error LNK1120: 2 unresolved externals
Что делать?
Единственное, что ограничивает полет мысли программиста-компилятор

Последний раз редактировалось Sparky; 29.08.2010 в 17:40.
Sparky вне форума Ответить с цитированием
Старый 29.08.2010, 17:54   #18
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

у кого-нибудь есть идеи? ошибка явно с функциями EnumProcessModule и GetModuleFileNameEx, но какие не знаю
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 29.08.2010, 18:49   #19
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Добавьте строчку
Код:
#pragma comment (lib, "psapi")
Или в опциях компоновщика добавьте библиотеку psapi.lib на вход
netrino вне форума Ответить с цитированием
Старый 29.08.2010, 19:09   #20
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

спасибо ошибка пропала, вот только теперь при отладке вижу что в цикл for программа не входит
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Убивание процессов! Nice42ru Помощь студентам 27 20.12.2009 19:47
Блокировка процессов Zeraim Операционные системы общие вопросы 5 17.04.2008 13:02
отключение процессов UROKSAN Win Api 1 10.04.2008 09:08
Память процессов Carbon Безопасность, Шифрование 2 05.05.2007 23:59