Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build125
https://mevius.5ch.net/test/read.cgi/tech/1551247748/
Win32API質問箱 Build124
https://mevius.5ch.net/test/read.cgi/tech/1510395780/
■関連スレ
Visual Studio 2019 Part4 https://mevius.5ch.net/test/read.cgi/tech/1585715794/
Visual Studio 2017 Part7 https://mevius.5ch.net/test/read.cgi/tech/1558179898/
【C++】 DirectX初心者質問スレ Part41 【C】 https://mevius.5ch.net/test/read.cgi/tech/1521786252/
Win32API質問箱 Build126
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2020/05/01(金) 22:16:51.96ID:ZJ42fMZB907デフォルトの名無しさん
2021/10/22(金) 20:27:15.71ID:/1A4Gt1O >>906を訂正
リストボックスではなくリストコントロール
リストボックスではなくリストコントロール
908蟻人間 ◆T6xkBnTXz7B0
2021/10/22(金) 20:30:33.06ID:9A3QnFKk WM_CTLCOLORLISTBOX
909蟻人間 ◆T6xkBnTXz7B0
2021/10/22(金) 20:31:42.61ID:9A3QnFKk LVM _ SETTEXTCOLOR
910デフォルトの名無しさん
2021/10/22(金) 20:41:26.23ID:/1A4Gt1O911蟻人間 ◆T6xkBnTXz7B0
2021/10/22(金) 20:47:54.77ID:9A3QnFKk メッセージフック
912デフォルトの名無しさん
2021/10/22(金) 20:51:54.90ID:/1A4Gt1O コンボボックスのリストコントロールは常にクラス名が「ComboLBox」で、親ウィンドウは必ずプロセスcsrss.exeが所有するウィンドウクラス名「#32769」のデスクトップウィンドウになる
913蟻人間 ◆T6xkBnTXz7B0
2021/10/22(金) 20:59:49.61ID:9A3QnFKk 拡張コンボボックス
914デフォルトの名無しさん
2021/10/22(金) 21:03:09.16ID:/1A4Gt1O >>911
回答ありがとう
メッセージフックはまだ試していないけど、WM_NOTIFYやWM_CTLCOLORLISTBOXはプロセス間やスレッド間で送受信できないとのことなので、一旦あきらめることにします
回答ありがとう
メッセージフックはまだ試していないけど、WM_NOTIFYやWM_CTLCOLORLISTBOXはプロセス間やスレッド間で送受信できないとのことなので、一旦あきらめることにします
915デフォルトの名無しさん
2021/10/22(金) 21:05:45.02ID:/1A4Gt1O916蟻人間 ◆T6xkBnTXz7B0
2021/10/22(金) 21:09:42.92ID:9A3QnFKk なんか思い込みが激しいようだ。
917デフォルトの名無しさん
2021/10/22(金) 21:18:20.88ID:WEjOh4+D フックじゃなくてサブクラス化でおk
918デフォルトの名無しさん
2021/10/22(金) 21:25:12.01ID:/1A4Gt1O919デフォルトの名無しさん
2021/10/22(金) 23:26:18.33ID:WEjOh4+D サブクラス化して WM_DRAWITEM と WM_PAINT を処理するだけでカラーリスト作ったことあるけど俺環だからだな
920デフォルトの名無しさん
2021/10/23(土) 02:17:46.83ID:ChfdQawL ハンドルは取れるんだから(Read|Write)ProcessMemoryやら使えば何でもできるよ
921デフォルトの名無しさん
2021/10/23(土) 02:58:58.97ID:YCKOUJsa ▼押してポップアップするリスト側の表示をどうこうしたいっぽい
(自前で実装してもそれまでのような気もするな)
(自前で実装してもそれまでのような気もするな)
922デフォルトの名無しさん
2021/10/23(土) 03:53:02.21ID:in+6fSXT だから919でそれやってるんだけどね
親が別プロセスになったらこのメッセージが飛んでこなくなると言うなら知らん
親が別プロセスになったらこのメッセージが飛んでこなくなると言うなら知らん
923デフォルトの名無しさん
2021/10/23(土) 04:06:57.27ID:HI7jjoTQ そもそもリストコントロールの親ウィンドウにWM_DRAWITEMが投げ込まれる仕様なので >>919,922 は何かの記憶違いじゃないかな
924デフォルトの名無しさん
2021/10/23(土) 15:23:54.34ID:in+6fSXT 手元のソースを見ながらレスしたんだけど、
親ウィンドウ(プロセス)から作った子ウィンドウ(COMBOBOX, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED コントロール)
のサブクラス化だけでそっちにメッセージはちゃんと来ててリストの色分けとかできてる
親プロセスが別という話ならテストしてないから知らんし、手元のソースも WM_DRAWITEM を処理してるところが他にないので
これ以上調べる気は無い
親ウィンドウ(プロセス)から作った子ウィンドウ(COMBOBOX, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED コントロール)
のサブクラス化だけでそっちにメッセージはちゃんと来ててリストの色分けとかできてる
親プロセスが別という話ならテストしてないから知らんし、手元のソースも WM_DRAWITEM を処理してるところが他にないので
これ以上調べる気は無い
925デフォルトの名無しさん
2021/10/23(土) 20:52:58.29ID:HI7jjoTQ >>924
詳しい説明ありがとう
普通のコンボボックスを(CBS_DROPDOWN | CBS_OWNERDRAWFIXED)で作成後、そのコンボボックスをサブクラス化することで
コンボボックスでWM_DRAWITEMを拾えるようになりました
CBS_OWNERDRAWFIXEDをセットし忘れていたことができない原因でした
大ポカです
詳しい説明ありがとう
普通のコンボボックスを(CBS_DROPDOWN | CBS_OWNERDRAWFIXED)で作成後、そのコンボボックスをサブクラス化することで
コンボボックスでWM_DRAWITEMを拾えるようになりました
CBS_OWNERDRAWFIXEDをセットし忘れていたことができない原因でした
大ポカです
926デフォルトの名無しさん
2021/10/23(土) 21:42:37.22ID:FyIAzbsP ズコー
927デフォルトの名無しさん
2021/10/23(土) 23:24:34.81ID:PMgILJYV 蟻人間が悪い
928デフォルトの名無しさん
2021/10/24(日) 22:24:25.46ID:jz1DejpB おちんちん切除の刑な
929デフォルトの名無しさん
2021/10/25(月) 10:45:57.68ID:vmRZrQEp >>902-903 で終わってた
930デフォルトの名無しさん
2021/10/25(月) 10:56:02.77ID:SLeimCOK コンボボックスはスタイルにCBS_NOINTEGRALHEIGHTを追加すればドロップダウンリストの自動リサイズを抑止できるんだけど、
表示後の明示的なリサイズはどうすればできますか?
表示後の明示的なリサイズはどうすればできますか?
931蟻人間 ◆T6xkBnTXz7B0
2021/10/25(月) 13:29:15.55ID:tw1a+0Qf >>930
COMBOBOXINFO.hwndListとSetWindowPos/MoveWindowを使う。
COMBOBOXINFO.hwndListとSetWindowPos/MoveWindowを使う。
932デフォルトの名無しさん
2021/10/25(月) 16:29:02.07ID:SLeimCOK933蟻人間 ◆T6xkBnTXz7B0
2021/10/25(月) 18:33:34.75ID:fI0MqBKa PostMessage?
934デフォルトの名無しさん
2021/10/25(月) 20:18:01.64ID:/y1ZSI8/ リサイズしようとしたら
WM _ GETMINMAXINFOが出て
それを処理しないといけない。
なので、独自にメッセージをポンプするか、PostMessageで現在のメッセージ処理を
一旦終了させないといけない。
直前に書いてある回答の蛇足だとこんなもん
WM _ GETMINMAXINFOが出て
それを処理しないといけない。
なので、独自にメッセージをポンプするか、PostMessageで現在のメッセージ処理を
一旦終了させないといけない。
直前に書いてある回答の蛇足だとこんなもん
935930
2021/10/25(月) 22:02:06.33ID:SLeimCOK >>930,932 の質問の表現を変えます
CBS_NOINTEGRALHEIGHTスタイルのコンボボックスはrcファイルで指定されたドロップダウンリストのサイズを維持しようとするらしい
WM_INITDIALOGでコンボボックスのフォントを変えるとフォントに応じてドロップダウンリストのサイズも変わってしまう
WM_INITDIALOG後にコンボボックスのドロップダウンリストのサイズを変更するにはどうすればよいか?
CBS_NOINTEGRALHEIGHTスタイルのコンボボックスはrcファイルで指定されたドロップダウンリストのサイズを維持しようとするらしい
WM_INITDIALOGでコンボボックスのフォントを変えるとフォントに応じてドロップダウンリストのサイズも変わってしまう
WM_INITDIALOG後にコンボボックスのドロップダウンリストのサイズを変更するにはどうすればよいか?
936デフォルトの名無しさん
2021/10/25(月) 23:13:41.66ID:2h62u+// むしろフォントに応じてサイズが変わるのが正解
メッセージ処理のタイミングなどで動的変更する方法は知らんが、
ダイアログリソースを編集すればワンチャン
ダイアログ表示してから編集というのはしたことないから保証しない(というか無理なきはする)が
表示前なら編集してどうにかなる
メッセージ処理のタイミングなどで動的変更する方法は知らんが、
ダイアログリソースを編集すればワンチャン
ダイアログ表示してから編集というのはしたことないから保証しない(というか無理なきはする)が
表示前なら編集してどうにかなる
937930
2021/10/25(月) 23:20:40.84ID:SLeimCOK コンボボックスのドロップダウンリストの縦サイズはデスクトップの縦サイズの半分より十分小さくないと、
コンボボックスが縦方向中央付近にある時にテキストボックスがドロップダウンリストに隠れやすくなる
コンボボックスが縦方向中央付近にある時にテキストボックスがドロップダウンリストに隠れやすくなる
938デフォルトの名無しさん
2021/10/25(月) 23:42:53.98ID:2h62u+// 面倒なので試さないけど、もしかしてフォント変更後にコンボボックスコントロールの
ウィンドウハンドルそのままSetWindowPosに投げたらドロップダウンサイズ変わらんか?
ウィンドウハンドルそのままSetWindowPosに投げたらドロップダウンサイズ変わらんか?
939デフォルトの名無しさん
2021/10/26(火) 19:58:48.51ID:2BgEM434 a.exe という service 用の exe があるとして
その WinMain の中で
登録済みの service (a.exe) として実行されたときと
デスクトップから起動 (a.exe) されたときと
区別する方法はありますか?
その WinMain の中で
登録済みの service (a.exe) として実行されたときと
デスクトップから起動 (a.exe) されたときと
区別する方法はありますか?
941デフォルトの名無しさん
2021/10/26(火) 21:49:16.90ID:55s5H13U デスクトップって言うのはダブルクリックで起動って読み替えたけど違うんかな
942デフォルトの名無しさん
2021/10/26(火) 21:52:04.16ID:cAwQ+zjg ・実行ファイル自体は同じ場所にある
・(ダブルクリックによる)エクスプローラーからの起動
・システムのサービスに登録してての起動
実行ファイル側のコードで自分自身で区別することが出来るか? という話でいいのかな?
・(ダブルクリックによる)エクスプローラーからの起動
・システムのサービスに登録してての起動
実行ファイル側のコードで自分自身で区別することが出来るか? という話でいいのかな?
943蟻人間 ◆T6xkBnTXz7B0
2021/10/26(火) 21:57:13.21ID:Dp6wzto0 ショートカットファイルならコマンドラインオプションをつけることができるから、それで区別可能。
944デフォルトの名無しさん
2021/10/26(火) 22:10:48.14ID:DnJtJtaA サービス用のEXEをそのまま実行する仕組みなんて普通は作らないけど
そのプロセスを起動した親のPPIDで判別できると思うよ
そのプロセスを起動した親のPPIDで判別できると思うよ
945デフォルトの名無しさん
2021/10/26(火) 22:13:30.49ID:WqHq7Z2L 親プロセスがservices.exeかどうか見るとか。結構めんどくさそうだけど
946デフォルトの名無しさん
2021/10/26(火) 22:22:56.91ID:DnJtJtaA .NETにはPPID取得する方法が用意されてないのが驚きなんだよね
WMIかピンボケするしかない
WMIかピンボケするしかない
947デフォルトの名無しさん
2021/10/26(火) 22:50:49.81ID:WzQpbfaj 独自のコマンドラインオプションをつけたものをサービスとして登録して、
それがついているときはサービスとして動作するように作ってる
それがついているときはサービスとして動作するように作ってる
948デフォルトの名無しさん
2021/10/27(水) 07:31:35.16ID:Zj1idbQo949デフォルトの名無しさん
2021/10/27(水) 09:54:33.98ID:t2iD5tO8950デフォルトの名無しさん
2021/10/27(水) 11:38:38.74ID:jUeTV2mv >>948
アプリケーションのエントリポイントは WinMain (or main) で変わらんでしょ
その中で登録だなんだを経てWinMain からは抜けるけどプロセスは生き残ったまま
別スレッドで ServiceMain をディスパッチしてるだけじゃなかろうか
アプリケーションのエントリポイントは WinMain (or main) で変わらんでしょ
その中で登録だなんだを経てWinMain からは抜けるけどプロセスは生き残ったまま
別スレッドで ServiceMain をディスパッチしてるだけじゃなかろうか
951デフォルトの名無しさん
2021/10/27(水) 17:24:24.16ID:Zj1idbQo952デフォルトの名無しさん
2021/10/27(水) 21:34:16.61ID:rXHlGl3r win7以前かな
953デフォルトの名無しさん
2021/10/27(水) 22:39:54.26ID:FvdEROp3 サービスのAPIってWindows NTの時代からたいして変わってないだろw
954デフォルトの名無しさん
2021/10/27(水) 23:35:14.09ID:joAdtZnc NT4 から2000でSCMの動的ロードが出来るようになったな
955デフォルトの名無しさん
2021/10/27(水) 23:50:16.32ID:ou7Wlnm/ >>951
WinMain(またはmain)内でStartServiceCtrlDispatcherを呼ぶ以外の方法あるの?
WinMain(またはmain)内でStartServiceCtrlDispatcherを呼ぶ以外の方法あるの?
956デフォルトの名無しさん
2021/10/28(木) 09:41:55.77ID:XVuwIiyB おまいの眼は節穴か
957デフォルトの名無しさん
2021/10/28(木) 21:15:42.35ID:WySuLNFg yes.It's the power of Christ that compels you!
958デフォルトの名無しさん
2021/11/02(火) 16:25:02.03ID:yLMj4W62 IOCTL_DISK_GET_DRIVE_LAYOUT_EXで得られるパーティションの情報と
FindFirstVolume, FindNextVolumeで得られるボリュームとの
対応付けはどうやるんです?
FindFirstVolume, FindNextVolumeで得られるボリュームとの
対応付けはどうやるんです?
959デフォルトの名無しさん
2021/11/03(水) 12:54:39.69ID:VhVmtrn9 >>958
何をやりたいのかわからないけど、IOCTL_DISK_GET_DRIVE_LAYOUT_EXの情報からドライブ名にしたいのなら、
"\\?\Volume" + PartitionId(GUID) にすれば、ボリューム名になるのでそれを変換すればいいはず
何をやりたいのかわからないけど、IOCTL_DISK_GET_DRIVE_LAYOUT_EXの情報からドライブ名にしたいのなら、
"\\?\Volume" + PartitionId(GUID) にすれば、ボリューム名になるのでそれを変換すればいいはず
960デフォルトの名無しさん
2021/11/03(水) 16:28:52.42ID:XJPYAEvm961デフォルトの名無しさん
2021/11/05(金) 13:35:11.77ID:aDspL8GE WS_EX_TOPMOSTなウインドウが時々、
通常ウインドウごときに前に出しゃばられるんだけど
防ぐか、出しゃばられたのを自動検知してZオーダーを
奪い返すにはどうすればいい?
通常ウインドウごときに前に出しゃばられるんだけど
防ぐか、出しゃばられたのを自動検知してZオーダーを
奪い返すにはどうすればいい?
962デフォルトの名無しさん
2021/11/05(金) 13:42:11.04ID:AxgqQTGR 他所の窓が WS_EX_TOPMOST で奪っていって前に出しゃばられてるのであれば
WM_STYLECHANGED 捕まえて奪い返す?
WM_STYLECHANGED 捕まえて奪い返す?
963デフォルトの名無しさん
2021/11/05(金) 14:22:05.51ID:x8tAGQOE964デフォルトの名無しさん
2021/11/06(土) 14:43:09.91ID:b1XdA94q ランサムウェアでも造ってんのか
965デフォルトの名無しさん
2021/11/06(土) 15:06:28.83ID:Iy8k0Kf7 yes!
966961
2021/11/06(土) 21:24:14.45ID:7Goy9i30 CreateWindow直後は理屈のとおりなんだけど
長時間稼働させて忘れた頃にAdobe Readerだの一太郎だのに
前に出しゃばられてるんだ
長時間稼働させて忘れた頃にAdobe Readerだの一太郎だのに
前に出しゃばられてるんだ
967デフォルトの名無しさん
2021/11/06(土) 21:29:06.09ID:n6Z+kNBR >>963はどうなんだよって
968デフォルトの名無しさん
2021/11/06(土) 22:27:59.28ID:Iy8k0Kf7 >>961
WM _ windowposchanging
WM _ windowposchanging
969デフォルトの名無しさん
2021/11/07(日) 15:26:34.47ID:eUZdhF5f >>966
忖度だ
忖度だ
970デフォルトの名無しさん
2021/11/08(月) 18:39:57.62ID:GDZdggMg 継ぎスレよろ
971sage
2021/11/11(木) 21:36:46.70ID:sXUxuuhm 質問します
自作ソフトからのドラッグアンドドロップで
デカいファイルのコピーなどで DoDragDrop から長時間制御がかえって来ないことを嫌って
DoDragDrop に渡すデータオブジェクトに IDataObjectAsyncCapability を実装しています
これで、D&Dが非同期になり、データのコピーなどが始まると、StartOperation が呼ばれ、
終わると、EndOperation が呼ばれると思っていたのですが・・・
で、何がしたいかといいますと、自作ソフトからエクスプローラにファイルなどをD&Dをしたとき、
エクスプローラが自作ソフトのプロセス中の IDataObject を
使用している間は自作アプリの終了を出来ないようにしたいわけです(なぜならエクスプローラが使用中だから)
それで、StartOperation でカウンタを一つ上げて、EndOperation でカウンタを一つ下げれば
現在なんらかの IDataObject が使用中かどうかわかるので、その間は終了できないようにしたいわけです
ところが、実際には、StartOperation は呼ばれますが EndOperation は呼ばれません!(なぜ?)
Win10 と Win11 の両方で試しましたが、両方ともそうでしたのでそういう実装なのでしょう
そこで、IDataObject のデストラクタ をもってして EndOperation の代わりにしようと考えました
IDataObject の参照カウンタが0になって解放されたなら、だれも使ってないことは確実なので、、、
で、エクスプローラは IDataObject を使い終わったら素直に Release してくれるのでいいですが
そうでないソフトもあります、具体的には Visual Studio 2022 がそうでした
勝手な想像ですが、おそらく IDataObject の解放が GC 任せになっているのでしょうか、いつ解放してくれるか分かりません
問題は、Visual Studio 2022 に直接ドロップしなくても
D&D 中に少しでもマウスカーソルが Visual Studio 2022 のウィンドウの上を通過するだけで
Visual Studio が IDataObject を握ったままになることです
探せば Visual Studio 以外にも、特に .Net 系のアプリなんかで IDataObject の解放を
GC任せにしているアプリはあるんじゃないですかね
そういった経緯がありまして、どのタイミングでファイルのコピーなどが終了して
アプリを終了してもい状態になったかどうか、判断する手立てがなくて困ってます
何かいい方法ないですかね
自作ソフトからのドラッグアンドドロップで
デカいファイルのコピーなどで DoDragDrop から長時間制御がかえって来ないことを嫌って
DoDragDrop に渡すデータオブジェクトに IDataObjectAsyncCapability を実装しています
これで、D&Dが非同期になり、データのコピーなどが始まると、StartOperation が呼ばれ、
終わると、EndOperation が呼ばれると思っていたのですが・・・
で、何がしたいかといいますと、自作ソフトからエクスプローラにファイルなどをD&Dをしたとき、
エクスプローラが自作ソフトのプロセス中の IDataObject を
使用している間は自作アプリの終了を出来ないようにしたいわけです(なぜならエクスプローラが使用中だから)
それで、StartOperation でカウンタを一つ上げて、EndOperation でカウンタを一つ下げれば
現在なんらかの IDataObject が使用中かどうかわかるので、その間は終了できないようにしたいわけです
ところが、実際には、StartOperation は呼ばれますが EndOperation は呼ばれません!(なぜ?)
Win10 と Win11 の両方で試しましたが、両方ともそうでしたのでそういう実装なのでしょう
そこで、IDataObject のデストラクタ をもってして EndOperation の代わりにしようと考えました
IDataObject の参照カウンタが0になって解放されたなら、だれも使ってないことは確実なので、、、
で、エクスプローラは IDataObject を使い終わったら素直に Release してくれるのでいいですが
そうでないソフトもあります、具体的には Visual Studio 2022 がそうでした
勝手な想像ですが、おそらく IDataObject の解放が GC 任せになっているのでしょうか、いつ解放してくれるか分かりません
問題は、Visual Studio 2022 に直接ドロップしなくても
D&D 中に少しでもマウスカーソルが Visual Studio 2022 のウィンドウの上を通過するだけで
Visual Studio が IDataObject を握ったままになることです
探せば Visual Studio 以外にも、特に .Net 系のアプリなんかで IDataObject の解放を
GC任せにしているアプリはあるんじゃないですかね
そういった経緯がありまして、どのタイミングでファイルのコピーなどが終了して
アプリを終了してもい状態になったかどうか、判断する手立てがなくて困ってます
何かいい方法ないですかね
972デフォルトの名無しさん
2021/11/12(金) 00:10:15.19ID:4fWazNbK 迷惑な香具師だな
973デフォルトの名無しさん
2021/11/12(金) 00:15:39.07ID:sPOmWbjM 961もそうだが只の釣りだろ
974デフォルトの名無しさん
2021/11/12(金) 02:05:20.32ID:M7lyd7nj Ruby なら、まずデスクトップに、Rubyスクリプト・a.rb を起動するショートカットを作る
ショートカットのリンク先
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/a.rb
a.rbの内容は、以下のように、
DryRun を使っているので、実際にはコピーされない
普通は、以下のように同期処理で作るけど、非同期にしたいのなら、
別プロセス・worker process でも起動すれば?
require 'fileutils'
dest_dir = "C:/Users/Owner/Documents/tmp/"
# ARGV は、ドロップした複数のファイルパスの配列
ARGV.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.each do |full_path|
file_name = File.basename( full_path ) # ファイル名のみ
FileUtils::DryRun.move( full_path, dest_dir + file_name)
end
sleep # 出力したコマンドプロンプト画面を閉じないようにする
出力
mv C:\Users\Owner\Documents\x.txt C:/Users/Owner/Documents/tmp/x.txt
ショートカットのリンク先
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/a.rb
a.rbの内容は、以下のように、
DryRun を使っているので、実際にはコピーされない
普通は、以下のように同期処理で作るけど、非同期にしたいのなら、
別プロセス・worker process でも起動すれば?
require 'fileutils'
dest_dir = "C:/Users/Owner/Documents/tmp/"
# ARGV は、ドロップした複数のファイルパスの配列
ARGV.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.each do |full_path|
file_name = File.basename( full_path ) # ファイル名のみ
FileUtils::DryRun.move( full_path, dest_dir + file_name)
end
sleep # 出力したコマンドプロンプト画面を閉じないようにする
出力
mv C:\Users\Owner\Documents\x.txt C:/Users/Owner/Documents/tmp/x.txt
975デフォルトの名無しさん
2021/11/12(金) 02:18:11.02ID:+s5Ye2oF 読んでないぞガイジ
976デフォルトの名無しさん
2021/11/12(金) 02:47:31.80ID:0Z8rlyMb 上のキチガイも書いてるがそういう場合は別プロセスにして放置だな
単一プロセスでうまくいかない事なんて沢山ある
単一プロセスでうまくいかない事なんて沢山ある
977971
2021/11/12(金) 14:34:55.49ID:+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 が呼ばれるって書いてあるけど
実際には呼ばれないんですよねー、まぁ呼ばれることもあるんですけど、この辺がまた一貫してない
ドラッグアンドドロップと絡んでくると難しいんじゃないですかね
なにせ実際にファイルのコピーを行うのは自アプリじゃなくて
エクスプローラ側のなのでですね
別プロセスで 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 が呼ばれるって書いてあるけど
実際には呼ばれないんですよねー、まぁ呼ばれることもあるんですけど、この辺がまた一貫してない
978デフォルトの名無しさん
2021/11/12(金) 15:45:20.47ID:rNKaN3pL おい片山、これの対応と次スレ建てやっとけ
979デフォルトの名無しさん
2021/12/02(木) 12:18:05.69ID:Q5DdwN4N DialogBoxでメインウインドウを作るとタイトルバーのHeightが若干短くなるものと認識していたのですが、色々とスタイルを試しても一般的なウインドウと同じものしか出来上がりません
世に出てるダイアログベースのフリーソフトは短いものが多いと思いますが何が違うのでしょうか?
世に出てるダイアログベースのフリーソフトは短いものが多いと思いますが何が違うのでしょうか?
980デフォルトの名無しさん
2021/12/02(木) 12:31:16.49ID:aNBqwDTQ 自分で描いてるんじゃね?
spy++で属性見るべし
spy++で属性見るべし
981デフォルトの名無しさん
2021/12/02(木) 12:36:49.79ID:vBr1OiF/ 比較画像とかある?
982デフォルトの名無しさん
2021/12/02(木) 12:43:31.97ID:zC7DodB0 >>979
> DialogBoxでメインウインドウを作るとタイトルバーのHeightが若干短くなるものと認識していたのですが、
そのようなことはありません
> 色々とスタイルを試しても一般的なウインドウと同じものしか出来上がりません
それが通常です
> 世に出てるダイアログベースのフリーソフトは短いものが多いと思いますが何が違うのでしょうか?
思い違いです
WS_EX_TOOLWINDOW を付与したウィンドウを求めてるだけじゃないのですか?
> DialogBoxでメインウインドウを作るとタイトルバーのHeightが若干短くなるものと認識していたのですが、
そのようなことはありません
> 色々とスタイルを試しても一般的なウインドウと同じものしか出来上がりません
それが通常です
> 世に出てるダイアログベースのフリーソフトは短いものが多いと思いますが何が違うのでしょうか?
思い違いです
WS_EX_TOOLWINDOW を付与したウィンドウを求めてるだけじゃないのですか?
983デフォルトの名無しさん
2021/12/02(木) 13:03:17.36ID:Q5DdwN4N >>980->>982
返答ありがとうございます
spy++で全く同じスタイルを付与してもタイトルバーの長さは変わらず太いままでした
短い方のフリーソフトにはWS_EX_TOOLWINDOWは立ってないようです
そして色々とググってみた所stackoverflowの質問によると、manifestにて最小サポートOSをWindowsXPにすると短くなるみたいな仕組みっぽいです
https://stackoverflow.com/questions/32426055/windows-10-dialog-box-titlebar-behavior
返答ありがとうございます
spy++で全く同じスタイルを付与してもタイトルバーの長さは変わらず太いままでした
短い方のフリーソフトにはWS_EX_TOOLWINDOWは立ってないようです
そして色々とググってみた所stackoverflowの質問によると、manifestにて最小サポートOSをWindowsXPにすると短くなるみたいな仕組みっぽいです
https://stackoverflow.com/questions/32426055/windows-10-dialog-box-titlebar-behavior
984デフォルトの名無しさん
2021/12/02(木) 19:14:11.18ID:8y/JBuUj この値ってファイル重複は調べられないのね
ハードリンク、シンボリックリンクだと同一の値だったが
(unsigned __int64) nFileIndexLow + ( (unsigned __int64) nFileIndexHigh<<32)
ハードリンク、シンボリックリンクだと同一の値だったが
(unsigned __int64) nFileIndexLow + ( (unsigned __int64) nFileIndexHigh<<32)
985デフォルトの名無しさん
2021/12/02(木) 21:02:13.06ID:8y/JBuUj 上のファイルIDって、ボリュームごとにナンバーがつけ変わるんですか?
そもそもどのようにファイルIDが生成されてるのか不明なんですが
コピーだと別のIDになりましたが
ボリューム番号を付けないでファイルIDが一致した場合、全く別のファイルってことがあるんですか?
ファイルの同一性判定
Windows
ボリュームシリアル番号とファイルIDを用いて同一性判定を行う。
https://yohhoy.hatenadiary.jp/entry/20130311/p1
そもそもどのようにファイルIDが生成されてるのか不明なんですが
コピーだと別のIDになりましたが
ボリューム番号を付けないでファイルIDが一致した場合、全く別のファイルってことがあるんですか?
ファイルの同一性判定
Windows
ボリュームシリアル番号とファイルIDを用いて同一性判定を行う。
https://yohhoy.hatenadiary.jp/entry/20130311/p1
986デフォルトの名無しさん
2021/12/02(木) 21:07:25.22ID:NUCi8UEu うめ
987デフォルトの名無しさん
2021/12/02(木) 21:09:25.23ID:8y/JBuUj ファイルIDが変更されるルールが不明なんですが
その昔の nFileIndexHigh/Low の日本語説明はこうなっている。
この識別子とボリューム シリアル番号により、 ファイルが一意に識別されます。
この番号は、 システムの再起動時やファイルのオープン時に変更される場合がありますが、
プロセスがファイルをオープンした後は、 識別子はファイルがクローズするまで一定の値になります。
アプリケーションはこの識別子とボリューム シリアル番号を使って、 2つのハンドルが同じファイルを参照しているかどうかを判断することができます。
成る程、比較にはボリューム シリアル番号も含めねばならぬ。
当時の「ファイルオープン時に変更されるかも」の文言の真意は判らないが、nFileIndexHigh/Low を長期間保存しておくのは問題有るかも知れない。
usskim.blog37.fc2.com/blog-entry-555.html
その昔の nFileIndexHigh/Low の日本語説明はこうなっている。
この識別子とボリューム シリアル番号により、 ファイルが一意に識別されます。
この番号は、 システムの再起動時やファイルのオープン時に変更される場合がありますが、
プロセスがファイルをオープンした後は、 識別子はファイルがクローズするまで一定の値になります。
アプリケーションはこの識別子とボリューム シリアル番号を使って、 2つのハンドルが同じファイルを参照しているかどうかを判断することができます。
成る程、比較にはボリューム シリアル番号も含めねばならぬ。
当時の「ファイルオープン時に変更されるかも」の文言の真意は判らないが、nFileIndexHigh/Low を長期間保存しておくのは問題有るかも知れない。
usskim.blog37.fc2.com/blog-entry-555.html
988デフォルトの名無しさん
2021/12/02(木) 21:39:46.13ID:z73dHP14989デフォルトの名無しさん
2021/12/02(木) 23:17:05.29ID:8y/JBuUj サンクス
でもよくわからないです
でもよくわからないです
990デフォルトの名無しさん
2021/12/03(金) 19:56:31.26ID:SutKwY48 NTFSの内部情報がないとどうにもならん
終了
終了
991デフォルトの名無しさん
2021/12/07(火) 10:03:39.54ID:m4TDhLeb dbgviewの後継ツールってないの?
特定のプロセスだけ監視するとか
大量のゴミ撒き散らしてるプロセスだけ除外するとかしたい
特定のプロセスだけ監視するとか
大量のゴミ撒き散らしてるプロセスだけ除外するとかしたい
992デフォルトの名無しさん
2021/12/07(火) 13:11:46.58ID:VYmmPtZe >>991
dbgviewのFilter機能じゃダメなの?
>特定のプロセスだけ監視とか
>大量のゴミ撒き散らしてるプロセスだけ除外するとかしたい
自分が作ってるアプリなら、Traceの頭に固有文字列付けとけばよいし、
そうで無いなら[プロセス番号]でフィルターすれば事足りると思うが?
dbgviewのFilter機能じゃダメなの?
>特定のプロセスだけ監視とか
>大量のゴミ撒き散らしてるプロセスだけ除外するとかしたい
自分が作ってるアプリなら、Traceの頭に固有文字列付けとけばよいし、
そうで無いなら[プロセス番号]でフィルターすれば事足りると思うが?
993デフォルトの名無しさん
2021/12/07(火) 13:35:15.66ID:KkhoCDsy >>987
FATならディレクトリの最初のクラスタと、ファイルのバイトオフセットから生成
デフラグによってそのクラスタ位置やバイトオフセットが変われば識別子も変わる
削除して別のファイルを生成した場合に、同じファイルIDが生成される可能性がある
NTFSなら削除されるかReplaceFileによって置き換えられるまでは一意
またFAT、NTFSともにファイルIDはファイルシステムごとだから、同一コンピュータ上でも論理ドライブが違えば被ることもあるので、
同じ論理ドライブか異なる論理ドライブかを判断するもの(ボリューム シリアル番号など)が必要
FATならディレクトリの最初のクラスタと、ファイルのバイトオフセットから生成
デフラグによってそのクラスタ位置やバイトオフセットが変われば識別子も変わる
削除して別のファイルを生成した場合に、同じファイルIDが生成される可能性がある
NTFSなら削除されるかReplaceFileによって置き換えられるまでは一意
またFAT、NTFSともにファイルIDはファイルシステムごとだから、同一コンピュータ上でも論理ドライブが違えば被ることもあるので、
同じ論理ドライブか異なる論理ドライブかを判断するもの(ボリューム シリアル番号など)が必要
994デフォルトの名無しさん
2021/12/07(火) 21:50:48.67ID:kG93TMWa デフラグやファイル操作で変わるなら何の意味もないように見える
活用したい場面なんてないのでは
活用したい場面なんてないのでは
995デフォルトの名無しさん
2021/12/09(木) 20:57:10.24ID:aTCz13pR うめる
996デフォルトの名無しさん
2021/12/09(木) 20:57:15.04ID:aTCz13pR 落とせ
997デフォルトの名無しさん
2021/12/09(木) 20:57:20.79ID:aTCz13pR 捕手
998デフォルトの名無しさん
2021/12/09(木) 20:57:34.68ID:aTCz13pR 外野手
999デフォルトの名無しさん
2021/12/09(木) 20:57:48.44ID:aTCz13pR これでこのpartスレは終わりだ
1000デフォルトの名無しさん
2021/12/09(木) 20:58:48.50ID:rdeWvBW2 1000ならこのpartスレはこのスレで終了
未来永劫立てるなボケガイジ低学歴低年収底辺ども
しねしね
未来永劫立てるなボケガイジ低学歴低年収底辺ども
しねしね
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 586日 22時間 41分 57秒
新しいスレッドを立ててください。
life time: 586日 22時間 41分 57秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 現役猟師・東出昌大、クマ被害続出も過熱する報道に「クマはそんな危ないもんじゃない」理由語る [muffin★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- ハゲがレジやってるコンビニって
- 4時だから窓から4回ちんこ出した
- クマどもが冬眠拒否
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 宇宙飛行士 vs 超天才数学者
