2016-09-08 22 views
0

私はいくつかのファイルの背後にあるWindowsプロセスを検索するルーチンを持っています。プロセス内のCHMファイル名の検索方法は?

通常は機能しますが、.CHMファイル(コンパイルされたヘルプファイル)を検索しようとすると、プロセス内の名前がファイル名ではなく元のヘルプ名であるため、見つけられません。以下を参照してください:

  • ファイル名= myhelp.chm私はこれを検索 < < <を!だから、
  • HelpName = 良いシステム - ヘルプファイル < <私はWindowsで何を参照してください プロセス

、どちらも私のルーチンはメモリにCHMを見つけることができ、また私はCHMファイル内でこの名前を見つけることができます。あなたはこれにどのように対処するか考えていますか?

+0

あなたは '私は、Windowsのプロセスを検索するためのルーチンを持っている...'とはどういう意味ですか? –

+0

私のアプリケーションは、Windowsプロセス領域で開いたウィンドウとファイルを検索します。ファイルが開いているかどうかを調べることができます。 –

答えて

1

ショート・ストーリー - オペレーティング・システムで非常に深く、20年(しかし良い)HT​​MLHELP(CHM)技術。重い解決策を見つけるが、私の答えの最後に読む。

詳しい情報:

あなたが知っているあなたはそれが存在することに頼ることができますので、HH.EXEは、HTMLヘルプ(HH)と一緒に配布されます。これはWindowsフォルダ内に存在し、コマンドラインオプションの数が限られています。 HH.EXEは.CHMファイルに関連付けられています。 * .CHMファイルをダブルクリックすると、WindowsはHH.EXEを使用してファイルを開きます。非常に小さなファイルで、ヘルプファイル名をHH APIライブラリに渡します。 HH.EXEは単一のインスタンスではありません.HH.EXEを使用してCHMファイルを3回開くと、3つのヘルプウィンドウが表示されます。

上記のように、HTMLHelpの実行可能ファイルはHH.EXEです.HH.EXEは基本的にInternet Explorerのラッパーです(HTMLヘルプランタイムの中心はhhctrl.ocxとshdocvw.dllです)。これは、hh.exe myfile.htmlを実行すると表示されます。ここで、myfile.htmlはコンパイルされていない(!)HTMLファイルです。

start /B hh.exe D:\_working\HTMLHelp.chm 

上に示したようにあなたは、Windowsエクスプローラまたはアプリケーションのヘルプとして呼び出すことにより、ダブルクリックにより、バッチファイルでCHMを呼び出すことができます - 常にタスクマネージャで同じ結果を。スナップは、開いているCHMとタスクマネージャを表示しています。ヘルプ作成者が指定したCHMのウィンドウタイトルバー "4KモニタのHTMLヘルプのテストファイル"を参照してください。タスクマネージャのプロセスリストでも同じことがあります。

enter image description here

enter image description here

-800または-titleコマンドラインオプション - 使用 - あなたがコンパイルされたヘルプファイル内の任意のデフォルトのウィンドウのタイプを指定した場合は無視されます。

次のスナップはすべてコンパイルされたヘルプモジュール(CHM)であり、FAR HTMLのような特別なHHユーティリティが必要です。上記のテキストはメインヘルプウィンドウのWindow Captionとしてコンパイルされています。おそらく興味深い情報だが、行く方法はない。

enter image description here

これは物事がご使用の環境に依存して、言いました。そのため、たとえば次のようなツールを使用して決定する必要があります。ProcessMonitorhh.exe操作ProcessStartをフィルタリングし、CHMファイルへのパスをDetailから以下のように抽出します。 CHMへのフルパスはです!あなたは、例えばWMIを介してプロセスのコマンドラインパラメータを取得することができますPowerShellでは

enter image description here

すべてのヘルプビューアを実行しているhh.exe Windowsの場合:

enter image description here

+0

詳細な説明をいただきありがとうございますが、私の問題は、ユーザーがCHMをクリックしたときにそのタイトルを見つける方法です。 Windowsプロセスのすべての辞書ペアを検索すると、そこにファイル名が表示されますが、ファイル名がタイトルと異なる場合は、ファイルが開かれているかどうかは実際には確認できません。注:tehファイルはユーザーの選択によって.NETコード内で開きます(彼はファイルを指し、.NETはProcess.Start()を使用して呼び出します) –

+1

@David間接的にしか応答しませんでしたが、CHMファイル名はコンパイルされませんCHMファイルとCHMウィンドウのタイトルはファイル名とは無関係です。CHMファイルの名前を変更して別のディレクトリに移動することができます - ローカルのWindows PCに問題はありません 開いているCHMファイルを検索したい場合は、Process.Start(helpFilePath);でアプリケーションからヘルプウィンドウを呼び出すのが最善の方法ではありません。 ShowHelpはCHMに電話するより良い方法です。 –

+0

ありがとうございました。私の問題は、ヘルプファイル自体を開く方法ではなく、ユーザーが開いたファイルを検出することです。ユーザーは、ファイルを選択して、 (違ったスレッドはそれを行います)。クローズすると、ファイルは暗号化されます。だから私の問題は、TITLES(およびそれに類似したもの)を持つファイルを見つける方法であり、開かれたときにWindowsプロセスはファイル名の代わりにこれらのタイトルを表示します。私はそれらを知らないので(PDFやCHMのように)、私はそれらにエラーを取得します。とにかくありがとうございました! –

関連する問題