喫茶XRAYトップページ

[スレッド全体
]

[12675] HLPヘルプからCHMヘルプへ変換返信 削除
2019/4/1 (月) 16:03:32 Mr.XRAY
HTML Help Workshop なんですが,[印刷] や [オプション] 等のボタン類の設定が
できませんでした.
HHP ファイルに [WINDOWS] セッションを追加すれば可能であることが分かりました.
で,追加しました.

http://mrxray.on.coocan.jp/Delphi/Others/Win32HLP2ChmHLP.htm#fig37

この [WINDOWS] セッション は

  Wnd1=値1, 値2, 値3, 値4, 値5,,,,

という構造になっています (文字列のパラメータは " で括る).
たまに見かける設定の記述です.
以下のように,ちょっとしたノウハウがあります.参考までに.
CSV 関係の質問,検索ヒットは結構あるので.

    LTextList := TStringList.Create;
    try
      // カンマ区切の文字列を必要な分だけ作成してしまう
      LItemCnt := 20;
      LTextList.CommaText := DupeString(',', LItemCnt - 1);

      // 必要なパラメータだけ設定していく
      LTextList[0]  := AnsiQuotedStr(LHelpTitle, '"');
      LTextList[1]  := AnsiQuotedStr(LFileName + '.hhc', '"');
      LTextList[2]  := AnsiQuotedStr(LFileName + '.hhk', '"');
      LTextList[3]  := AnsiQuotedStr('', '"');
      LTextList[9]  := '0x60720';
      LTextList[10] := '200';
      LTextList[11] := '0xE';
      LTextList[12] := '[200,200,800,600]';
      LTextList[13] := '0x0';
      LTextList[14] := '0x0';
      LTextList[LTextList.Count - 1] := '0';

      // 最初のパラメータの値を代入してからループするのがミソ
      LWinText := LTextList[0];
      for LIndex := 1 to LTextList.Count - 1 do begin
        LWinText := LWinText  + ',' + LTextList[LIndex];
      end;
 
      // LWinText ではなく LTextList.CommaText を書き込むと
      // 余分な " (ダブルクォーテーション) が付加されてしまう
      // もしかしたら方法があるかも知れないけど・・・
      LIniFile.WriteString('WINDOWS', 'WND1', LWinText);
    finally
      FreeAndNil(LTextList);
    end;
 
何だか知らないけれど,
面白いように CHM ヘルプに変換できます.ハマりました (笑)


[12698] Re:HLPヘルプからCHMヘルプへ変換返信 削除
2019/4/12 (金) 11:37:57 Mr.XRAY
更新しました.
起動時のパス名のチェック機能を追加しました.


[12700] 他のアプリの操作返信 削除
2019/4/12 (金) 22:52:11 Mr.XRAY
ソースコードの誤字脱字関係をチェックして最 UP しました.

他のアプリの操作なんてやらない方がいいので,あまり参考にはならないとは思いますが,
コーディングで気が付いたことを.

HTML Help Workshop (以下 HHW) はおかぽんさんが書いているように,あさっての方向
に表示できるのですが,処理の進行中に現れるダイアログは,フックでもしなければ
無理です.
ヘルプましんは位置とサイズの操作はできませんでした.
もしかしたら無効になるようになっているのかも知れません.
ソースコードのほとんどは当サイトのサンプルをコピペして編集して使っています.

苦労したのは,HHW の処理終了の検出です.
眺めていたら最後に HHP ファイルを生成して保存しているようなので,
これを処理終了の時期として使用することにしています.
用心のために 500 ms のタイムラグを設定しています.
この時 HHW のウィンドウはあさっての方向にあるので見えません.

ダイアログの操作では 100 ms のタイムラグを Sleep 関数で設定しています.
Sleep 関数で自身のプロセスを停止させた方がいいようです.
タイマー等で同じ 100 ms に設定しても失敗することがあります.

ダイアログのボタン等,コントロール類の ID を調べるのも,もちろん
当サイトのサンプルを使用しています.


# ヘルプましんは Delphi 製です.


[12701] Re:他のアプリの操作返信 削除
2019/4/12 (金) 23:02:02 Mr.XRAY
> # ヘルプましんは Delphi 製です.

Delphi 6 のようです.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82