19. marts 2007 - 01:12
Der er
10 kommentarer
cannot convert parameter 2 from 'char [4096]' to 'LPWSTR'
error C2664: 'CreateProcessW' : cannot convert parameter 2 from 'char [4096]' to 'LPWSTR' Jeg får følgende fejlmedd. Nogen der kan sige mig hvad der går galt? //--------------------------------------------------------------------------- #pragma argsused #pragma hdrstop #include "windows.h" #include <tchar.h> #include <stdlib.h> //--------------------------------------------------------------------------- DWORD RunProgram (char* strFunct, bool hide) { STARTUPINFO StartupInfo; PROCESS_INFORMATION ProcessInfo; char Args[4096]; char *pEnvCMD = NULL; char *pDefaultCMD = "CMD.EXE"; char* strstrParams; ULONG rc; memset(&StartupInfo, 0, sizeof(StartupInfo)); StartupInfo.cb = sizeof(STARTUPINFO); StartupInfo.dwFlags = STARTF_USESHOWWINDOW; StartupInfo.wShowWindow = SW_SHOW; if (hide) { StartupInfo.dwFlags = STARTF_USESHOWWINDOW; StartupInfo.wShowWindow = SW_HIDE; } Args[0] = 0; pEnvCMD = getenv("COMSPEC"); if(pEnvCMD){ strcpy(Args, pEnvCMD); } else{ strcpy(Args, pDefaultCMD); } strcat(Args, " /c "); strcat(Args, strFunct); strcat(Args, " "); strcat(Args, strstrParams); if (!CreateProcess( NULL, Args, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &StartupInfo, &ProcessInfo)) { return GetLastError(); } WaitForSingleObject(ProcessInfo.hProcess, INFINITE); if(!GetExitCodeProcess(ProcessInfo.hProcess, &rc)) rc = 0; CloseHandle(ProcessInfo.hThread); CloseHandle(ProcessInfo.hProcess); return rc; }
Annonceindlæg fra Infor
19. marts 2007 - 01:18
#1
Er det linjen med CreateProcess? Har du sat projektet til at køre "MultiByte" eller "Unicode"? Skal det køre en af disse?
19. marts 2007 - 01:23
#2
Jep det er i create process. Jeg kalder RunProgram ("c:\\installtool.exe","",1); fra mit program. Jeg kører Unicode
19. marts 2007 - 01:27
#3
TCHAR Args[4096]; og erstat alle str* funktioner med _tcs* funktioner og alle "xxx" med _T("xxx")
19. marts 2007 - 01:27
#4
Det løste mit problem at sætte det til MultiByte.
19. marts 2007 - 01:32
#5
Jeg kigger lige herind i morgen igen. Jeg får ikke punkterne frem hvor jeg kan acceptere svaret.
19. marts 2007 - 09:22
#6
jeg mangler et svar istedet for en kommentar for at give point
19. marts 2007 - 09:49
#7
Det gik ik helt med MultiByte. Jeg ved ikke helt om det er derfor jeg får fejl hvis jeg prøver at køre det på andre maskiner end min. Jeg prøver nu at få det til at virke med TCHAR og _tcs i stedet. Jeg får dog en fejl her: pEnvCMD = getenv("COMSPEC"); if(pEnvCMD){ _tcscpy(Args, pEnvCMD); ^^'wcscpy' : cannot convert parameter 2 from 'char *' to 'const wchar_t *^^ } else{ _tcscpy(Args, pDefaultCMD); }
19. marts 2007 - 09:54
#8
Hvis jeg sætter *pEnvCMD til TCHAR istedet for char, får jeg fejlen error C2440: '=' : cannot convert from 'char *' to 'TCHAR * i linien pEnvCMD = getenv("COMSPEC"); Jeg opretter dette spørgsmål på ny, da jeg mener det bør give lidt flere point at løse
19. marts 2007 - 09:57
#9
Kurser inden for grundlæggende programmering