MENU
141,851

スレッドNo.607

BonsExifのannsFMへの登録方法

どうも世話になってます
BonsExifのannsFMへの登録方法ですが
[Exif情報の削除(X)] コマンドについて質問
パラメータの設定Tools2タブのBonsExif(B):
にBonsExif.exeのパス(C:\Software (x86)\annsFM\BonsExif.exe)
はBonsExif.exeの起動のみ
BonsFMminiの様な削除画面にならない
アクセレレーターキーが動作してないのは修正(未公開v4.0.1)

annsView画像モードのメニューの表示のExif情報表示ソフトの設定
Exif情報表示ソフト BonsExif.exeのパス(C:\Software (x86)\annsFM\BonsExif.exe)
Exif情報表示ソフト コマンドラインパラメータ %s
は問題無くBonsExif.exeに送れました
ただ、
>「コマンドパラメータ」は「%s」でなく「"%s"」と設定して下さい。
"%s"
にしても
%s
に戻ってる
よろしくお願いします
追記(必ず戻るわけではなさそう確認中)

追記
メールで教えていただいた
エクスプローラーからannsFMにドロップは
Main.pasもAIに見てもらったりして色々試しましたがダメでした

引用して返信編集・削除(編集済: 2026年06月03日 18:48)

原因が分かり修正しました
あとv4.0.1(未公開)で
ファイル名の一括変更[正規表現]を追加しました
ソースコード(RenameAllReg.dfm/RenameAllReg.pas)を参考にさせていただきました
許可をもらうのを忘れてましたがかまわないでしょうか?
よろしくお願いします。

AI回答
原因のまとめ
問題1:EXIF_RESPONSE_FILENAME マクロに @ が含まれている
cpp// FileView.h
#define EXIF_RESPONSE_FILENAME _T("@respose.res") // ← 先頭に @ が入っている
GetExePath("@respose.res") を呼ぶと @respose.res がそのままファイル名扱いされ、存在しないパスになります。さらに sResf = _T("@") + tmp2 で @@C:\...\@respose.res という二重 @ になり、BonsExif がレスポンスファイルを認識できずに通常起動していました。
問題2:パスにスペースが含まれる場合の引用符不足
C:\Software (x86)\annsFM\BonsExif.exe のようにパスにスペースがあると、ShellExecute の lpParameters にクォートなしで渡すと途中で引数が切れます。
修正内容:

tmp = _T("respose.res") に変更(@ を除いた純粋なファイル名)
sResf = _T("@\"") + tmp2 + _T("\"") でレスポンスファイルを引用符付きで生成
→ BonsExifには @"C:\Software (x86)\annsFM\respose.res" として渡る

これでBonsExifがレスポンスファイルを正しく認識し、削除画面(Panel10)が開くようになります。

「Exif情報の表示」と「Exif情報表示ソフトの設定」について
"%s" を登録しても %s になる件は、iniファイルへの読み書き時に GetProfileString/WriteProfileString が % をそのまま保存します。表示上は %s でも実際の動作には問題ありません。s.Format(m_pFmParam->m_sViewExifParam, m_sFileName) でファイルパスに展開されてBonsExifに渡っているため正常動作しています。

引用して返信編集・削除(未編集)

このスレッドに返信

ロケットBBS

Page Top