Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build126
https://mevius.5ch.net/test/read.cgi/tech/1588339011/
Win32API質問箱 Build125
https://mevius.5ch.net/test/read.cgi/tech/1551247748/
Win32API質問箱 Build124
https://mevius.5ch.net/test/read.cgi/tech/1510395780/
■関連スレ
Visual Studio 2020 Part1 https://mevius.5ch.net/test/read.cgi/tech/1634166667/
Visual Studio 2019 Part7 https://mevius.5ch.net/test/read.cgi/tech/1634178709/
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質問箱 Build127
■ このスレッドは過去ログ倉庫に格納されています
2021/12/09(木) 21:32:56.60ID:sYLpmj89
491デフォルトの名無しさん
2023/03/04(土) 01:56:42.82ID:fku36Zva MFCの設計が変なのは出てきた時期も悪かったと思うね
まだVC++含めて各C++コンパイラでtemplateもまともに動かない&互換性に問題があるような状態だったし
まだVC++含めて各C++コンパイラでtemplateもまともに動かない&互換性に問題があるような状態だったし
492デフォルトの名無しさん
2023/03/04(土) 04:09:52.49ID:HiKr/1U9 MFCは最初から死産だったがMS製だからVisualStudioに標準で入ってるからと使わざるを得なかっただけ
設計思想はDelphi(C++Builder)よりも数段劣ってる
当時のC++がうんこすぎたのもあるがこれは処理系の設計者のセンスの問題だろう
設計思想はDelphi(C++Builder)よりも数段劣ってる
当時のC++がうんこすぎたのもあるがこれは処理系の設計者のセンスの問題だろう
493デフォルトの名無しさん
2023/03/04(土) 06:03:41.66ID:2lfmGWRw >>490
その頃のBorlandはOWLだぞ
その頃のBorlandはOWLだぞ
494デフォルトの名無しさん
2023/03/04(土) 10:32:23.94ID:IGk7eTto MFCはDocument-Viewアーキテクチャがわかりにくいとかそのパターンに合わないアプリが
作りにくいとかはあったけど、それ以外は当時のC++でよくやったと思うよ。
作りにくいとかはあったけど、それ以外は当時のC++でよくやったと思うよ。
495デフォルトの名無しさん
2023/03/04(土) 10:38:13.23ID:RFNVa0Qi C++じゃなくてCからでもGDI+は使える
面倒だから避けるけど
面倒だから避けるけど
496デフォルトの名無しさん
2023/03/04(土) 10:40:00.46ID:RFNVa0Qi497デフォルトの名無しさん
2023/03/04(土) 10:41:24.02ID:RFNVa0Qi >>491
いやいやMFCの設計者が馬鹿過ぎただけ
いやいやMFCの設計者が馬鹿過ぎただけ
498デフォルトの名無しさん
2023/03/04(土) 10:43:16.79ID:RFNVa0Qi >>492-493
ほんそれ
ほんそれ
499デフォルトの名無しさん
2023/03/04(土) 10:45:47.20ID:RFNVa0Qi >>494
どうみても糞は糞
どうみても糞は糞
500デフォルトの名無しさん
2023/03/04(土) 10:51:57.61ID:2lfmGWRw Document Viewが分かりにくいとか
そんなんで音を上げるやつがセンスとはよく言うよ
そんなんで音を上げるやつがセンスとはよく言うよ
501デフォルトの名無しさん
2023/03/04(土) 11:11:54.38ID:N7rqxwy8 MFCなんてクソ過ぎて当時でも使ってなかったよw
502デフォルトの名無しさん
2023/03/04(土) 11:18:57.88ID:AKTwgEup MFCよりSDKというのは当時の合言葉だったろ
503デフォルトの名無しさん
2023/03/04(土) 11:21:50.94ID:2lfmGWRw Smalltalkの下手な真似は目が点になったけどね
504デフォルトの名無しさん
2023/03/06(月) 08:40:31.04ID:jJIeXpQ3 使わざるを得なかっただけてw
使うも使わないも使用者の自由だろw
使うも使わないも使用者の自由だろw
505デフォルトの名無しさん
2023/03/06(月) 09:09:43.33ID:3SgfQ2ps MFC ATL WTL
用途によって使い分け
ひとつのクラスライブラリに固執する必要性も必然性もない
用途によって使い分け
ひとつのクラスライブラリに固執する必要性も必然性もない
506デフォルトの名無しさん
2023/03/06(月) 14:14:58.36ID:diWxUEyJ Smalltalkの真似はObjective-C
507デフォルトの名無しさん
2023/03/06(月) 14:55:30.78ID:e9ffSDb7 >>504
途中から参加した案件では選択権がない
途中から参加した案件では選択権がない
508デフォルトの名無しさん
2023/03/07(火) 08:46:10.01ID:nXe+vnmI それは途中参加した案件が使ってるから使わざるを得ないだけで
VSに入ってるから使わざるを得ないわけではないね
VSに入ってるから使わざるを得ないわけではないね
509デフォルトの名無しさん
2023/03/07(火) 12:07:50.78ID:CdvGJ9oA 言うまでも無く地雷案件
参加する前に嗅覚で判断して離脱
参加する前に嗅覚で判断して離脱
510デフォルトの名無しさん
2023/03/07(火) 13:22:26.79ID:YRf34T/Q 上から降ってくる仕事を、雇われの立場の者は断れない
511デフォルトの名無しさん
2023/03/07(火) 17:55:18.76ID:jr89I6Dk 信仰を理由にすればなんでも断れる
512デフォルトの名無しさん
2023/03/08(水) 06:45:47.34ID:D4+z1pfo 退職して出家でもすんのか
頼むから犯罪に加担するのはやめろ
頼むから犯罪に加担するのはやめろ
513デフォルトの名無しさん
2023/03/09(木) 00:18:42.41ID:ta9TFpTT Win32というかVC++だけど_itow_s系列って何文字書き込まれたかを返してくれるバージョンなんてないよね?
ChatGPTに聞いたら最後にint*で返してくれるオーバーロードがあるって言ってたんだが
ChatGPTに聞いたら最後にint*で返してくれるオーバーロードがあるって言ってたんだが
514デフォルトの名無しさん
2023/03/09(木) 04:47:01.50ID:fmJ24L2G 意味の分からない現象に遭遇したので質問させてくれ。
ここが適切かどうか微妙だけれど、もしスレが違っていたら案内いただけるとありがたい。
さて、VC6時代に作成され、プロジェクトを随時新しいVSに移行して開発しているアプリがある。
特にフレームワークは使用しておらずwin32Apiで書かれている。リソースエディタは、VS付属のリソースエディタだ。
windows10/VS2019までは問題なかったんだが、windows11/VS2022でビルドしたとたん、ダイアログのサイズが横に6ピクセル縦に2ピクセル小さくなって、中身の右と下が詰まる現象が発生した。
同じプロジェクトに新規にダイアログを加えても同じだった。
なお、この現象は、タイトルバーを追加したときだけ起こる模様。また、フォントの指定をしてもしなくても同様だ。
当たり前だが、新規にテストプロジェクトをwindows11/VS2022で作成した場合は起こらない。
なお、windwos10でビルドしたものを windows11で実行すると正しく表示される。
また、windows11でビルドしたものを windows11 で実行した場合は上記のようになるが、windows10で実行すると正しく表示される。
windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する)
user32.dll関連で何かあるのかな? 正直訳が分からないよ。
識者の意見を求む。
ここが適切かどうか微妙だけれど、もしスレが違っていたら案内いただけるとありがたい。
さて、VC6時代に作成され、プロジェクトを随時新しいVSに移行して開発しているアプリがある。
特にフレームワークは使用しておらずwin32Apiで書かれている。リソースエディタは、VS付属のリソースエディタだ。
windows10/VS2019までは問題なかったんだが、windows11/VS2022でビルドしたとたん、ダイアログのサイズが横に6ピクセル縦に2ピクセル小さくなって、中身の右と下が詰まる現象が発生した。
同じプロジェクトに新規にダイアログを加えても同じだった。
なお、この現象は、タイトルバーを追加したときだけ起こる模様。また、フォントの指定をしてもしなくても同様だ。
当たり前だが、新規にテストプロジェクトをwindows11/VS2022で作成した場合は起こらない。
なお、windwos10でビルドしたものを windows11で実行すると正しく表示される。
また、windows11でビルドしたものを windows11 で実行した場合は上記のようになるが、windows10で実行すると正しく表示される。
windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する)
user32.dll関連で何かあるのかな? 正直訳が分からないよ。
識者の意見を求む。
515デフォルトの名無しさん
2023/03/09(木) 14:01:14.32ID:lc0skjdv AdjustWindowRect
AdjustWindowRectEx
AdjustWindowRectEx
516デフォルトの名無しさん
2023/03/09(木) 15:07:30.71ID:rNyfncCj windows10/VS2019 で 新規作成し
同環境でビルドしたものを windows11 で実行
windows11 でビルドしたものを windows11 で実行
で差があるんかな?
_WIN32_WINNT
_WIN32_IE
WINVER
あたりの値を固定化しているのかどうか
同環境でビルドしたものを windows11 で実行
windows11 でビルドしたものを windows11 で実行
で差があるんかな?
_WIN32_WINNT
_WIN32_IE
WINVER
あたりの値を固定化しているのかどうか
517514
2023/03/09(木) 15:19:13.60ID:fmJ24L2G >515
え、rcファイルで定義されたダイアログを、DialogBoxParam()などで表示したらそうなって困っているという話なのですが。
もしかして、windows11の時だけ、横に6ピクセル縦に2ピクセル広げるという力業でやれということですか?w
え、rcファイルで定義されたダイアログを、DialogBoxParam()などで表示したらそうなって困っているという話なのですが。
もしかして、windows11の時だけ、横に6ピクセル縦に2ピクセル広げるという力業でやれということですか?w
518514
2023/03/09(木) 15:22:59.99ID:fmJ24L2G >516
プロジェクトを作成したのはVC6のようです。
以降ずっと継承しているらしく、そのプロジェクトをwindows10/2019でビルドすると問題が起きないのですが、
windows11/2022でビルドすると、実行環境がwindows11に限り現象が発生します。謎です。
バージョンは定義されています。この辺りを最新の0X0Aあたりに設定してリトライしてみます。
THX。
プロジェクトを作成したのはVC6のようです。
以降ずっと継承しているらしく、そのプロジェクトをwindows10/2019でビルドすると問題が起きないのですが、
windows11/2022でビルドすると、実行環境がwindows11に限り現象が発生します。謎です。
バージョンは定義されています。この辺りを最新の0X0Aあたりに設定してリトライしてみます。
THX。
519デフォルトの名無しさん
2023/03/09(木) 15:36:17.03ID:c9gYitiH Windows11/2019でビルドしたらどうなんじゃろ
520デフォルトの名無しさん
2023/03/09(木) 16:10:10.53ID:AnxNC5rK ビルドしたOSのバージョンに合わせてウインドウスタイルを調整する部分があるのでは?
VS2019とVS2022の違いで言うと、ヘッダーでの #ifdef の分岐条件の違いでしょ?
windwos10でビルドしたものを windows11で実行すると正しく表示される。
→OSがWindows10アプリとして実行しているからオプション未指定でも正常
windows11でビルドしたものを windows11 で実行した場合は上記のようになる
→OS的にはwindwos11アプリだけどビルドとしてはWindows10アプリ、その齟齬で表示が崩れる
が、windows10で実行すると正しく表示される。
→OS的にもビルド的にもWindows10アプリとして実行しているから問題ない
windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する)
→疑似的にWindows10アプリとして実行するが、部分的に完全な互換が出来ないでいる
と言う妄想をしてみた
VS2019とVS2022の違いで言うと、ヘッダーでの #ifdef の分岐条件の違いでしょ?
windwos10でビルドしたものを windows11で実行すると正しく表示される。
→OSがWindows10アプリとして実行しているからオプション未指定でも正常
windows11でビルドしたものを windows11 で実行した場合は上記のようになる
→OS的にはwindwos11アプリだけどビルドとしてはWindows10アプリ、その齟齬で表示が崩れる
が、windows10で実行すると正しく表示される。
→OS的にもビルド的にもWindows10アプリとして実行しているから問題ない
windwos11の互換モードをチェックすると、少しだけ改善される(詰まりがわずかに改善する)
→疑似的にWindows10アプリとして実行するが、部分的に完全な互換が出来ないでいる
と言う妄想をしてみた
521デフォルトの名無しさん
2023/03/09(木) 17:01:34.32ID:rNyfncCj522デフォルトの名無しさん
2023/03/09(木) 17:11:02.85ID:AnxNC5rK523デフォルトの名無しさん
2023/03/09(木) 17:11:56.14ID:rNyfncCj おっけー了解
524デフォルトの名無しさん
2023/03/09(木) 17:13:51.29ID:rNyfncCj 動作環境を固定化するのに
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x○○○
#endif
というのは、俺はやってる これの宣言の後に windows.h 等を読むように
って制限かかるけどね
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x○○○
#endif
というのは、俺はやってる これの宣言の後に windows.h 等を読むように
って制限かかるけどね
525デフォルトの名無しさん
2023/03/10(金) 08:43:31.77ID:rc8/VQXS とりあえず関連するライブラリのビルドを込みで、すべてWINVERと_WIN32_WINNTの定義を0x0A00にしてやってみたが結果は変わらず。
>520
問題は、「どこで」そのOSのアプリだと認識しているのかという点ですね。
urn:schemas-microsoft-com:compatibility.v1 で、マニフェストに定義する値って、windows10も11も同じですし。
Common-Controlsの時みたいに、windows11スタイルを禁止するのになにか定義する値でも……と思ったけどみあたりませんし。
>522
とりあえずOSのバージョンを取得しているところをgrepして追いかけてみたが、そういうのはなさそう。
そもそもダイアログリソースからの作成ですしね。
問題が再現する最小のビルドを作成してるのだけれど、これがまあ大変(普通に10/2019で新規作成すると問題が起こらない)なので
問題が起こるプロジェクトを複製して、とりあえず WinMainがあるソース以外を全部削除してから順に試してみます。
泣けるぜ。
締め切りに間に合いそうになかったら、とりあえず超力ワザで。
こうやってクソソースができていくんだなぁ……
>520
問題は、「どこで」そのOSのアプリだと認識しているのかという点ですね。
urn:schemas-microsoft-com:compatibility.v1 で、マニフェストに定義する値って、windows10も11も同じですし。
Common-Controlsの時みたいに、windows11スタイルを禁止するのになにか定義する値でも……と思ったけどみあたりませんし。
>522
とりあえずOSのバージョンを取得しているところをgrepして追いかけてみたが、そういうのはなさそう。
そもそもダイアログリソースからの作成ですしね。
問題が再現する最小のビルドを作成してるのだけれど、これがまあ大変(普通に10/2019で新規作成すると問題が起こらない)なので
問題が起こるプロジェクトを複製して、とりあえず WinMainがあるソース以外を全部削除してから順に試してみます。
泣けるぜ。
締め切りに間に合いそうになかったら、とりあえず超力ワザで。
こうやってクソソースができていくんだなぁ……
526デフォルトの名無しさん
2023/03/10(金) 09:09:30.83ID:skV/NfUS Win10/2022でビルドしてみたりWin11/2019でビルドしてみたりはしたんかいな
527デフォルトの名無しさん
2023/03/10(金) 12:17:19.97ID:vz26ACYY ここまでDwm略のAPIの話が一切出てなくて草
528デフォルトの名無しさん
2023/03/10(金) 12:34:03.89ID:rc8/VQXS ものすごい大変だったけど、最小化コードを作ったら原因が判明したので報告しておく。
おそらく windows2000 の頃まで遡る話だけれど、
ダイアログをセンタリングするためのクラスメソッド内で、ダイアログをセンタリングするためにSetWindowPos()じゃなくて、MoveWindow()が使われていたのが原因だった。
なんとエアロが有効な状態で、455 x 179 のダイアログを、MoveWindow()を使って、MoveWindow(100, 100, 455, 179) へと動かすと、サイズが、441 x 172 になる!
そういうもんなのかー。こんなの知らないとわかんないよ……
おそらく windows2000 の頃まで遡る話だけれど、
ダイアログをセンタリングするためのクラスメソッド内で、ダイアログをセンタリングするためにSetWindowPos()じゃなくて、MoveWindow()が使われていたのが原因だった。
なんとエアロが有効な状態で、455 x 179 のダイアログを、MoveWindow()を使って、MoveWindow(100, 100, 455, 179) へと動かすと、サイズが、441 x 172 になる!
そういうもんなのかー。こんなの知らないとわかんないよ……
529514
2023/03/10(金) 12:36:58.25ID:rc8/VQXS sage忘れすまん。
てか、これ客観的に見てバグとしか思えない挙動だ。
とりあえず解決ということで。ありがとうございました。
てか、これ客観的に見てバグとしか思えない挙動だ。
とりあえず解決ということで。ありがとうございました。
530514
2023/03/10(金) 13:06:28.99ID:rc8/VQXS 連投すまん。
確認したところ、windows11/2022で新規作成したプロジェクトでも再現します。
windows11だけなので、11でUIを一新した際に発生した、MoveWindowのバグってことで納得します。
これが仕様だとしたら、ちょっと首をひねらざるを得ないですね。
確認したところ、windows11/2022で新規作成したプロジェクトでも再現します。
windows11だけなので、11でUIを一新した際に発生した、MoveWindowのバグってことで納得します。
これが仕様だとしたら、ちょっと首をひねらざるを得ないですね。
531デフォルトの名無しさん
2023/03/10(金) 13:20:48.59ID:vOYF1isR 納得しますじゃなくバグみつけたなら報告しろよ
532デフォルトの名無しさん
2023/03/10(金) 15:04:54.29ID:L3R8V02U533デフォルトの名無しさん
2023/03/10(金) 15:18:22.32ID:vOYF1isR ここで報告できると本気で思ってるのか
おめでてーな
おめでてーな
534デフォルトの名無しさん
2023/03/10(金) 16:23:50.60ID:hFmnRmK3 どう対処していくかは悩ましいところだろうけど
さしあたり見つかってよかったね
さしあたり見つかってよかったね
535デフォルトの名無しさん
2023/03/10(金) 19:20:08.44ID:iHPjFzG+ MoveWindowなんて基本的なAPIのバグを報告したら、幾らか貰えそうな気がする
ここ見た他の誰かが、もう報告してるかもねw
ここ見た他の誰かが、もう報告してるかもねw
536デフォルトの名無しさん
2023/03/10(金) 19:29:59.85ID:M/1mzCJs それってバグなのか?
LunaやAeroの影響を受けるような前提があるんじゃないか?
LunaやAeroの影響を受けるような前提があるんじゃないか?
537デフォルトの名無しさん
2023/03/10(金) 21:41:52.52ID:ErzT9SJ9 >>513
読み取った後に、wcslen() で文字数を数えると良い。
読み取った後に、wcslen() で文字数を数えると良い。
538デフォルトの名無しさん
2023/03/10(金) 21:52:37.44ID:ErzT9SJ9 >>513
結論から言うと「無い」ハズ。
また、最後の引数が int* 型のものは存在していないように見える。
引数の説明欄も、以下の用に4種類のみで、その中に、該当のものは存在していない。
*Parameters
-value
Number to be converted.
-buffer
Output buffer that holds the result of the conversion.
-size
Size of buffer in characters or wide characters.
-radix
The radix or numeric base to use to convert value, which must be in the range 2-36.
結論から言うと「無い」ハズ。
また、最後の引数が int* 型のものは存在していないように見える。
引数の説明欄も、以下の用に4種類のみで、その中に、該当のものは存在していない。
*Parameters
-value
Number to be converted.
-buffer
Output buffer that holds the result of the conversion.
-size
Size of buffer in characters or wide characters.
-radix
The radix or numeric base to use to convert value, which must be in the range 2-36.
539デフォルトの名無しさん
2023/03/11(土) 17:44:54.81ID:zdIWJF7w ウインドウサイズの現象どこかで見たな
たしかリンカオプションの/subsystem:windows,X.YとManifestFileの組み合わせで
APIの挙動が変わるんじゃなかったかな
たしかリンカオプションの/subsystem:windows,X.YとManifestFileの組み合わせで
APIの挙動が変わるんじゃなかったかな
540デフォルトの名無しさん
2023/03/12(日) 18:57:18.20ID:6SOWk3dH541デフォルトの名無しさん
2023/03/12(日) 22:11:40.77ID:6PqX/PSJ 自分では調べずにAIに聞いて、その確認も掲示板で他人に聞くスタイル
542デフォルトの名無しさん
2023/03/13(月) 07:50:35.89ID:M+cw5TbQ ChatGPTを何だと思ってるのかw
543デフォルトの名無しさん
2023/03/13(月) 09:19:48.62ID:0cpyMYUG ChatGPTもBingも知らないことを知らないと言わずしれっと嘘ついてくるし回答が人の目に触れてなくて識者からのコメントもないからこれを信用するやつは頭湧いてる
Qiitaの方がまだマシレベルでこれに比べるとウィキペディアは神レベル
しかしそのどれも公式ドキュメントとは比べ物にならない糞
Qiitaの方がまだマシレベルでこれに比べるとウィキペディアは神レベル
しかしそのどれも公式ドキュメントとは比べ物にならない糞
544デフォルトの名無しさん
2023/03/13(月) 11:17:06.85ID:bF2IN6wD 答えの無い物を探すのが圧倒的に苦手
今までの「自称AI」と何ら変わらん野田
今までの「自称AI」と何ら変わらん野田
545デフォルトの名無しさん
2023/03/13(月) 12:16:45.84ID:ap2u+t1x 道具に振り回される人って…w
546デフォルトの名無しさん
2023/03/13(月) 14:09:26.73ID:P3estam5 他のプログラミングを出来るとされるAIでも、小学生でも習う円筒の体積すら、
半径の二乗を直径の二乗に間違えた間違いのコードを答えてきた。
半径の二乗を直径の二乗に間違えた間違いのコードを答えてきた。
547デフォルトの名無しさん
2023/03/13(月) 14:38:05.49ID:tDVvLmFE 今のところは汎用対話AIだからね
対話力に重きを置いてる上に汎用型なので正確性に関してはかなり犠牲にされてる
結局人間もそうだけど専門型が出てきてこそだな
AIアート分野はローカルで各々が専門的に学習させられるからその辺一歩リードしてる
対話力に重きを置いてる上に汎用型なので正確性に関してはかなり犠牲にされてる
結局人間もそうだけど専門型が出てきてこそだな
AIアート分野はローカルで各々が専門的に学習させられるからその辺一歩リードしてる
548デフォルトの名無しさん
2023/03/13(月) 15:38:27.48ID:4eztEhWJ >>546
どのAIにどう質問したの?
どのAIにどう質問したの?
549デフォルトの名無しさん
2023/03/14(火) 12:02:53.79ID:5+uIhtUh プロセス間で同じファイルを読んだり書いたりしたいのですが、
一方が開いているときにはオープンに失敗させるのではなく、排他制御で待つようにしたいです。
Linuxとかだとflockという関数があるようですが、
Windowsで同じことをやるにはどういう方法になるのでしょうか?
ミューテックスを使うとなると、事前にミューテックスの名前も決める必要が出てくるのですが。
一方が開いているときにはオープンに失敗させるのではなく、排他制御で待つようにしたいです。
Linuxとかだとflockという関数があるようですが、
Windowsで同じことをやるにはどういう方法になるのでしょうか?
ミューテックスを使うとなると、事前にミューテックスの名前も決める必要が出てくるのですが。
550デフォルトの名無しさん
2023/03/14(火) 14:53:13.19ID:tgsDNUzh551デフォルトの名無しさん
2023/03/14(火) 15:49:06.52ID:5+uIhtUh >>550
これって、書き込むときはファイルのサイズは事前にはわからないのですが、
計算してからでないとロックはできないということなのでしょうか。
ファイルの任意の領域というよりは、ファイルそのものをロックしたいのですけど。
これって、書き込むときはファイルのサイズは事前にはわからないのですが、
計算してからでないとロックはできないということなのでしょうか。
ファイルの任意の領域というよりは、ファイルそのものをロックしたいのですけど。
552デフォルトの名無しさん
2023/03/14(火) 15:55:53.14ID:+K74J7cv >ミューテックスを使うとなると、事前にミューテックスの名前も決める必要が出てくるのですが。
別にそんな必要はないでしょ
ユニーク名+ファイル名でミューテックスを使えばいい
(※ユニーク名ってのは自分しか使わない名前のことね、例えばGUIDとかだけどそこまでがっちりやる必要もないとは思う)
別にそんな必要はないでしょ
ユニーク名+ファイル名でミューテックスを使えばいい
(※ユニーク名ってのは自分しか使わない名前のことね、例えばGUIDとかだけどそこまでがっちりやる必要もないとは思う)
553デフォルトの名無しさん
2023/03/14(火) 16:03:43.56ID:+K74J7cv554デフォルトの名無しさん
2023/03/14(火) 16:27:54.12ID:gMQMDZBf >プロセス間で同じファイルを読んだり書いたりしたい
問題を無闇に複雑にしてると思わないか
問題を無闇に複雑にしてると思わないか
555蟻人間 ◆T6xkBnTXz7B0
2023/03/14(火) 17:01:38.94ID:iLShrRcK クライアント・サーバーモデルで、
サーバーだけが書き込めるとか言った制約があった方が良いかも知れません。
サーバーだけが書き込めるとか言った制約があった方が良いかも知れません。
556549
2023/03/14(火) 18:23:18.32ID:5+uIhtUh アドバイスありがとうございます。
あるアプリから別のアプリを起動する際、
コマンドラインでは収まらないような長い情報を渡す必要があり、
ファイルに必要な情報を書いてやりとりするようにしています。
(コマンドラインにはそのファイルのパス名を渡している)
なので、ファイルを作成するアプリと、そのファイルを読み込むアプリがあり、
多重起動などのタイミングによってはアクセスがぶつかる可能性があるので、
このファイルに対する同時アクセスを制御したいという質問でした。
ミューテックスとLockFileExとどちらで実装するか、検討させていただきます。
あるアプリから別のアプリを起動する際、
コマンドラインでは収まらないような長い情報を渡す必要があり、
ファイルに必要な情報を書いてやりとりするようにしています。
(コマンドラインにはそのファイルのパス名を渡している)
なので、ファイルを作成するアプリと、そのファイルを読み込むアプリがあり、
多重起動などのタイミングによってはアクセスがぶつかる可能性があるので、
このファイルに対する同時アクセスを制御したいという質問でした。
ミューテックスとLockFileExとどちらで実装するか、検討させていただきます。
557デフォルトの名無しさん
2023/03/14(火) 18:25:17.73ID:xPBygAZk558デフォルトの名無しさん
2023/03/14(火) 19:27:43.09ID:LjCdhfB4 >>556
パイプを使えばええんちゃうかな?
パイプを使えばええんちゃうかな?
559デフォルトの名無しさん
2023/03/14(火) 19:36:39.98ID:1SjvDtDO560デフォルトの名無しさん
2023/03/14(火) 19:54:35.88ID:5+uIhtUh >>559
それもやってみたのですが、多重起動などのタイミングによっては、
どうやっても、読み込まれずに放置されるゴミファイルができてしまいます。
テンポラリフォルダなんて気にしなければよいといえばよいのですが。
それもやってみたのですが、多重起動などのタイミングによっては、
どうやっても、読み込まれずに放置されるゴミファイルができてしまいます。
テンポラリフォルダなんて気にしなければよいといえばよいのですが。
561デフォルトの名無しさん
2023/03/14(火) 21:32:45.60ID:M7rmtaeA Tempなんか使わずとも末尾PIDの名前でファイルなりを作れば重複起動その時においては名前は被らないし
引数の受け渡しとか程度の話ならオープン失敗したら数秒待って開き直せばいつか開けるだろ
書いてる間はどうせ読めても無意味なんだし
引数の受け渡しとか程度の話ならオープン失敗したら数秒待って開き直せばいつか開けるだろ
書いてる間はどうせ読めても無意味なんだし
562デフォルトの名無しさん
2023/03/14(火) 22:38:01.69ID:rESGMqzG WM_COPYDATAとかメモリマップドファイルとか
563デフォルトの名無しさん
2023/03/14(火) 23:24:45.28ID:u95pjcpT564デフォルトの名無しさん
2023/03/15(水) 00:41:23.71ID:q5LCzWGQ >>560
いや、ゴミファイルが出来る事があり得ないけどね…
その多重起動というのがどういうものか知らんけど、GetTempFileNameで上手く行かないのは、プログラムが悪いと断言できる
ま、これで駄目なら何やっても上手く行かないだろうね
いや、ゴミファイルが出来る事があり得ないけどね…
その多重起動というのがどういうものか知らんけど、GetTempFileNameで上手く行かないのは、プログラムが悪いと断言できる
ま、これで駄目なら何やっても上手く行かないだろうね
565デフォルトの名無しさん
2023/03/15(水) 00:54:04.79ID:mWvoI7Tn >>548
twitterで流行ってたものを誰かが試した結果を見て気付いた。
twitterで流行ってたものを誰かが試した結果を見て気付いた。
566デフォルトの名無しさん
2023/03/15(水) 01:02:47.82ID:fvrt0a3X >>565
それで遊んでみようと思ったのだけど何を使用していたのかわからないなら遊べないな残念
それで遊んでみようと思ったのだけど何を使用していたのかわからないなら遊べないな残念
567デフォルトの名無しさん
2023/03/23(木) 01:09:16.30ID:Ao+X9Xng568デフォルトの名無しさん
2023/03/23(木) 06:12:16.80ID:5IP8ya+9 Ruby では普通、外部コマンド・子プロセスの終了を待つから、実行順序は書いた順。
Process.#wait
一方、Kernel.#spawn は、終了を待たない。起動しっ放し
IO にはパイプ、ブロッキング/ノンブロッキング、同期/非同期もある
Process.#wait
一方、Kernel.#spawn は、終了を待たない。起動しっ放し
IO にはパイプ、ブロッキング/ノンブロッキング、同期/非同期もある
569デフォルトの名無しさん
2023/03/23(木) 07:28:24.76ID:auHr228t >>567
うそおっしゃい
うそおっしゃい
570デフォルトの名無しさん
2023/03/23(木) 08:33:51.91ID:ffpb/acK571デフォルトの名無しさん
2023/03/23(木) 11:05:08.93ID:AQHpwrnP572デフォルトの名無しさん
2023/03/23(木) 11:15:29.65ID:jVJKu0vi >>567
お前MFC知らんだろ
お前MFC知らんだろ
573デフォルトの名無しさん
2023/03/23(木) 23:45:58.18ID:9ub38u60 久々に清々しい嘘を見た
574デフォルトの名無しさん
2023/03/24(金) 01:24:11.23ID:gu0zjHdj インストーラーの無い野良EXEのAUMID(Application User Model ID)をOSに登録する方法教えてください
575デフォルトの名無しさん
2023/04/03(月) 14:17:49.75ID:ZOqVhNfC576デフォルトの名無しさん
2023/04/03(月) 14:20:45.40ID:ZOqVhNfC577デフォルトの名無しさん
2023/04/03(月) 14:34:38.52ID:ZOqVhNfC >>571
どうでもいいけど、マイクロソフト内でC言語とC++の混在そのものに悩んでいたのも知らないようだな
マイクロソフトはC言語派、C++派、Windowsを普及させるためにVB流用派と、試行錯誤を繰り返していた時代にMFCが誕生したと思っているなら、時期がずれていてリアルタイムでは知らなかったと言っているようなもの
どうでもいいけど、マイクロソフト内でC言語とC++の混在そのものに悩んでいたのも知らないようだな
マイクロソフトはC言語派、C++派、Windowsを普及させるためにVB流用派と、試行錯誤を繰り返していた時代にMFCが誕生したと思っているなら、時期がずれていてリアルタイムでは知らなかったと言っているようなもの
578デフォルトの名無しさん
2023/04/03(月) 15:01:56.44ID:amgtJnTb MS-DOS の頃ってMSのコンパイラは統合環境だった?
C++ どころか Cコンパイラで コマンドライン上から nmake 叩いてわ
C++ どころか Cコンパイラで コマンドライン上から nmake 叩いてわ
579デフォルトの名無しさん
2023/04/03(月) 15:07:52.75ID:lsCbs8KW B:\>msc hello.c
580デフォルトの名無しさん
2023/04/03(月) 15:10:57.50ID:ZOqVhNfC ウィキペディアの説明が、Microsoft C 7.0以前の話がないせいで、Microsoft CとVisual C++の区別がついていないのね。
Windows 95、98の時代は、MS-DOS 6.2とWindows 95・98(内部MS-DOS 7.0・7.1)の併存期間で、MFCはMS-DOS 6.2をターゲットとしたものと、Windows 95をターゲットとしたものがある。
まず俗称「MSVC」と呼ばれるものは、Windows 95アプリケーションの開発を意識したもので、マイクロソフト「VC」と言っているあたりからわかるようにC言語でのWindows 95アプリケーションの開発を主としている。
ここでC言語からC++の移行をマイクロソフトはやろうとして、Windows APIがオブジェクト指向ではないところで無理が生じた。
そこでMFCを大幅に強化することでC++でのアプリケーション開発をしてもらおうとしたが、すでにWindows SDKの開発の知識がある開発者は、Windows SDKでのCでもC++よいというのに慣れていて、MFCを使えというのは、それまでの知識と違っており、無駄なクラスライブラリとしか思えなかった。
MFCはWindows 3.1でも影が薄い。マルチタスクではないと言えてしまうWindowsでは、MFCのメリットなどなく、無駄にサイズが大きくて重いコードが作られるため、性能、スペックの低いパソコンではMFCを使う理由がなかった。
MFCはGUIだけで使われるものではないため、CUI環境の開発でも使われている。
MFCどころかWindows 32APIでも、画面がある前提になっているコードを書かないといけないが、実際には画面がないものを作るのにも使われる。
MFC、Visual C++、Windows SDKの話がごっちゃになって、MFCを使うにはVisual C++でMFCを利用して、MFCがWindows SDKとセットだと認識できない点は理解できる。
まあ、ウィキペディアの記事は、根拠不明の創作が多いとわかってないとだまされるよな。
Windows 95、98の時代は、MS-DOS 6.2とWindows 95・98(内部MS-DOS 7.0・7.1)の併存期間で、MFCはMS-DOS 6.2をターゲットとしたものと、Windows 95をターゲットとしたものがある。
まず俗称「MSVC」と呼ばれるものは、Windows 95アプリケーションの開発を意識したもので、マイクロソフト「VC」と言っているあたりからわかるようにC言語でのWindows 95アプリケーションの開発を主としている。
ここでC言語からC++の移行をマイクロソフトはやろうとして、Windows APIがオブジェクト指向ではないところで無理が生じた。
そこでMFCを大幅に強化することでC++でのアプリケーション開発をしてもらおうとしたが、すでにWindows SDKの開発の知識がある開発者は、Windows SDKでのCでもC++よいというのに慣れていて、MFCを使えというのは、それまでの知識と違っており、無駄なクラスライブラリとしか思えなかった。
MFCはWindows 3.1でも影が薄い。マルチタスクではないと言えてしまうWindowsでは、MFCのメリットなどなく、無駄にサイズが大きくて重いコードが作られるため、性能、スペックの低いパソコンではMFCを使う理由がなかった。
MFCはGUIだけで使われるものではないため、CUI環境の開発でも使われている。
MFCどころかWindows 32APIでも、画面がある前提になっているコードを書かないといけないが、実際には画面がないものを作るのにも使われる。
MFC、Visual C++、Windows SDKの話がごっちゃになって、MFCを使うにはVisual C++でMFCを利用して、MFCがWindows SDKとセットだと認識できない点は理解できる。
まあ、ウィキペディアの記事は、根拠不明の創作が多いとわかってないとだまされるよな。
581デフォルトの名無しさん
2023/04/03(月) 15:18:50.66ID:lsCbs8KW Win32がオブジェクト指向ではないって?
ハンドルを使う関数(つまり大半)はオブジェクト指向だと思うが
もしかしてオブジェクト指向とはC++やSmalltalkを使うことだと思ってるのか?
ハンドルを使う関数(つまり大半)はオブジェクト指向だと思うが
もしかしてオブジェクト指向とはC++やSmalltalkを使うことだと思ってるのか?
582デフォルトの名無しさん
2023/04/03(月) 15:19:55.66ID:ZOqVhNfC >>578
統合開発環境と何の関係があるのか?
Windows 95アプリケーションでも、統合開発環境は必須ではない。
画面のデザインのときだけ利用するという使い方が多かった。
Direct Xが普通に使われるようになってからは、統合開発環境は画面ごと吹っ飛ぶので、統合開発環境そのものも動かないこともあるし、統合開発環境を自分が作ったもので壊すことがあるから、Windows 95、98系では、Visual製品に期待しても、Visual統合開発環境とWindows OSのポンコツコンボは、いま思っているより意味をなしていなかったんだよ。
統合開発環境と何の関係があるのか?
Windows 95アプリケーションでも、統合開発環境は必須ではない。
画面のデザインのときだけ利用するという使い方が多かった。
Direct Xが普通に使われるようになってからは、統合開発環境は画面ごと吹っ飛ぶので、統合開発環境そのものも動かないこともあるし、統合開発環境を自分が作ったもので壊すことがあるから、Windows 95、98系では、Visual製品に期待しても、Visual統合開発環境とWindows OSのポンコツコンボは、いま思っているより意味をなしていなかったんだよ。
583デフォルトの名無しさん
2023/04/03(月) 15:25:54.31ID:amgtJnTb584デフォルトの名無しさん
2023/04/03(月) 15:26:39.12ID:p7oapVPk585デフォルトの名無しさん
2023/04/03(月) 15:28:25.60ID:ZOqVhNfC >>581
オブジェクト指向設計ではなかったんだよ。
C言語とC++は書き方が少し異なるだけだったので、Windows SDKではC++で書くとオブジェクト指向っぽくなり、C言語で書くとこれでいいのかという書き方で、Windows 95のアプリケーションが作れた。
ここはWindows SDKがオブジェクト指向ではないという理由がある。
APIそのものはオブジェクト指向ではなかったので、オブジェクト指向にするにはMFCを挟むという変なことをすることをしていた人間もいる。
たった数年で変わった話なので、過渡期を知らないと誤解が生じるのはわかる。
オブジェクト指向設計ではなかったんだよ。
C言語とC++は書き方が少し異なるだけだったので、Windows SDKではC++で書くとオブジェクト指向っぽくなり、C言語で書くとこれでいいのかという書き方で、Windows 95のアプリケーションが作れた。
ここはWindows SDKがオブジェクト指向ではないという理由がある。
APIそのものはオブジェクト指向ではなかったので、オブジェクト指向にするにはMFCを挟むという変なことをすることをしていた人間もいる。
たった数年で変わった話なので、過渡期を知らないと誤解が生じるのはわかる。
586デフォルトの名無しさん
2023/04/03(月) 15:37:01.22ID:lsCbs8KW >>584
GetObject()なんか多相そのものやん
GetObject()なんか多相そのものやん
587デフォルトの名無しさん
2023/04/03(月) 15:39:17.90ID:lsCbs8KW すまん関数名間違えた
SelectObject()だ
GetObject()はオブジェクト指向と手続き型の切り替えだね
SelectObject()だ
GetObject()はオブジェクト指向と手続き型の切り替えだね
588デフォルトの名無しさん
2023/04/03(月) 15:56:54.48ID:ORXHufFt Win32APIの基本構造そのものがイベントドリブンのメッセージ駆動なのでオブジェクト指向を土台にしている
Windowsのマルチタスクはオブジェクト指向で成り立っているだろ
Windowsのマルチタスクはオブジェクト指向で成り立っているだろ
589デフォルトの名無しさん
2023/04/03(月) 16:40:18.30ID:lsCbs8KW そうそう
ウインドウプロシージャのcaseなんか典型的だな
ウインドウプロシージャのcaseなんか典型的だな
590デフォルトの名無しさん
2023/04/03(月) 16:48:57.33ID:WoF7SnyS■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 台湾有事、日本へ12万人避難計画 [お断り★]
- 出生数減少止まらず…昨年は70万人割れ見込み、このペース続いた場合今年は65万人程度と予想、一昨年発表の予想値早くも下回る可能性 [デビルゾア★]
- 【ゴルフ】女子3選手と不倫 栗永遼キャディーに9年間の出禁処分… 3選手にはセミナー参加義務、暴言の理事も処分 [冬月記者★]
- 自民党・高市早苗氏、スパイ防止法導入「参院選公約に」 調査会で提言 [蚤の市★]
- 《俺のことを誰も知らないところ》中居正広 猛反撃の裏で進める“海外移住計画”…ニュージランドへ移住か [Ailuropoda melanoleuca★]
- 伊集院光、永野芽郁騒動に持論→評判と演技は別もの「『出てたら消します』テレビってそういうもの?」「誰か得する?」 ★2 [ひかり★]
- 【石破悲報】江藤、更迭wwwwwwwwwwwwwwwwwwwwwwwww [966095474]
- チンカス野郎田中の🏡
- 田中ほのか(54)の🏡
- 日本改革党、参院選神奈川選挙区にダンス講師の畠山貴弘を公認候補として擁立 消費税減税、ガソリン暫定税率廃止、外国人廃止など訴える [377482965]
- 【超絶悲報】大阪万博さん、ガチのマジで一線を超える。※動画あり😲 [315952236]
- とうとう実質日本人お断りラーメン屋が出現wwwwwwwwwwwwwwwwwwwwwwwお値段2400円 [271912485]