V6.74β1No.01846
秀まるお2 さん 17/08/09 16:23
 
 V6.74β1をアップロードしました。

32bit版:
http://hide.maruo.co.jp/software/bin3/hmmail674b1_signed.exe

64bit版:
http://hide.maruo.co.jp/software/bin3/hmmail674b1_x64_signed.exe

 ヒラメさんの所でのクリップボードがクリアされる件については、エディタ・
ウィンドウを閉じるタイミングで、閉じる処理の直前にクリップボード内容を保
存して、閉じる処理が終わった後にクリップボードを確認して、もし内容が書き
換わっていれば元に戻すって処理を入れてみました。

 OpenClipboard/CloseClipboardでロックする作戦は失敗しました。たしかにそ
れでロックは可能なんですが、CloseClipboardすると、その直後に書き換えられ
てしまうようで、ダメでした。(どういう仕組みなのやら?)

 あと、hirnさんから連絡いただいたいくつかのバグ修正をしています。

 よろしくお願いします。

ヒラメさんにお願い:
 もしダメでしたら、、デバッグレベルを1にして再度トライしてみて欲しいの
と、それでもダメでしたら、またdump.txt教えて欲しいです。「Try to save
Clipboard」とか「Try to restore Clipboard」とかの記録が出る手はずになっ
てます。

例:
15:48:21.159 (22398) tid=1756 szFileName cleared at SaveMailGeneral
15:48:21.159 (15175) tid=1756 Try to save Clipboard
15:48:21.159 (15188) tid=1756 Clipboard saved cb=32
15:48:21.268 (   0) tid=1756 GENERAL_SETIMEOPEN 0
15:48:21.268 (15213) tid=1756 DestroyWindowします
15:48:21.268 (10672) tid=1756 WM_DESTROY
15:48:21.268 (10680) tid=1756 ImeをOFFにしました
15:48:21.268 (27094) tid=1756 DeleteAttachFile(): deleting current attach list
15:48:21.268 (8441) tid=1756 PostQuitMessageSub
15:48:21.268 (15335) tid=1756 DestroyWindowしました
15:48:21.268 (22506) tid=1756 return TRUE
15:48:21.284 (29947) tid=1756 Hidemaru Message-loop exit
15:48:21.284 (34340) tid=1756 Try to restore Clipboard
15:48:24.034 (34358) tid=1756 CF_UNICODETEXT cb=32 cbPrev=32 memcmp=0
15:48:24.034 (10008) HIDEMARUDELETED

[ ]
RE:01846 V6.74β1No.01848
ヒラメ さん 17/08/09 17:32
 
早速の修正ありがとうございました。
エディタを閉じた後も貼り付けできるようになっていました。

クリップボードの内容で復帰できるのはテキスト情報のみになって
しまうのは仕方ない感じでしょうか。
(表、画像、フォーマット等の情報は失われてしまう)

念のためdump.txtを出力しましたので末尾に記載します。
デバッグモードは「0」のままです。

秀丸メール Version 6.74 Beta 1 (64bit)
HTMLメール編集アドイン Version 1.37
Windows 10 Pro (Creators Update), 1703 (15063.483) (64bit)


15:18:16.577 (22423) tid=8888 ProcessFrameClose()
15:18:16.577 (27619) tid=8888 SetUpdated()
15:18:16.577 (11699) tid=8888 DialogBox2Param() template=249
15:18:16.577 (33785) tid=8888 MessageBeep2
15:18:18.281 (11752) tid=8888 DialogBox2Param() exit 7
15:18:18.281 (15175) tid=8888 Try to save Clipboard
15:18:18.281 (15188) tid=8888 Clipboard saved cb=18
15:18:18.281 (15213) tid=8888 DestroyWindowします
15:18:18.304 (10672) tid=8888 WM_DESTROY
15:18:18.304 (10680) tid=8888 ImeをOFFにしました
15:18:18.304 (27094) tid=8888 DeleteAttachFile(): deleting current attach list
15:18:18.304 (8441) tid=8888 PostQuitMessageSub
15:18:18.308 (15335) tid=8888 DestroyWindowしました
15:18:18.308 (22506) tid=8888 return TRUE
15:18:18.319 (29947) tid=8888 Hidemaru Message-loop exit
15:18:18.320 (43127) IsolatedHtmlViewerNotify 7,8691
15:18:18.359 (10008) HIDEMARUDELETED
15:18:18.359 (34345) tid=8888 Try to restore Clipboard
15:18:18.359 (34363) tid=8888 CF_UNICODETEXT cb=18 cbPrev=18 memcmp=0
15:18:18.375 (2098) IsProcessExitable: ShowFrame

[ ]
RE:01848 V6.74β1No.01850
秀まるお2 さん 17/08/09 18:07
 
> クリップボードの内容で復帰できるのはテキスト情報のみになって
> しまうのは仕方ない感じでしょうか。
> (表、画像、フォーマット等の情報は失われてしまう)

 とりあえず今回はCF_UNICODETEXTってデータのみバックアップ/復元してるん
ですが、他の形式も同様の処理をすれば、技術的には可能かと思いつつも、現実
的にはたぶん無理があると思います。

 とりあえず画像だけならCF_BITMAPに対応すれば出来ると思いますけども、エ
クスプローラでコピーしたファイルとかの、いわゆるOLEオブジェクトとかが絡
んでくると、ちょっと僕の知識では手に負えないです。

 表とかも、果たしてどういう形式でクリップボードに入ってるのか、まったく
分かりません。アプリケーションソフト毎に独自形式のを入れてることもあるだ
ろうし、それの中身がメモリのハンドルって決まってる訳でも無いと思うので、
ちょっと無理かなぁと思います。

 画像(CF_BITMAP)だけなら対応してもいいですけども。

> 念のためdump.txtを出力しましたので末尾に記載します。
> デバッグモードは「0」のままです。

 ちなみにこのログだと、

> 15:18:18.359 (34345) tid=8888 Try to restore Clipboard
> 15:18:18.359 (34363) tid=8888 CF_UNICODETEXT cb=18 cbPrev=18 memcmp=0

 ってことで、クリップボード内容が書き換えられた形跡は無く、復元もしてな
いようです。

 復元してるとしたら、

   will Restore Clipboard

 って記録が出てないとおかしいです。もしかしてこの処理が働いてないにもか
かわらず直ってるとしたら、それはそれで謎ですけども。

[ ]
RE:01850 V6.74β1No.01851
ヒラメ さん 17/08/09 19:26
 
>  とりあえず今回はCF_UNICODETEXTってデータのみバックアップ/復元してるん
> ですが、他の形式も同様の処理をすれば、技術的には可能かと思いつつも、現実
> 的にはたぶん無理があると思います。

簡単なのかと思ってましたけど違うんですね。私としては少なくとも
テキストが保持されるということで我慢しようと思います。


>  復元してるとしたら、
>    will Restore Clipboard

もう一度ログを取ってみました。長くなってしまい申し訳ありませんが
全て貼り付けます。

操作手順は
・動作をdump.txtに記録するをON
・新規テキストメールを作成
・表示>HTMLメール編集
・本文に適当に記入してコピー
・メールエディタを閉じる>保存しない
・秀丸エディタを起動して貼り付け>問題無し
・動作をdump.txtに記録するをOFF
となります。

バージョンを6.73に戻して同じ操作をすると、やはり貼り付けできない
状態でした。ということで改善されているようなのですけども。


17:15:53.765 (20003) EnvChagned fFilterLog=0
17:15:53.828 (21343) 40017 ret 1
17:15:55.453 (19360) Cmd 40001
17:15:55.453 (30006) CreateThreadAndViewFrame
17:15:55.453 (30233) MuteOther(0)
17:15:55.453 (34522) StartThread tid=12532
17:15:55.453 (29191) tid=12532 ThreadFunc
17:15:55.453 ( 370) tid=12532 Monitor: 0,-1024,2736,1824 multi
17:15:55.453 (29327) tid=12532 ViewFrame created 004D00F2
17:15:55.453 (29347) tid=12532 HmCreate
17:15:55.453 (   0) tid=12532 call WinMainSub
17:15:55.453 (   0) tid=12532 FrameWndProc: WM_CREATE
17:15:55.453 (   0) tid=12532 ClientWndProc: WM_CREATE
17:15:55.453 (32059) tid=12532 TEXTS.New() passed fRef OK
17:15:55.453 (   0) tid=12532 return WinMainSub
17:15:55.453 (29351) tid=12532 HmCreate return
17:15:55.484 (12967) tid=12532 InitOuterHidemaru
17:15:55.484 (11522) tid=12532 EditorWnd:TKINFO 44
17:15:55.484 (8202) tid=12532 tkinfo 44
17:15:55.484 (11530) tid=12532 EditorWnd:TKINFO 44 return 00000001
17:15:55.484 (3298) tid=12532 SetText at editor
17:15:55.500 (12023) tid=12532 WM_SHOWWINDOW dpi=96 x,y,cx,cy=122,1094,972,7
42 monitor=00010003
17:15:55.500 (30091) CreateThreadAndViewFrame: event2
17:15:55.541 (14995) tid=12532 SetForegroundTopWindow 004D00F2==HidemaruFrame
17:15:55.541 (15047) tid=12532 SetLastForeground
17:15:55.558 (30057) CreateThreadAndViewFrame: waiting hevent OK
17:15:55.558 (29520) tid=12532 StartMessageLoop
17:15:55.558 (30151) CreateThreadAndViewFrame() normal exit
17:15:55.558 (14995) SetForegroundTopWindow 004D00F2==HidemaruFrame
17:15:55.558 (15047) SetLastForeground
17:15:55.558 (30509) ReleaseMuteOther()
17:15:55.558 (21343) 40001 ret 1
17:15:58.201 (15412) tid=12532 EditorCmd 40336
17:15:58.201 (27619) tid=12532 SetUpdated()
17:15:58.201 (34772) tid=12532 ClearUpdated() fUpdated = FALSE
17:15:58.201 ( 480) tid=12532 HtmlEditor: CreateToolbarSub dpi=96 cxcyButton=16
17:15:58.357 (17580) tid=12532 EditorCmd 40336 ret 1
17:15:59.321 (27619) tid=12532 SetUpdated()
17:16:02.759 (22423) tid=12532 ProcessFrameClose()
17:16:02.759 (27619) tid=12532 SetUpdated()
17:16:02.759 (11699) tid=12532 DialogBox2Param() template=249
17:16:02.790 (33785) tid=12532 MessageBeep2
17:16:04.103 (11752) tid=12532 DialogBox2Param() exit 7
17:16:04.103 (15175) tid=12532 Try to save Clipboard
17:16:04.103 (15188) tid=12532 Clipboard saved cb=8
17:16:04.119 (15213) tid=12532 DestroyWindowします
17:16:04.119 (10672) tid=12532 WM_DESTROY
17:16:04.119 (10680) tid=12532 ImeをOFFにしました
17:16:04.119 (27094) tid=12532 DeleteAttachFile(): deleting current attach list
17:16:04.119 (8441) tid=12532 PostQuitMessageSub
17:16:04.119 (15335) tid=12532 DestroyWindowしました
17:16:04.119 (22506) tid=12532 return TRUE
17:16:04.135 (29947) tid=12532 Hidemaru Message-loop exit
17:16:04.135 (34345) tid=12532 Try to restore Clipboard
17:16:04.135 (34363) tid=12532 CF_UNICODETEXT cb=8 cbPrev=8 memcmp=0
17:16:04.150 (10008) HIDEMARUDELETED
17:16:04.150 (2098) IsProcessExitable: ShowFrame
17:16:06.114 (10716) IDTIMER_CHECK_POSTQUIT
17:16:06.114 (2098) IsProcessExitable: ShowFrame
17:16:11.226 (10205) syscommand 0xF095
17:16:11.226 (10298) will DefWindowProc
17:16:11.648 (10302) DefWindowProc done nRet = 00000000
17:16:11.648 (19360) Cmd 40017

[ ]
RE:01851 V6.74β1No.01852
秀まるお2 さん 17/08/10 10:04
 
 ソースコードを見直したんですが、やはりそのdump.txt内容だと、クリップ
ボードの復元処理はしてないようです。クリップボードの中身が以前のデータと
比較する処理はちゃんと動作してるんですが、結果「一致してる」と判定されて、
何も書き換えずに終了してるようです。

 なんだかよく分からないですけども、直ってるので良しってことにさせていた
だきます。

[ ]