[過去ログ] Win32API質問箱 Build126 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1: デフォルトの名無しさん [] 2020/05/01(金) 22:16:51 ID:ZJ42fMZB(1/4) AAS
Win32APIについての質問はこちらへどうぞ。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

■過去スレ
Win32API質問箱 Build125
2chスレ:tech
Win32API質問箱 Build124
2chスレ:tech

■関連スレ
Visual Studio 2019 Part4 2chスレ:tech
Visual Studio 2017 Part7 2chスレ:tech
【C++】 DirectX初心者質問スレ Part41 【C】 2chスレ:tech
903
(2): デフォルトの名無しさん [] 2021/10/22(金) 16:47:21 ID:DsjZYzXm(1) AAS
ownerdraw
904: デフォルトの名無しさん [] 2021/10/22(金) 20:06:47 ID:/1A4Gt1O(2/9) AAS
>>903
回答ありがとう
だがしかし、ownerdrawはWM_DRAWITEMが親ウィンドウに送られてくるので、コンボボックスのリストコントロールの親ウィンドウが別プロセスという問題点は同じ
905
(1): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2021/10/22(金) 20:09:04 ID:9A3QnFKk(1/6) AAS
customdraw
906
(1): デフォルトの名無しさん [] 2021/10/22(金) 20:24:55 ID:/1A4Gt1O(3/9) AAS
>>905
回答ありがとう
だがしかし、customdrawはWM_NOTIFYが親ウィンドウに送られてくるので、コンボボックスのリストコントロールの親ウィンドウが別プロセスという問題点は同じ

ちなみにコンボボックスのリストボックスは、SendMessage(CB_GETCOMBOBOXINFO)で戻されるCOMBOBOXINFO構造体のhwndListからウィンドウハンドルを得ている
コンボボックスのリストボックスは最初から親ウィンドウがデスクトッププロセスcsrss.exeが所有しているウィンドウクラス名「#32769」となっている
907: デフォルトの名無しさん [sage] 2021/10/22(金) 20:27:15 ID:/1A4Gt1O(4/9) AAS
>>906を訂正
リストボックスではなくリストコントロール
908
(1): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2021/10/22(金) 20:30:33 ID:9A3QnFKk(2/6) AAS
WM_CTLCOLORLISTBOX
909
(1): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2021/10/22(金) 20:31:42 ID:9A3QnFKk(3/6) AAS
LVM _ SETTEXTCOLOR
910: デフォルトの名無しさん [] 2021/10/22(金) 20:41:26 ID:/1A4Gt1O(5/9) AAS
>>908
回答ありがとう
だがしかし、WM_CTLCOLORLISTBOXは親ウィンドウに送られてくるので、コンボボックスのリストコントロールの親ウィンドウが別プロセスという問題点は同じ

>>909
回答ありがとう
だがしかし、LVM_SETTEXTCOLORはリストコントロール全体の文字色が変わってしまうので避けたい所存
911
(1): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2021/10/22(金) 20:47:54 ID:9A3QnFKk(4/6) AAS
メッセージフック
912: デフォルトの名無しさん [sage] 2021/10/22(金) 20:51:54 ID:/1A4Gt1O(6/9) AAS
コンボボックスのリストコントロールは常にクラス名が「ComboLBox」で、親ウィンドウは必ずプロセスcsrss.exeが所有するウィンドウクラス名「#32769」のデスクトップウィンドウになる
913
(2): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2021/10/22(金) 20:59:49 ID:9A3QnFKk(5/6) AAS
拡張コンボボックス
914: デフォルトの名無しさん [] 2021/10/22(金) 21:03:09 ID:/1A4Gt1O(7/9) AAS
>>911
回答ありがとう
メッセージフックはまだ試していないけど、WM_NOTIFYやWM_CTLCOLORLISTBOXはプロセス間やスレッド間で送受信できないとのことなので、一旦あきらめることにします
915: デフォルトの名無しさん [] 2021/10/22(金) 21:05:45 ID:/1A4Gt1O(8/9) AAS
>>913
回答ありがとう
あとで試してみます
916: 蟻人間 ◆T6xkBnTXz7B0 [sage] 2021/10/22(金) 21:09:42 ID:9A3QnFKk(6/6) AAS
なんか思い込みが激しいようだ。
917
(1): デフォルトの名無しさん [sage] 2021/10/22(金) 21:18:20 ID:WEjOh4+D(1/2) AAS
フックじゃなくてサブクラス化でおk
918: デフォルトの名無しさん [] 2021/10/22(金) 21:25:12 ID:/1A4Gt1O(9/9) AAS
>>917
回答ありがとう
だがしかし、サブクラス化してもコンボボックスのリストコントロールの親ウィンドウが別プロセスという問題点は同じ

拡張コンボボックスつまり >>913で教授いただいたCComboBoxExを試すのに時間がかかりそうなので質問は終わります
919
(1): デフォルトの名無しさん [sage] 2021/10/22(金) 23:26:18 ID:WEjOh4+D(2/2) AAS
サブクラス化して WM_DRAWITEM と WM_PAINT を処理するだけでカラーリスト作ったことあるけど俺環だからだな
920: デフォルトの名無しさん [sage] 2021/10/23(土) 02:17:46 ID:ChfdQawL(1) AAS
ハンドルは取れるんだから(Read|Write)ProcessMemoryやら使えば何でもできるよ
921: デフォルトの名無しさん [sage] 2021/10/23(土) 02:58:58 ID:YCKOUJsa(1) AAS
▼押してポップアップするリスト側の表示をどうこうしたいっぽい
(自前で実装してもそれまでのような気もするな)
922
(1): デフォルトの名無しさん [sage] 2021/10/23(土) 03:53:02 ID:in+6fSXT(1/2) AAS
だから919でそれやってるんだけどね
親が別プロセスになったらこのメッセージが飛んでこなくなると言うなら知らん
923: デフォルトの名無しさん [] 2021/10/23(土) 04:06:57 ID:HI7jjoTQ(1/2) AAS
そもそもリストコントロールの親ウィンドウにWM_DRAWITEMが投げ込まれる仕様なので >>919,922 は何かの記憶違いじゃないかな
924
(1): デフォルトの名無しさん [sage] 2021/10/23(土) 15:23:54 ID:in+6fSXT(2/2) AAS
手元のソースを見ながらレスしたんだけど、
親ウィンドウ(プロセス)から作った子ウィンドウ(COMBOBOX, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED コントロール)
のサブクラス化だけでそっちにメッセージはちゃんと来ててリストの色分けとかできてる

親プロセスが別という話ならテストしてないから知らんし、手元のソースも WM_DRAWITEM を処理してるところが他にないので
これ以上調べる気は無い
925: デフォルトの名無しさん [] 2021/10/23(土) 20:52:58 ID:HI7jjoTQ(2/2) AAS
>>924
詳しい説明ありがとう

普通のコンボボックスを(CBS_DROPDOWN | CBS_OWNERDRAWFIXED)で作成後、そのコンボボックスをサブクラス化することで
コンボボックスでWM_DRAWITEMを拾えるようになりました

CBS_OWNERDRAWFIXEDをセットし忘れていたことができない原因でした
大ポカです
926: デフォルトの名無しさん [sage] 2021/10/23(土) 21:42:37 ID:FyIAzbsP(1) AAS
ズコー
927: デフォルトの名無しさん [sage] 2021/10/23(土) 23:24:34 ID:PMgILJYV(1) AAS
蟻人間が悪い
928: デフォルトの名無しさん [sage] 2021/10/24(日) 22:24:25 ID:jz1DejpB(1) AAS
おちんちん切除の刑な
929: デフォルトの名無しさん [sage] 2021/10/25(月) 10:45:57 ID:vmRZrQEp(1) AAS
>>902-903 で終わってた
930
(3): デフォルトの名無しさん [] 2021/10/25(月) 10:56:02 ID:SLeimCOK(1/4) AAS
コンボボックスはスタイルにCBS_NOINTEGRALHEIGHTを追加すればドロップダウンリストの自動リサイズを抑止できるんだけど、
表示後の明示的なリサイズはどうすればできますか?
931
(1): 蟻人間 ◆T6xkBnTXz7B0 [sage] 2021/10/25(月) 13:29:15 ID:tw1a+0Qf(1) AAS
>>930
COMBOBOXINFO.hwndListとSetWindowPos/MoveWindowを使う。
932
(1): デフォルトの名無しさん [] 2021/10/25(月) 16:29:02 ID:SLeimCOK(2/4) AAS
>>931
CBN_DROPDOWN通知時にhwndListでSetWindowPos()を試したけど反映されなかった
どのタイミングならサイズを変更できるのだろう?
933: 蟻人間 ◆T6xkBnTXz7B0 [sage] 2021/10/25(月) 18:33:34 ID:fI0MqBKa(1) AAS
PostMessage?
934: デフォルトの名無しさん [sage] 2021/10/25(月) 20:18:01 ID:/y1ZSI8/(1) AAS
リサイズしようとしたら
WM _ GETMINMAXINFOが出て
それを処理しないといけない。

なので、独自にメッセージをポンプするか、PostMessageで現在のメッセージ処理を
一旦終了させないといけない。

直前に書いてある回答の蛇足だとこんなもん
935: 930 [] 2021/10/25(月) 22:02:06 ID:SLeimCOK(3/4) AAS
>>930,932 の質問の表現を変えます
CBS_NOINTEGRALHEIGHTスタイルのコンボボックスはrcファイルで指定されたドロップダウンリストのサイズを維持しようとするらしい
WM_INITDIALOGでコンボボックスのフォントを変えるとフォントに応じてドロップダウンリストのサイズも変わってしまう
WM_INITDIALOG後にコンボボックスのドロップダウンリストのサイズを変更するにはどうすればよいか?
936: デフォルトの名無しさん [sage] 2021/10/25(月) 23:13:41 ID:2h62u+//(1/2) AAS
むしろフォントに応じてサイズが変わるのが正解
メッセージ処理のタイミングなどで動的変更する方法は知らんが、
ダイアログリソースを編集すればワンチャン

ダイアログ表示してから編集というのはしたことないから保証しない(というか無理なきはする)が
表示前なら編集してどうにかなる
937: 930 [] 2021/10/25(月) 23:20:40 ID:SLeimCOK(4/4) AAS
コンボボックスのドロップダウンリストの縦サイズはデスクトップの縦サイズの半分より十分小さくないと、
コンボボックスが縦方向中央付近にある時にテキストボックスがドロップダウンリストに隠れやすくなる
938: デフォルトの名無しさん [sage] 2021/10/25(月) 23:42:53 ID:2h62u+//(2/2) AAS
面倒なので試さないけど、もしかしてフォント変更後にコンボボックスコントロールの
ウィンドウハンドルそのままSetWindowPosに投げたらドロップダウンサイズ変わらんか?
939
(2): デフォルトの名無しさん [sage] 2021/10/26(火) 19:58:48 ID:2BgEM434(1) AAS
a.exe という service 用の exe があるとして
その WinMain の中で
登録済みの service (a.exe) として実行されたときと
デスクトップから起動 (a.exe) されたときと
区別する方法はありますか?
940: 蟻人間 ◆T6xkBnTXz7B0 [sage] 2021/10/26(火) 21:43:07 ID:Dp6wzto0(1/2) AAS
>>939
GetModuleFileNameで実行ファイルの場所がわかる。
941
(1): デフォルトの名無しさん [sage] 2021/10/26(火) 21:49:16 ID:55s5H13U(1) AAS
デスクトップって言うのはダブルクリックで起動って読み替えたけど違うんかな
942
(1): デフォルトの名無しさん [sage] 2021/10/26(火) 21:52:04 ID:cAwQ+zjg(1) AAS
・実行ファイル自体は同じ場所にある
・(ダブルクリックによる)エクスプローラーからの起動
・システムのサービスに登録してての起動
実行ファイル側のコードで自分自身で区別することが出来るか? という話でいいのかな?
943: 蟻人間 ◆T6xkBnTXz7B0 [sage] 2021/10/26(火) 21:57:13 ID:Dp6wzto0(2/2) AAS
ショートカットファイルならコマンドラインオプションをつけることができるから、それで区別可能。
944
(1): デフォルトの名無しさん [sage] 2021/10/26(火) 22:10:48 ID:DnJtJtaA(1/2) AAS
サービス用のEXEをそのまま実行する仕組みなんて普通は作らないけど
そのプロセスを起動した親のPPIDで判別できると思うよ
945
(1): デフォルトの名無しさん [sage] 2021/10/26(火) 22:13:30 ID:WqHq7Z2L(1) AAS
親プロセスがservices.exeかどうか見るとか。結構めんどくさそうだけど
946
(1): デフォルトの名無しさん [sage] 2021/10/26(火) 22:22:56 ID:DnJtJtaA(2/2) AAS
.NETにはPPID取得する方法が用意されてないのが驚きなんだよね
WMIかピンボケするしかない
947
(1): デフォルトの名無しさん [sage] 2021/10/26(火) 22:50:49 ID:WzQpbfaj(1) AAS
独自のコマンドラインオプションをつけたものをサービスとして登録して、
それがついているときはサービスとして動作するように作ってる
948
(1): デフォルトの名無しさん [sage] 2021/10/27(水) 07:31:35 ID:Zj1idbQo(1/2) AAS
>>939
ServiceMain とWinMainで入口から
違うが?
949: デフォルトの名無しさん [sage] 2021/10/27(水) 09:54:33 ID:t2iD5tO8(1) AAS
>>941
cmd とかからのコマンド指定で起動も含みます
>>942
それです
>>944-946
ひと手間だけで取得出来る一般的な API やパラメータは無さそうですね?
>>947
それは最初に思い付いたのですが元々起動時のパラメータや API で取得する方法があるならその方が良いかなと思いました
950
(1): デフォルトの名無しさん [sage] 2021/10/27(水) 11:38:38 ID:jUeTV2mv(1) AAS
>>948
アプリケーションのエントリポイントは WinMain (or main) で変わらんでしょ
その中で登録だなんだを経てWinMain からは抜けるけどプロセスは生き残ったまま
別スレッドで ServiceMain をディスパッチしてるだけじゃなかろうか
951
(1): デフォルトの名無しさん [sage] 2021/10/27(水) 17:24:24 ID:Zj1idbQo(2/2) AAS
>>950
そんなコードは無いな。
どこの資料にそんな事書いてあるのかね?
952: デフォルトの名無しさん [] 2021/10/27(水) 21:34:16 ID:rXHlGl3r(1) AAS
win7以前かな
953: デフォルトの名無しさん [sage] 2021/10/27(水) 22:39:54 ID:FvdEROp3(1) AAS
サービスのAPIってWindows NTの時代からたいして変わってないだろw
954: デフォルトの名無しさん [sage] 2021/10/27(水) 23:35:14 ID:joAdtZnc(1) AAS
NT4 から2000でSCMの動的ロードが出来るようになったな
955: デフォルトの名無しさん [sage] 2021/10/27(水) 23:50:16 ID:ou7Wlnm/(1) AAS
>>951
WinMain(またはmain)内でStartServiceCtrlDispatcherを呼ぶ以外の方法あるの?
956: デフォルトの名無しさん [sage] 2021/10/28(木) 09:41:55 ID:XVuwIiyB(1) AAS
おまいの眼は節穴か
957: デフォルトの名無しさん [sage] 2021/10/28(木) 21:15:42 ID:WySuLNFg(1) AAS
yes.It's the power of Christ that compels you!
958
(1): デフォルトの名無しさん [sage] 2021/11/02(火) 16:25:02 ID:yLMj4W62(1) AAS
IOCTL_DISK_GET_DRIVE_LAYOUT_EXで得られるパーティションの情報と
FindFirstVolume, FindNextVolumeで得られるボリュームとの
対応付けはどうやるんです?
959
(1): デフォルトの名無しさん [sage] 2021/11/03(水) 12:54:39 ID:VhVmtrn9(1) AAS
>>958
何をやりたいのかわからないけど、IOCTL_DISK_GET_DRIVE_LAYOUT_EXの情報からドライブ名にしたいのなら、
"\\?\Volume" + PartitionId(GUID) にすれば、ボリューム名になるのでそれを変換すればいいはず
960: デフォルトの名無しさん [sage] 2021/11/03(水) 16:28:52 ID:XJPYAEvm(1) AAS
>>959
おー
ありがとうございます。
961
(3): デフォルトの名無しさん [sage] 2021/11/05(金) 13:35:11 ID:aDspL8GE(1) AAS
WS_EX_TOPMOSTなウインドウが時々、
通常ウインドウごときに前に出しゃばられるんだけど
防ぐか、出しゃばられたのを自動検知してZオーダーを
奪い返すにはどうすればいい?
962: デフォルトの名無しさん [sage] 2021/11/05(金) 13:42:11 ID:AxgqQTGR(1) AAS
他所の窓が WS_EX_TOPMOST で奪っていって前に出しゃばられてるのであれば
WM_STYLECHANGED 捕まえて奪い返す?
963
(1): デフォルトの名無しさん [sage] 2021/11/05(金) 14:22:05 ID:x8tAGQOE(1) AAS
>>961
もしかして
そうなった時って一度アクティブにしたらなおるやつ?
964: デフォルトの名無しさん [] 2021/11/06(土) 14:43:09 ID:b1XdA94q(1) AAS
ランサムウェアでも造ってんのか
965: デフォルトの名無しさん [sage] 2021/11/06(土) 15:06:28 ID:Iy8k0Kf7(1/2) AAS
yes!
966
(1): 961 [sage] 2021/11/06(土) 21:24:14 ID:7Goy9i30(1) AAS
CreateWindow直後は理屈のとおりなんだけど
長時間稼働させて忘れた頃にAdobe Readerだの一太郎だのに
前に出しゃばられてるんだ
967: デフォルトの名無しさん [sage] 2021/11/06(土) 21:29:06 ID:n6Z+kNBR(1) AAS
>>963はどうなんだよって
968: デフォルトの名無しさん [sage] 2021/11/06(土) 22:27:59 ID:Iy8k0Kf7(2/2) AAS
>>961
WM _ windowposchanging
969: デフォルトの名無しさん [sage] 2021/11/07(日) 15:26:34 ID:eUZdhF5f(1) AAS
>>966
忖度だ
970: デフォルトの名無しさん [] 2021/11/08(月) 18:39:57 ID:GDZdggMg(1) AAS
継ぎスレよろ
971
(1): sage [] 2021/11/11(木) 21:36:46 ID:sXUxuuhm(1) AAS
質問します
自作ソフトからのドラッグアンドドロップで
デカいファイルのコピーなどで 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 ID:4fWazNbK(1) AAS
迷惑な香具師だな
973: デフォルトの名無しさん [sage] 2021/11/12(金) 00:15:39 ID:sPOmWbjM(1) AAS
961もそうだが只の釣りだろ
974: デフォルトの名無しさん [sage] 2021/11/12(金) 02:05:20 ID:M7lyd7nj(1) AAS
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
975: デフォルトの名無しさん [sage] 2021/11/12(金) 02:18:11 ID:+s5Ye2oF(1) AAS
読んでないぞガイジ
976: デフォルトの名無しさん [sage] 2021/11/12(金) 02:47:31 ID:0Z8rlyMb(1) AAS
上のキチガイも書いてるがそういう場合は別プロセスにして放置だな
単一プロセスでうまくいかない事なんて沢山ある
977: 971 [sage] 2021/11/12(金) 14:34:55 ID:+qQdSUS6(1) AAS
そうですね、確かにただのファイルのコピーなら別プロセスで実行してもいいのですが
ドラッグアンドドロップと絡んでくると難しいんじゃないですかね
なにせ実際にファイルのコピーを行うのは自アプリじゃなくて
エクスプローラ側のなのでですね

別プロセスで 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: デフォルトの名無しさん [sage] 2021/11/12(金) 15:45:20 ID:rNKaN3pL(1) AAS
おい片山、これの対応と次スレ建てやっとけ
979
(1): デフォルトの名無しさん [sage] 2021/12/02(木) 12:18:05 ID:Q5DdwN4N(1/2) AAS
DialogBoxでメインウインドウを作るとタイトルバーのHeightが若干短くなるものと認識していたのですが、色々とスタイルを試しても一般的なウインドウと同じものしか出来上がりません
世に出てるダイアログベースのフリーソフトは短いものが多いと思いますが何が違うのでしょうか?
980
(1): デフォルトの名無しさん [sage] 2021/12/02(木) 12:31:16 ID:aNBqwDTQ(1) AAS
自分で描いてるんじゃね?
spy++で属性見るべし
981: デフォルトの名無しさん [sage] 2021/12/02(木) 12:36:49 ID:vBr1OiF/(1) AAS
比較画像とかある?
982
(1): デフォルトの名無しさん [sage] 2021/12/02(木) 12:43:31 ID:zC7DodB0(1) AAS
>>979
> DialogBoxでメインウインドウを作るとタイトルバーのHeightが若干短くなるものと認識していたのですが、

そのようなことはありません

> 色々とスタイルを試しても一般的なウインドウと同じものしか出来上がりません

それが通常です

> 世に出てるダイアログベースのフリーソフトは短いものが多いと思いますが何が違うのでしょうか?

思い違いです

WS_EX_TOOLWINDOW を付与したウィンドウを求めてるだけじゃないのですか?
983: デフォルトの名無しさん [sage] 2021/12/02(木) 13:03:17 ID:Q5DdwN4N(2/2) AAS
>>980->>982
返答ありがとうございます
spy++で全く同じスタイルを付与してもタイトルバーの長さは変わらず太いままでした
短い方のフリーソフトにはWS_EX_TOOLWINDOWは立ってないようです

そして色々とググってみた所stackoverflowの質問によると、manifestにて最小サポートOSをWindowsXPにすると短くなるみたいな仕組みっぽいです
https://stackoverflow.com/questions/32426055/windows-10-dialog-box-titlebar-behavior
984: デフォルトの名無しさん [sage] 2021/12/02(木) 19:14:11 ID:8y/JBuUj(1/4) AAS
この値ってファイル重複は調べられないのね
ハードリンク、シンボリックリンクだと同一の値だったが

(unsigned __int64) nFileIndexLow + ( (unsigned __int64) nFileIndexHigh<<32)
985: デフォルトの名無しさん [] 2021/12/02(木) 21:02:13 ID:8y/JBuUj(2/4) AAS
上のファイルIDって、ボリュームごとにナンバーがつけ変わるんですか?
そもそもどのようにファイルIDが生成されてるのか不明なんですが
コピーだと別のIDになりましたが
ボリューム番号を付けないでファイルIDが一致した場合、全く別のファイルってことがあるんですか?

ファイルの同一性判定
Windows
ボリュームシリアル番号とファイルIDを用いて同一性判定を行う。
https://yohhoy.hatenadiary.jp/entry/20130311/p1
986: デフォルトの名無しさん [sage] 2021/12/02(木) 21:07:25 ID:NUCi8UEu(1) AAS
うめ
987
(1): デフォルトの名無しさん [] 2021/12/02(木) 21:09:25 ID:8y/JBuUj(3/4) AAS
ファイルIDが変更されるルールが不明なんですが

その昔の nFileIndexHigh/Low の日本語説明はこうなっている。

この識別子とボリューム シリアル番号により、 ファイルが一意に識別されます。
この番号は、 システムの再起動時やファイルのオープン時に変更される場合がありますが、
プロセスがファイルをオープンした後は、 識別子はファイルがクローズするまで一定の値になります。
アプリケーションはこの識別子とボリューム シリアル番号を使って、 2つのハンドルが同じファイルを参照しているかどうかを判断することができます。

成る程、比較にはボリューム シリアル番号も含めねばならぬ。
当時の「ファイルオープン時に変更されるかも」の文言の真意は判らないが、nFileIndexHigh/Low を長期間保存しておくのは問題有るかも知れない。
usskim.blog37.fc2.com/blog-entry-555.html
988: デフォルトの名無しさん [sage] 2021/12/02(木) 21:39:46 ID:z73dHP14(1) AAS
https://docs.microsoft.com/en-us/windows/win32/api/fileapi/ns-fileapi-by_handle_file_information

英語読めよ..
989: デフォルトの名無しさん [] 2021/12/02(木) 23:17:05 ID:8y/JBuUj(4/4) AAS
サンクス
でもよくわからないです
990: デフォルトの名無しさん [sage] 2021/12/03(金) 19:56:31 ID:SutKwY48(1) AAS
NTFSの内部情報がないとどうにもならん
終了
991
(2): デフォルトの名無しさん [sage] 2021/12/07(火) 10:03:39 ID:m4TDhLeb(1) AAS
dbgviewの後継ツールってないの?
特定のプロセスだけ監視するとか
大量のゴミ撒き散らしてるプロセスだけ除外するとかしたい
992: デフォルトの名無しさん [sage] 2021/12/07(火) 13:11:46 ID:VYmmPtZe(1) AAS
>>991
dbgviewのFilter機能じゃダメなの?
>特定のプロセスだけ監視とか
>大量のゴミ撒き散らしてるプロセスだけ除外するとかしたい
自分が作ってるアプリなら、Traceの頭に固有文字列付けとけばよいし、
そうで無いなら[プロセス番号]でフィルターすれば事足りると思うが?
993: デフォルトの名無しさん [sage] 2021/12/07(火) 13:35:15 ID:KkhoCDsy(1) AAS
>>987
FATならディレクトリの最初のクラスタと、ファイルのバイトオフセットから生成
デフラグによってそのクラスタ位置やバイトオフセットが変われば識別子も変わる
削除して別のファイルを生成した場合に、同じファイルIDが生成される可能性がある

NTFSなら削除されるかReplaceFileによって置き換えられるまでは一意

またFAT、NTFSともにファイルIDはファイルシステムごとだから、同一コンピュータ上でも論理ドライブが違えば被ることもあるので、
同じ論理ドライブか異なる論理ドライブかを判断するもの(ボリューム シリアル番号など)が必要
994: デフォルトの名無しさん [sage] 2021/12/07(火) 21:50:48 ID:kG93TMWa(1) AAS
デフラグやファイル操作で変わるなら何の意味もないように見える
活用したい場面なんてないのでは
995: デフォルトの名無しさん [] 2021/12/09(木) 20:57:10.24 ID:aTCz13pR(1/5) AAS
うめる
996: デフォルトの名無しさん [] 2021/12/09(木) 20:57:15.04 ID:aTCz13pR(2/5) AAS
落とせ
997: デフォルトの名無しさん [] 2021/12/09(木) 20:57:20.79 ID:aTCz13pR(3/5) AAS
捕手
998: デフォルトの名無しさん [] 2021/12/09(木) 20:57:34.68 ID:aTCz13pR(4/5) AAS
外野手
999: デフォルトの名無しさん [] 2021/12/09(木) 20:57:48.44 ID:aTCz13pR(5/5) AAS
これでこのpartスレは終わりだ
1000: デフォルトの名無しさん [] 2021/12/09(木) 20:58:48.50 ID:rdeWvBW2(1) AAS
1000ならこのpartスレはこのスレで終了
未来永劫立てるなボケガイジ低学歴低年収底辺ども
しねしね
1001
(1): 1001 [] ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 586日 22時間 41分 57秒
1002
(1): 1002 [] ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.200s*