[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/28 05:35 / Filesize : 255 KB / Number-of Response : 1018
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build124



1 名前:デフォルトの名無しさん mailto:sageteoff [2017/11/11(土) 19:23:00.69 ID:TpLoCFAx.net]
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build123
mevius.2ch.net/test/read.cgi/tech/1475897582/
Win32API質問箱 Build122
echo.2ch.net/test/read.cgi/tech/1451988219/
Win32API質問箱 Build121
echo.2ch.net/test/read.cgi/tech/1438695290/
Win32API質問箱 Build120
echo.2ch.net/test/read.cgi/tech/1428570962/

■関連スレ
Visual Studio 2017 Part4
mevius.2ch.net/test/read.cgi/tech/1509244956/
【C++】 DirectX初心者質問スレ Part40 【C】
mevius.2ch.net/test/read.cgi/tech/1474782237/

720 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 03:39:30.92 ID:syL/ZpQ2.net]
電流か

721 名前:デフォルトの名無しさん [2018/10/29(月) 11:33:26.98 ID:VxCr7qKV.net]
>Win32APIのサポートの心配するより自分の寿命の心配したほうが良い

どっちも心配

722 名前: mailto:sage [2018/10/29(月) 19:36:35.79 ID:MQrExvvX.net]
>>699
>赤坂玲音 って糞筆者の筆頭
kwsk

723 名前:デフォルトの名無しさん mailto:sage [2018/10/29(月) 23:04:33.26 ID:/SfeOL5O.net]
何かプリキュアとか好きそうなイメージ

724 名前:デフォルトの名無しさん [2018/10/30(火) 14:43:24.71 ID:p4LrBCE7.net]
橋本 和明
山本 洋介山
こいつらよりまし

725 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 00:30:08.49 ID:bv97uCMI.net]
東京ミュウミュウ舐めんなよ

726 名前:デフォルトの名無しさん mailto:sage [2018/10/31(水) 00:34:00.99 ID:pqSFU9GW.net]
サンプルコードにキモさを織り込める偉人だぞ

727 名前:デフォルトの名無しさん [2018/10/31(水) 01:20:17.24 ID:OyhA4eFa.net]
>>713
1冊じゃないのが許せないよな

赤坂玲音って会社員経験がないんだっけ
確かにそんな感じはする

728 名前:651,661 mailto:sage [2018/11/04(日) 09:16:05.57 ID:muyEcRRg.net]
SendInput() にINPUT配列を渡してドラッグ&ドロップをエミュレートすることで対応できました。配列の要素は以下2つ。
ドラッグ開始位置で MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTDOWN
ドロップ位置で MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE | MOUSEEVENTF_LEFTUP

mouse_event()と違ってSendInput()はユーザーのマウス操作の影響を受けづらいはずですが、
マウス移動とマウスボタン操作を別のINPUT要素に入れるとユーザーのマウス操作が入り込んでしまうので、要注意でした。



729 名前: mailto:sage [2018/11/04(日) 10:52:13.06 ID:4sZQO68Y.net]
>>716
>赤坂玲音って会社員経験がないんだっけ
書籍を執筆するのに会社員経験は必要ですか?

730 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 11:18:54.43 ID:kSTg14OV.net]
いるわけねーだろ。バカかよw
って馬鹿だからいつまでもくだらない話題ひっぱってんだろうな

731 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 13:01:34.19 ID:cd0AZv6K.net]
GetMessageの戻り値をちゃんと調べる良識人やぞ

732 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 13:46:25.24 ID:izn20/on.net]
GetMessage…
懐かしの踏み絵ですね

733 名前:デフォルトの名無しさん [2018/11/04(日) 14:04:57.01 ID:5RY1Lh2I.net]
エラーを調べるには関数を呼びます

734 名前:デフォルトの名無しさん [2018/11/04(日) 15:45:01.93 ID:I4L5mfdv.net]
せめてヒントを書いとけよ

ヒント:最後のエラーを取得する関数です
とか

735 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 16:16:20.98 ID:K9FptJr2.net]
>>722で通じるからw

736 名前:デフォルトの名無しさん [2018/11/04(日) 18:11:10.68 ID:rLQVzKFu.net]
MSが保守投げだしたくなる気持ちは判る

737 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 18:32:10.13 ID:eJWttrBP.net]
>>724
w

738 名前:デフォルトの名無しさん [2018/11/04(日) 19:09:01.33 ID:I4L5mfdv.net]
>>724
www

まいりました



739 名前: mailto:sage [2018/11/04(日) 19:41:55.05 ID:4sZQO68Y.net]
>>720
>GetMessageの戻り値をちゃんと調べる

当然なのでは?

while(GetMessage(&msg , NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}

メッセージループを抜けるかどうかは、GetMessage() を調べでもしないかぎり分かりようがないのでは?

740 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 19:56:38.13 ID:K9FptJr2.net]
それバグコードだからw

741 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 20:20:15.94 ID:izn20/on.net]
踏み絵がまだ機能しててワロタ

742 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 20:46:13.51 ID:cd0AZv6K.net]
>>728
ちゃんと調べてないぞ

743 名前:デフォルトの名無しさん mailto:sage [2018/11/04(日) 20:50:35.10 ID:h5bAAdgj.net]
>>729
釣られんなよ…

744 名前:デフォルトの名無しさん [2018/11/04(日) 22:51:52.16 ID:I4L5mfdv.net]
-1・・・

745 名前:デフォルトの名無しさん [2018/11/05(月) 13:33:52.85 ID:o5QGnfIr.net]
while(GetMessage(&msg , NULL , 0 , 0) < 0) {

boolじゃないからな

746 名前:デフォルトの名無しさん mailto:sage [2018/11/05(月) 14:30:24.29 ID:frT8bC/+.net]
そんなコードばっか書いてるからいつまでも使えないんだよw

747 名前:デフォルトの名無しさん mailto:sage [2018/11/05(月) 17:36:34.14 ID:cQ3f3cLB.net]
>>734
エラーの時だけループするのが正しいんですね
勉強になります

748 名前:デフォルトの名無しさん mailto:sage [2018/11/05(月) 19:35:45.35 ID:7LsLMyD5.net]
>>734
ネタなのかマジなのか判断できねー w



749 名前:さまよえる蟻人間 mailto:sage [2018/11/05(月) 19:41:49.06 ID:l7k9Isvb.net]
while(BOOL bRet = GetMessage(&msg , NULL , 0 , 0)) {
if (bRet < 0) {
MessageBox(NULL, TEXT("異常終了してやんのw ぷぷぷ"), NULL, 0);
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}

750 名前:デフォルトの名無しさん mailto:sage [2018/11/05(月) 20:01:12.60 ID:44ykk/Ua.net]
無効ポインタを渡してしまった以外にエラーを起こす事あるか?

751 名前:さまよえる蟻人間 mailto:sage [2018/11/05(月) 20:02:50.18 ID:6+yTtRut.net]
Windows互換を目指すReactOS、
いよいよ明日の夜、リリースです。よろしくね。

752 名前:さまよえる蟻人間 mailto:sage [2018/11/05(月) 20:09:34.41 ID:l7k9Isvb.net]
C/C++では、メッセージループの異常終了に加えてC++の例外と、構造化例外による異常終了があるよ。

753 名前: mailto:sage [2018/11/05(月) 21:19:04.73 ID:E6RwMSoz.net]
>>740
期待しています!

754 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 05:22:40.71 ID:ARgE5xEK.net]
>>739
そんなもんMSの中の人にしかわからんだろ

755 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 05:47:46.71 ID:sIfl11dh.net]
ざっと見て2つ目の引数で-返るな

756 名前:デフォルトの名無しさん [2018/11/06(火) 12:09:16.46 ID:vyXuaWzf.net]
while(TRUE){
try{
while(BOOL bRet = GetMessage(&msg , NULL , 0 , 0)) {
if (bRet < 0) {
MessageBox(NULL, TEXT("異常終了してやんのw ぷぷぷ"), NULL, 0);
break;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}catch(std::exception &e){
MessageBox(NULL, TEXT("例外補足してやんぜw ぷぷぷ"), NULL, 0);
}
}

757 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 12:43:49.56 ID:sIfl11dh.net]
また頭悪いコードw

758 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 12:56:40.18 ID:N7p2WNxF.net]
メッセージループを終了しても永久ループから脱出できない罠



759 名前:デフォルトの名無しさん [2018/11/06(火) 13:14:59.49 ID:qdniag2/.net]
goto最強

760 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 15:07:52.54 ID:W/feU5S7.net]
std::exception はスレチだし、WndProcから送出してよい例外はWindowsの構造化例外のみだし、送出された構造化例外をWinMainで処理してはいけない

761 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 17:40:05.44 ID:2Imqjq5w.net]
ボケなのマジなのかわからんコードを貼ってるやつはなんなの

762 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 17:48:14.42 ID:NYh1+GRl.net]
真面目に書いてるつもりなんだよ

763 名前:さまよえる蟻人間 mailto:sage [2018/11/06(火) 17:54:13.46 ID:koMt5OtT.net]
異常終了の際にバックアップを作ってくれるのは、親切なんだろうか。

764 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 19:49:18.62 ID:W/feU5S7.net]
半分 中の人
The Old New Thing
When will GetMessage return -1?
https://blogs.msdn.microsoft.com/oldnewthing/20130322-00/?p=4873/

765 名前:デフォルトの名無しさん [2018/11/18(日) 16:47:49.39 ID:0OJqhmsU.net]
リストボックスのリストアイテムに、游ゴシックの文字列をイタリック(斜体)で右詰めでDrawText()描画すると見切れてしまうのはどうしたらいいですか?

766 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 17:05:18.33 ID:5HKlow/5.net]
owner draw

767 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 17:16:58.01 ID:0OJqhmsU.net]
>>755
CDDS_SUBITEM | CDDS_ITEMPREPAINTで owner drawした結果としてのDrawText()なのですが…

768 名前:754 [2018/11/18(日) 17:24:06.74 ID:0OJqhmsU.net]
描画直前に文字列末尾に半角スペースを追加して見切れないようにする対症療法がまず思いつきます。
DrawText()で斜体フォントを右詰め表示するときに最右文字(日本語や欧州語だと末尾文字)が切れてしまうことがあるのは、既知の現象でしょうか?



769 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 17:43:56.83 ID:iB0TPElw.net]
斜体は必要サイズうまく取得できないからな。別口で取得してそれ使うか、取得値より多少大きくすればいいでしょ

770 名前:さまよえる蟻人間 mailto:sage [2018/11/18(日) 17:47:51.97 ID:TJFJUOYd.net]
斜体のずれの寸法は、tmOverhangだったかな。

771 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 18:13:41.25 ID:0OJqhmsU.net]
>>759
悲報。GetTextMetrics() で得られたtmOverhangはzeroでした。tmItalicはnonzeroが戻ってきているのに。
そんなわけで模範的な解決方法が特にないようなので、文字列末尾に半角スペース追加で対応しようと思います。

772 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 20:31:51.66 ID:iB0TPElw.net]
原因が斜体の必要サイズ取得なんだから、模範的な方がよければそれぐぐれば一発で出るよw

773 名前:デフォルトの名無しさん mailto:sage [2018/11/18(日) 23:09:34.60 ID:5HKlow/5.net]
取れないって回答になると思うけどね
新APIとか隠し情報がないと無理かと

774 名前:デフォルトの名無しさん [2018/11/19(月) 05:02:23.92 ID:vKX2BinB.net]
リストボックスに限らず、スタティックコントロールも右詰め・游ゴシック・斜体で末尾文字が見切れてしまう。
他のフォントだと見切れが発生しないフォントも多い。描画APIじゃなくてフォント固有の問題に思える。
あと、「見切れる」という北斗の拳っぽい表現、あまり好きじゃないが適切な表現って他にある?


見切れる(ミキレル)とは - コトバンク
https://kotobank.jp/word/%E8%A6%8B%E5%88%87%E3%82%8C%E3%82%8B-673764
 1 テレビ放送や演劇で、本来見えてはいけないものが見えてしまう。「裏方スタッフが―・れる」
 2 写真や映像で、フレームに人物などの全体が収まらず、一部が切れている。「集合写真で端の人が―・れる」

775 名前:デフォルトの名無しさん mailto:sage [2018/11/19(月) 05:48:21.80 ID:q6cfzVbs.net]
https://www.google.co.jp/search?q=斜体+サイズ+取得+windows+api&oq=斜体%E3%80%80サイズ%E3%80%80取得+windows+api

776 名前:デフォルトの名無しさん [2018/11/19(月) 13:07:49.59 ID:poEgfl9j.net]
>>760
半角スペースで大丈夫かな?

俺はフォントサイズ×0.5くらいを幅に足したわ

777 名前:デフォルトの名無しさん mailto:sage [2018/11/19(月) 13:10:21.39 ID:poEgfl9j.net]
>>763
「見切れる」で十分通じると思うけどな

778 名前:デフォルトの名無しさん [2018/11/19(月) 14:52:36.11 ID:3MOWhUti.net]
フォント側データ書き換えないと無理



779 名前:デフォルトの名無しさん mailto:sage [2018/11/19(月) 15:36:43.44 ID:yv29DTgI.net]
えーそれふぉんと?

780 名前:デフォルトの名無しさん mailto:sage [2018/11/19(月) 15:49:16.38 ID:Vi0v2wfh.net]
>>768

781 名前:デフォルトの名無しさん [2018/11/19(月) 16:01:26.62 ID:vKX2BinB.net]
「Palatino Linotype」フォントでHDCにテキスト描画すると星印「★(U+2605)」などの記号が文字化け扱いされて四角になるんだけどどうしたらいい?
Windows 10 October 2018 Update から起きるようになったような気がする。

782 名前:デフォルトの名無しさん mailto:sage [2018/11/19(月) 16:55:11.57 ID:DcxQo4X/.net]
MBCとかUNICODEとか?

783 名前:デフォルトの名無しさん mailto:sage [2018/11/19(月) 17:13:53.40 ID:RxTglLMs.net]
そもそもそのフォントのそのコードが定義されてるのか?
昔は定義されてたけど今はされてないとかじゃないの

784 名前:770 [2018/11/20(火) 07:34:02.29 ID:FIdfDS6L.net]
以下に再現プログラムのC++ソースをアップロードしました。
https://ideone.com/wqZpPL

各フォントで「★test☆テスト」という文字列を表示するWinMainエントリのプログラムです。
「テスト」を表示できるのに「★」や「☆」を表示できないフォントがたくさんあるように思います。
評価やご助言のほどお願いいたします。 m(_ _)m

785 名前:デフォルトの名無しさん mailto:sage [2018/11/20(火) 07:45:01.17 ID:XdMfHhgY.net]
定義されてるかどうか確かめたのか?
単にその文字が定義されてないだけだろ

786 名前:デフォルトの名無しさん mailto:sage [2018/11/20(火) 07:49:45.64 ID:FIdfDS6L.net]
>>774
文字が定義されているか確かめるにはどうしたらよいですか?

787 名前:デフォルトの名無しさん mailto:sage [2018/11/20(火) 09:26:40.38 ID:c9mHPamo.net]
英字フォントでは★などはないんじゃないの
windowsに最初から入ってる文字コード表アプリで見てみ
Palatino Linotypeには登録されてない

788 名前:デフォルトの名無しさん [2018/11/20(火) 09:36:43.33 ID:FIdfDS6L.net]
>>776
なるほど。回答ありがとうございます。
記号である★や☆を表示できないのにカタカナや漢字を表示できるのですが、
ご紹介いただいた文字コード表との整合性についてはどうなっているのでしょうか。



789 名前:デフォルトの名無しさん mailto:sage [2018/11/20(火) 09:52:35.34 ID:XdMfHhgY.net]
代替フォントが使われるけど、デフォルトはかなり適当だからきちんと^やりたいなら一文字ずつチェックして描画

790 名前:デフォルトの名無しさん mailto:sage [2018/11/20(火) 10:07:40.17 ID:FIdfDS6L.net]
>>778
プログラム内でチェックするAPIはなんでしょうか?
検索のヒントになるキーワードが分からずこんなこと聞いてすみません。

791 名前:デフォルトの名無しさん mailto:sage [2018/11/20(火) 10:11:32.06 ID:XdMfHhgY.net]
GetGlyphIndex

792 名前:デフォルトの名無しさん [2018/11/20(火) 10:20:12.32 ID:FIdfDS6L.net]
>>780
回答ありがとうございます。
GetGlyphIndexは、Win32APIには該当の関数が見当たらないようです。
何かサードパーティーのライブラリでしょうか?

793 名前:デフォルトの名無しさん [2018/11/20(火) 10:24:32.94 ID:jmuJusIM.net]
freetype

794 名前:デフォルトの名無しさん mailto:sage [2018/11/20(火) 10:26:38.56 ID:FIdfDS6L.net]
失礼しました。以下関数ですね。
GetGlyphIndices()
https://msdn.microsoft.com/ja-jp/library/cc428689.aspx

795 名前:さまよえる蟻人間 mailto:sage [2018/11/25(日) 16:05:13.88 ID:1GlBO1DK.net]
64-bitの環境でCreateRemoteThreadでAPIフックを試みた。フックは成功したのだが、フックの解除がかなり難しい。

LoadLibraryの戻り値を使う→だめ。
Module32First/NextのhModuleの値を使う→だめ。
DLLの内部からFreeLibraryを呼ぶ→だめ。

796 名前:さまよえる蟻人間 mailto:sage [2018/11/25(日) 16:09:53.05 ID:1GlBO1DK.net]
自分のプロセスの内部ではフックの解除は成功した。
しかし、他のプロセスになるとフックの解除が難しい。

797 名前:デフォルトの名無しさん mailto:sage [2018/11/25(日) 16:48:41.81 ID:ItHAeG65.net]
どう駄目なのかを書かないのは単なる独り言なのでやめてくれませんかね。
クラッシュしてるんなら以下。
https://blogs.msdn.microsoft.com/oldnewthing/20131105-00/?p=2733

798 名前:さまよえる蟻人間 mailto:age [2018/11/26(月) 21:54:54.87 ID:owLNC83c.net]
https://github.com/katahiromz/ApiHook
1. CMakeでビルド。
2. Targetプログラムを起動して、出てきたPIDをコピーする。
3. 「Test!」ボタンを押すと、「Unhooked」のメッセージが表示される。
4. Injectorプログラムを起動して、さっきコピーしたPIDを貼り付けて、
「Do Inject!」ボタンをクリックする。「Injected!」のメッセージが表示される。
5. Targetプログラムの「Test!」ボタンを押すと、「Hooked」の
 メッセージが表示される。注入成功。
6. Injectorプログラムの「Do Un-Inject!」ボタンをクリックする。
 「Un-Injected!」のメッセージが表示される。
7. Targetプログラムの「Test!」ボタンを押すと、「Hooked」の
 メッセージが表示される。これを「Unhooked」にしたい。



799 名前:さまよえる蟻人間 mailto:sage [2018/11/26(月) 22:11:22.95 ID:vT7JWcSC.net]
今回はTargetというプログラムを対象に注入しているが、任意のプログラムに対して同じように(MessageBoxA APIをフックして)動作しないといけない。

800 名前:さまよえる蟻人間 mailto:sage [2018/11/26(月) 22:14:42.78 ID:vT7JWcSC.net]
InjectorプログラムからFreeLibraryの呼び出しに成功すれば、フックが元に戻るはずだが、FreeLibraryが失敗しているように見える。

よろしくお願いいたします。

801 名前:さまよえる蟻人間 mailto:sage [2018/11/26(月) 23:16:21.86 ID:owLNC83c.net]
https://msmania.wordpress.com/2015/04/26/reflective-dll-injection/amp/

シェルコード書きくけこ?

802 名前:さまよえる蟻人間 mailto:sage [2018/11/26(月) 23:27:16.40 ID:owLNC83c.net]
reflectiveはブルースウィリス判定される恐れあり。他に方法はないのか。

803 名前:デフォルトの名無しさん mailto:sage [2018/11/27(火) 10:52:25.21 ID:krSRsG9l.net]
なぜインジェクションするためにloadlibraryを皆したがるのか直接メモリにコード書き込めばfreelibraryする必要がないじゃないか。

804 名前:デフォルトの名無しさん mailto:sage [2018/11/27(火) 11:06:20.88 ID:cSPHWeDO.net]
dllの方が圧倒的に楽だからな

805 名前:さまよえる蟻人間 mailto:sage [2018/11/27(火) 12:27:02.62 ID:mpDKeVau.net]
終了待ちのイベントオブジェクトと、DLLスレッドと、FreeLibraryAndExitThreadで解決した。

ありがとうございました。

806 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 11:51:42.13 ID:BbScykOp.net]
LVM_SUBITEMHITTESTの戻り値の説明に書かれている
「Returns the index of the item or subitem tested」
の意味がよくわからないんですが、
戻り値とLVHITTESTINFOのiItemが異なる値になる可能性はあるのでしょうか。

807 名前:さまよえる蟻人間 mailto:sage [2018/12/05(水) 13:13:14.97 ID:6bKah/Y1.net]
リストビューのサブ項目は、詳細表示のときの最初の列以外の列のテキストで使われる。

808 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 13:31:27.57 ID:BbScykOp.net]
>>796
それ自体は理解しているのですが、
戻り値がアイテムの番号ではなくサブ項目の番号になることがあるのでしょうか。



809 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 15:00:20.42 ID:Gi6GtpHL.net]
iSubItemメンバに値が入る
戻り値およびiItemは今まで通り

810 名前:デフォルトの名無しさん mailto:sage [2018/12/05(水) 15:22:34.72 ID:XTelINnE.net]
カエル

811 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 08:51:15.20 ID:lNQUDg2h.net]
ReactOSはどうなった?

812 名前:デフォルトの名無しさん mailto:sage [2018/12/08(土) 10:18:34.02 ID:uWIwAxnc.net]
Reactなし

813 名前:さまよえる蟻人間 mailto:sage [2018/12/10(月) 14:41:18.82 ID:ILcXe1rk.net]
Windows互換を目指すReactOS Part12
https://medaka.5ch.net/test/read.cgi/os/1519906380/

こっちのスレで活動してるよ。暇なら見てね。るんぱっぱ。

814 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 19:29:05.60 ID:3mpeBFkx.net]
wineに頼らないと動かない産廃

815 名前:さまよえる蟻人間 mailto:sage [2018/12/27(木) 19:45:16.53 ID:xEoyai35.net]
>>803
微軟おつ。

816 名前:デフォルトの名無しさん mailto:sage [2018/12/27(木) 20:15:23.13 ID:8bFD2Xmo.net]
ほんと産廃だよな
なんでwindowsに頼らないとwin32アプリは動かないんだ

817 名前:さまよえる蟻人間 mailto:sage [2018/12/27(木) 20:32:52.08 ID:xEoyai35.net]
ジャバザハット

818 名前:さまよえる蟻人間 mailto:sage [2018/12/27(木) 21:04:33.87 ID:e6FVPdkR.net]
らんらんるー



819 名前:デフォルトの名無しさん [2019/01/01(火) 23:36:15.57 ID:ML8jFpoW.net]
念のため聞

820 名前:くけどさ、金毘羅とコンパイラどっちが御利益あるかわかってるよね? []
[ここ壊れてます]

821 名前:デフォルトの名無しさん mailto:sage [2019/01/01(火) 23:48:35.00 ID:okGaeCMA.net]
念のために聞くけどさ、ネタとしてもここに書くつもりじゃなかったよね?

822 名前:デフォルトの名無しさん [2019/01/02(水) 12:04:23.94 ID:fpC2xUq7.net]
キンピラごぼうの方が御利益ある

823 名前:デフォルトの名無しさん [2019/01/06(日) 11:52:07.26 ID:RBr8Qah/.net]
ktkr
【Win】 WindowsUpdateで入れなくても良いKBリスト。2018年12月12日まで分
blog.livedoor.jp/nichepcgamer/archives/1039785182.html

824 名前:デフォルトの名無しさん [2019/01/08(火) 21:00:32.75 ID:V1Q/vFq5.net]
Windows(上で動作しているアプリ)が鳴らしている音の「生データへのポインタ」
を取得するWin32APIを教えてください。

825 名前:デフォルトの名無しさん [2019/01/08(火) 21:03:39.61 ID:V1Q/vFq5.net]
812
音データが入っているバッファへのポインタです。

826 名前:デフォルトの名無しさん mailto:sage [2019/01/08(火) 21:13:43.96 ID:BVjQZPEf.net]
ない

827 名前:デフォルトの名無しさん mailto:sage [2019/01/08(火) 21:14:52.46 ID:jpAVboCM.net]
dllインジェクションするしかない

828 名前:デフォルトの名無しさん mailto:sage [2019/01/08(火) 21:20:13.54 ID:V1Q/vFq5.net]
>>814
ありがとうございます。APIとしては用意されていないのですね。
>>815
DLLインジェクション。注射ですか。初めて聞く言葉なので少し調べてみます。
分からなくなったらまた来ます。

目的は、現在発音中の音声のスペクトラムアナライザーを作ることです。
FFT自体はできており、自アプリで鳴らしているWAVデータを処理する
ことまではできていますが、上記のことを実現したいので。



829 名前:デフォルトの名無しさん mailto:sage [2019/01/08(火) 21:25:43.44 ID:V1Q/vFq5.net]
winmm.dllをフックすれば実現できそうです。
早速やってみます。
ありがとうございました!

830 名前:デフォルトの名無しさん [2019/01/09(水) 11:55:22.51 ID:B8oaeAR+.net]
>>812
生データかどうかは知らんがミキサーの出力は取れるはず

831 名前:デフォルトの名無しさん mailto:age [2019/01/12(土) 14:22:16.93 ID:nOTIPVuG.net]
OS:Windows10
VC++ 2015
なんですが、下記ページの質問者と同じ問題にあたりました。
(LANが抜けているとNICに設定した固定IPアドレスではなく0.0.0.0が取得されてしまう)

https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/9dd046d6-d0ad-4875-b9be-9ac6c7106454/ip124501248912524124731239821462244712604127861?forum=vcgeneralja

このページの解決方法(WSAIoctl()関数にSIO_GET_INTERFACE_LIST)では、
ループバックアドレスしか取得できませんでした。

この他、GetIpAddrTable()も試しましたが同様でした。

どうすればLANケーブルが抜けていてもNICに設定した固定IPアドレスを取得できるでしょうか?

832 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 15:05:56.36 ID:hHDH7/la.net]
へ〜そうなんや〜。この辺サンプル作ってたから試してみよ。
と思ったらPCの裏側弄るのめんどくせw

結果、おっしゃるとおりGetAdapterInfo()でもダメだった。
けど、これってAPIレベルでは取れないんじゃないかな?
プロパティで表示されてる固定IPって、単にレジストリに登録されてるだけでは・・・

GetAdapterInfo()で取れるAdapterNameを取得し、
レジストリの
HLM\SYSTEM\ControlSet001(ここは環境による?)\Services\Tcpip\Parameters\Interfaces\{上記で取れた名前}\IPAddress
から取ればいいんじゃないかなあ。

固定IP設定してないと上記キーは存在せず、代わりにDhcpIpAddressが存在する。



なお、もうPCしまい込んだんで、LANケーブル抜いてレジストリ確認してないw
間違ってたらスマソ

833 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 15:18:01.40 ID:uLAlds2c.net]
>>820
ControlSet001の所はCurrentControlSetの方が良い

834 名前:819 mailto:sage [2019/01/12(土) 15:43:42.17 ID:nOTIPVuG.net]
>>820
わざわざ検証してくださってありがとうございます!

www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=19361&forum=6

このページを見ても、LANケーブルが抜かれている状態でIPアドレスが参照できないのは然りのようですね。
レジストリにアクセスした経験が無く、何か恐いので、
0.0.0.0が取得できたらLANケーブルが抜けているか、とりあえずロクな状態じゃないということで、
エラーを出す等の対処としたい(今回のアプリではこれで十分)と思います。

ありがとうございました!

835 名前:デフォルトの名無しさん mailto:sage [2019/01/12(土) 15:58:58.78 ID:hHDH7/la.net]
>>821
そうそう、それそれ

>>822
ケーブルが抜けてる時点では通信のしようがないので、
IPを取得できてしまうとむしろエラーの判定方法が面倒くさくなると思う。
だから「取得できない=エラー」でいいでしょう。

なお、レジストリからの値の取得は別に何も恐くは・・・書き込みは気を遣うけど。

836 名前:819 mailto:sage [2019/01/12(土) 20:54:40.03 ID:cv9IM3HX.net]
>>823
RegGetValue()で固定IPアドレスを簡単に取得できました!
レジストリアクセス、恐るるに足らず・・・!w

>だから「取得できない=エラー」でいいでしょう。

IPアドレスを取得できても、LANケーブルが接続されていないと、
その後のbind()で失敗するので、そこでエラーを出すことができます。
さらに、一定時間間隔でbind()を試みておけば、
ケーブルが接続された段階で正常な受信処理に進むことができます。


これで理想的な対応が完了しました!
ありがとうございました!。゚( ゚´∀`゚)゚。

837 名前:デフォルトの名無しさん [2019/01/13(日) 10:39:34.53 ID:ATVrIMyH.net]
>>819
WirelessLANで固定IPのときな何が取れるのかな

838 名前:819 mailto:sage [2019/01/14(月) 02:01:50.42 ID:DNWDWbUc.net]
>>825
確認してみました。

・Wi-Fiオフ ⇒ 0.0.0.0
・Wi-Fiオン(AP未接続) ⇒ 0.0.0.0
・Wi-Fiオン(AP接続) ⇒ 設定した固定IPアドレス

APへの接続有無が、有線時のLANケーブル接続有無に対応する結果となりました。
もちろん、上記ケースのいずれの場合においてもレジストリからは設定された固定IPアドレスが取得できました。



839 名前:デフォルトの名無しさん [2019/01/14(月) 10:58:45.95 ID:ZKhJHRcZ.net]
LANケーブルが刺さってて反対側の端もHUBに刺さってて
そのHUBがどこにもつながってないときはどうかな

840 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 14:56:20.16 ID:F7cyM080.net]
どこと何の通信をするのか分からないけど、インターネットが可能かどうかという判定なら
固定IPとか関係ないしな

841 名前:819 mailto:sage [2019/01/17(木) 02:34:20.94 ID:5Sf+2HTN.net]
>>827
確認してみました。
どこにも繋がっていないハブ(通電はしている)に繋げば
GetAdaptersInfo()で固定IPアドレスが取得できました。
要はコネクタのところのLEDがチカチカしてる状態ならOKのようです。

842 名前:デフォルトの名無しさん [2019/01/17(木) 13:32:04.21 ID:uUdEyVn6.net]
ガキの使いやあらへんで

843 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 09:31:37.52 ID:/JSvmQQz.net]
Win32に限らない話なんだけど、「floating window」と
「top-level window」って、何らかの意味の違いってあるのだろうか?
それとも同じ?

844 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 09:57:11.80 ID:oa0CPX6o.net]
トップレベルは全部の上に対して上
フローティングは親に対して浮いてる

845 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 12:23:14.96 ID:/JSvmQQz.net]
>>832
ちなみに、TOP-MOST と TOP-LEVEL を勘違いしての発言?

846 名前:デフォルトの名無しさん [2019/01/18(金) 12:26:49.75 ID:/+PP0p1B.net]
WS_OVERLAPPEDWINDOW
WS_OVERLAPPED
WS_POPUPWINDOW
WS_POPUP
WS_CHILDWINDOW
WS_CHILD

847 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 17:24:32.14 ID:1LXUKdBd.net]
>>831
「floating window」って非MDIウインドウであってtop-levelである必要はないんじゃね?
「top-level window」ならば必然的に「floating window」だろうけど

848 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 17:55:26.61 ID:/JSvmQQz.net]
>>835
top-level の定義は、親が存在しない (CreateWindow 実行時に NULL が指定され
ている) Window だ、って英語で書かれているよ。
MDI とか関係ないと思うんだけど。



849 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 18:42:47.29 ID:1LXUKdBd.net]
>>835
訂正
「非MDIウインドウであって」→「非MDI子ウインドウであって」ね

>>836
だから『「top-level window」ならば必然的に「floating window」』ってのはOK?
親の存在の有無にかかわらず非MDI子ウインドウならそれは「floating window」でしょ

要するに「floating window」のうち親を持たないのが「top-level window」

850 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 18:53:17.40 ID:FdTpqa5z.net]
フローティングってのはブラウザなんかでタブをドラッグすると独立できる奴ってイメージがあるけどなあ。

851 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 19:49:53.56 ID:xKp6dC4w.net]
>>838
同じ用語が別の文脈で異なるものを指すことはよくある。
このスレのタイトルを見直してごらん。

852 名前:デフォルトの名無しさん mailto:sage [2019/01/18(金) 20:27:04.31 ID:bji/uTEx.net]
>>838
小さなものってイメージもあるな

853 名前:デフォルトの名無しさん [2019/01/19(土) 01:02:57.44 ID:2Tiw7zAQ.net]
それはない

854 名前:デフォルトの名無しさん [2019/01/19(土) 01:55:25.45 ID:Lyax1h3i.net]
どうも、Win32APIそのものの質問ではないですが質問させてください。
Win32API等のサンプルがおいてあったサイトがどうしても見つからないのです。
以前は難なく見つかったので、消失したっぽいのですが。
覚えているのは以下です

- デバイスコンテキストを利用したスプリッターのサンプルがあった(これは自分ライブラリにしたので確実)
- OLEを利用したファイルのD&Dのサンプルがあった(これも自作アプリで利用したので確実)
- 2016年3月までは存在していた(日記を見て確認)
- 確かZIP(かLZHの圧縮ファイル)がアップロードされてたような。(通常のソースとその解説ページもあった)

URLさえ判れば Internet Archive 等で何とかなるかと思うのですが・・・

855 名前:さまよえる蟻人間 mailto:sage [2019/01/19(土) 02:02:18.49 ID:eJ/T1GXt.net]
OLE D&Dの資料は俺様も欲しいっす。

856 名前:デフォルトの名無しさん [2019/01/19(土) 02:55:55.30 ID:2Tiw7zAQ.net]
みおぼえあるわ

857 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 03:12:53.98 ID:n7alGXg6.net]
見たら思い出しそうではあるが

858 名前:デフォルトの名無しさん [2019/01/19(土) 06:43:28.33 ID:wHcHNf+g.net]
これとか?

OLE DragDrop (サンプル)
hp.vector.co.jp/authors/VA016117/oledragdrop5.html



859 名前:842 [2019/01/19(土) 09:43:29.26 ID:Lyax1h3i.net]
>>846
そのページは昨日に到達してましたが、残念ながら違います。

確かOLEのD&DのページはC++で実装されてて、
IDropSource、IDataObject、IDropTargetの共通部分である
QueryInterface、AddRef、Release関数をIUnknownImplementという名前の
クラスを作ってそれをprivate継承してから、内部ではその親クラスの関数を呼び出す事をしていました。
IUnknownImplementという名前は自分のセンスではないのでそのページからそのままコピペしたのだと思います。

以前はOLE D&Dで検索すると難なく到達出来てたので消失したと思われます。
誰かブックマークしてて今では消えてるページのURLとかでそれらしきものがないでしょうか?

860 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 10:35:14.95 ID:S211ls6J.net]
>>847
ブラウザの履歴

861 名前:を検索したら出てこない? []
[ここ壊れてます]

862 名前:デフォルトの名無しさん [2019/01/19(土) 11:05:14.74 ID:E3pxDp1L.net]
NGチェックで貼れないサイトがあるな
atata sakura ne jp . /com/chap5.html
atata sakura ne jp . /com/chap7.html
https://docs.microsoft.com/en-us/windows/desktop/api/oleidl/nn-oleidl-idroptarget
https://gist.github.com/yohhoy/3053385

863 名前:デフォルトの名無しさん [2019/01/19(土) 11:10:10.62 ID:E3pxDp1L.net]
eternalwindows.jp/ole/oledrag/oledrag00.html
rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi

864 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 11:17:26.03 ID:ie4pzIPS.net]
これ?
eternalwindows.jp/ole/oledrag/oledrag00.html

865 名前:デフォルトの名無しさん mailto:sage [2019/01/19(土) 18:27:05.61 ID:a3eM+T1s.net]
>>841
そう?
メインウィンドウよりでかいフローティングウィンドウなんて見たこと無いんだよな

866 名前:デフォルトの名無しさん [2019/01/20(日) 11:49:19.90 ID:h0iPP/nj.net]
朝鮮人メンタル

867 名前:842 [2019/01/20(日) 15:59:03.36 ID:CaWvoORx.net]
>>848
最後にアクセスしたのも大分前なので。その間にPCも変わってたりしますし。

>>849 >>850 >>851
残念ながらそれらでもないですね。

今日も探していたのですが見つからずもう諦めてきた感じです。
その際に副産物で見つけた、既にサイトが無くなってたページと
そのInternet Archivesを張っておきます。
かなりこの手の情報が消失してる事が判りますね。

www.g-ishihara.com/
https://web.archive.org/web/20180807082916/www.g-ishihara.com/

win32lab.com/tips/
https://web.archive.org/web/20160810040639/win32lab.com/tips/

web.kyoto-inet.or.jp/people/ysskondo/
https://web.archive.org/web/20160810173814/web.kyoto-inet.or.jp/people/ysskondo/

ruffnex.oc.to:80/kenji/index.php
https://web.archive.org/web/20160324222113/ruffnex.oc.to:80/kenji/index.php

www7.plala.or.jp/keny01/
https://web.archive.org/web/20170123104718/www7.plala.or.jp/keny01/

868 名前:デフォルトの名無しさん mailto:sage [2019/01/21(月) 07:38:46.81 ID:5BrFA625.net]
> top-level の定義は、親が存在しない (CreateWindow 実行時に NULL が指定され
> ている) Window だ、って英語で書かれているよ。

最大の突っ込みどころは根拠が「英語で書かれている」のみ



869 名前:デフォルトの名無しさん mailto:sage [2019/01/21(月) 10:35:20.85 ID:UEk4ntQa.net]
>>855
The MSDN entry About Windows offers the following definition: A window that
has no parent, or whose parent is the desktop window, is called a top-level window.

https://stackoverflow.com/questions/18244379/what-exactly-is-a-top-level-window-in-win32-programming


A top-level window is a window that is not a child window, or has no parent window
(which is the same as having the "desktop window" as a parent).


The MSDN entry About Windows offers the following definition:
A window that has no parent, or whose parent is the desktop window, is called
a top-level window.

870 名前:デフォルトの名無しさん mailto:sage [2019/01/21(月) 16:33:26.70 ID:5BrFA625.net]
>>856
引用元にCreateWindowは出てこないわけだが

871 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 12:47:25.26 ID:/p6ZcYuK.net]
no parentでそれぐらいわかるだろ

872 名前:デフォルトの名無しさん [2019/01/22(火) 13:04:37.64 ID:/wbMKv3O.net]
PPAP

873 名前:デフォルトの名無しさん mailto:sage [2019/01/23(水) 01:51:43.39 ID:fK1BYch6.net]
msdnのAbout WindowsのParent or Owner Window Handle
"A window that has a parent is called a child window. "
childでparentがnullの場合はtoplevel

"A window can own, or be owned by, another window."
ここからmsdnのWindow FeaturesのOwned Windowsに移動して
CreateWindowのhwndParentの話になる

要は、child(WS_CHILD)はparentを持ちownerを持たない
WS_POPUPやWS_OVERLAPPEDはparentを持たずownerをもつ
CreateWindowのhwndParentはparentかowner(両義性がある)

874 名前:デフォルトの名無しさん mailto:sage [2019/01/24(木) 18:27:16.16 ID:/05KE7l4 ]
[ここ壊れてます]

875 名前:.net mailto: >>860
Parent, Owner は、「排他的」にしか持つことは出来ないことは正しいけど、

>WS_POPUPやWS_OVERLAPPEDはparentを持たずownerをもつ

はちょっと違うと思うよ。一応、NULL を指定することが出来るから。
[]
[ここ壊れてます]

876 名前:デフォルトの名無しさん mailto:sage [2019/01/27(日) 08:58:04.40 ID:Z8Sr7X5M.net]
という訳で
CreateWindow hwndParent != 0, WS_OVERLAPPED or WS_POPUPだと
"A window that has no parent, or whose parent is the desktop window, is called
a top-level window. "
のとおり、top-levelになる

877 名前:770 [2019/01/27(日) 18:15:04.65 ID:qHVP6gPn.net]
私は“「Palatino Linotype」フォントでHDCにテキスト描画すると星印「★(U+2605)」などの記号が文字化け扱いされて四角になる”件について質問した者です。
みなさん、何の役にも立たない知ったかぶりの回答ありがとうございました。2019年1月22日にリリースされたKB4476976で無事、修正されたようです。


https://support.microsoft.com/ja-jp/help/4476976/windows-10-update-kb4476976
テキスト コントロールで、一部の記号が四角形で表示される問題を修正します。

878 名前:デフォルトの名無しさん mailto:sage [2019/01/27(日) 22:30:57.69 ID:I4R/P36r.net]
>>863
Palatino Linotypeに★(U+2605)は存在しない(>>776)し、
その場合の代替フォントの扱いがてきとうだった(>>778)のが、
KB4476976で修正されただけだろ。



879 名前:770 [2019/01/27(日) 22:57:15.58 ID:qHVP6gPn.net]
>>864
知らないんなら憶測で書き込まないでくれるか?
そういう憶測の書き込み、質問者が混乱するだけで意味がないんだよ。
スレのレベルが下がるからこのスレには書き込みを控えてくれ。

https://en.wikipedia.org/wiki/Star_%28glyph%29

880 名前:デフォルトの名無しさん mailto:sage [2019/01/27(日) 23:00:10.55 ID:biLrTPET.net]
>>863
>みなさん、何の役にも立たない知ったかぶりの回答ありがとうございました

こいつは、荒らしだろ。
無視しろ。相手をするな!

881 名前:デフォルトの名無しさん mailto:sage [2019/01/27(日) 23:07:56.82 ID:Z8Sr7X5M.net]
> スレのレベルが下がる www

882 名前:デフォルトの名無しさん mailto:sage [2019/01/27(日) 23:13:55.20 ID:15mfyiko.net]
>>865
そのリンク先に意味無いだろ。
荒らしたいだけか。

883 名前:770 [2019/01/27(日) 23:21:03.57 ID:qHVP6gPn.net]
>>868
リンク先は星印についての英語版Wikipedia。見ればわかるとおり、星印★は欧州で普通に使われている。
日本語のひらがなや漢字を代替フォントで痴漢できているのに、欧州でもよく使う星印★が代替フォントで痴漢できない不可解な状態がようやく解消された。

884 名前:770 [2019/01/27(日) 23:26:16.39 ID:qHVP6gPn.net]
このスレは「です・ます」調で質問を書き込むと、的外れでレベルの低い回答が返ってきやすい。
この手の回答者には、丁寧語を使うのは不慣れな初心者と値踏みして質問者へのいたずらで無駄な作業をやらせてやろうという悪意がある。

885 名前:デフォルトの名無しさん mailto:sage [2019/01/27(日) 23:53:38.21 ID:eqe5Jbhe.net]
文字コード表で「Palatino Linotype」のU+2605が存在しないことに何も間違いなかったでしょ?
そのことに気付かず指摘されて初めて分かった人が何言ってるの?

886 名前:デフォルトの名無しさん mailto:sage [2019/01/28(月) 00:07:05.80 ID:+M9WQ/f8.net]
元から代替フォントの問題だと指摘されていたし、何も間違っていないな
質問された時にはまだ修正されていなかったのだし

887 名前:770 [2019/01/28(月) 00:10:03.58 ID:FJ2d04ee.net]
>>871
欧州フォントにはU+2605だけじゃなくて漢字やひらがななども存在しないよ。
欧州フォントにない記号が表示されないことを仕様であるかのように知ったかぶりで断定するデタラメな回答はアウト。

888 名前:770 [2019/01/28(月) 00:40:47.00 ID:FJ2d04ee.net]
ちなみにPalatino Linotype のような欧州フォントは雄雌記号の♂(U+2642)と♀(U+2640)が少しイラストっぽく表示されるので、お試しあれ。



889 名前:デフォルトの名無しさん mailto:sage [2019/01/28(月) 00:40:53.70 ID:J+udoZHz.net]
>>873
さすがにアホ

890 名前:770 [2019/01/28(月) 00:55:58.16 ID:FJ2d04ee.net]
Win32APIの不具合なのか新しい仕様なのか判断できない人は質問に回答したらダメでしょ。

891 名前:デフォルトの名無しさん mailto:sage [2019/01/28(月) 01:15:13.62 ID:j971hPKN.net]
> 欧州フォントにはU+2605だけじゃなくて漢字やひらがななども存在しないよ。
欧州フォントでも漢字表示できるの?
はえーすっごーい

892 名前:デフォルトの名無しさん mailto:sage [2019/01/28(月) 01:59:38.49 ID:yOibm1qy.net]
言い方は忘れたけど、確か、Forwarding や Redirecting みたいな機能が
あって、グリフが存在して無い文字は、他のフォントのグリフを使用する
ことができる機能が Win32 には備わっていたと記憶している。

893 名前:デフォルトの名無しさん mailto:sage [2019/01/28(月) 02:08:56.48 ID:jKaiFfBH.net]
https://superuser.com/questions/396160/how-to-change-configure-font-fallback

・Font Fallback
・Font Linking

894 名前:デフォルトの名無しさん mailto:sage [2019/01/28(月) 06:24:36.00 ID:yQjFtWDc.net]
>>874
それも代替フォント選択がいい加減だから=バグだよw

895 名前:デフォルトの名無しさん mailto:sage [2019/01/31(木) 18:23:03.18 ID:zuTwaubK.net]
WS_HSCROLL や WS_VSCROLL スタイルを指定してスクロールバー付きの
ウィンドウを作った場合なんですが、スクロールバーのつまみをスライドさせると
親(?)がWM_CAPTURECHANGED を受信してしまうのは仕様なのでしょうか。

クライアント領域内の画像をドラッグ&ドロップする処理(WM_LBUTTONDOWN で SetCapture(),
WM_LBUTTONUP でReleaseCapture() 呼び出す)を書いているんですが、それに加えて
WM_CAPTURECHANGED でも ReleaseCapture() を呼び出して Alt+Tab などでウィンドウが
切り替わった場合でも確実にキャプチャが解放されるように処理しています。

ところがこのように WM_CAPTURECHANGED を処理すると、スクロールバーのつまみをスライド
させることが出来なくなってしまいます。おそらく Windows がつまみをスライドする直前に
SetCapture() を呼び出しているために、WM_CAPTURECHANGED を受信した瞬間それが解放されて
しまうからだと想像しています。

この問題に対処する一般的(標準的?)な方法はあるのでしょうか?
よろしくお願いいたします。

896 名前:デフォルトの名無しさん mailto:sage [2019/01/31(木) 18:37:28.68 ID:J/ff8w5v.net]
マウスを直接やって独自実装やるんじゃなくてwindowsのドラッグアンドドロップとして機能実装するのが一般的

897 名前:デフォルトの名無しさん mailto:sage [2019/01/31(木) 18:48:17.83 ID:zuTwaubK.net]
881です。
>>882
WindowsにD&D処理を支援する機能があるということなのでしょうか。
画像のドラッグ中はフラグを立てておけば良いのではないかと、いま思いつきました。

// 修正前
case WM_CAPTURECHANGED:
 if (GetCapture() == hWnd)
  ReleaseCapture();
 return 0;

// 修正後
case WM_CAPTURECHANGED:
 if (dragging)
  ReleaseCapture(), dragging = false;
 return 0;

こんな感じで、ちょっと試してみようと思います。  

898 名前:デフォルトの名無しさん mailto:sage [2019/01/31(木) 19:14:06.85 ID:VYsToa/P.net]
ウィンドウが切り替わったって事はWM_KILLFOCUS飛んでくると思うけどそれじゃダメなん?



899 名前:デフォルトの名無しさん [2019/01/31(木) 19:33:52.56 ID:zuTwaubK.net]
881です。
>>884
Alt+Tabのほか、キャプチャ中にEscキーが押下されたためにウィンドウがクローズするタイミングにも
対応しなければならないようなんです。ウィンドウが閉じるときは WM_KILLFOCUS を
受け取らないようなので WM_CAPTURECHANGED しかないのかなと思いました。

900 名前:デフォルトの名無しさん mailto:sage [2019/01/31(木) 19:40:12.79 ID:VYsToa/P.net]
WM_KILLFOCUSとWM_CLOSEよりWM_CAPTURECHANGEDの1箇所で処理したいって事なのかな

901 名前:デフォルトの名無しさん [2019/01/31(木) 19:50:33.62 ID:zuTwaubK.net]
>>886
状況に応じて対応する手もあると思うのですが、予測していなかった状況がまだあるかもしれないので
一カ所で処理したほうが無難なのかな、と考えています。

902 名前:L mailto:sage [2019/02/01(金) 01:20:53.20 ID:WOdIBupf.net]
>>887
基本、>>883 見たいなやり方でいいんじゃないかな。
後、個人的には、Spy++みたいなものでメッセージの来る順序を
観察してそれに応じて「アルゴリズム(←大げさかも)」を考えてる。

Windows の場合、OSのバージョンアップでメッセージの飛んでくる
仕様が変わったりするかも知れず、もしかしたら動かなくなることも
あるかも知れないが、「行儀よくプログラムすれば」それを防げる
という単純なものではないと思ってる。なぜなら、何が行儀の
良いプログラムがそもそもドキュメント化されていないし。

という訳で、現存する全てのバージョンのWindows OSで実験して
動くかどうか確認して動かなければ修正し、新しいバージョンのOS
が出てきたら、また実験する事で対応するしかないらしい。

2ch/5ch の書き込みによれば、「どんな場合にも対応できる
プログラムなんて作れるわけがない」んだそうだで、それを
聞いて深く考えさせられたことがある。

903 名前:デフォルトの名無しさん mailto:sage [2019/02/01(金) 01:29:58.10 ID:WOdIBupf.net]
>>888
[続き]
MSDNなどで、自分のやりたいことを探すと、近いものが見つかって、
「これこれこうすれば良い」と書かれていることがあるので、実際に
やってみたとしても、後々、さまざまな不具合と独自機能拡張の難しさに
悩まされ続けることがある。そのたびにネット中を探し回ったり、
色々実験して対処することになる。
でもよくよく考えてみると、そもそも自分で0から実装すると意外と簡単な
ことであったりして、全部自分の制御下にある分、調べる必要もなく、
むしろ時間の節約になったりする事が多い。

904 名前:デフォルトの名無しさん [2019/02/01(金) 01:44:48.22 ID:n6bcSVs+.net]
>>889
FindFirstFileのワイルドカードはあまり当てにするな、まで読んだ。

905 名前:デフォルトの名無しさん mailto:sage [2019/02/01(金) 04:13:32.40 ID:2psUfhCM.net]
MFTを直接読みなされ

906 名前:デフォルトの名無しさん mailto:sage [2019/02/01(金) 17:50:15.61 ID:IACxdzc7.net]
>881
ScrollBarのつまみをLButtonDownしたままマウスポインタをつまみから外してドラッグするとつまみの位置は移動します。ということはCaptureしています。
スレッドのCaptureはひとつしかないので、事前のCaptureは解放され、WM_CAPTURECHANGEDが通知されます。
あと、WM_CAPTURECHANGEDでReleaseCaptureするのは無意味です。

907 名前:デフォルトの名無しさん mailto:sage [2019/02/01(金) 18:19:28.05 ID:WOdIBupf.net]
>>892
>WM_CAPTURECHANGEDでReleaseCaptureするのは無意味です。

ああ、そういえば、そうだった気がする。メッセージの
Caputure Changed という名前からしても。

908 名前:デフォルトの名無しさん mailto:sage [2019/02/01(金) 18:35:25.24 ID:kGNgvrty.net]
キャプチャ中のAlt+Tabなどは、WM_CANCELMODEというものもある



909 名前:デフォルトの名無しさん mailto:sage [2019/02/01(金) 18:50:09.36 ID:WOdIBupf.net]
>>894
あー、そういえば海外のサイトを調べていたら、
「ALT+TAB でも Capture がどうのこうのなるから、
 正しくは、これこれこんな風にプログラムしなければならない」
みたいに書いてあった。ALT+TABを使わなければ生じないことなので、
後回しだな、と思ったのでちゃんと理解してない。

910 名前:デフォルトの名無しさん mailto:sage [2019/02/01(金) 18:53:12.96 ID:WOdIBupf.net]
「Using SetCapture() and ReleaseCapture() correctly (usually during a drag n' drop operation).」
https://www.codeproject.com/Tips/127813/Using-SetCapture-and-ReleaseCapture-correctly-usua

「Avoiding Trouble with Mouse Capture」
www.drdobbs.com/avoiding-trouble-with-mouse-capture/184416474

911 名前:デフォルトの名無しさん mailto:sage [2019/02/01(金) 18:55:01.83 ID:WOdIBupf.net]
  // THE RIGHT WAY OF DOING IT:
  //* <- Remove a slash to comment out the good version!
  case WM_LBUTTONUP:
    ReleaseCapture();
    return 0;
  case WM_CAPTURECHANGED:
    g_MovingMainWnd = (HWND)lParam == hWnd;
    return 0;
  /**/

  // THE WRONG WAY OF DOING IT:
  /* <- Prefix this with a slash to uncomment the bad version!
  case WM_LBUTTONUP:
    g_MovingMainWnd = false;
    ReleaseCapture();
    return 0;
  // buggy programs usually do not handle WM_CAPTURECHANGED at all
  case WM_CAPTURECHANGED:
    break;
  /**/

912 名前:デフォルトの名無しさん mailto:sage [2019/02/07(木) 12:26:45.88 ID:kmlzmIx7.net]
PCをXPからwin8.1 64bitに移行したんだけど、自作のソフトがいくつか動かない。デバックしてみたら、GetDC(0)→GetPixelやっている所でフリーズしているみたい。
win8でGetDC(0)は駄目だったりする?

913 名前:さまよえる蟻人間 mailto:age [2019/02/07(木) 12:30:15.66 ID:trMMLIP2.net]
GetDCはウィンドウに対するDCを返す関数だから、ウィンドウに関係ないなら、CreateCompatibleDC(NULL)/DeleteDCに変えてみい。

914 名前:デフォルトの名無しさん mailto:sage [2019/02/07(木) 13:23:19.52 ID:FsbblVW+.net]
>>898
DWM(Aero) の場合と、そうでない場合とで surface backend が有る無いの違いがあるには
あるが、一応、GetDC(NULL) が Screen 全体の DC を得るということは仕様化されているので、
新しいOSでも動作自体は出来ないわけではないと思う。

https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/fb7d5836-5e3b-42f8-95cb-586cb2b3da21/getwindowdc-and-bitblt-in-windows-7-and-windows-8?forum=windowssdk

Under DWM (Aero) each window has its own surface backed up by GPU memory.
Without DWM, that is under classic renderer, all pixels covered by another
window are simply discarded. To detect whether DWM is currently running
and enabled use DwmIsCompositionEnabled function.

[ブラウザ上の新OSの紹介]
nowsmartsoft.atwebpages.com/

915 名前:デフォルトの名無しさん [2019/02/07(木) 15:13:59.88 ID:GcZVZFC2.net]
>>898
一回コピーを作らないとだめ

916 名前:デフォルトの名無しさん mailto:sage [2019/02/07(木) 19:21:59.34 ID:/5LF0iCd.net]
>>898
Aero環境ではGetPixelがとてつもなく遅くなるというやつじゃないの?

917 名前:デフォルトの名無しさん [2019/02/08(金) 16:13:48.70 ID:OJ5k9nKR.net]
Win8.1はAeroじゃなくてMetroだから違うのでは。

918 名前:デフォルトの名無しさん mailto:sage [2019/02/09(土) 07:34:09.50 ID:VoK7d33Y.net]
そういったシステム上の差異をブラックボックス化して吸収するのがSDKなりライブラリの役割だと思うんだけどな。
なんでこうも面倒なのかね。



919 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 00:56:19.51 ID:B31yNMWe.net]
AeroやMetroはライブラリだから

920 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 09:55:16.21 ID:jvY/9N9p.net]
Quattroは大佐だから

921 名前:デフォルトの名無しさん [2019/02/10(日) 14:10:30.78 ID:25jgEgQt.net]
5ちゃんはチラシの裏だから

922 名前:898 mailto:sage [2019/02/10(日) 14:41:50.30 ID:pMKPJfwr.net]
遅ればせながら、ご教示していただいた皆様、ありがとうございます。
15年以上前にVC6で作成したソースをもとしたソフトだったので、これを機会に作り替えすることにしました。
今回は、.netのCopyFromScreenからBitmapを作成してGetpixelしてみます。
他にも、mixer関連で取得変更できてなかったり、手を入れなければならないソフトがいっぱいありそう

923 名前:sage [2019/02/10(日) 15:07:59.97 ID:FHx5KBLx.net]
元々SetPixelを呼び出すごとにDrvBitBltしていたので遅かった

924 名前:デフォルトの名無しさん mailto:sage [2019/02/10(日) 18:15:03.40 ID:qfB3Qf/j.net]
managedだとピクセル単位の処理はunsafe使わないと遅いよ
百倍以上の差が出る

925 名前:898,908 mailto:sage [2019/02/12(火) 14:13:36.96 ID:ArFYaOAy.net]
マスターボリュームが変更されたらWAVE音量を同じ値に変更するということを、XPではMixerAPIを使って出来てましたが、win8では出来なくなりました。

それでネットをあさってて、マスターボリュームはIMMDeviceのGetDefaultAudioEndpointで取得出来ることが分かりましたが、WAVE音量を変更する方法が不明です。
どなたか教えてください

926 名前:デフォルトの名無しさん mailto:sage [2019/02/12(火) 15:38:56.47 ID:7Y/Mu4tq.net]
Vista以降ミキサーの仕様が変更されててwave音量の項目自体なくなってないか?

927 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 22:54:47.64 ID:mfSiw2KQ.net]
LLHOOKか何かで、ユーザーの入力は全部遮断しつつ、
SendInputやkeybd_eventやらのプログラム由来の入力は通すようにしたいのですが、
何か方法ないでしょうか?
今はHIDデバイスを無効にする事を考えてますが、あんまやりたくないです。

928 名前:デフォルトの名無しさん [2019/02/20(水) 15:53:14.16 ID:rNooXWfe.net]
盾ニか~などの合字が出力されるWin32APIってどんなのがあるの?



929 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 18:03:14.01 ID:P1QqcLfo.net]
>>914
無いんじゃないの。

930 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 18:04:45.23 ID:eMhiTtf4.net]
普通に合字に対応する文字コードを文字(列)出力/描画 APIに渡すだけだと
思う。それ以上のことをやりたい場合は、自分でプログラムしたらいいよ。

931 名前:914 [2019/02/20(水) 18:12:05.06 ID:rNooXWfe.net]
元号の合字の件、以下のニュースが気になって質問したんだけど、
Win32APIが使わないなら誰がどんな用途でわざわざレジストリを開いて合字を探すのか気になった次第。


Microsoft、「KB4487044」適用で元号に不具合 - PC Watch
https://pc.watch.impress.co.jp/docs/news/1170425.html

932 名前:さまよえる蟻人間 mailto:sage [2019/02/20(水) 18:13:20.05 ID:AQq/x/Lj.net]
LOGFONT.lfWidth、CreateFontIndirect、SelectObject、TextOut/DrawTextを使えば半角漢字を描画できる。

933 名前:さまよえる蟻人間 mailto:sage [2019/02/20(水) 18:15:28.65 ID:AQq/x/Lj.net]
元号については、ここに詳しく書いてあるよ。
https://docs.microsoft.com/en-us/windows/desktop/intl/era-handling-for-the-japanese-calendar

934 名前:さまよえる蟻人間 mailto:sage [2019/02/20(水) 18:22:20.03 ID:AQq/x/Lj.net]
元号のAPIを追加するより、レジストリで定義する方が得策だね。事前テストも出来るし。

935 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 18:45:40.96 ID:EHsoFK41.net]
>>917
盾ニか~ってただの文字コードに対応した文字
ただ、いわゆる機種依存文字なので、その文字コードを想定していない
クソアプリが死ぬって話がその記事に書いてることなのでは?

レジストリに記録されてるのは元号と西暦の対応で、
その情報を使いたいアプリが好きに使えばいいだけの話

APIでそこ多分見てる(見てないかも知れんが)のは
GetCalendarInfoやEnumCalendarInfo系あたりじゃなかろうか
今回の件でこいつらが問題を起こすとは書いてないと思うが

936 名前:さまよえる蟻人間 mailto:sage [2019/02/20(水) 18:49:44.36 ID:jAMIqMc6.net]
新しい元号のUnicodeのコードポイントはもう決まってるらしいよ。

937 名前:914 [2019/02/20(水) 19:12:38.68 ID:rNooXWfe.net]
GetDateFormatEx()で書式ggは元号に置き換わる。合字の書式はそもそもあるの、どうなの。

938 名前:デフォルトの名無しさん [2019/02/20(水) 19:45:56.26 ID:v7iPz90J.net]
森鷗外𠮟る



939 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 21:29:35.92 ID:kVQHKw0G.net]
WaitForSingleObjectやWaitForMultipleObjectsってspurious wakeupがあるから使うなと言ってる先輩がいるけど
本当ですか?

940 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 21:44:37.57 ID:x13qkxfg.net]
spurious wakeupがある→正しい
使うな→よりより代替手段がなければ使うしかない

代替手段があるかどうかは環境によるから先輩ちゃんに聞く

941 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 22:18:48.32 ID:JuVjm6Gn.net]
https://docs.microsoft.com/en-us/windows/desktop/sync/condition-variables
条件変数のAPIではspurious wakeupsに言及がある、ただしWaitForSingleObjectなどでは言及が見つからなかった

https://stackoverflow.com/questions/38757420/is-waiting-for-an-event-subject-to-spurious-wakeups
出典不明だがWaitForSingleObjectはspurious wakeupが起こらないとある
WaitForMultipleObjectsExでは、bAlertableにTRUEを渡せばspurious wakeupが起こりうるらしい

先輩の情報源を知りたい

942 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 22:23:38.90 ID:qRCx8JnJ.net]
同期オブジェクトが非シグナル状態でWaitFor系関数から勝手に戻ってくることはないと断言できる
仕掛けるオブジェクトに依ると思う

943 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 22:27:18.85 ID:qRCx8JnJ.net]
ただし単に寝ていたスレッドが起きるという現象自体は外部のCPU負荷調節アプリとかでResumeTheradを発行することで簡単に再現できる

944 名前:デフォルトの名無しさん mailto:sage [2019/02/22(金) 23:11:25.13 ID:4O+31NpZ.net]
魔王も勇者が入って来ただけで起きるしな

945 名前:デフォルトの名無しさん [2019/02/22(金) 23:26:13.44 ID:7tzQnSDu.net]
そもそも何をWaitFor系関数で待つのかってのも大きい。自作Signalオブジェクトなら問題起きないでしょ。

946 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 07:23:17.25 ID:9pAAXdf2.net]
>>927
以前、2つのプロセス間で、WaitForSingleObject() を CreateEvent(), SetEvent() 系
の HANDLE で実験してみたけど、バグ的な現象は起きず、至って正常に動作し、
2つのプロセスで、お互いに、SetEvent() したり、WaitForSingleObject() で
相手を待ったりして、ハンドシェイク的な振る舞いが思ったとおりに出来ることが
確認できた。

速度も、SetEvent() した事が相手に届くまで、確か、1(μs)前後だったので、
十分速いと結論付けた。

947 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 08:40:48.30 ID:zem2FMDi.net]
C++標準のwait系にはあるからいちいち確認するしなきゃいけないから面倒だよな
しかも、イベントだけ使いたいのにいちいちmutexをよういしなきゃいけないし・・・

948 名前:デフォルトの名無しさん [2019/02/23(土) 11:36:21.35 ID:+DV3f+Dk.net]
都市伝説かも知れんが
そもそもいつ発生するか判らない発生しないかも判らない現象を
ちょっとテスト書いてみて大丈夫(キリつ



949 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 11:54:16.12 ID:apHI25Q1.net]
条件変数ならともかく、Eventなんかはspuriousで起こされても確かめようがないんじゃないのかな。

950 名前:デフォルトの名無しさん [2019/02/23(土) 16:03:56.92 ID:qOMwbnHQ.net]
同期機能は同期機能としてそのまま利用しつつ、最低限の安全性や整合性については別途確認すべきなのでは。

951 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 18:44:58.70 ID:9pAAXdf2.net]
WaitForSingleObject() には、MSDN の仕様書に書かれていないような意味においての
バグ的な spurious wakeup は起きないと思う。

なお、実験する限り問題ないが、絶対ないかどうかは誰にも分からない。

952 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 18:57:16.07 ID:Cx5sxFW5.net]
c++標準ライブラリには堂々と書かれてるな
Windowsだとc++標準ライブラリを使う理由がないな

953 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 19:07:25.29 ID:9pAAXdf2.net]
同期オブジェクトは重要。
仕様書に何も書いてないのに、もし、spurious wakeup が起きるとしたらバグ。

なお、C++ の STL ライブラリは馬鹿が作ったと思ってる。
昔ながらの C の標準ライブラリは良い出来だが、それと混同しないほうがいい。

954 名前:デフォルトの名無しさん [2019/02/23(土) 20:04:03.30 ID:qOMwbnHQ.net]
C++のSTLとCライブラリでは機能が似ているところはない気がするけど?
念のため言っとくとiostreamはSTLじゃないよ。

955 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 20:24:45.58 ID:7js9m1kN.net]
つーかspurious wakeupなんて存在を許してる時点で作ったそいつらはアホじゃないの
そいつらのリテラシーどうなっとんのか疑うレベル

956 名前:デフォルトの名無しさん [2019/02/23(土) 20:32:05.22 ID:qOMwbnHQ.net]
汎用性のためにファイルロックを使った排他処理で実装するとそうなってしまうんじゃないの。知らんけど。

957 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 22:14:41.32 ID:apHI25Q1.net]
厳密にspurious wakeupを許さない実装は大変でパフォーマンス的にも不利だから。
というか、spurious wakeupを許すとすごく有利だというのが後から発見されたんじゃなかったかな。

958 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 02:55:03.61 ID:ZXw7vz2Z.net]
っていうか、win環境ならC++標準ライブラリよりWaitFor〜を使ったほうがいいだろ
std::unique_lockなんで馬鹿みたいに遅いしw



959 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 04:17:10.21 ID:N5G83Lpp.net]
>>937
WaitForSingleObject()ってエラー返すことがあるよね?仕様上では。
要はちゃんとエラーハンドリングしろって話だけどさw

960 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 08:23:50.21 ID:pcDSz9Pr.net]
>>943
プログラムには優先順位があって、まず、正しく動作する事が一番重要。
その次に来るのが、使いやすさか、または、速度。どちらが優先されるかは
設計思想や哲学による。その次にプログラムのサイズ。

いくら速度が速くても、やるべきことが正しく行われないならプログラムとしては
失格なんだ。

961 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 08:36:16.85 ID:fWdsplTz.net]
「sprious wakeupもありえる」というのを「正しい動作」と定義したんだから何の問題もない。

962 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 08:48:33.63 ID:pcDSz9Pr.net]
それだと、使う側のプログラムが長くなるだけなので、設計思想に問題を感じる。
ライブラリ設計者の経験不足かもしれない。
速くなるといっても結局、使う側でループの中で判定して条件に合わないなら、
また繰り返し、wait するのなら、ライブラリ側でそういう風にできなかったの
だろうか。

963 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 09:42:01.89 ID:pcDSz9Pr.net]
深く考えてないけど、以下のようにしてしまえば、速度が速いまま、
spurious wakeup が絶対に起きない wait 関数を作れるんじゃないかと
思うんだけど、どうなんだろう。

Xxxx LapperWait(Yyyy y, Zzzz z) {
  for (;;) {
   raw_wait(y, z);  // spurious wakeup 有り
   if ( IsCond(y, z) ) {  // 厳密な条件チェック
     return x;
   }
  }
}

964 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 10:03:24.37 ID:9KBfjXtA.net]
>>949
深く考えてから書き込みましょう。
ぼくのかんがえたさいきょうの同期実装についてはスレ違いなので、よそでやってください。

965 名前:デフォルトの名無しさん [2019/02/24(日) 14:42:49.21 ID:YwY0sV++.net]
LoopyWaitでいいよもう

966 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 15:26:11.06 ID:BJ3WFlaM.net]
「sprious wakeupもありえる」のはいいが、
どのAPIも使うたびにいちいち関数仕様確認するのは面倒だな

つーか関数の説明には書いてないので仕様とは言えないと思うんだが・・・初見殺し?

967 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 15:39:02.49 ID:2tRfk65D.net]
>>952
初めて使うAPIでしかも同期処理なんて複雑なものは仕様を調べて使うのが当然のことだと思うぞ。

968 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:04:30.12 ID:N5G83Lpp.net]
>>949
   raw_wait(y, z);  // spurious wakeup 有り

   if ( IsCond(y, z) ) {  // 厳密な条件チェック
の間で条件が変わったらどうするの?



969 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:07:02.11 ID:EMRtI4X3.net]
>>954
え、それはプログラミングの仕方の問題じゃないの?
元々、マルチスレッドプログラムは難しいんだけど、それと今回の
問題は別なのでは。

970 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:08:45.84 ID:N5G83Lpp.net]
>>955
どうやってプログラムで回避するの?
回避できないんだったら「絶対に起きない」なんて言えないだろ。
こんなレベルで排他処理語られても...

971 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:14:47.34 ID:pcDSz9Pr.net]
>>956
もともと、排他処理用のAPIは、そういう「変な問題が起きない」ように用意されて
いるんだよ。「Atomic」アクセス、などと言われていて、「途中に」とか
中途半端な状態が起きない作りにしてある。それは割り込み発生を好きにOFFに
できるところのシステム側(OS)でしかできない。

972 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:16:16.11 ID:pcDSz9Pr.net]
なぜかIDが勝手に変わったが、949=955=957だ。

973 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:17:26.62 ID:9KBfjXtA.net]
同期オブジェクトの正確性ではなく、ユーザ定義データの保護こそが大切。目的を見失わないように。

974 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:18:28.55 ID:pcDSz9Pr.net]
ちなみにオイラは、32BITマルチタスクOSを作った経験がある。

975 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:24:01.17 ID:Krr3p0wT.net]
>>949
シングルスレッド脳だとそういう発想になる

976 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:34:48.90 ID:9KBfjXtA.net]
たまにかかってくる間違い電話がいやだから電話は無能。そんな感じ。

977 名前:デフォルトの名無しさん [2019/02/24(日) 16:36:35.10 ID:2fcQjxFq.net]
Atomicを語るならID変わらないようにしないと恥ずかしいな

978 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:41:49.67 ID:pcDSz9Pr.net]
IDが変わる理由は知らん。多分、5chのシステム上の問題だと思う。



979 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:43:05.47 ID:pcDSz9Pr.net]
沢山の人で賑わっているように見せるためかな。人寄せと広告料金関連で。

980 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:46:55.09 ID:9KBfjXtA.net]
コールバック形式のAPIを使うプログラマはその呼び出しタイミングをAPI側に委ねている。
何がいいたいかというと、要するにあきらめろということだ。

981 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 17:53:55.79 ID:N5G83Lpp.net]
>>957
それが起きるからどうするという話で、
あんたが糞の役のも立たないコードを出したんじゃん。
つまり>>954はクソだったと認めるということ?

982 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 18:01:12.16 ID:pcDSz9Pr.net]
>>697
多分、あのコードで問題ないはずだ。
ちなみに、オイラは現実社会では天才と言われているよ。

983 名前:デフォルトの名無しさん [2019/02/24(日) 18:31:20.56 ID:9KBfjXtA.net]
車のバンパーは本来、ボディを保護するためにある。
そのバンパーに傷がついたりへこんだりすることを病的に嫌悪している状態。
お大事に。

984 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 18:39:12.54 ID:fWdsplTz.net]
もしそのraw_wait()がP命令だとしたらその結果がspuriousのときはV命令で状態を戻さなきゃならんと思うが。
ただどっちにしてもそのIsCond()はライブラリ側では構成しようがないけどな。

あと、やっぱりspurious wakeupって条件変数特有のものじゃなかったかな。
なんかそのへんで話がずれている気がする。

985 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 18:54:16.69 ID:EMRtI4X3.net]
>

986 名前:;>970
どういう状況を考えてるのか前提が分からないし、だから
「深く考えてない」
という事になってしまうのだけども。少なくとも、Win32のWaitForSingleObject()
では特に問題は起きない。
[]
[ここ壊れてます]

987 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 18:58:07.16 ID:D1Rqo30U.net]
つ MsgWaitForMultipleObjectEx

988 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 19:23:32.11 ID:njB6xu8t.net]
>>972
GetMessage相当が入ってるだけで基本WaitForと同じ動作だが何か?



989 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 22:10:09.80 ID:SGjUOn7r.net]
>>925
>WaitForSingleObjectやWaitForMultipleObjectsってspurious wakeupがあるから
>使うなと言ってる先輩がいるけど本当ですか?
嘘です。

同期オブジェクトを使いこなせない先輩が自分のバグを解決出来ずにこれを
spurious wakeupのせいにし、
同期オブジェクトをろくに知りもしない >>926-973 みたいなやつが適当なことを
書いているだけです。

990 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 23:25:34.04 ID:N5G83Lpp.net]
>>930
勇者がきてないのに目覚めてしまった魔王とか想像してほっこりした

991 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 22:30:45.76 ID:M4I6EPLO.net]
>>974
ってことは、Win環境においてはC++標準ライブラリを使う理由が無いってこと?

992 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 23:33:02.61 ID:2LN6Bs/0.net]
WaitFor〜はOS制御の根幹って感じはするけど、lstrcpy〜系をAPIにする意味はよく分からん

993 名前:デフォルトの名無しさん [2019/02/26(火) 02:22:40.88 ID:K9v1e6Ic.net]
昔はCライブラリへのリンクなしでビルドする需要が割とあった。

994 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 12:16:11.37 ID:5MxkS3P7.net]
>>976
Windows では、Windows API か、それをクラスにまとめた、MFC を使う。
型も、HDC とか、Windows 独特のもの

C++標準ライブラリは、アルゴリズム以外は、あまり使わないだろ

995 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 12:23:22.51 ID:D7AA7sgA.net]
プラットフォーム共通にしたい場合なんかに使うと思うよ。
排他処理みたいな、OSに近いしい部分はOSに近しいAPIの方がいいと思うけどお。

996 名前:デフォルトの名無しさん [2019/02/26(火) 16:48:18.20 ID:K9v1e6Ic.net]
vector,list,mapなど各種コンテナ、文字列クラスbasic_string、スマートポインタクラスshared_ptr,unique_ptrは使うでしょ。
コードでのdelete, delete[] 呼び出しを減らすためにね。

997 名前:デフォルトの名無しさん [2019/02/26(火) 17:32:55.36 ID:K9v1e6Ic.net]
スマートポインタクラスshared_ptr,unique_ptrは、デストラクタを細かく指定できるのでHDCやHFONTなどにも使えるよ。
すでにMFCなどにラッパークラスがすでにあるから使わないだろうけど。

998 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 20:07:38.65 ID:ZphJ05zo.net]
昔はCRT依存しない実行ファイル作る意味もあったけど、C++が普通になったら
もうそこはこだわらないね。



999 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 20:15:04.12 ID:gazg2F9T.net]
>>980
プラットホーム不問にしなきゃいけないような有益なプログラムを書ける人なんてほぼいないだろ

boostライブラリみたいなものなら、プラットホーム固有のものを使っちゃいかないけど、あんなライブラリを書ける人なんて世界でも100人もいないだろ

1000 名前:デフォルトの名無しさん [2019/02/26(火) 20:22:51.49 ID:K9v1e6Ic.net]
WindowsAPI直呼びを避ける動きは、主にゲーム業界からのニーズで発生するんだけどねぇ。

1001 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 23:03:56.44 ID:D7AA7sgA.net]
>>983
CRTに脆弱性があってから分離が当たり前になった気がするなあ
分離しておかないとパッチがあたらないし

1002 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 23:06:10.50 ID:D7AA7sgA.net]
>>984
今時のシステムはWindowsなのかLinuxなのか、上の人はコストしか見ないから
どっちでも行けるようにしておかないと下っ端は辛い状況になるよ。
外注に出す金があるならそんなみみっちいことは言われないわけで。

1003 名前:デフォルトの名無しさん [2019/02/26(火) 23:39:30.91 ID:K9v1e6Ic.net]
>>986
ブラウン管ディスプレイのきじゃくせい(なぜか変換できない)なんてどうでもいいだろ。

1004 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 01:01:50.92 ID:QPgoOUvU.net]
strsafe.h

1005 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 03:28:19.50 ID:32GlVML2.net]
>>988
もしかして:ぜいじゃくせい

1006 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 07:27:37.75 ID:5GOwcvUn.net]
>>986
CRTに依存しないってのはstaticでもdynamicでも使わないって意味。昔はあったんだけどね。

1007 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 07:35:30.59 ID:L5IXP2k2.net]
>>990
お前すげーな、漢検でも持ってるのか?


って言われたいのかなぁw

1008 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 09:32:05.81 ID:TPOAkFQ/.net]
ネタをネタと



1009 名前:デフォルトの名無しさん [2019/02/27(水) 09:44:25.02 ID:TXzf+Z8H.net]
申し訳ないが、心臓再同期療法の話はスレ違いなのでよそでやってくれ。

1010 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 15:18:35.62 ID:Gg4oALq7.net]
脆弱性という文字は脆弱性と読んでしまう脆弱性がある

次スレ
mevius.5ch.net/test/read.cgi/tech/1551247748/

1011 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 13:25:53.11 ID:wtAGrKTy.net]
      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴ……!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,
      //三/|三|\       ,,,,    ,,、,、,,,
      ∪  ∪
  ,,          ,    ,,,,    ,,、,、,,,       ,,、,、,,,
,,,,,    ∧_∧ うまいモナー,,,,,   、 ,,,,,,   ,,,,,,,,    ,,,,,
 ,,,   ( ´∀`)___,,,,___ ,, ∧_∧ ゲンキニ シテルカナ・・・___,,
  / ̄ ( つ日ヽ   ∧_∧    (    )               /
/    (__))   (´∀` )   (    )    ∧_∧∧_∧ / マターリモナー
 ∧_∧∧_∧ドーゾ (日ノ )  | | |    ( ´∀`) ´∀`)
 ( ´∀`) ´∀`)    ((__)  ,(_(_) (○)⊂   ) つ日⊂ ) モーナー
―(つ⊂  ) つ⊂ )―――――――――――ヽ|〃(⌒)(⌒) (⌒)(⌒)
   (⌒)(⌒) (⌒)(⌒)グーグー

1012 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 18:40:33.11 ID:5EsDLzeQ.net]
SendMessage(WM_CLOSE);

1013 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 18:41:27.12 ID:5EsDLzeQ.net]
SendMessage(WM_SYSCOMMAND, SC_CLOSE);

1014 名前:デフォルトの名無しさん mailto:sage [2019/03/03(日) 18:42:26.83 ID:5EsDLzeQ.net]
PostQuitMessage(5963);

1015 名前:デフォルトの名無しさん [2019/03/03(日) 18:44:07.75 ID:5EsDLzeQ.net]
TerminateProcess(hProcess, 5963);

1016 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 476日 23時間 21分 7秒

1017 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<255KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef