Ofcourse it does, which is why you'd want to call the c_str() function on your std::string objects.
Code:
HINSTANCE hRet = ShellExecute(
HWND_DESKTOP, //Parent window
"open", //Operation to perform
x->path.c_str(), //Path to program
x->par.c_str(), //Parameters
x->dir.c_str(), //Default directory
SW_SHOW); //How to open
if((LONG)hRet <= 32)
{
cout << "Wrong directory!!" << endl;
}
By the way, if I had to guess. I'd say your problem lies with the fact that you're casting to a LONG not a long and your compiler might not like that, but I could be wrong.