喫茶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パスが空欄になるので 動作しなかったです。



[12705] Re3:他のアプリの操作返信 削除
2019/4/13 (土) 08:19:15 Mr.XRAY
▼ takaさん

> > 外部から位置とサイズの干渉できるような気がします。

スミマセンこれは完全に私のポカでした.
TApplication ウィンドウを操作していました (汗)

でもヘルプましんのウィンドウの位置の操作はするつもりありません.
というのは,ファイルを読み込む時に,
ファイルを開くダイアログ表示,ファイル名入力,開くボタンのクリックの
遠隔操作をします.

つまり,ダイアログの位置をあさっての位置に表示して閉じる時に元に戻すという
処理が必要です.自分で起動するのでウィンドウハンドルも取得できますが,
少しぐらいチラついてもいいんじゃない ?
と思っています.

下図は以下のサンプルでテストした結果です.
[ 02_位置とサイズを指定してアプリを起動 - ShellExecuteEx 使用 ]
http://mrxray.on.coocan.jp/Delphi/plSamples/266_App_CreateOpen.htm#02




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