2011-01-11 3 views
0

그래서 C++ 빌더 2010에 외부 .exe 파일을 추가하는 방법이 궁금합니다. Visual Basic에서 일부 프로그램을 만들었고 exe 파일을 가지고 있다고 가정 해 봅시다. C++에서 동일한 코드를 만들 필요가 없습니다. 프로젝트에 해당 exe를 포함시키고 싶습니까? 그것은 휴대용 응용 프로그램을 하나의 exe 그 자체가 다른 exe 파일 (어쩌면 자원 경로에있는) 만들 수 있습니까? 다른 exe 인 경우 코드에서 호출하는 방법은 무엇입니까? 내가 시스템 함수, 또는 다른 exe에 방향을 넣어에 의해 그것을 호출하는 방법을 알고 있지만 어떻게 그것을 실행하는 기본 exe 같은 주소에 있다면?어떻게하면 Borland C++ Builder 2010 프로젝트에 외부 실행 파일을 추가 할 수 있습니까?

+1

일반적으로 대신 호출하려는 코드로 dll을 작성해야합니다. 그러나 VB에서 C++ 코드를 호출하는 것이 훨씬 간단하다는 점에 유의하십시오. –

+0

Visual Basic의 exe는 단지 예를 들어 말하지만, 요점은 exe에서 사용되는 함수를 알지 못한다는 것입니다 (또는 알지 못합니다). 실행 결과가 필요합니다. 그건 어셈블리 exe 프로그래밍에 의해 maked, 그리고 난 그 exe의 functionallity를 사용하여 wannt 그 exe의 소스 코드를 공부 wannt ... – raptor

+0

다음 WinApi의 함수 CreateProcess를 사용합니다. 그것은 스폰 된 프로세스의 stdin과 stdout에 대한 핸들을 반환합니다. 프로그램 stdout에서 모든 데이터를 읽을 수 있습니다. – Raiv

답변

1

나는 당신이 성취하고자하는 것을 정확히 이해하지 못합니다. 주어진 프로그램의 기능을 사용하려면 해당 프로그램의 작동 방식에 대해 알아야합니다.

주어진 실행 파일을 쉘 스크립트와 같이 호출하려면 표준 입력과 표준 출력을 파이프로 리디렉션하여 주어진 프로그램을 시작해야합니다. An example of how to do that is available on MSDN. Visual Basic .NET에서 할 수있는 것처럼 대상 EXE에서 Visual Basic 클래스 및 메서드를 볼 수 있기를 원하는 경우 임의의 실행 파일이 클래스의 개념을 이해하지 못하거나 운이 좋지 않습니다. 방법.

1

Project > Resources 대화 상자를 사용하여 VB .exe 파일을 프로젝트에 추가하고 ID를 지정하십시오. 런타임시 C++ 코드는 해당 ID에 대한 자원 데이터를 TResourceStreamTFileStream과 같이 임시 파일로 추출한 다음 CreateProcess()을 사용하여 실행합니다. 파일을 사용한 후에 파일을 삭제하는 것을 잊지 마십시오.

그렇지 않으면 DLL에 VB 코드를 다시 작성한 다음 필요에 따라 C++ 응용 프로그램에서 DLL의 내 보낸 함수를 호출하면됩니다. 자체 포함 된 .exe (일반적으로 DLL 사용 방법이 아님)를 제공하려면 동일한 리소스 접근 방법을 사용해야합니다. CreateProcess() 대신 LoadLibrary()GetProcAddress()을 사용하여 동적으로 DLL 함수에 액세스하십시오 .

관련 문제