2009-03-30 10 views
2

私はa previous postのmemorystreamをwmp activexで再生する方法を知っていて、boxedapp sdkへのリンクが返ってきました。フリーウェアではないので、私はそのプロセスを研究しました。ストリームを保存するために仮想ファイルを使用していて、そのファイル名がURLとして使用されているとわかりました。だから、私の質問は、THandleStreamによってアクセスされるはずのハンドルを返す仮想ファイルを作成する方法です。私はDelphi 7を使用しています。ありがとう。 WMP ActiveXまたは任意のプレーヤーでのMemoryStream遊びを作成する方法についてDelphiのアプリケーションで仮想ファイルを作成する方法

所望のプロセス:

  1. 仮想ファイルを作成し、ハンドルを返します。 (これは私の質問です)
  2. このハンドルは、THandleStreamによってアクセスされます。
  3. THandleStreamは、再生するMemoryStreamのコンテンツをコピーします。
  4. プレーヤー(私の場合はwmp activex)がファイル名にアクセスします。
  5. プレイヤーが再生します。
+0

try boxedapp。それはあなたを助けなければなりません。 –

答えて

1

Boxedappインターセプトし、すべてのIOコールとファイルがそのAPI(すなわち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

あなたはユーザーから隠されていたコンテンツを作成しようとしている場合、などあなたのコメントの1つに暗黙のうちに、あなたは今それについてすべてを忘れるかもしれません。それは不可能だ。決して働いたことはありません。あなたはそれをもっと難しくすることができますが、コンピュータがそれを読むことができるならば、賢明なハッカーがあなたのコードを読んで、あなたのトリックを複製することができます。強く暗号化されたDRMスキームでさえ、壊れてしまう前に最高でも1ヵ月続く傾向があります。

+0

いいえ..ハッカーはこれとは関係ありません。このプログラムを使用するユーザーは生徒です。だからこそ、私は内容が公開されることを望まないので、彼らは不正行為をすることができません。 – junmats

関連する問題