2010-01-14 8 views
1

C++ DLL에서 메서드를 호출하는 게임용 API를 사용하면 DLL을 수정하고 특정 메서드를 호출하여 게임용 봇을 작성할 수 있습니다. C++을 좋아하지 않는다는 것을 제외하고는 괜찮습니다. 따라서 게임 이벤트를 클라이언트 프로그램으로 보내고 명령을 다시 보낼 수 있도록 명명 된 파이프를 사용하기로 결정했습니다. C++ 측은 단순한 프레임 워크입니다. 명명 된 파이프에서 수신 대기하기.프로세스 간 통신

나는 사물의 C#을 측면에서이 같은 몇 가지 방법이 있습니다

private string Read() 
{ 
    byte[] buffer = new byte[4096]; 

    int bytesRead = pipeStream.Read(buffer, 0, (int)4096); 

    ASCIIEncoding encoder = new ASCIIEncoding(); 
    return encoder.GetString(buffer, 0, bytesRead); 
} 

private void Write(string message) 
{ 
    ASCIIEncoding encoder = new ASCIIEncoding(); 
    byte[] sendBuffer = encoder.GetBytes(message); 
    pipeStream.Write(sendBuffer, 0, sendBuffer.Length); 
    pipeStream.Flush(); 
} 

어떤 사물의 C++ 측면에 해당하는 방법이 있을까요?

답변

1

파이프를 만들고 파이프 핸들을 사용하면 ReadFileWriteFile API를 사용하여 읽고 쓰게됩니다. 코드 예는 MSDN의 Named Pipe Client을 참조하십시오.


그러나, 나는 그들을 사용하는 방법을 정확히 손실에 있어요.

위에서 인용 한 "Named Pipe Client"섹션에서는이를 사용하는 방법에 대한 예제를 제공합니다.

예를 들어, 모든 인수의

종류는 MSDN에 정의 된 모든 인수의 유형 무엇 : 나는 변환 어떻게 ReadFileWriteFile

참조 아마도 내가 ReadFile 메서드에서 문자열과 부로/그 반대로받는 바이트의 버퍼입니까?

ASCIIEncoding을 사용하여 문자열을 보내므로 비 유니 코드 문자 열이 전송됩니다.

당신은 문자 버퍼 플러스 버퍼에 얼마나 많은 문자를 지정하는 sencond 매개 변수에 대한 포인터를 취하는 표준 : : 문자열 생성자의 과부하 사용하여 문자열로 그것을 변환 할 수 있습니다

//chBuf and cbRead are as defined in the 
//MSDN "Named Pipe Client" example code fragment 
std::string received((const char*)chBuf, cbRead); 
+0

을 고마워, 나는 ReadFile과 WriteFile이 pipestrea.Write/Read와 같다는 것을 이해한다. 그러나 나는 그들을 정확히 사용하는 방법을 잃어 버렸습니다. 예를 들어, 모든 인수의 유형은 무엇입니까? 내가 ReadFile 메서드에서 문자열 및 부본으로받는 것으로 예상되는 바이트 버퍼에서 변환하는 방법은 무엇입니까? – Martin

+0

귀하의 의견에있는 추가 질문에 대한 답변을 편집했습니다. – ChrisW