Вам нужно использовать несколько макросов. К счастью, заголовки Windows уже определяют такой макрос, который при необходимости расширяет строковый литерал, TEXT()
, поэтому нет веской причины писать свой собственный.
Следующий код работает нормально:
#define TASK_MGR "C:\\Windows\\System32\\taskmgr.exe"
KillProcess(TASK_MGR); // Not sure what KillProcess is or why it takes a narrow
// string, regardless of whether Unicode is defined...
// The Win32 function is named TerminateProcess.
HINSTANCE resurrect = ShellExecute(NULL, L"open", TEXT(TASK_MGR), NULL, NULL,
SW_MINIMIZE);
... хорошо, за исключением того факта, что вы жестко запрограммировали путь к диспетчеру задач, и он не будет найден в этом месте на всех машинах (например, на моем). Но я верю, что это только в качестве примера, и вы уже хорошо знаете, не жесткие пути.