0

Hi when i compile my code i have that error my problem on 2 lines that included : if ( !processName.compare(processInfo.szExeFile) ) also i use multiply-byte character but i don't know why have same problem?

my error is:

int std::basic_string<_Elem,_Traits,_Ax>::compare(const std::basic_string<_Elem,_Traits,_Ax> &) const' : cannot convert parameter 1 from 'CHAR [260]' to 'const std::basic_string<_Elem,_Traits,_Ax> &' 

and my code:

 #include<fstream> #include<sstream> #include<string> #include<iostream> #include<iomanip> #include<cstdlib> #include<Windows.h> #include<TlHelp32.h> using std::ifstream; using std::string; using std::getline; using std::ios; using std::cerr; using std::cout; using std::endl; using std::fixed; using std::left; using std::right; using std::showpoint; using std::cin; class check { public : void check_seta () { ifstream cfgm2("fix.cfg",ios::in); string cfgLine; while (getline(cfgm2,cfgLine)) { if (string::npos != cfgLine.find("pn ff")){ if (cfgLine.at(19) == '0'){ MessageBoxW(NULL , L"naananaana",NULL,MB_ICONERROR); std::wstring Processname(L"lol.exe"); DWORD ProcessId = FindProcessId(Processname); HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, TRUE ,ProcessId); TerminateProcess(pHandle,0); CloseHandle(pHandle); } break; } } } DWORD FindProcessId(const std::wstring& processName) { PROCESSENTRY32 processInfo; processInfo.dwSize = sizeof(processInfo); HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); if ( processesSnapshot == INVALID_HANDLE_VALUE ) return 0; Process32First(processesSnapshot, &processInfo); // I have problem in this line if ( !processName.compare(processInfo.szExeFile) ) { CloseHandle(processesSnapshot); return processInfo.th32ProcessID; } while ( Process32Next(processesSnapshot, &processInfo) ) { // and I have problem with this line if ( !processName.compare(processInfo.szExeFile) ) { CloseHandle(processesSnapshot); return processInfo.th32ProcessID; } } CloseHandle(processesSnapshot); return 0; } }; 
1
  • I said on 2 lines that included :` if ( !processName.compare(processInfo.szExeFile) )` and that's be line 71 and 82 Commented Jun 2, 2013 at 8:48

1 Answer 1

1

processName is a wstring. wstring and string are not compatible, nor can wstring be initialized by char *.

Sign up to request clarification or add additional context in comments.

3 Comments

The code should be OK if you set project to use Unicode charset I think. If you want to use ANSI charset, you should use string instrad of wstring.
befor that i use Unicode charset and also with using string instrad of wstring my code compiled as well but not work and could not close my App(actually nothing )
There should be other problems. The way you locating a process and terminating it is OK.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.