2009-03-30 2 views
2

memorystream을 wmp activex에서 만드는 방법에 대해 a previous post이 있었고 boxedapp sdk에 대한 링크가있는 답장을 받았습니다. 그것은 프리웨어가 아니므로 프로세스를 연구했고 스트림을 저장하고 파일 이름이 URL로 사용되도록 가상 파일을 사용하고 있다는 것을 알았습니다. 그래서, 내 질문에 THandleStream에 의해 액세스 할 수 있어야 핸들을 반환하는 가상 파일을 만드는 방법입니다. Delphi 7을 사용 중입니다. 감사합니다.Delphi 앱에서 가상 파일을 만드는 법

WMP 액티브 또는 플레이어에서 MemoryStream을 플레이하는 방법에

원하는 프로세스 :

  1. 을 가상 파일을 생성하고 핸들을 반환; (이것은 내 질문이다)
  2. 이 핸들은 다음 THandleStream에 의해 액세스됩니다;
  3. THandleStream은 재생할 MemoryStream의 내용을 복사합니다.
  4. 플레이어 (내 경우에는 wmp activex)가 파일 이름에 액세스합니다.
  5. 플레이어가 재생합니다.
+0

try boxedapp. 그것은 당신을 도와야 만합니다. –

답변

1

Boxedapp은 모든 IO 호출을 인터셉트하고 파일이 해당 API (I.E. BoxedAppSDK_CreateVirtualFile)를 사용하여 작성된 경우 해당 호출을 자체 처리합니다. 그것의 쉬운 일이 아니다, 당신은 인터셉션 프레임 워크 인 detours을 살펴볼 수있다. 그러나 모든 IO 호출을 가로 챌 때 행운을 빈다.

왜 필요한가요? 왜 메모리 스트림을 temp 폴더에 저장하고 거기에서 파일을 재생할 수 없습니까? 완료되면 파일을 정리해야합니까?

+0

하지만 BoxedApp는 무료가 아닙니다 ($ 0에있는 예산 없음). 비슷한 물건 좀 비슷해? 이 파일을 임시 폴더에 저장하고 싶지 않은 이유는 파일의 내용을 공개하고 싶지 않기 때문입니다. 내 프로그램이 아주 엄격하다고 말하자. 나는 그대에게 그 본성을 말할 수 없다. – junmats

+0

박스 응용 프로그램이 파일을 임시 폴더에 저장하지 않는다는 것을 어떻게 아나요 (또는 다른 위치)? 그들이 가상 파일을 어떻게 포함하는지 모르겠습니다. 콘텐츠를 공개하지 않으려면 DRM 만 사용하면됩니다. –

1

나는 당신이 (MSVCRT.DLL에서) 파이프 기능을 사용 믿는다

function _pipe(phandles : pointer; psize : uint; textmode : integer) : integer; cdecl; external 'msvcrt.dll' name '_pipe'; 

일부 의사 :

var 
_handles : array[0..1] of THandle; 
begin 
    if _pipe(@_handles, size, 0) = -1 then 
    Exit; 

    FReadHandle := _handles[0]; 
    FWriteHandle := _handles[1]; 

    _write(FVirtualWriteHandle, Buffer, size); 

    close(FWriteHandle); 
    close(FReadHandle); 

end; 
+0

CreatePipe를 사용하는 것이 더 좋습니다. _pipe 함수는 C 함수이지만 C를 사용하지 않습니다. 대신 API를 사용하십시오. 1 단계를 수행한다고해도 4 단계가 작동한다는 것을 의미하지는 않으며 그의 실제 문제이기 때문에 문제가 실제로 해결되지는 않습니다. –

3

당신이 사용자로부터 숨겨진 컨텐츠를 만들려고하는 경우 등 귀하의 의견 중 하나에 암시, 당신은 잘 잊어 버릴 수도 있습니다. 그것은 불가능. 결코 일하지 않고 결코하지 않을 것입니다. 더 어려워 질 수는 있지만 컴퓨터가 읽을 수 있으면 하루가 끝날 때까지 해커가 코드를 읽고 트릭을 복제 할 수 있습니다. 심지어 강력하게 암호화 된 DRM 체계는 깨지기 전에 기껏해야 약 한달 동안 지속되는 경향이 있습니다.

+0

아니요. 해커가이 일과 관련이 없습니다. 이 프로그램을 사용할 사용자는 학생입니다. 그래서 내가 속일 수 없도록 내용을 공개하고 싶지 않습니다. – junmats