[過去ログ]
Win32API質問箱 Build126 (1002レス)
Win32API質問箱 Build126 http://mevius.5ch.net/test/read.cgi/tech/1588339011/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
977: 971 [sage] 2021/11/12(金) 14:34:55 ID:+qQdSUS6 そうですね、確かにただのファイルのコピーなら別プロセスで実行してもいいのですが ドラッグアンドドロップと絡んでくると難しいんじゃないですかね なにせ実際にファイルのコピーを行うのは自アプリじゃなくて エクスプローラ側のなのでですね 別プロセスで DoDragDrop を呼び出せってことなんでしょうけど ドラッグアンドドロップの起点となるのはメインアプリのマウスメッセージからなので これはかなり難しいと思います なにせ DoDragDrop は別スレッドから呼び出しただけで動かなくなる変なAPIなので http://bbs.wankuma.com/index.cgi?mode=al2&namber=94173&KLOG=163 別プロセスとなるとさらにハードルが高いと思われます なぜ別スレッドで DoDragDrop が呼び出せないかは謎なんですが 多分 Windows 内部で WM_LBUTTONDOWN 系の何か「今」マウスが押されてる ウィンドウかスレッドを覚えていて、それとは別スレッドで DoDragDrop が実行されると 失敗する処理が入っているんだと思います ドラッグアンドドロップはかなり、なんというか、まぁ、特別というか 他のアプリにも影響が出る処理なので、OS全体を巻き込んでフリーズしないように 何かしてあるんでしょうね、これ、ちょっとよく分かりませんが、、、 ともかく別スレッドで実行できないです、なんででしょうね それを回避するのが IDataObjectAsyncCapability なんですが https://docs.microsoft.com/en-us/windows/win32/api/shldisp/nn-shldisp-idataobjectasynccapability MSDN にも StartOperation が呼ばれたら、データ維持しろ、みたいなことが書いてあるけど それをいつまで維持すればよいのかという話で、最後に EndOperation が呼ばれるって書いてあるけど 実際には呼ばれないんですよねー、まぁ呼ばれることもあるんですけど、この辺がまた一貫してない http://mevius.5ch.net/test/read.cgi/tech/1588339011/977
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.144s*