喫茶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 製です.


[12702] Re:他のアプリの操作返信 削除
2019/4/12 (金) 23:09:38 taka
▼ Mr.XRAYさん
> ソースコードの誤字脱字関係をチェックして最 UP しました.
ここだけの秘密なんですけど
http://mrxray.on.coocan.jp/Delphi/Others/Win32HLP2ChmHLP.htm#04
「」の中の の


> ヘルプましんは位置とサイズの操作はできませんでした.
> # ヘルプましんは Delphi 製です.


こんばんは、Delphi製なら
外部から位置とサイズの干渉できるような気がします。


Universal Extractor

ヘルプましん
は持っていないので
今からインストールしてチェックしてみますね。


[12703] Re2:他のアプリの操作返信 削除
2019/4/13 (土) 00:37:52 taka
▼ takaさん
> ▼ Mr.XRAYさん
> > ヘルプましんは位置とサイズの操作はできませんでした.
> > # ヘルプましんは Delphi 製です.
>
> こんばんは、Delphi製なら
> 外部から位置とサイズの干渉できるような気がします。
>
>

勘違いしてました
ヘルプましんが作成するchmの位置とサイズですよね。
今度気が向いたら、外部から介入できるか調べてみますね。


UACの問題
---------------------------
ヘルプましん
---------------------------
ファイル C:\Program Files\HelpMachine\HHDesigner.INI を作成できません.
---------------------------
OK
---------------------------

C:\Program Files\HelpMachine\に
書き込みできないのは上記の1個だけのようなので
複数人で共有していないのでしたら操作するユーザーに書き換え権限を付与すればいいと思います
UACの問題は 下記の操作で解決します

IF NOT EXIST "C:\Program Files\HelpMachine\HHDesigner.INI" echo. > "C:\Program Files\HelpMachine\HHDesigner.INI"
icacls "C:\Program Files\HelpMachine\HHDesigner.INI" /grant %USERNAME%:RW

管理者権限でplConvertHLPtoHTML
を実行した際に、こそっと icaclsを実行してしまえばいい思います。


うちのパソコンは、
VirtualStoreへの書き込みを拒否にしているので

      LHMachineIniPath := GetHMachineIniFilePath(FHMachineExePath);
の後ろに
      if (LHMachineIniPath = '') And FileExists(ChangeFileExt(FHMachineExePath,'.ini')) then
        LHMachineIniPath := ChangeFileExt(FHMachineExePath,'.ini');
をいれないと iniパスが空欄になるので 動作しなかったです。



[12704] Re3:他のアプリの操作返信 削除
2019/4/13 (土) 08:10:55 Mr.XRAY
▼ takaさん,どうもです.

> IF NOT EXIST "C:\Program Files\HelpMachine\HHDesigner.INI" echo. > "C:\Program Files\HelpMachine\HHDesigner.INI"
> icacls "C:\Program Files\HelpMachine\HHDesigner.INI" /grant %USERNAME%:RW
>
> 管理者権限でplConvertHLPtoHTML
> を実行した際に、こそっと icaclsを実行してしまえばいい思います。


なるほどそういう手がありましたか
WinHelp (HLP ヘルプを Windows 10 で表示可能にするときの WinHlp32.exe の設定に
使っています.
ただ,ヘルプましんを一般ユーザ権限で使用している方はバーチャルストアですからね.
人が操作する設定内容は変更しない方針でいこうと思います.

> VirtualStoreへの書き込みを拒否にしているので

だとすると,起動時と終了時に下図のようなエラーが発生するような気もしますが.
でもこのコードは利用させて頂きます.
Ini ファイルのパス名を取得する関数の最後に追加します.



[12706] Re4:他のアプリの操作返信 削除
2019/4/13 (土) 14:07:52 taka
▼ Mr.XRAYさん
> ▼ takaさん,どうもです.
>
> > IF NOT EXIST "C:\Program Files\HelpMachine\HHDesigner.INI" echo. > "C:\Program Files\HelpMachine\HHDesigner.INI"
> > icacls "C:\Program Files\HelpMachine\HHDesigner.INI" /grant %USERNAME%:RW
> >
> > 管理者権限でplConvertHLPtoHTML
> > を実行した際に、こそっと icaclsを実行してしまえばいい思います。
>
> なるほどそういう手がありましたか
> WinHelp (HLP ヘルプを Windows 10 で表示可能にするときの WinHlp32.exe の設定に
> 使っています.
> ただ,ヘルプましんを一般ユーザ権限で使用している方はバーチャルストアですからね.
> 人が操作する設定内容は変更しない方針でいこうと思います.
>
> > VirtualStoreへの書き込みを拒否にしているので
>
> だとすると,起動時と終了時に下図のようなエラーが発生するような気もしますが.
> でもこのコードは利用させて頂きます.
> Ini ファイルのパス名を取得する関数の最後に追加します.
>


・Microsoft HTML Help Image Editorが
%LOCALAPPDATA%\VirtualStore\Windows\flash.fpr
の書き換えを行おうとする
---------------------------
Microsoft HTML Help Image Editor
---------------------------
Cannot open the file "C:\WINDOWS\flash.fpr".
---------------------------

"%LOCALAPPDATA%\VirtualStore\"を一括拒否している環境の場合は
一時的に拒否を解除して、flash.fprを作らせて
icacls "%LOCALAPPDATA%\VirtualStore\Windows\flash.fpr" /grant %USERNAME%:RW

・.hlpで設定していた画像のクリッカブルマップが解除される
 (.shg)ファイルは、HLPDecompileフォルダにある。
  ※リンク先に設定してた項目のページは、正常に変換されている。

・_RESOURCE\html
変換後のhtmlファイル名は、英数字になり、ファイル名で内容が判断できない。
(htmlを開かないと内容がわからない)
(もともと .hlpの作成時にrtfファイル名情報は失われているのかもしれない)

・コンパイル中に よその画面に 移動すると失敗する。
 [処理開始] 付近に
 変換中はマウス操作しないでください。の警告がいるかも


今回試しに変換して気になったことはこのくらいですね。


[12707] Re5:他のアプリの操作返信 削除
2019/4/13 (土) 14:55:37 taka
面倒になったので
C:\Program Files\HelpMachine
でないところに インストールしなおしました

[12708] Re6:他のアプリの操作返信 削除
2019/4/13 (土) 16:24:02 Mr.XRAY
▼ takaさん,いろいろな確認ありがとうございます.

> C:\Program Files\HelpMachine
> でないところに インストールしなおしました


これも含めて,古い UAC に対応していないアプリの利用の参考になるので,
記事の構成を考えたい思います.

>・.hlpで設定していた画像のクリッカブルマップが解除される

これも書いておかないと.

>変換後のhtmlファイル名は、英数字になり、ファイル名で内容が判断できない。

処理の際に名前を変更できるんですが,どんな名前にしていいか.
もちろん,ページ間のリンクも変更する必要があります.

> [処理開始] 付近に
> 変換中はマウス操作しないでください。の警告がいるかも


う〜む.システム全体でマウスとキー操作を禁止してしまとか ?


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