2009-03-29 7 views
0

사람이 코드를 알고 또는 Visual C를 사용하여 EXE 킥오프하는 방법에 대한 아이디어가 있습니까 ++ 2005시작 .EXE

DLL이 윈도우 모바일 경우에 인 환경을 제공합니다. ㄴ 번호가 호출 /는 [("coredll.Dll ') 같이 DllImport]

인이 사용 P를 할 개인 정적 통근 용 INT의 CreateProcess를 (문자열 strImageName 문자열 strCmdLine,을 IntPtr pProcessAttributes,을 IntPtr pThreadAttributes, INT bInheritsHandle, INT dwCreationFlags,을 IntPtr pEnvironment, IntPtr pCurrentDir, Byte [] bArray, ProcessInfo oProc);

// 시작 코드 .exe CreateProcess ("\ Program Files \ myprogram \ myprogram.exe.exe", ", IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, IntPtr. 0, new Byte [128], pi);

내가 C++에서 필요로하는 이유는 사용자 지정 택시 설치 프로그램을 실행할 때 사전 및 사후 intit 검사 등을 수행하기 위해 기본 DLL을 사용해야하기 때문입니다.

귀하의 생각은 대단히 감사하겠습니다. 토니

답변

1
PROCESS_INFORMATION ProcessInfo = { 0 }; 

if (CreateProcess(ImagePath, 
        NULL, 
        NULL, 
        NULL, 
        FALSE, 
        0, 
        NULL, 
        NULL, 
        NULL, 
        &ProcessInfo)) 
{ 
    CloseHandle(ProcessInfo.hThread); 
    CloseHandle(ProcessInfo.hProcess); 
} 
else 
{ 
    return GetLastError(); 
} 
0

당신이 장치에서 EXE 파일을 실행하는 의미한다면, 시각적 인 스튜디오가 직접 할 수 없습니다. 사용자 정의 빌드 단계 또는 사전/사후 빌드 단계를 설정하여 사용자를 위해 수행 할 응용 프로그램을 실행해야합니다. WM5 SDK 코드 예 prun을 사용할 수도 있고 직접 만들 수도 있습니다. PRun은 RAPI을 사용하여 장치에서 응용 프로그램을 실행하므로이 장치가 작동하려면 ActiveSync를 통해 장치를 연결해야합니다.

기기에서 '자동으로'항목 (예 : 단위 테스트)을 만들려고하는 경우 device emulator을 조사하는 것이 좋습니다. 이로 인해 실제 장치를 사용하는 것보다 control이 더 많이 발생할 수 있습니다.

0

이 시도 :

BOOL RunExe(CString strFile) 
{ 
    WIN32_FIND_DATA fd; 
    HANDLE  hFind; 
    BOOL  bFind; 

    hFind = FindFirstFile(strFile, &fd); 
    bFind = (hFind != INVALID_HANDLE_VALUE); 

    if(bFind) 
    { 
    if(!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) 
    { 
     SHELLEXECUTEINFO info; 
     ZeroMemory(&info, sizeof(info)); 
     info.cbSize = sizeof(info); 
     info.fMask = SEE_MASK_NOCLOSEPROCESS; 
     info.hwnd = 0; 
     info.lpVerb = _T("open"); 
     info.lpFile = strFile; 
     info.lpParameters = NULL; 
     info.lpDirectory = NULL; 
     info.nShow = SW_SHOW; 
     info.hInstApp = NULL; 
     ShellExecuteEx(&info); 
    } 
    else 
     bFind = FALSE; 
    } 

    FindClose(hFind); 

    return bFind;  
} 
+0

왜 이런 일에 대한 CString을의 무게를 사용해야합니까? – ctacke