0

MS-Wordのように、デフォルトのアプリケーションでファイルを開くためのコードをC ++で記述しました.doc。次に、ファイルをアプリケーションで開く時間を計算したいと思います。

そのためには、そのアプリケーションにロードされたファイルの割合を知る必要があります。しかし、過去7日間から、適切な解決策を見つけることができませんでした。それで、誰かがこの問題を解決するのを手伝ってくれるでしょうか?

Windowsを使用している場合、Windowsタスクマネージャーはこれを行うのに役立ちますか?

4

2 に答える 2

1

あなたがやろうとしていることは、不可能であるだけでなく、意味がありません。

WMP で MP3 を再生すると、ファイル全体がメモリに読み込まれません。代わりに、一度に少しずつファイルをメモリにマップして、再生中にその場で MP3 をデコードできるようにします。(停止、スキップ、早送り、巻き戻しをせずに曲を最後まで再生すると、最終的にはファイルのすべてのバイトが読み取られ、おそらく曲が終わる数秒前に終了すると思いますが、それがあなたのことだとは思えませんが、探しています。)

同様に、Word は .doc ファイル全体をメモリに読み込むことはありません (ファイルが非常に小さい場合を除きます)。これが、大量のメモリを使用せずに巨大なファイルを編集できる方法です。(繰り返しになりますが、ファイル全体をページングすると、最終的にはすべてのバイトが読み取られる可能性があります。さらに言えば、元のファイルを確認する必要がなくなるまで、最終的に十分な量のファイルが自動保存バックアップ ファイルにコピーされる可能性があります。私はそれがあなたが探しているものだとは思わない.)

特定の特定のアプリケーションのみに関心があり、それらのアプリケーションに (WMP と Word の両方がそうであるように) COM オートメーション インターフェイスがある場合、それらのアプリケーションには、ファイルの「読み込み」が完了したことを通知するメソッドまたはイベントがある場合があります (つまり、再生/表示/などを開始するのに十分な量を読んだ場合)、またはファイルを「終了」した場合 (次のトラックなどに移動したことを意味します)、それに対する一般的な答えはありません; アプリケーションが異なれば、オートメーション インターフェイスも異なります。(そして、余談ですが、本当に必要でない限り、C++ から COM Automation を実行したくはありません。jscript、vbscript、またはお気に入りの .NET 言語からの方がはるかに簡単です…)

于 2012-06-28T05:00:30.117 に答える
0

サード パーティのプロセスが何かをロードしたことを通知しない場合 (たとえば、何らかの出力ストリームを介して)、プロセスによって開かれたり閉じられたりするファイル ハンドルを表示することが 1 つの方法です。これは、Process Explorer のような「タスク マネージャー」がプロセスのファイル ハンドルを表示できる方法に似ていると思います。ただし、「ロード」が完了した後にプロセスがファイル ハンドルを閉じないと、正確な時間が得られません。さらに、ロードされたデータ量の「ライブ」パーセンテージを取得することはできません。

于 2012-06-28T04:16:46.460 に答える