2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Win32API質問箱 Build123

1 :デフォルトの名無しさん:2016/10/08(土) 12:33:02.29 ID:0jaJMPXG.net
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/

2 :デフォルトの名無しさん:2016/10/08(土) 12:35:25.10 ID:RMZHGp4O.net
>>1 乙乙

3 :デフォルトの名無しさん:2016/10/08(土) 12:43:30.04 ID:0jaJMPXG.net
関連スレ

【C++】 DirectX初心者質問スレ Part40
http://echo.2ch.net/test/read.cgi/tech/1474782237/

Visual Studio 2015 Part7
http://echo.2ch.net/test/read.cgi/tech/1475491685/

4 :デフォルトの名無しさん:2016/10/08(土) 12:44:15.44 ID:0jaJMPXG.net
つづき

MFC vs .NET
http://echo.2ch.net/test/read.cgi/tech/1382027363/

【最強CUI】PowerShell -Part 1
http://echo.2ch.net/test/read.cgi/tech/1378978504/

5 :デフォルトの名無しさん:2016/10/08(土) 12:45:29.36 ID:0jaJMPXG.net
番外編

MacでもLinuxでも使えるVisual Studio Code
http://echo.2ch.net/test/read.cgi/tech/1430403713/

D言語 Part34
http://echo.2ch.net/test/read.cgi/tech/1422155249/

6 :デフォルトの名無しさん:2016/10/08(土) 12:48:44.68 ID:SDbMDtMb.net
MFCはオワコン

MFC相談室 mfc23d.dll
http://echo.2ch.net/test/read.cgi/tech/1474384848/

7 :デフォルトの名無しさん:2016/10/08(土) 12:50:40.14 ID:iZfxeHbI.net
Win32API が使える windows 用の Objective-C ってある?

8 :デフォルトの名無しさん:2016/10/08(土) 12:53:21.93 ID:0jaJMPXG.net
おまいらもう今時デフォで-DUNICODEだよな?
ASCII版なんて作ってないよな?

9 :デフォルトの名無しさん:2016/10/08(土) 12:57:43.73 ID:iZfxeHbI.net
_T はやめて L しか使ってないな

10 :デフォルトの名無しさん:2016/10/08(土) 13:05:44.01 ID:SDbMDtMb.net
VC++のBOMなしutf-8対応はよ

11 :デフォルトの名無しさん:2016/10/08(土) 13:10:51.31 ID:T/Z20i9z.net
>>9
同じく
さすがに CreateFileW( ) まではしないけど

12 :デフォルトの名無しさん:2016/10/08(土) 13:13:10.90 ID:RMZHGp4O.net
swiftでWin32API叩けるんかな

13 :デフォルトの名無しさん:2016/10/08(土) 15:49:59.12 ID:so+5PAmM.net
>815 デフォルトの名無しさん (ワッチョイ 353c-pu+C) sage 2016/10/08(土) 14:11:25.37 7aqZN51I0
>Swiftの美しい文法を使ってWin32APIをディスることはできるよ

14 :デフォルトの名無しさん:2016/10/08(土) 17:40:11.77 ID:GxOhc35M.net
DirectXとOpenGLでベクトルの縦横とか掛ける方向が逆ってのがあれで
転置行列にすりゃええのかと思いきや行列はそのまま共通っつー判りやすさ

15 :デフォルトの名無しさん:2016/10/08(土) 19:01:31.79 ID:GxOhc35M.net
誤爆orz

16 :デフォルトの名無しさん:2016/10/09(日) 14:41:37.01 ID:zS2VLXB8.net
Windows 10 UWPアプリ開発
http://echo.2ch.net/test/read.cgi/tech/1440150886/

17 :デフォルトの名無しさん:2016/10/12(水) 13:29:03.98 ID:CGbCriuU.net
なんでWin64APIって出ないんだろうね

18 :デフォルトの名無しさん:2016/10/12(水) 18:18:40.76 ID:rUC8jhfl.net
_T でもう慣れちまった

19 :デフォルトの名無しさん:2016/10/12(水) 18:36:12.56 ID:bqn+ql9d.net
いまさらだけど mbcs 系と wchar 系で名前に一貫性が無いのはやめてほしい

20 :デフォルトの名無しさん:2016/10/15(土) 13:31:49.50 ID:5kX/FrWC.net
>>9
+1

21 :デフォルトの名無しさん:2016/10/15(土) 19:45:46.65 ID:D3zuPPkw.net
>>18
スレッド的には TEXT 一択

22 :デフォルトの名無しさん:2016/10/16(日) 12:20:45.02 ID:ZLsyfFKf.net
>>17
64bit環境でも使えるんだしいいんじゃない?
新しいものが増えることよりも今あるものが使い続けられるかどうかのほうが重要。

23 :デフォルトの名無しさん:2016/10/16(日) 21:15:11.36 ID:9M/UHFkb.net
部分的には64bitAPI出てるよ
アドレス長対応する必要あるから

24 :デフォルトの名無しさん:2016/10/22(土) 16:23:27.83 ID:O48rD9qT.net
avi や mpeg などをエンコードする api ってどれですか?

25 :デフォルトの名無しさん:2016/10/22(土) 16:36:41.69 ID:ypW/SG0/.net
どれ?と聞く場合は、選択肢を並べてくれないと。

26 :デフォルトの名無しさん:2016/10/22(土) 16:48:10.11 ID:O48rD9qT.net
自分で調べたら FFmpeg みたいだけど Win32API じゃないですね

27 :デフォルトの名無しさん:2016/10/23(日) 01:08:31.63 ID:qtfTOnQW.net
OS標準のエンコーダちゅーたらこのへんのくらいしかねえぞ
https://msdn.microsoft.com/en-us/library/windows/desktop/ff819077.aspx

28 :デフォルトの名無しさん:2016/10/23(日) 01:13:24.04 ID:qtfTOnQW.net
あー、aviとか言ってるしVFWやDMOの方がええんかね

29 :デフォルトの名無しさん:2016/10/23(日) 10:32:03.27 ID:CGzeXgZh.net
Video for Windows

30 :デフォルトの名無しさん:2016/10/26(水) 13:52:39.34 ID:58gjeL/k.net
ジョイステックってキーボードやマウスみたいにフックできるのでしょうか
こんなコードが検索でかかるのですが、これをつかいますか?
Input in={0};
in.type=INPUT_HARDWARE;
in.hi.uMsg=?????;
in.hi.wParamL=?????:
in.hi.wParamH=?????;
SendInput(1,&in,sizeof(in));

31 :デフォルトの名無しさん:2016/10/31(月) 08:39:50.35 ID:L3NvQGUf.net
ドライバーの存在しないデバイスに無理矢理標準のゲームパットのドライバをインストールさせることは可能でしょうか

32 :デフォルトの名無しさん:2016/10/31(月) 11:48:02.42 ID:8iOXYzaz.net
それのどこがWin32APIなの?

33 :デフォルトの名無しさん:2016/10/31(月) 14:23:59.11 ID:oRn+7MiJ.net
DDKの使い方ならここかな

34 :デフォルトの名無しさん:2016/10/31(月) 14:24:45.40 ID:oRn+7MiJ.net
貼り忘れ
http://echo.2ch.net/test/read.cgi/tech/1049116134/

35 :デフォルトの名無しさん:2016/11/01(火) 07:22:31.26 ID:BruE0qoG.net
あざす

36 :デフォルトの名無しさん:2016/11/05(土) 00:23:48.13 ID:jJRBXXEI.net
cのfopenはvc++でコンパイルするとCreateFileをよびだすのかな?
もしそうだとすると、標準ライブラリを使うとワンクッションはいるので
遅くなりますよね?

37 :デフォルトの名無しさん:2016/11/05(土) 00:31:14.92 ID:DUzD1Vkt.net
そうだな
そんなに速度に対してシビアなプログラミングしてるのか?w

38 :デフォルトの名無しさん:2016/11/05(土) 01:16:53.89 ID:echkH5Mx.net
>>37
あえて遅い方を選ぶ理由は?

39 :デフォルトの名無しさん:2016/11/05(土) 01:39:59.98 ID:q1Fthh0N.net
CreateFileじゃなくメモリ関連で以前コンソール使ってやったけど
最適化すると一緒

40 :デフォルトの名無しさん:2016/11/05(土) 03:05:01.84 ID:jJRBXXEI.net
VCの最適化は糞なんでOFFしてます

41 :デフォルトの名無しさん:2016/11/05(土) 03:43:13.15 ID:QPrRTgR0.net
SSD使えよ

42 :デフォルトの名無しさん:2016/11/05(土) 07:35:56.48 ID:DUzD1Vkt.net
>>38
スレチになるがマルチプラットフォーム

43 :デフォルトの名無しさん:2016/11/05(土) 07:53:22.41 ID:QPrRTgR0.net
Win32でもconio.hで書けるよ

44 :デフォルトの名無しさん:2016/11/05(土) 11:28:45.86 ID:qKcyypJI.net
>>38
FILE構造体が便利ならstdio使うし、Windows専用アプリで細かい制御をしたいならCreateFile()を使うし、
普通の人は臨機応変に使い分けることができる。

45 :デフォルトの名無しさん:2016/11/05(土) 11:58:41.60 ID:2n9hgzl5.net
普通の人は使い分けてるのか?
普通のwinプログラミングじゃfopen見ないと思うんだが

46 :デフォルトの名無しさん:2016/11/05(土) 12:11:34.73 ID:Bnw8PuKo.net
>>45
ホントカネー

47 :デフォルトの名無しさん:2016/11/05(土) 12:34:09.41 ID:2n9hgzl5.net
winプログラミングで使うなら_tfopen_sになると思うが、ぐぐって1700ヒットだよ。_tfopenでようやく2万w
mallocなみに見かけないと思う

48 :デフォルトの名無しさん:2016/11/05(土) 12:50:18.04 ID:0pOl8O7N.net
>>47
_tfopen_sの実態は
fopen_s, _wfopen_sなんだがw

fopen 9,180,000件
適当こいてんじゃねーよw

49 :デフォルトの名無しさん:2016/11/05(土) 12:58:41.81 ID:qKcyypJI.net
>>45
アスペじゃなければ使い分けくらいできるしするだろ。
いちいちReadFileだのWriteFileだのやってられないし。普通は。

50 :デフォルトの名無しさん:2016/11/05(土) 12:59:37.00 ID:2n9hgzl5.net
>>48
プログラミングしたことある?
fopenはwin以外にも使われてるからヒット数多いに決まってるよwww

CreateFileの実態がCreateFileAWってのと同じ
winプログラミングはTでいくのが普通だからAW(fopen_s, _wfopen_s)なんてめったに扱わないし
特にファイルオープンに関しちゃ、A(fopen_s)をわざわざ選ぶ理由なんて皆無でしょ

51 :デフォルトの名無しさん:2016/11/05(土) 13:02:14.41 ID:qKcyypJI.net
>>50
>winプログラミングはTでいくのが普通だから

そんなことはない。

52 :デフォルトの名無しさん:2016/11/05(土) 13:02:47.17 ID:GQrwHyiX.net
>>36
むしろfreadの実装が結構頑張ってるので、例えばファイルから
1バイトずつ読む場合は、標準で用意されている関数の中では
freadが一番速いくらい。

53 :デフォルトの名無しさん:2016/11/05(土) 13:19:32.14 ID:0pOl8O7N.net
>>50
>>47でヒット件数に言及しておいてそれかよw

プログラミングした事ある?
そのまま返すわ

54 :デフォルトの名無しさん:2016/11/05(土) 13:54:15.41 ID:V6+SRNFm.net
>>44
Windowsでfopenを使う理由はないよ

55 :デフォルトの名無しさん:2016/11/05(土) 14:03:10.02 ID:qKcyypJI.net
>>54
まあアスペにはWin32API「しか」使えないわな。
こんな奴が本当にプログラミングしてるんだから、
使いにくいプログラムがあふれかえるわけだ。

56 :デフォルトの名無しさん:2016/11/05(土) 15:09:08.22 ID:EOaqGeXp.net
俺はfopen()(大抵はfsopen_s())良く使うなあ
"wt"でテキストファイル書く時"\n"を"\r\n"にしてくれるのとか便利じゃん
それにfprintf()とかfscanf()とか同じことをWin32APIでやると面倒だし

57 :デフォルトの名無しさん:2016/11/05(土) 18:58:42.67 ID:Y72Y2Zla.net
Linuxでビルドできないと困るので標準関数を主に使う

58 :デフォルトの名無しさん:2016/11/05(土) 21:37:32.05 ID:AA4Sk0Wd.net
リング0を行き来するのはオーバーヘッドになるからまとめて引き渡したい
そういう理由もあって標準関数を好むけど

59 :デフォルトの名無しさん:2016/11/05(土) 23:04:33.19 ID:kO1gZKnI.net
おまえら、なんの話してんだ?
linuxってなんだよwスレタイを0xffffffffffffffff回復唱しろよ

60 :デフォルトの名無しさん:2016/11/05(土) 23:08:52.31 ID:qKcyypJI.net
こんなスレに来るんだからプログラム書くんだろうに、
Linuxの名前くらい知らずに仕事になるの?

61 :デフォルトの名無しさん:2016/11/05(土) 23:09:10.47 ID:Y72Y2Zla.net
既にスレ全体を-1回読んでいる

62 :デフォルトの名無しさん:2016/11/05(土) 23:13:07.08 ID:kO1gZKnI.net
>>60
誰が知らないっていったよ、バカですか?
おまえ、会社でも「一から十まで説明しなきゃいけない?」ってよく言われるだろw

63 :デフォルトの名無しさん:2016/11/05(土) 23:16:43.75 ID:/oeNR6O2.net
>>59
-1回復唱するとは?

64 :デフォルトの名無しさん:2016/11/05(土) 23:24:36.93 ID:jJRBXXEI.net
>>63
ggれかす

65 :デフォルトの名無しさん:2016/11/06(日) 07:41:54.96 ID:DwuXTERT.net
Cの教科書に載ってるのfopenで、CreateFileは詰め込みすぎててややこしいから
fopenを使い続けてるって層が多そう

66 :デフォルトの名無しさん:2016/11/06(日) 08:25:12.31 ID:wprJ6aec.net
わざわざ環境依存の関数使うぐらいなんだから理由あるんだよね?

67 :デフォルトの名無しさん:2016/11/06(日) 08:26:18.85 ID:8+fmWTOK.net
スレタイが環境に依存してるのはいいのか?

68 :デフォルトの名無しさん:2016/11/06(日) 08:28:24.06 ID:LG3GvlVh.net
っえ?
linuxでもWin32api呼べるよ

69 :デフォルトの名無しさん:2016/11/06(日) 08:31:46.68 ID:5/z3Ppl4.net
>>68
そんなんですか、だとしたらますますfopenを呼ぶ理由はない、呼び出しが多くなるから遅くなりますよね

70 :デフォルトの名無しさん:2016/11/06(日) 09:01:33.07 ID:TO8zu+f0.net
fopenを使わずに何を使うかここまで言及無し

71 :デフォルトの名無しさん:2016/11/06(日) 09:15:57.80 ID:rGVVvSQ9.net
>>65
それで問題ない
UTF-8だけなら

72 :デフォルトの名無しさん:2016/11/06(日) 09:19:59.65 ID:TO8zu+f0.net
>>71
UTF-16LEも

73 :デフォルトの名無しさん:2016/11/06(日) 11:25:27.53 ID:7DBohWvr.net
>>66
だから必要に応じて使い分けるものだと何度言えば。

74 :デフォルトの名無しさん:2016/11/06(日) 12:54:43.57 ID:4E5k1HKy.net
プログラムからデバッガに接続ってできませんか?

75 :デフォルトの名無しさん:2016/11/06(日) 12:55:35.60 ID:5/z3Ppl4.net
つConnectDebugger

76 :デフォルトの名無しさん:2016/11/06(日) 13:55:29.40 ID:E1Cvk6Xz.net
>>69
そうだね。
常にどんな環境でもCreateFileつかっておけば間違いないよ。

77 :デフォルトの名無しさん:2016/11/06(日) 14:17:46.54 ID:PBN3DkC0.net
どんな環境でも win32api が使えるのかね?

78 :デフォルトの名無しさん:2016/11/06(日) 14:25:48.09 ID:7DBohWvr.net
使える、呼べる、の定義次第だな。
呼ぶだけ(何もしない)ならすぐできる。

79 :デフォルトの名無しさん:2016/11/06(日) 15:06:15.30 ID:jrejtDgu.net
winプログラムをガッツリ作ることになったワイ。
CreateFile系のAPIも使わなあかんのやろか?と使い始めるも面倒くさすぎなので、
fopen系を自分で使いやすいようにカスタムしたようなAPIラッパーを自分で用意、
中でCreateFile系を呼ぶようにした無駄な努力。

80 :デフォルトの名無しさん:2016/11/06(日) 15:20:40.29 ID:PBN3DkC0.net
>>78
そんなものを win32api というのかね?

81 :デフォルトの名無しさん:2016/11/06(日) 15:22:12.40 ID:aWGLyRUt.net
正直何を言ってるのかさっぱりわからん
ただ >>79 が CreateFile を理解してないことはわかった

82 :デフォルトの名無しさん:2016/11/06(日) 15:26:33.42 ID:jrejtDgu.net
アホが釣れたで

83 :デフォルトの名無しさん:2016/11/06(日) 15:31:19.18 ID:5/z3Ppl4.net
本当わけわからん
Win32API質問箱というスレタイでlinuxなんて意味不明なこと言い出す馬鹿とか、
環境依存とか・・・

っあ、分かったWin32APIというものがなんなのかしらないのか

84 :デフォルトの名無しさん:2016/11/06(日) 15:36:21.57 ID:7DBohWvr.net
>>83
プログラマならLinuxくらい勉強しておこうぜ。

85 :デフォルトの名無しさん:2016/11/06(日) 15:40:05.04 ID:5/z3Ppl4.net
>>84
おまえは馬鹿?
Linuxなんてこのスレとなんの関係があるんだ?

プログラマならLinuxとWin32APIの関係性くらい勉強しておこうぜ。

86 :デフォルトの名無しさん:2016/11/06(日) 15:42:58.36 ID:AJmk7i6z.net
linuxってc++を理解できないアフォが作ったゴミですよね

87 :デフォルトの名無しさん:2016/11/06(日) 15:48:22.75 ID:7DBohWvr.net
>>85
APIと実装は違うというのはわかってるよね?

88 :デフォルトの名無しさん:2016/11/06(日) 15:50:49.53 ID:t67ppMyH.net
>>87
プログラマなら皆まで言われなくとも理解ようぜ

89 :デフォルトの名無しさん:2016/11/06(日) 15:59:46.37 ID:xHDOqiQx.net
 

https://wiki.winehq.org/Winelib

90 :デフォルトの名無しさん:2016/11/06(日) 16:01:51.83 ID:YPGx/bgn.net
Lindows

91 :デフォルトの名無しさん:2016/11/06(日) 16:07:35.75 ID:5/z3Ppl4.net
wineもLindows関する話題もOKですね
boostもOKですか?

92 :デフォルトの名無しさん:2016/11/06(日) 16:11:14.07 ID:bCh//xB2.net
おまいはだめ

93 :デフォルトの名無しさん:2016/11/06(日) 16:12:50.49 ID:5/z3Ppl4.net
おまえはなんでいいの?

94 :デフォルトの名無しさん:2016/11/06(日) 17:59:51.67 ID:7DBohWvr.net
>>88
わからないんなら、わかりませんごめんなさいだろ?
なんで突然単発でわいてくるんだよ。

>>91
LindowsのどこにWin32APIがあるんだよ。
boostもだ。

95 :デフォルトの名無しさん:2016/11/06(日) 19:22:43.11 ID:5/z3Ppl4.net
>>94
そりゃこっちが聞きてーわw
Win32apiと銘打ってるスレでlinuxなんて意味の分からんこと言い出したの己らちゃんうかい

96 :デフォルトの名無しさん:2016/11/06(日) 19:47:14.00 ID:YPGx/bgn.net
今今C

97 :デフォルトの名無しさん:2016/11/06(日) 21:09:59.89 ID:MLGlQdvO.net
>>79
ファイルポインタ, ファイル記述子, ファイルハンドル の相互変換あるから
ほんっとに無駄だな

98 :デフォルトの名無しさん:2016/11/06(日) 21:36:12.60 ID:hZSM5tbK.net
初心者です。

中断ボタンを出そうと考えています。
スレッドから、CreateDialogで中断の画面を出すとダイアログが一瞬で
消えてしまいます。
ご存じの方いませんか?

ちなみに、DialogBoxでは処理が滞ってしまいました。

99 :デフォルトの名無しさん:2016/11/06(日) 22:08:54.07 ID:eC1CzNtZ.net
>>98
スレッドが一瞬で終わってんじゃないの?

100 :デフォルトの名無しさん:2016/11/06(日) 22:28:42.23 ID:RUueNHTq.net
そりゃそうだろw
何を当たり前のことを???

101 :デフォルトの名無しさん:2016/11/06(日) 23:04:20.64 ID:AHO3vAwR.net
CreateDialogはモードレスダイアログボックスを作るので、
要するにnewされているからスタック以外のどっかに作られるので、
CreateDialogを呼び出した後はダイアログは表示されてもすぐ消えて
元の処理に戻る。こいつを維持したければShowWindowをしろ。
DialogBoxはモーダルダイアログボックスを作るが、これはスタックに
作るのでこいつが閉じられない限り呼び出し元の処理を続行出来なくなる。
処理が滞るというのはそういうことだな。

102 :デフォルトの名無しさん:2016/11/06(日) 23:04:51.46 ID:AHO3vAwR.net
だから当たり前のこと。

103 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/07(月) 00:33:16.97 ID:bxaGR4em.net
>>98
IsDialogMessage使ったか?

104 :デフォルトの名無しさん:2016/11/07(月) 01:14:31.84 ID:tfEbFCgf.net
>>101
スタックに作ったとしても処理は止まらんだろ。
スタック解放されたらメモリリーク等になるだけだ。

105 :デフォルトの名無しさん:2016/11/07(月) 04:01:23.41 ID:EaPQMBZD.net
>>101
これはひどい

106 :デフォルトの名無しさん:2016/11/07(月) 07:43:13.48 ID:/5KK1SgJ.net
ここまで酷いと98が釣りに思えてきた

107 :デフォルトの名無しさん:2016/11/07(月) 08:37:44.05 ID:fwwW9lIx.net
>>101
何を言っているんだ?

108 :デフォルトの名無しさん:2016/11/07(月) 16:06:23.47 ID:iTWgrf69.net
イベントループまわしてない糞アプリは結構あるけどな

109 :デフォルトの名無しさん:2016/11/07(月) 21:00:42.32 ID:lMECrzfj.net
あるね

110 :デフォルトの名無しさん:2016/11/07(月) 23:24:31.73 ID:geFZXkbd.net
WindowsServerの共有フォルダに対して
一台のPCで複数のセッションを
張りたいのですが
そういうことは可能でしょうか?

セッション枯渇をシュミレーション
したいのですが、数十台の
クライアントを用意するのが厳しいので、
よろしくお願いします

111 :デフォルトの名無しさん:2016/11/07(月) 23:35:14.98 ID:xNTfrSvb.net
98です。

残念ながら本当にわかっていなくて、
なにがひどいのかもわかりません。

一瞬で終わっているのは事実です。
IsDialogMessageは使っています。
原因を調べています。

112 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/07(月) 23:52:47.40 ID:bxaGR4em.net
>>111
ダイアログはメインスレッドで作った方がいいんじゃないか?
そうじゃなきゃ、作成したスレッドでイベント処理が必要になる。

113 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/08(火) 00:02:16.77 ID:AW+lzuxI.net
メッセージキューはスレッドごとに用意されていて、ウィンドウのメッセージは
ウィンドウ作成元のスレッドのメッセージキューにたまる。

114 :デフォルトの名無しさん:2016/11/08(火) 00:42:20.76 ID:/LmyXqRX.net
>>110
シュミレーションってなに?

115 :デフォルトの名無しさん:2016/11/08(火) 00:44:34.04 ID:unHUC1CF.net
シュミなら何でもできる

116 :デフォルトの名無しさん:2016/11/08(火) 01:35:14.19 ID:Y3RxQGSc.net
シュミーズとスリップとキャミソールの違いってなに?

117 :デフォルトの名無しさん:2016/11/08(火) 01:36:27.03 ID:unHUC1CF.net
1.80代
2.60代
3.40代

118 :デフォルトの名無しさん:2016/11/08(火) 02:08:30.02 ID:U/Ju3opf.net
>>114
その程度も想像できない人の意見なんてどうでもいいです

119 :デフォルトの名無しさん:2016/11/08(火) 02:32:59.30 ID:Y3RxQGSc.net
その想像力を駆使して趣味レーションすればいいんじゃね?
Win32APIには関係ない話だし。

120 :デフォルトの名無しさん:2016/11/08(火) 03:20:49.30 ID:jUCVZHcM.net
win32apiに関係なくてもいいんじゃなかったけ?

121 :98:2016/11/08(火) 06:00:23.87 ID:EP2Ba4mn.net
>>112

ありがとうございます。
試してみます。

122 :デフォルトの名無しさん:2016/11/10(木) 21:09:42.83 ID:AasTbJ+R.net


123 :デフォルトの名無しさん:2016/11/11(金) 12:10:47.06 ID:9ZvufmQn.net
IDないときにID導入で言い争いなくなってたのに
久しぶりにここ来たらIDありでも構わず言い争いしててワロタ

ついでに次スレはワッチョイでもつけよう

124 :デフォルトの名無しさん:2016/11/11(金) 12:39:26.27 ID:/bmaODHZ.net
もうホスト名表示でいいだろ

125 :デフォルトの名無しさん:2016/11/11(金) 13:02:50.32 ID:kcpLk0Bj.net
何を付けても言い争いが発生するんだから、
IDくらいがちょうどいいんじゃないの。
どこのスレ見ても、荒らす奴はなにやっても荒らすし。

126 :デフォルトの名無しさん:2016/11/11(金) 13:10:25.05 ID:UQPlBidt.net
IDとかワッチョイとか何の意味もないのに付けたがるよね
今の2ちゃんなんか人少なくて気にするほどの書き込みもないのに

127 :デフォルトの名無しさん:2016/11/11(金) 13:18:14.05 ID:FF2/z6GJ.net
>>123みたいな奴が色んなスレで終盤になって現れる
その後不自然にワッチョイの話題で加速

付けてもいいけど伸びた方を使う

128 :デフォルトの名無しさん:2016/11/11(金) 19:38:22.83 ID:F0Rj6jl1.net
IDでじゅうぶん

129 :デフォルトの名無しさん:2016/11/11(金) 20:04:48.37 ID:0rL2xNMJ.net
ホスト名がベター

130 :デフォルトの名無しさん:2016/11/11(金) 20:06:12.51 ID:DbOMb6Sb.net
ホスト名出して主張してくれや

131 :デフォルトの名無しさん:2016/11/11(金) 20:12:52.08 ID:LmTjZr7C.net
ワッチョイは争いの火種
最初からないほうがまし
別にIDもいらない

132 :デフォルトの名無しさん:2016/11/11(金) 20:36:56.45 ID:F0Rj6jl1.net
IDはあったほうがいいね

133 :sp49-98-77-115.mse.spmode.ne.jp:2016/11/11(金) 20:37:29.90 ID:0rL2xNMJ.net
ホスト名がベター

134 :デフォルトの名無しさん:2016/11/11(金) 20:44:35.64 ID:X9bDlJ5d.net
ホスト名は「たちばな誠」

135 :デフォルトの名無しさん:2016/11/11(金) 20:51:04.74 ID:Tfn5AWDv.net
ホスト名が良いカモね

136 :デフォルトの名無しさん:2016/11/12(土) 04:05:38.85 ID:6wPviZ3t.net
スレチ

137 :デフォルトの名無しさん:2016/11/12(土) 04:37:47.35 ID:xxkpve4k.net
急激に過疎ったスレとして資料価値がある
一番勢いあったのがIDなかった時代だというのが興味深い

138 :デフォルトの名無しさん:2016/11/12(土) 07:40:36.69 ID:VYJ07zOJ.net
単にWin32から.NETへの移行が進んだだけでしょう

139 :デフォルトの名無しさん:2016/11/12(土) 09:21:42.48 ID:cY8zOPne.net
たんに荒らしが伸ばしてただけでしょう

140 :デフォルトの名無しさん:2016/11/12(土) 10:58:41.72 ID:aMxeZQXn.net
>>137
勢いじゃなく、荒らされていた時期な

141 :デフォルトの名無しさん:2016/11/12(土) 11:01:50.42 ID:MjZ+e3Wz.net
回顧モード中ですが、ちょっと教えてくだされ。
スケーリング対応ってどの辺のAPIを使うといいの?
もしくは、どの辺のAPIを見直せばいいのか。

142 :デフォルトの名無しさん:2016/11/12(土) 13:10:05.51 ID:VYJ07zOJ.net
うろ覚えだけど
SetWindowOrgEx
SetViewportOrgEx
辺りじゃないの

143 :デフォルトの名無しさん:2016/11/12(土) 16:51:53.48 ID:KzeRaaZ8.net
@AoA = (
[ "fred", "barney" ],
[ "george", "jane", "elroy" ],
[ "homer", "marge", "bart" ],
);
を関数に渡したいんですが、どうすればいいの?

144 :デフォルトの名無しさん:2016/11/12(土) 18:18:57.26 ID:B8iRPOxS.net
はあ…

145 :デフォルトの名無しさん:2016/11/12(土) 21:46:22.81 ID:6wPviZ3t.net
loopyを3回となえてください

146 :デフォルトの名無しさん:2016/11/13(日) 04:10:41.48 ID:+F2H1InO.net
>>141
DPIスケーリングならここ見ていけば大体書いてある
https://msdn.microsoft.com/en-us/library/windows/desktop/dd464646(v=vs.85).aspx
この辺のAPI使う
https://msdn.microsoft.com/en-us/library/windows/desktop/hh447398%28v=vs.85%29.aspx
真面目に対応しようとするとけっこう面倒

147 :デフォルトの名無しさん:2016/11/13(日) 14:25:24.31 ID:Wy5L1qQW.net
EnableMenuItem
https://msdn.microsoft.com/ja-jp/library/cc410786.aspx

>MF_DISABLED メニュー項目を無効化します。淡色表示にはしませんが、そのメニュー項目は使用不可能であり、選択できません。
>MF_GRAYED メニュー項目を淡色表示にします。そのメニュー項目は使用不可能であり、選択できません。

となっており、MF_DISABLEDはグレー表示されないように書かれていますが、
Win7で使ってみたところ、グレー表示され、MF_GRAYEDとまったく同じになりました。

MSDNが更新されていないだけで、MF_DISABLEDとMF_GRAYEDは同一挙動になったのでしょうか?
それとも、何か微妙に違いがあったりするのでしょうか?

148 :デフォルトの名無しさん:2016/11/13(日) 19:35:16.34 ID:wHFHc9ra.net
>>146
俺はGetWindowRectがまともに動かない時点でスケーリング対応は諦めたわ。なんなのこのクソOS

149 :デフォルトの名無しさん:2016/11/13(日) 20:07:24.28 ID:dhGoOq8f.net
>>148
adjustするのが定石

150 :デフォルトの名無しさん:2016/11/13(日) 22:00:12.35 ID:Wy5L1qQW.net
TrackPopupMenu()でポップアップメニューを表示できますが、
ポップアップメニューが表示されたことを検知できるウィンドウメッセージ等はないのでしょうか?

また、ポップアップメニュー以外のところをクリックするとポップアップメニューが非表示になりますが、
これも同様に、どのように検知すればよいでしょうか?

151 :150:2016/11/13(日) 22:35:31.57 ID:Wy5L1qQW.net
ポップアップメニューが表示されようとしたときはWM_INITMENUPOPUPが送られてくることが分かりました。

152 :デフォルトの名無しさん:2016/11/13(日) 23:32:34.76 ID:+F2H1InO.net
非表示はWM_UNINITMENUPOPUP

MF_DISABLEDとMF_GRAYEDが違ったのはWindows3.1とかの時代で今は同じ

153 :150:2016/11/13(日) 23:57:21.61 ID:Wy5L1qQW.net
>>152
ありがとうございました!
助かりました!

154 :デフォルトの名無しさん:2016/11/14(月) 17:38:20.71 ID:lPYI51le.net
リストビューを一番下までスクロールさせるプログラムは?

155 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/14(月) 17:39:51.88 ID:L1+AAJlg.net
>>154
WM_VSCROLL

156 :デフォルトの名無しさん:2016/11/14(月) 17:51:37.15 ID:LtnXkA90.net
メッセージおくれ

157 :デフォルトの名無しさん:2016/11/14(月) 18:02:49.89 ID:NhpFtVry.net
ListView_EnsureVisible()マクロないしは
ListView_Scroll()マクロ

158 :154:2016/11/14(月) 19:38:32.87 ID:lPYI51le.net
>>156-157
サンクス!

159 :デフォルトの名無しさん:2016/11/18(金) 03:17:57.05 ID:OSOzrvg7.net
> MF_DISABLEDとMF_GRAYEDが違ったのはWindows3.1とかの時代で今は同じ
xpはどちら?

160 :デフォルトの名無しさん:2016/11/18(金) 03:36:41.14 ID:AM2vlSzW.net
えっ?

161 :デフォルトの名無しさん:2016/11/18(金) 03:58:35.98 ID:2yb3wpBY.net
>>156
つ メッセージ

162 :デフォルトの名無しさん:2016/11/18(金) 07:05:51.48 ID:8X6DMoza.net
Win3.1(Win16) ならスレ違いだろw

163 :デフォルトの名無しさん:2016/11/18(金) 11:11:21.47 ID:GZ4BhfWs.net
Win32sかもしれない

164 :デフォルトの名無しさん:2016/11/18(金) 15:45:40.16 ID:sN4pSlll.net
WS_EX_TOOLWINDOWに関して質問です。

タイトルバーに関してです。
普通のタイトルバーより小さいタイトルバーを持つ旨説明がありますが、
小さくなりません。
通常のスタイルも色々試しましたが、通常のタイトルバーと変わりません。
変える方法を教えてください。

165 :デフォルトの名無しさん:2016/11/18(金) 16:01:28.45 ID:AM2vlSzW.net
win8辺りからタイトルバーが小さくならなくなったべ。
理由は知らんけど、エアログラス廃止→モダンUIの流れの一環で何か変わったのかもね。

166 :デフォルトの名無しさん:2016/11/19(土) 12:52:23.68 ID:LZczXE+c.net
> MF_DISABLEDとMF_GRAYEDが違ったのはWindows3.1とかの時代で今は同じ
7で非エアロ + 視覚効果を無効にした場合はどちらになりますか

167 :164:2016/11/19(土) 22:31:46.85 ID:m8v4iLe9.net
>>165
なるほど、そういうことだったんですか。
ありがとうございます。

168 :デフォルトの名無しさん:2016/11/20(日) 10:34:28.02 ID:rUGeTkRI.net
Windows3.1 って 標準で1画面に16色しか使えなかった時代の名残だから忘れていい

169 :デフォルトの名無しさん:2016/11/20(日) 10:50:09.74 ID:pCJ1qvOZ.net
3.1のときには256や6万色普通にあったろ

170 :デフォルトの名無しさん:2016/11/20(日) 12:16:32.29 ID:KiQiujJB.net
16bit と間違ったんじゃね

171 :デフォルトの名無しさん:2016/11/20(日) 12:20:21.09 ID:IiH4Q+hE.net
PC-9801の話だと思った。

172 :デフォルトの名無しさん:2016/11/20(日) 16:35:07.06 ID:HG1JDYXN.net
PCG

173 :デフォルトの名無しさん:2016/11/21(月) 11:15:47.37 ID:RFCc0VFb.net
ビデオカード次第だったよな

174 :デフォルトの名無しさん:2016/11/21(月) 12:21:40.28 ID:gVIfBZaZ.net
PSG

175 :デフォルトの名無しさん:2016/11/22(火) 15:36:11.99 ID:qW+6ZAFd.net
sscanf(buffer, "%4s", &data)の4の部分に変数を使いたい場合ってどうしたらいいんでしょう?

176 :デフォルトの名無しさん:2016/11/22(火) 15:42:16.93 ID:eab8TQx6.net
"%4s"をsprintfで作る

177 :片山博文MZ ◆T6xkBnTXz7B0 :2016/11/22(火) 15:44:33.07 ID:iRpYF31I.net
"%*s"

178 :デフォルトの名無しさん:2016/11/22(火) 15:45:01.21 ID:RWgWe0KR.net
>>175
int space = 4;
sscanf(buffer, "%*s", space, "t")

179 :デフォルトの名無しさん:2016/11/22(火) 15:47:04.45 ID:RWgWe0KR.net
>>175
"t"は編集ミスだから気にしないで
*の所にspaceの値が指定される

180 :デフォルトの名無しさん:2016/11/22(火) 18:37:11.83 ID:mC9XTyoU.net
ウンコしてくる

181 :デフォルトの名無しさん:2016/11/27(日) 05:47:03.44 ID:9mn0D+RY.net
windows8.1 環境下、imm にて ImmSetCompositionString で漢字変換したい文字列を設定し、
ImmNotifyIME で CPS_CONVERT、NI_OPENCANDIDATE を投げて
変換候補リストを表示したいのですが、MS-IME 系では問題なく使えていますが、
GoogleIME では変換候補リストが表示されません。

変換したい文字列が入力された状態にはなっていますが、変換候補リストが表示されない
だけでなく、キーボードで変換キーを押しても変換自体ができません。
(GoogleIME ではキー入力でただちに予測変換一覧が表示される仕組みだからか?)

これを実現するには、imm ではなく tsf に移行するしかないのでしょうか?

imm を使わず keybd_event でキー入力をエミュレートすればある程度実現できたのですが、
(文字入力→変換キー→変換候補一覧表示)
変換候補一覧を表示するための変換キーを押す回数が、MS-IME と GoogleIME では異なる
のが困ります。

ImmGetDescription で動作を切り分けることも考えましたが、そもそも ImmGetDescription が
廃止されてしまってこの手が使えません。

182 :デフォルトの名無しさん:2016/11/27(日) 16:59:16.60 ID:CC34oqbC.net
Watashi no Namae wa Nakano desu

183 :デフォルトの名無しさん:2016/11/27(日) 19:36:59.90 ID:iFUA1Ofz.net
Watashi ni Namae wa Nakattano desu

184 :デフォルトの名無しさん:2016/11/28(月) 15:21:52.39 ID:msYXnjQ5.net
情報通信業の残業やばす
https://www.youtube.com/watch?v=TnZEDQchkJk

185 :デフォルトの名無しさん:2016/11/29(火) 12:19:49.33 ID:ITJWJL4i.net
分かる方、教えて下さい。

プログラムの処理時間を計っているのですが、
GetThreadTimes()で取得した時間をもとに計算した処理時間(CPU時間)が
timeGetTime()で取得した時間をもとに計算した処理時間(実時間)より長くなりました。
スレッドが複数のコアを同時に使うことはないので
こういうことは起こらないはずだと思うのですが、
どういう場合に起こるのでしょうか。

なお、1/16秒くらいの精度しかないことは、認識しています。
その上でループを何度も回して十分な時間動作させた上で、
前者が後者の2倍くらいになってしまうのです。

186 :デフォルトの名無しさん:2016/11/29(火) 12:57:55.07 ID:NaRikWXT.net
GetThreadTimesで計算したのは処理時間でなくスレッド生成オーバーヘッドとかも含んでるからとか?

187 :185:2016/11/29(火) 13:40:47.29 ID:ITJWJL4i.net
>>186
そうでもないです。
スレッド生成終了は含まない部分を計っています。
チェックポイントで各関数で時刻を取り、差を計算して、
チェックポイント間にかかった時間を出しています。

>>185
1/16は1/64の誤りです。

188 :デフォルトの名無しさん:2016/11/29(火) 13:46:46.72 ID:W5POPsuB.net
>>185
思いつくのはこのあたり
・単位は合っているか。GetThreadTimes()は100ナノ秒単位、timeGetTime()は1ミリ秒単位
・GetThreadTimes()の計算方法は、作成時刻から終了時刻までの差なのか、カーネル・ユーザモードの実行時間の合計なのか
・timeGetTime()はいつどのタイミング、またどの場所で呼び出しているのか
・timeGetTime()が計測スレッド内部で実行されているなら
GetThreadTimes()の“作成時刻”からtimeGetTime()が実行されるまでの時間が含まれていない
・timeGetTime()が計測スレッド内部で実行されているなら
終了時のtimeGetTime()の呼び出しからGetThreadTimes()の“終了時刻”までの時間が含まれていない
・カーネル・ユーザモードの合計なら他のスレッドの“実行時間”が含まれていない

189 :デフォルトの名無しさん:2016/11/29(火) 14:01:14.55 ID:W5POPsuB.net
>>187
GetThreadTimes()がtimeGetTime()の2倍なんでしょ?
ただ2倍と言っても1ミリ秒が2ミリ秒になったってのと1分が2分になったというのではかなり違う
平均して何ミリ秒が何ミリ秒になったの?

timeGetTime() チェックポイントA
スレッド作成  ポイントα
timeGetTime() チェックポイントB
いろいろ実行
timeGetTime() チェックポイントC
スレッド終了  ポイントβ
timeGetTime() チェックポイントD

GetThreadTimes()はαやβの時刻であって、timeGetTime()でA〜Dのいずれかで計測しても誤差は生じる。
「スレッドが複数のコアを〜」からすると計測スレッドでチェックポイントを設けているように見受けられるので
B、C間とするとαからBまでの差が含まれていないと思うけど。
ポイントαの時刻って言うのも「スレッドの作成を開始した時刻」なのか「スレッドの作成が完了した時刻」なのかでも誤差は生じる。

190 :185:2016/11/29(火) 14:28:28.52 ID:ITJWJL4i.net
>>188
・timeGetTime()とGetThreadTimes()の単位の違いは認識しています。
・GetThreadTimes()による時間の計り方ですが、
 CreationTimeとExitTimeは一切使用せず、
 KernelTimeとUserTimeだけを使用して、チェックポイント間の差を取り、
 ユーザーモード時間とカーネルモード時間を個別に出しています。
・スレッドの開始及び終了は、チェックポイント間に入っていません。
 >>189のイメージでいう所のBとCの間のいろいろ実行の部分だけを計っている感じです。

>>189
・今動かしてみたら、
 500回ほど回して平均を取った上での数字として、
 B-C間の測定結果が、
 timeGetTime()の場合で9msec
 カーネルモード時間が429usec
 ユーザモード時間が14037usec
 になりました。
 2倍までいってませんが、2倍くらいになることもあります。
・スレッド生成及び終了の処理部分は計っていません。

191 :デフォルトの名無しさん:2016/11/29(火) 15:45:24.23 ID:1SK7brxW.net
GetThreadTimesが必ずしも正確な時間を返さない可能性もある
スレッドの切り替えは可能な限り超早業で行う必要があるので
細かな正確な時間など、二の次かもしれない

もっと長い時間のかかる処理(10秒とか)を走らせてみて
実時間とスレッド時間を比較してみては?
もしそれで上手くいくのなら、スレッド時間の精度の問題という
可能性が濃厚になる

192 :185:2016/11/29(火) 16:21:45.88 ID:ITJWJL4i.net
>>191
volatile変数をひたすらインクリメントするコードを書いて、
試してみました。

 timeGetTime()で計った時間:10560msec
 カーネルモード時間:280801usec
 ユーザモード時間:10296066usec

4個のコアを食いつぶさせるために5個同時に動かすと、

 timeGetTime()で計った時間:12sec〜18sec
 カーネルモード時間:343msec〜608msec
 ユーザモード時間:11902msec〜12729msec

1プロセスから2スレッド起動するのもやってみましたが、

 timeGetTime()で計った時間:11869msec
 スレッド1
  カーネルモード時間:312msec
  ユーザモード時間:11403msec
 スレッド2
  カーネルモード時間:390msec
  ユーザモード時間:11528msec
 プロセス
  カーネルモード時間:1092msec
  ユーザモード時間:22776msec

ほぼ期待通り(本来あるべき)の結果となりました。

193 :デフォルトの名無しさん:2016/11/29(火) 16:46:40.42 ID:1SK7brxW.net
もう一つの可能性として
timeGetTimeの方の精度があまりよくない可能性もある
>Windows NT:timeGetTime 関数の既定の精度は、マシンによっては 5 ミリ秒以上になる場合があります。
とMSDNにも書いてあるしな
君が最初に測ろうとしていた処理の時間は
>timeGetTime()の場合で9msec
であるから、timeGetTime の「デフォルト」の精度の「5ミリ秒以上になる」は無視できない誤差だね

194 :185:2016/11/29(火) 17:48:25.90 ID:ITJWJL4i.net
>>193
十msec規模の誤差がありうることや、
9msecに対して5msecが無視できないことは理解します。
ただ、>>190に書いた9msecは
500回動かして平均を取っ(て整数にまるめ)た数字です。
誤差が毎回毎回プラスあるいはマイナスに偏って出るとは考えにくいので、
スレッドのCPU時間が実時間の1.5〜2倍になることについては、
誤差以外の原因があるのではないかとかんぐっています。

195 :デフォルトの名無しさん:2016/11/29(火) 18:02:52.57 ID:kNMZE4WL.net
>>194
> 誤差が毎回毎回プラスあるいはマイナスに偏って出るとは考えにくいので

誤差が均等にバラつくなんていう保証はないだろ

196 :デフォルトの名無しさん:2016/11/29(火) 18:14:13.77 ID:NaRikWXT.net
時間取得のオーバーヘッドじゃないか?

>>195
誤差の定義てか確率論の考え方を真っ向から否定してるなww

197 :デフォルトの名無しさん:2016/11/29(火) 18:40:14.32 ID:3TFqVZYr.net
いや、、、誤差の平均取るなら複数の環境でやらんと
同じ環境ならプラスばっかりとかマイナスばっかりとかあるべ

198 :デフォルトの名無しさん:2016/11/29(火) 19:46:40.98 ID:w2ftYsPy.net
環境というか仕組み上プラスしかないとかマイナスしかないということもある

199 :デフォルトの名無しさん:2016/11/29(火) 19:46:41.38 ID:Ofu9bBqm.net
どちらか言えばDDK(WDK)の領域じゃね

200 :185:2016/11/29(火) 20:53:31.95 ID:ITJWJL4i.net
新たな発見がありました。

スレッドのCPU時間が実時間よりだいぶ長くなるコードの時間測定ですが、
該当コードを2回実行するコードと3回実行するコードも計ってみました。
(いずれも500回平均です。)

1回
timeGetTime()による時間:7msec
カーネルモード時間:1060usec
ユーザモード時間:13540usec

2回
timeGetTime()による時間:14msec
カーネルモード時間:2246usec
ユーザモード時間:13291usec

3回
timeGetTime()による時間:21msec
カーネルモード時間:2527usec
ユーザモード時間:19468usec

このデータから、
timeGetTime()はかなり正確であり、
GetThreadTimes()が真値より随分大きな値を返していることが強く疑われます。

クロックの誤差は、通常は、クロック更新粒度に起因する誤差であり、
それは一様な分布であるため、平均処理で抑えられます。

しかし、明らかにプラス方向の誤差が生じており、
クロック精度とは別の何らかの原因があるはずなのですが、
現在、原因の特定に至っていません。

201 :デフォルトの名無しさん:2016/11/30(水) 00:10:42.24 ID:V/PBKRN8.net
>>200
「クロック更新粒度」がいわゆるtickのことなら常に一方向に偏るはず。
timeGetTimeはtick単位の値を返すから、より正確な値を返すGetThreadTimesより
短い時間を返す、ということじゃないの?

202 :デフォルトの名無しさん:2016/11/30(水) 00:21:37.30 ID:tnQQtKaj.net
いや
開始タイムが実際の時間より小さければ、測定タイムは増えるし
終了タイムが実際の時間より小さければ、測定タイムは減るので
・・・
何が言いたいのか自分でもよくわからなくなったが
同じ方向へ偏っても、end - begin で計算するから
符号は反対だから打ち消しあうといいますか
複数回測定して平均をとれば均一になるという彼の意見も一理あるかと
ただ、なぜ、timeBeginPeriod しないのかは謎だけど、いや、しているのかもしれんが

203 :デフォルトの名無しさん:2016/11/30(水) 00:52:07.64 ID:ZP8Eu14+.net
単純に時間取ってくる関数とスレッドのアクセス権取ってきたりしなきゃ関数とで比べたら後者の方が時間かかるよ
1度の実行でmsec変わるなら別に原因あるだろうが

204 :デフォルトの名無しさん:2016/11/30(水) 02:17:24.90 ID:WhaKofQb.net
馬鹿発見

205 :デフォルトの名無しさん:2016/11/30(水) 03:54:14.51 ID:tfyAgmME.net
おいおい
話逸れすぎていて草

206 :185:2016/11/30(水) 16:27:00.78 ID:NmhabroG.net
>>200の2回実行するケースについて
1回目と2回目に分けて測定しました。

すなわち、

 timeGetTime(); GetThreadTimes();
 時間測定対象コード A
 timeGetTime(); GetThreadTimes();
 時間測定対象コード B
 timeGetTime(); GetThreadTimes();

とし、500回の平均で計測しました。
AとBは全く同じコードです。

下記結果となりました。


timeGetTime()による時間:8msec
カーネルモード時間:343usec
ユーザモード時間:14664usec

timeGetTime()による時間:7msec
カーネルモード時間:93usec
ユーザモード時間:904usec

スレッドCPU時間において、
AがBより圧倒的に長くなりました。
なぜこのようなことが起こるのか分かりません。
どのような可能性があるでしょうか。

なお、>>200で触れましたが、
timeGetTime()は比較的正確です。

207 :デフォルトの名無しさん:2016/11/30(水) 18:01:03.98 ID:3E8a/W4X.net
まあ当然の結果だな

208 :185:2016/11/30(水) 18:01:22.28 ID:NmhabroG.net
ああ、もう時間がない。
今日までにCPU時間測定結果を報告しないといけないので。
GetThreadTimes()は信用できないという前提のもと、
timeGetTime()の結果も参考に、
推測されるおおよそのCPU時間ってことで報告するしかなさそうです。

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

209 :185:2016/11/30(水) 18:02:13.44 ID:NmhabroG.net
>>207
おっと!
なぜ当然の結果なのですか。
教えて下さい。

210 :デフォルトの名無しさん:2016/11/30(水) 18:03:45.74 ID:3E8a/W4X.net
ゲームスレで聞いてみ

211 :185:2016/11/30(水) 18:15:54.33 ID:NmhabroG.net
>>210
そうですか。教えてくれないなら結構です。

212 :185:2016/11/30(水) 19:24:20.97 ID:NmhabroG.net
>>200に示したように、1回だけ実行すると、
実時間7msec、スレッドCPU時間14msecという不整合が起きます。

ところが10回実行して計ると、
実時間78msec、スレッドCPU時間80msecとなります。

これでも不整合はあるものの、
実時間≒スレッドCPU時間であることから、
1回の場合でも実時間≒スレッドCPU時間であることが想定される。
また実時間の方がより信頼できることが分かっている。
したがって、1回実行時のスレッドCPU時間は7.8msec程度であろう。

このようなスレッドCPU時間の見積もり方で妥当でしょうか。

213 :デフォルトの名無しさん:2016/11/30(水) 20:49:07.15 ID:5wEUj1of.net
>>212
GetThreadTimesの精度は15.6msなので、ある程度時間のかかる処理でないと
意味が無い。7msの処理をはかると0か15になるかのどちらか。
数百回の平均をとるのではなく1回だけ測定してみると意味ないのがわかる。

214 :デフォルトの名無しさん:2016/11/30(水) 20:49:57.04 ID:o1dhiyLy.net
.
.
■■人間性に批判殺到 あの悪質パクツイ垢 @copy__writing の管理人は東京都三鷹市の莉里子■■
http://i.imgur.com/5qAgsHG.png
http://i.imgur.com/kldi84l.png
http://i.imgur.com/8vCymiC.jpg


■今までのプライベート垢
@riricoco0
@bibliophilia333
@muzimuzi333
@nekomatagensou
@hanasoraumimori
@mirainosekai3
@zibanyan666
@parlorchild
@liliririko
@EriotN
@mike_peko
@riricoco0
@ririko_neko
@nyanpas ※1
@telegraphyneko


@riricatputi (新アカ)  http://imgur.com/a/X1vQA


100垢以上作ってるキチガイ出会い厨 (粘着やめろ詐欺師!はやく捕まれホラ吹きネットストーカー犯罪者!!)

215 :185:2016/11/30(水) 22:05:18.43 ID:b9TNuS14.net
>>212の方法でスレッドCPU時間を見積もって報告し、帰宅しました。
ID変わります。

>>213
クロック更新粒度に基づく精度のことは認識しています(>>185>>187)。
500回の平均を取ることでその問題を回避し、
その上で>>200>>206の結果になります。

>>206のデータは、
1回目で実時間を大きく上回るCPU時間が記録されており、
2回目で殆どCPU時間が経過していないことを表しています。
GetThreadTimes()で取得したクロックは、どうしてこのようになってしまうのか。
それが分からないんです。

どういう場合にこうなり得るのか、御存知の方は教えて下さい。

216 :デフォルトの名無しさん:2016/11/30(水) 23:20:53.03 ID:EvMIugyq.net
1回目はいろいろオーバーヘッドあるよね

217 :185:2016/11/30(水) 23:52:18.25 ID:b9TNuS14.net
>>216
ですと、実時間を超えるCPU時間になり得ると?
プロセスCPU時間ではなくスレッドCPU時間で。
同じ処理なのに2回目が1回目の6%のCPU時間で妥当だと?

メモリアクセスのキャッシュヒット率に違いがあるとか
そういうことであれば分かります。
でも、CPU時間ですよ。
CPU時間で圧倒的に2回目が有利でしょうか?
だとしても、
実時間の2倍近いスレッドCPU時間って何なのでしょうか?

不思議だらけで、困惑しております。

218 :デフォルトの名無しさん:2016/11/30(水) 23:54:22.80 ID:R/TXkRDp.net
>>217
先ずその測定方法では誤差が偏り問題を回避できなかったという事実を認めろ
500回繰り替えして全体の時間を500で割るなら誤差を縮小出来るが
一回分の時間を積み上げたところで誤差も同じように積み上がったということだろ

一回分の時間を積算して精度の問題を解消するには測定開始時刻が
tick周期に対して完全に自由でなければならないのでは?
どんな測定方法をしたのか分からないけどプログラムの起動やスレッド生成や
スケジューリングのスイッチなどがtickと相関関係にあれば破綻する方法だったんだろ

219 :デフォルトの名無しさん:2016/11/30(水) 23:55:15.34 ID:nOqMl3Nb.net
>>215
GetThreadTimesが切り捨てなのか切り上げなのか、平均をとればうまい具合になるのか
あなたの環境で要確認。
206-Aは精度的にあり得るが、Bは異様に少なすぎるので、測定ミスを疑われるレベルですね。
コードを見ないとなんとも言えないですが、対象部分を適当な計算をするループに
変えても起こるんでしょうか?

220 :デフォルトの名無しさん:2016/12/01(木) 00:37:40.42 ID:cvCPUZP4.net
みんな憶測で偉そうに話すしかできないんだから、再現コード上げたらいいだけやん

221 :デフォルトの名無しさん:2016/12/01(木) 00:49:48.35 ID:O5qZU2qd.net
GetThreadTimes,つまりスレッドを作っているんだろ
1回目と2回目以降で違って当然じゃねぇ?

222 :デフォルトの名無しさん:2016/12/01(木) 00:54:41.76 ID:O5qZU2qd.net
クロックカウンタ使えよ

223 :デフォルトの名無しさん:2016/12/01(木) 02:56:36.59 ID:wMlr02vN.net
CPUがいくら速くても切り替えは60Hzくらい

224 :デフォルトの名無しさん:2016/12/01(木) 04:56:48.70 ID:O5qZU2qd.net
スタック生成だけ考えても1回目と2回目以降で違ってくると思う

225 :185:2016/12/01(木) 11:21:31.25 ID:SFr2s2fw.net
>>218
第一段落はやり方が悪いというご批判だと思いますが、
ティックが粗いことによる誤差は平均で軽減しました。
その上で誤差が起こっています。
ティックが粗いこと以外の理由で誤差が起こっています。
その理由を知りたく、知恵を拝借したいのです。
間違っていないと思います。

第二段落第一文は、おっしゃる通りです。
第二段落第二文は、思いつきのご発言でしょうか、
それとも知識や経験に基づく助言でしょうか。
後者であれば、もうちょっと詳しくお願いします。
>>206のようなコードで起こりうるでしょうか。

226 :185:2016/12/01(木) 11:39:04.09 ID:SFr2s2fw.net
>>220
職業プログラマなので実際のコードを公開することはできませんが、大よそ以下のようなものです。
========ここから========
tRealA=0;
tRealB=0;
tUserA=0;
tUserB=0;
for (int i=0; i<500; ++i){
いろいろ
tReal1=timeGetTime();
GetThreadTimes(...,&tUser1);
func(...); //A
tReal2=timeGetTime();
GetThreadTimes(...,&tUser2);
func(...); //B
tReal3=timeGetTime();
GetThreadTimes(...,&tUser3);
いろいろ
tRealA += tReal2-tReal1;
tRealB += tReal3-tReal2;
tUserA += tUser2-tUser1;
tUserB += tUser3-tUser2;
}
tRealA/=500;
tRealB/=500;
tUserA/=500;
tUserB/=500;
========ここまで========
>>219
func()がvolatile intをひたすらインクリメントするコードの場合は、期待通りの結果>>192がでます。しかし、func()を目的のコード(他者製ライブラリの関数)にすると、不自然な結果>>206になります。
>>216>>224
AとBで何がそんなに変わるでしょうか。

227 :デフォルトの名無しさん:2016/12/01(木) 11:55:52.25 ID:lOA8D/0g.net
最適化切ったら

228 :デフォルトの名無しさん:2016/12/01(木) 12:02:28.97 ID:5zfWITAP.net
木屋さん元気かな
事故ったのは知ってるけど
どのくらいご回復されたかな

229 :デフォルトの名無しさん:2016/12/01(木) 12:14:25.23 ID:i7gsdi/t.net
>>225
> 第二段落第一文は、おっしゃる通りです。
> 第二段落第二文は、思いつきのご発言でしょうか、

思いつきと言われればその通りだが、確からしい事(あなたの測定結果)
から推測された事(第二段落第一文の条件が満たされていない)です


>>226
> func()がvolatile intをひたすらインクリメントするコードの場合は、期待通りの結果>>192がでます。しかし、func()を目的のコード(他者製ライブラリの関数)にすると、不自然な結果>>206になります。

それはfunc()の一回の時間が桁違いだから誤差に埋もれるか埋もれないかが変わっただけだろ

230 :185:2016/12/01(木) 13:04:50.94 ID:SFr2s2fw.net
>>227
コンパイラの最適化のことですよね。
コンパイラの最適化を無効にして、やってみました。

A
timeGetTime()による時間:7msec
カーネルモード時間:499usec
ユーザモード時間:14882usec

B
timeGetTime()による時間:7msec
カーネルモード時間:31usec
ユーザモード時間:124usec

同じ傾向になりました。

231 :デフォルトの名無しさん:2016/12/01(木) 13:30:33.53 ID:O5qZU2qd.net
>>226
> >>216>>224
> AとBで何がそんなに変わるでしょうか。

スタックは初期化されてアプリに引き渡すだろ
スタックの中で使われずに解放されたページは論理アドレスでは解放状態でも
OSがリザーブしておけば新たなスレッド生成で使い回しできるじゃないかな

他にもスタック以外でページの最初に書き込み時点でページをコピーするとかあるよね

232 :デフォルトの名無しさん:2016/12/01(木) 13:34:44.58 ID:RgG4Eqmg.net
>>226
いろいろ のところでライブラリの初期化とかやってない?
1回目はデータ構築処理があるのでCPUタイムを食うが、2回目は不要なのでCPUタイムを食わないとか。
で、DBとかサーバーへの問い合わせがあるので、7msくらいはかかってしまうなんてことは無いのか。

あるいは、2回目はfuncの中で別スレッドを起動して計算しているので、元スレッドのCPUタイムは食わないとか。

A B だけでなく A B C D と4回くらいやっても同じ傾向か、平均でなくすべてのタイムを見て
極端にばらつく値がないか調べるとかも必要では?

233 :デフォルトの名無しさん:2016/12/01(木) 22:49:24.47 ID:/t7qmsTu.net
>>226
後だし感すごいな。
他者製ライブラリとやらの中身も分からず議論になるかってーの。

234 :デフォルトの名無しさん:2016/12/02(金) 08:27:00.87 ID:GvPbDV6s.net
どこがWin32APIの話なんだよ、ってことになるよなあ。
長々と議論に付き合ってた方々、お疲れ様。

235 :デフォルトの名無しさん:2016/12/02(金) 09:07:26.76 ID:0vMtCyDD.net
粒度の平均化してるとか言って全く出来てないし
精度の悪い数字を正しいと断定してるし
しかも間違ってる
何度も指摘してるのに正そうとしない
全部ダメでしょ。

236 :デフォルトの名無しさん:2016/12/02(金) 09:21:55.13 ID:+ocxhyeH.net
>>211みたいな事言ってるからお察し

237 :185:2016/12/02(金) 10:43:58.72 ID:H1x5ETqP.net
報告書は突っ返されたので、まだまだ続きそうです。

まず、大大大前提を確認したいのですが、
GetThreadTimes()で取得するCPU時間は
スレッドがCPUをとっている時間で、
一つのスレッドが同時に複数のコアを占有することはないので、
(精度云々ではなく定義上は)スレッドのCPU時間は実時間以下である(以下のペースで進む)。

これは、大前提としてあってますよね?

238 :デフォルトの名無しさん:2016/12/02(金) 10:47:04.34 ID:rEQGNTwO.net
なんだ学校の課題だったのか

239 :デフォルトの名無しさん:2016/12/02(金) 11:24:10.48 ID:EDk65fqO.net
質問者より賢い人はいないのか?
これでは、質問箱が成り立たないなw

240 :デフォルトの名無しさん:2016/12/02(金) 11:27:08.99 ID:+ocxhyeH.net
>>239
そうだな
じゃあ頼んだ

241 :デフォルトの名無しさん:2016/12/02(金) 11:48:56.99 ID:2Jj/uLxs.net
だから再現できるサンプルをサクッと上げろよ。
だれも実物や社外ライブラリまで上げろといってないんだわ。
コーディングやデバッグ能力以外の能力が大きく欠如してるだろ。

242 :185:2016/12/02(金) 11:58:27.27 ID:H1x5ETqP.net
10回やってみました。
つまり、>>226のコードでAとBだけでなく、AからJまでやってみました。

A
timeGetTime()による時間:7msec
カーネルモード時間:1092usec
ユーザモード時間:14133usec
B
timeGetTime()による時間:7msec
カーネルモード時間:249usec
ユーザモード時間:343usec
C
timeGetTime()による時間:7msec
カーネルモード時間:936usec
ユーザモード時間:9141usec
D
timeGetTime()による時間:7msec
カーネルモード時間:1372usec
ユーザモード時間:4180usec
E
timeGetTime()による時間:7msec
カーネルモード時間:561usec
ユーザモード時間:6583usec
F
timeGetTime()による時間:7msec
カーネルモード時間:717usec
ユーザモード時間:7737usec
G
timeGetTime()による時間:7msec
カーネルモード時間:468usec
ユーザモード時間:4773usec

243 :185:2016/12/02(金) 11:58:51.26 ID:H1x5ETqP.net
H
timeGetTime()による時間:7msec
カーネルモード時間:655usec
ユーザモード時間:9672usec
I
timeGetTime()による時間:7msec
カーネルモード時間:218usec
ユーザモード時間:4149usec
J
timeGetTime()による時間:7msec
カーネルモード時間:405usec
ユーザモード時間:10795usec
全体(A〜J)
timeGetTime()による時間:74msec
カーネルモード時間:6645usec
ユーザモード時間:71510usec

244 :デフォルトの名無しさん:2016/12/02(金) 12:10:39.48 ID:fHtgnGrJ.net
仕事が出来ないから、タダで手取り足取り協力してくれってか

245 :185:2016/12/02(金) 13:02:57.14 ID:H1x5ETqP.net
本件、私としては以下の結論に至りました。

○timeGetTime()は信頼できる。
○GetThreadTime()は信用できない
 (ティック間切り上げ的な傾向あり。理由不明。)。
○timeGetTime()を基準に>>212のような方法をとるほかない。

もう一度GetThreadTime()はどうしても信用ならず、
他に有用な代替手段もないため、
>>212の方法が限界である旨を報告することにします。

何人かの真剣に助言して下さった方々、
本当にありがとうございました。

246 :デフォルトの名無しさん:2016/12/02(金) 13:27:24.15 ID:bjzW9gj9.net
>>228
ドラスレの木屋さんも、timeGetTimeのこと調べてたな

247 :デフォルトの名無しさん:2016/12/02(金) 14:04:58.11 ID:ELslSS33.net
timeGetTimeやめてQueryPerformanceCounterを使ったら?

248 :デフォルトの名無しさん:2016/12/02(金) 14:15:28.80 ID:ocojT6FV.net
内容のアホさからして
オバケじゃないことは確実

249 :デフォルトの名無しさん:2016/12/02(金) 14:17:49.26 ID:6Vgvdyao.net
あらかじめtimeBeginPeriodも呼んでおかないと精度変わる

250 :デフォルトの名無しさん:2016/12/02(金) 14:21:54.01 ID:ELslSS33.net
静的領域に書き込みすると、コピーオンライトが発生し、
動的領域を確保すると、最初とおよび足りない時はOSで確保と初期化があると思う
それが1回目が遅い理由な気がする

251 :デフォルトの名無しさん:2016/12/02(金) 14:30:05.73 ID:LG3SGwVv.net
質問者はアレだが
それはそうと、どうでも良いことをいうのはやめたほうが良いだろう
実時間とスレッド時間が食い違うって話だから
1回目が遅いとかそういう話ではない

252 :デフォルトの名無しさん:2016/12/02(金) 17:49:56.46 ID:EDk65fqO.net
結局>>237すら教えてあげなかったんだな。

253 :デフォルトの名無しさん:2016/12/02(金) 18:15:57.54 ID:2Jj/uLxs.net
質問者のアプローチや解釈が正しいのかが分からないのに、憶測で質問者回答者とも上から目線で
やりあってる状況にまず疑問を抱いた方がいい。
そしてそれら以下の書き込みしかできないID:EDk65fqOはクソ中のクソだと認識した方がいい。

254 :デフォルトの名無しさん:2016/12/02(金) 22:19:54.42 ID:rH7Be8WN.net
最初からGetThreadTimesは約1/64秒の精度しか無いって分かっていたはずなのにね。
平均とっても意味がないってことが改めて分かったことだけが成果か。

255 :デフォルトの名無しさん:2016/12/02(金) 23:51:36.19 ID:DveiiCO5.net
>>247とか>>249とか、全然関係ないことじゃん。

256 :デフォルトの名無しさん:2016/12/03(土) 10:51:33.05 ID:YdYTZThj.net
OSがどうやってカーネルモードやユーザーモードの時間を計測しているのか想像できないのかねえ
オーバーヘッドが高いやり方は採用できないと分かりそうなもんだが

257 :デフォルトの名無しさん:2016/12/03(土) 11:08:29.93 ID:JHScEEfz.net
触発されてGetThreadTimes=NtQueryInformationThread調べたんだけど”スレッド”の中身が興味深かった
質問者糞だから詳細は書かないがw

258 :デフォルトの名無しさん:2016/12/03(土) 20:00:37.46 ID:6jC0i+kE.net
俺もほんとはGetThreadTimesの特性知ってるけど、
質問者が土下座しないと教えてやらねぇw

259 :デフォルトの名無しさん:2016/12/03(土) 20:35:28.76 ID:xp0AwakX.net
GO

260 :デフォルトの名無しさん:2016/12/03(土) 20:36:25.77 ID:xp0AwakX.net
the old new thing

261 :デフォルトの名無しさん:2016/12/04(日) 11:31:12.68 ID:8oIVw/6i.net
Windows10ってCOMポート番号は最大何番までなんでしょうか?

262 :デフォルトの名無しさん:2016/12/04(日) 11:37:47.55 ID:NE4G8kum.net
com1〜com256まで

263 :デフォルトの名無しさん:2016/12/04(日) 12:08:20.93 ID:HYzaL+1F.net
昔、レジストリから認識してるポート名を取得するサンプルあったな。
MSDNだったかな

264 :デフォルトの名無しさん:2016/12/04(日) 12:22:02.41 ID:SxgHpTya.net
select欲しい

265 :261:2016/12/04(日) 16:50:15.73 ID:8oIVw/6i.net
>>262
>>263
ありがとうございました!

266 :デフォルトの名無しさん:2016/12/09(金) 00:46:48.41 ID:WzSsU1Dc.net
WM_CHARでWPARAMに入ってくるコード一覧どっかない?
普通のキーならそのままだが、Back SpaceとかCtrl+Vとかのコードが知りたい。

267 :片山博文MZ ◆T6xkBnTXz7B0 :2016/12/09(金) 01:04:26.73 ID:IirsZJ4E.net
>>266
キーが押されてるかどうかの確認は、WM_KEYDOWNを使う。
「仮想キーコード一覧」で検索。
ただし、Ctrl,Shift,Altはmodifiersと呼ばれ、特別扱い。CtrlとShiftは
GetKeyState(VK_SHIFT) < 0
GetKeyState(VK_CONTROL) < 0
で確認でき、AltはWM_NCKEYDOWNで確認できる。

268 :片山博文MZ ◆T6xkBnTXz7B0 :2016/12/09(金) 01:07:15.74 ID:IirsZJ4E.net
訂正。
× AltはWM_NCKEYDOWNで確認できる。
○ AltはWM_SYSKEYDOWNで確認できる。

269 :デフォルトの名無しさん:2016/12/12(月) 20:09:14.26 ID:UWkfYPy/.net
プログラム実行中のログテキストをエディットコントロールに出力しようと思ったのですが、
32KB制限があり実用できないことが分かりました。

リッチエディットではそのような制限はないようなので、
特に問題なければこれでいこうかと考えているのですが、
他に良い方法があればご教示ください。

270 :デフォルトの名無しさん:2016/12/12(月) 20:14:54.27 ID:cpVlzpwx.net
>>269
つ AllocConsole

271 :デフォルトの名無しさん:2016/12/12(月) 20:17:01.65 ID:dREO/TsY.net
EM_SETLIMITTEXT

272 :269:2016/12/12(月) 20:41:35.46 ID:UWkfYPy/.net
>>270
ありがとうございます。
今回は検索機能とかも付けたいので、エディット系コントロールを利用することにします。

>>271
ありがとうございます。
これで通常のエディットコントロールで32KB以上を扱えます。
助かりました!

273 :デフォルトの名無しさん:2016/12/13(火) 09:08:32.63 ID:GC6m09wL.net
>>272
検索が必要ならリッチエディット

274 :269:2016/12/13(火) 21:50:24.46 ID:EhPW3kvE.net
>>273
リッチエディットで実装を進めていて、あとは検索機能だけ、というところまで作れたんですが、
まさかリッチエディット自体に検索機能があったとは・・・!
ここでお聞きしてよかったです。
ありがとうございました!

275 :デフォルトの名無しさん:2016/12/19(月) 05:43:50.59 ID:qsdLnaaR.net
paint.netのツールウィンドウみたいなやつってどうやって表示するの?
ウィンドウスタイルを色々試してみたけどあれと同じようなウィンドウが出ない。

276 :デフォルトの名無しさん:2016/12/19(月) 07:17:38.33 ID:jpBVYjvn.net
拡張ウィンドウスタイル使え。

277 :デフォルトの名無しさん:2016/12/19(月) 23:46:04.62 ID:qsdLnaaR.net
>>276
ありがとう。
拡張スタイル使ってもやっぱり無理だ。
思い通りに動かない。
数年前からずっと謎なんだよなこれ。
動作上問題が少ないから我慢してたんだけども。

それっぽいウインドウは出るものの、paint.netのように全ウインドウがアクティブ状態にならない。
【参考画像】http://news.softpedia.com/images/extra/WINDOWS3/large/paint.net/paint.net%20interface.jpg
paint.netを実際に使ってるとよく分かるんだが、
参考画像のようにメインのウインドウもツール用のウインドウも常にアクティブな状態が維持される。
しかし、拡張スタイルでWS_EX_TOOLWINDOWを指定してもアクティブなウインドウは常に1つ。
メインのウインドウをクリックすればツール用ウインドウは非アクティブになり、
ツール用ウインドウをクリックすればメインウインドウは非アクティブになる。
非常に気持ちが悪い。
確かにWS_EX_TOOLWINDOWを利用すればメインウインドウより常に前面になり、
タスクバーにも表示されず、非常にpaint.netのツールウインドウと似たような挙動になるが、
このアクティブ/非アクティブに関しては挙動が全く違う。
ちなみにアクティブ/非アクティブの判断はタイトルバーの色で判断している。
さらに参考画像のツールウインドウのような右上の正方形の閉じるボタンの表示のさせかたも分からない。

・・・と思ったら出てきたわ。
http://www.catch22.net/tuts/docking-toolbars-part-1

やっと出てきた。
WS_EX_TOOLWINDOWで検索してもノイズが多くてなかなか出てこなかった。
(ノイズ = MSDNのウインドウスタイルの一覧をコピペしただけのゴミサイト)
ノイズゴミサイトマジで迷惑。
嫌がらせでしかない。

278 :デフォルトの名無しさん:2016/12/19(月) 23:50:28.70 ID:qsdLnaaR.net
結局今回のカギはGoogle画像検索。
ふと「サンプル載せてるサイトの半数くらいはスクショも載せてるのではないか」と思い、
例の拡張スタイルで画像検索。
俺がやりたいのと同じ状況になってる画像を見つけて開いたらビンゴ。
画像検索なんて今まで思いもよらなかったよ。
文字検索するとノイズゴミサイトばかり出てきてどうにもならなかった。

279 :デフォルトの名無しさん:2016/12/19(月) 23:52:55.75 ID:qsdLnaaR.net
MSDNのコピペサイト作ってるゴミ共は早く死ねばいいのにな。
役に立たないどころか大迷惑。
最近流行りの質の低いキュレーションサイト()と同レベル。

280 :デフォルトの名無しさん:2016/12/20(火) 00:02:24.24 ID:tFkwVopE.net
>>275の意味がまったくわからなkったわww

281 :デフォルトの名無しさん:2016/12/20(火) 06:12:08.47 ID:ADGhogoA.net
google personal blocklistでかたっぱしからブロックしてる
xxxユーザー会もノイズ源だね

282 :デフォルトの名無しさん:2016/12/20(火) 09:20:12.73 ID:F0IdvAwo.net
顔写真ブロックは必須
おまえらキモ面なのに何故あんな目立つ場所に配置すんだ

283 :デフォルトの名無しさん:2016/12/20(火) 12:55:43.49 ID:lAXr92yw.net
>>278
おめ
興奮は伝わったが
もちつけ

284 :デフォルトの名無しさん:2016/12/20(火) 13:00:10.44 ID:lAXr92yw.net
>>279
はてぶのことですねわかります

285 :デフォルトの名無しさん:2016/12/20(火) 16:58:42.80 ID:WXAyO/1W.net
>>277
そういうときはいっそそのソフト解析したら?
Paint.NETなら簡単に逆コンパイルできるし、Spy++とか使うだけでもある程度わかる

286 :デフォルトの名無しさん:2016/12/20(火) 17:33:10.55 ID:Sq2CbWR0.net
OSSのソフトを逆コンパイルするの?

287 :デフォルトの名無しさん:2016/12/20(火) 17:44:58.45 ID:F0IdvAwo.net
今はちがうだろ

288 :デフォルトの名無しさん:2016/12/20(火) 18:45:47.25 ID:lAXr92yw.net
新手のアフィか

289 :デフォルトの名無しさん:2016/12/20(火) 19:12:59.79 ID:F0IdvAwo.net
アフィだったのかよ。新手すぎてアフィの影すら俺には見えん

290 :デフォルトの名無しさん:2016/12/20(火) 22:05:37.09 ID:JPbALvOm.net
MSDNのコピペサイト全般のことだろう>アフィ

291 :デフォルトの名無しさん:2016/12/21(水) 01:04:08.51 ID:HCdO29Rc.net
質問
writefile関数を使用してint型で、データ保存ができません。同じ悩み持ったことある人いらっしゃいませんか。

292 :デフォルトの名無しさん:2016/12/21(水) 01:09:18.76 ID:GvkBvmPc.net
int Data = 123456;;
DWORD writeLen;
WriteFile(hFile,&Data,sizeof(Data),&writeLen,NULL);

こういうことだろ?

293 :デフォルトの名無しさん:2016/12/21(水) 01:10:40.03 ID:kLgQ2k1v.net
変数のアドレスをwritefileにわたさないとだめ。数値そのままわたしてるんでしょ

294 :デフォルトの名無しさん:2016/12/21(水) 21:06:02.77 ID:HCdO29Rc.net
>>292
>>293

ありがとうございます。引数としてアドレスを渡さないといけないのですね。試してみます!

295 :デフォルトの名無しさん:2016/12/22(木) 08:34:56.43 ID:tk15BRot.net
msdn 関数名
でググる癖をつけよう

296 :デフォルトの名無しさん:2016/12/22(木) 12:50:31.88 ID:y+mdv7YD.net
-jp もお忘れなく

297 :デフォルトの名無しさん:2016/12/22(木) 13:04:48.47 ID:hYDEOt1H.net
どうしてこういう訳そのままずっと放置してんだろうな

> 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
> If the function fails, the return value is zero. To get extended error information, call GetLastError.

298 :デフォルトの名無しさん:2016/12/22(木) 18:24:16.26 ID:zHNnrJEM.net
>>296
なんで付けるの?
誤訳トラップにハマりたいの?

俺は誤訳トラップどころか英語版と日本語版で引数違うトラップにハマったことがあるけども。
日本語版を穴が空くほど見て確認したけど何日経ってもコンパイルが通らず、
何の気なしに英語版開いたら引数の数が違って、
英語版見ながら修正したら一発でコンパイル通ったわ。

299 :デフォルトの名無しさん:2016/12/22(木) 18:39:46.34 ID:hYDEOt1H.net
>>298
+jp じゃなくて -jp

300 :デフォルトの名無しさん:2016/12/22(木) 18:47:30.93 ID:YVr1LIe6.net
>>298
今時どんな開発環境使ってるんだよ w
VisualStudio なら関数名 + '(' を入力した時点でプロトタイプが表示されるだろ

301 :デフォルトの名無しさん:2016/12/22(木) 18:55:29.30 ID:zHNnrJEM.net
>>299
ごめんなさいwww

>>300
その当時はVector辺りで見つけてきた適当なテキストエディタとBCCだったよ。

302 :デフォルトの名無しさん:2016/12/22(木) 19:02:14.56 ID:tk15BRot.net
>>301
C言語を始めよう!

303 :デフォルトの名無しさん:2016/12/22(木) 22:46:25.55 ID:+nnZ9oR0.net
レポートタイプのリストビューをクリックしたら、その行のデータに対応する内容を
別の窓に詳細表示するというような動作をしているのですが、クリック時は NM_CLICK
を処理してクリックされた行を nmLv->iItem メンバを参照して知ることができます。

オペレーションとしてはマウスだけではなくキーボード操作でリストビューの選択行を
次々と移動させることも多いので、LVN_KEYDOWN も処理して上記と同様の動作を
させたいのですが、LVN_KEYDOWN 処理時は nmLv->iItem の中身が不定です。

LVN_KEYDOWN 処理時に ListView_GetNextItem で LVNI_ALL | LVNI_SELECTED を
指定して選択行を調べると、キーボードを押して選択行を変更する前の選択行が
得られてしまいます。

この辺は、一旦メッセージループを回すなどしてから現在の選択行を得ること自体は
可能と言えば可能なのですが、ここまでしないとダメなのかという疑問があります。

LVN_KEYDOWN 処理時、もしくはキーボード操作で選択行を変更した際、簡潔に
現在の選択行を得る方法はありますでしょうか?

304 :デフォルトの名無しさん:2016/12/22(木) 23:02:45.31 ID:hYDEOt1H.net
LVN_ITEMCHANGED

305 :デフォルトの名無しさん:2016/12/23(金) 14:54:42.80 ID:qGVMhgWM.net
質問です。

win10 x64

windows がキャッシュしてる dns の名前解決結果の一部を書き換えることは可能ですか?
または、名前解決の最中に結果をいじるようなフックは出来ませんか?

例えば、example.com の ttl を長めに書き換える、とかです。

よろしくお願いします。

306 :片山博文MZ ◆T6xkBnTXz7B0 :2016/12/23(金) 15:00:49.80 ID:3xdKhrkh.net
>>305
デバッグ特権があれば、別のプロセスのプロセスメモリーにアクセスすることも可能。

307 :デフォルトの名無しさん:2016/12/23(金) 15:29:20.66 ID:Kb3OsEli.net
対象アプリ限られてくるけどAPIフックすりゃ簡単に結果改竄はできるな
キャッシュ改竄はフィルタードライバあてる面倒なのしか思いつかない

308 :デフォルトの名無しさん:2016/12/23(金) 15:36:22.73 ID:5J5pLbD7.net
以下の処理を実装したく、助言をお願いします。

ダブルクリックや右クリ開くなどで、ファイルを開く際に
関連付けの有無に関わらず、そのファイルのパスを取得したい。

ShellProcあたりのフックかと考えましたが、パスをどうやって
調べるのか分かりません。

どうぞ宜しくお願いします。

309 :デフォルトの名無しさん:2016/12/23(金) 15:54:43.63 ID:Kb3OsEli.net
目的次第だがShellProcは違うんじゃないか
explorer.exeに対してShellExecuteあたりのフックか?

310 :デフォルトの名無しさん:2016/12/23(金) 15:59:09.98 ID:5tPECy1o.net
>>305
proxy arp

311 :305:2016/12/23(金) 16:14:48.81 ID:sqLqmtwC.net
>>305, 306

レスありがとうございます。
DLL注入やアタッチのよるDNS改ざんは確かにできそうですね。
検討してみます。

ちなみに、プロセスは基本的には chrome です。


>>307

できればフィルタードライバの設計を、おおざっぱでもいいので教えて頂けませんか?
(ドライバのコーディングは、ほぼ経験が無く、ネットワークそのものの知識はあるものの、windows内部での扱いやAPIはまったく知識が無いです)

ちなみに、VPNによる仮想アダプタと、複数のネットワークカード(アダプタ)があるのですが、それでも対応可能でしょうか?
(直感的には、特定アダプタに対するフィルターだと、アダプタの優先度に左右されそう。アダプタ依存にはしたくないです)

312 :デフォルトの名無しさん:2016/12/23(金) 16:17:28.56 ID:gpKoKuI/.net
>>304
解決しました。
どうもありがとうございました。

313 :デフォルトの名無しさん:2016/12/23(金) 16:45:40.87 ID:Kb3OsEli.net
>>311
WDKサンプルのこのあたりが参考になるのかな
NDIS 6.0 Filter Driver
Windows Filtering Platform Packet Modification Sample

314 :デフォルトの名無しさん:2016/12/24(土) 07:41:05.18 ID:AXa0yhpU.net
>>313
ありがとうございます。参考にさせて頂きます。

315 :デフォルトの名無しさん:2016/12/24(土) 20:58:07.38 ID:3KzFEnUI.net
>>314
きっとおまえがやりたいことはchrome拡張でonbeforerequestいじれば解決する・・・

316 :デフォルトの名無しさん:2016/12/25(日) 22:10:16.80 ID:n7UGfNqJ.net
iniファイルから文字列を読み込むGetPrivateProfileString()なんですが、
セミコロン以下のコメント文まで読み込んでしまいます。

コメント文は読み込まないようにできないでしょうか?
それとも自分でコメント文を削除するしかないでしょうか?

317 :デフォルトの名無しさん:2016/12/26(月) 00:55:07.08 ID:cwwyPIk6.net
同一行にコメントはwindows的にアウト

318 :316:2016/12/26(月) 01:06:56.36 ID:CvSBnmkv.net
>>317
なるほど!
ありがとうございました!

319 :デフォルトの名無しさん:2016/12/26(月) 08:40:18.91 ID:I+2Q+LPS.net
コメントを勘違いしてるんじゃね?

320 :デフォルトの名無しさん:2016/12/26(月) 21:20:51.81 ID:SUV7MStA.net
セミコロン付けたらコメントになるって言うけどよー
あれ実際は特別扱いなんかしてなくて、例えば
;abc=def
にしたら「;abc」って名前になるから「abc」に一致しなくなるだけじゃないかと疑ってる

321 :デフォルトの名無しさん:2016/12/26(月) 21:34:05.02 ID:sfc5Nc1U.net
じゃあ「;abc」で試してみればよくね?

322 :デフォルトの名無しさん:2016/12/26(月) 22:12:12.96 ID:ffv778mh.net
セミコロンは行頭にある時だけを特別扱いしているみたいだ

323 :316:2016/12/29(木) 11:37:53.16 ID:E1SACFDz.net
使ってるエディタが.iniの同一行コメントもコメント色に変換してくれるので、誤解してしまいました。
気を付けます。

324 :デフォルトの名無しさん:2016/12/30(金) 13:34:08.58 ID:qor2kyvR.net
winsockの関数フックしたいんですけどインポートアドレステーブル上の
ws2_32.dllの関数だけ取得できません。どうしたら?

ttp://up2.cache.kouploader.jp/koups19399.txt
このコードは
自身のロードしたDLLの関数名を列挙するだけのシンプルなものですが、
やはりwinsockの関数名だけ取得できないです。

ImageDirectoryEntryToData()の第3引数を
IMAGE_DIRECTORY_ENTRY_IATや
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORTに変えても取得できませんでした(そもそも関数がnull返してくる

325 :デフォルトの名無しさん:2016/12/30(金) 13:46:15.25 ID:ymKNG2iV.net
WSAStartupは成功してんの?

326 :デフォルトの名無しさん:2016/12/30(金) 13:47:50.05 ID:LToUj4mC.net
名無しだからcontinueですっ飛ばしてんだろ

327 :片山博文MZ ◆T6xkBnTXz7B0 :2016/12/30(金) 14:07:12.37 ID:nsN9rWIv.net
GetLastError()を調べてみよ。

328 :324:2016/12/30(金) 14:41:23.26 ID:qor2kyvR.net
>>325
成功しているようです

>>326
関数名が名無しということですか?

>>327
どのタイミングでですか?


if(IMAGE_SNAP_BY_ORDINAL(pThunkData->u1.Ordinal))
winsockの関数だけこのif文が真になります。

ttp://i.imgur.com/jWNmlgm.png

デバッガでIAT覗くと、正しい関数名ではないが、2つの関数らしきもの?が表示されていて
これがWSAStartup()/WSACleanup()に対応するものだと思われます

他のDLLでは関数名が正しく表示されます。

これが、関数名が名無しということならどう対処するのかご教示頂きたいです。

海外のフォーラムの似たような質問では
ImageDirectoryEntryToData()の第3引数を
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORTに変えて成功したと書かれていたんですけどね、成功しませんでした。

329 :デフォルトの名無しさん:2016/12/30(金) 15:38:47.57 ID:LToUj4mC.net
>>328
関数名は名前あるけど、インポートが名無し

330 :デフォルトの名無しさん:2016/12/30(金) 15:39:26.81 ID:Q3tvxZdg.net
マクロというオチ

331 :デフォルトの名無しさん:2016/12/30(金) 15:40:45.50 ID:LToUj4mC.net
対処は名前比較じゃなくてアドレス比較

332 :デフォルトの名無しさん:2016/12/30(金) 19:08:50.21 ID:qor2kyvR.net
>>331
ヒントありがとうございました。解決しました

PIMAGE_THUNK_DATA pThunkData = (PIMAGE_THUNK_DATA)((PBYTE)hmodCaller + pImportDesc->OriginalFirstThunk);
PIMAGE_THUNK_DATA pRealThunk = (PIMAGE_THUNK_DATA)((PBYTE)hmodCaller + pImportDesc->FirstThunk);
while(pThunkData->u1.Function){
FARPROC pfnImportedFunc = (FARPROC)(pRealThunk->u1.Function);
・・・
上記のIAT上の関数アドレスと、
LoadLibrary()&GetProcAddress()で取得したwinsock関数のアドレス
を比較し一致したものを書き換えたら成功しました。

ttp://blog.techlab-xe.net/wp-content/uploads/2014/05/pe-format-import-func-list.png
これそもそも
文字列比較より
アドレス比較を用いる方法のほうが正確なやりかたですよね?

333 :デフォルトの名無しさん:2017/01/21(土) 17:55:42.90 ID:0py1wTB0.net
CreateProcess関数の質問です。この関数で開いた外部プロセスを、操作しようとしたらハンドルされていない例外エラー発生したことある人いますか?

エラーメッセの
オブジェクト参照がオブジェクトインスタンスに設定されていませんの意味もいまいちわからずです。悩んでいます。

どなたかヒントをくれたら幸いですm(__)m

334 :デフォルトの名無しさん:2017/01/21(土) 18:11:33.93 ID:3w6w5xSi.net
たぶんCreateProcessの問題じゃなくてソースコードの問題
基本的なとこをどっか間違えてると思う

335 :デフォルトの名無しさん:2017/01/21(土) 19:16:05.15 ID:RjpRPNfA.net
前後のソース載せてみて

336 :デフォルトの名無しさん:2017/01/21(土) 20:46:43.34 ID:1cIKmUbZ.net
>>333
まずは使ってるプログラム言語から書こうか

337 :デフォルトの名無しさん:2017/01/21(土) 23:19:24.15 ID:0py1wTB0.net
>>335
>>336

HWND hwnd;
STARTUPINFO si;
BOOL boRet = 0;
DWORD dwRet = 0;

ZeroMemory(&si, sizeof(si));
ZeroMemory(&piMplab, sizeof(piMplab));
si.cb=sizeof(si);

GetStartupInfo(&si);
boRet = CreateProcess(_T(""C:\Program Files (x86)\Microchip\PICkit 3 v3\"Pickit3.exe"),NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&piMplab);

CloseHandle(piMplab.hThread);
CloseHandle(piMplab.hProcess);

すみませんこんな感じですm(__)m↑

338 :デフォルトの名無しさん:2017/01/21(土) 23:24:44.47 ID:3w6w5xSi.net
>>337
それ以外の部分、もしくは書くために変えた部分に問題があると思う

339 :デフォルトの名無しさん:2017/01/21(土) 23:31:13.18 ID:/qDbjX4N.net
アクセス権か

340 :デフォルトの名無しさん:2017/01/21(土) 23:55:07.37 ID:1cIKmUbZ.net
>>337
まずは CreatepProcess の戻り値とエラーなら GetLastError の値を確認しようか

341 :デフォルトの名無しさん:2017/01/22(日) 06:55:36.39 ID:JOxquhah.net
_Tの中は本当にそれでいいのか

342 :デフォルトの名無しさん:2017/01/22(日) 06:58:42.28 ID:w4vCkWXB.net
\はここに貼り付けたから崩れたのか
元のソースが1個なのか

343 :デフォルトの名無しさん:2017/01/22(日) 11:15:36.01 ID:nyEfU5To.net
>>333
なんか.NETのエラーメッセージっぽいけど、.NETから呼び出しているの?
該当部分のソースを全部貼り付けなきゃ誰もわからないでしょ。

344 :デフォルトの名無しさん:2017/01/23(月) 08:44:04.99 ID:As9ZYPu9.net
そもそもどっちのプロセスがエラーを出してるかすら把握できてなさそう
子プロセス呼び出しはなんとなくコピペで扱うには荷が重い

345 :デフォルトの名無しさん:2017/01/25(水) 06:02:27.98 ID:s4b0iZxC.net
プロセスを起動して、ユーザーの入力に応答しているか確認するにはどうしたらいいでしょうか。
Process::Responding プロパティ以外の方法でお願いします。
うちの開発環境にはないので。

プロセスのウインドウを取得して、メッセージを送るくらいしか思いつかないのですが、ウィンドウがない可能性もあるし
もっとスマートな方法があればいいなと。

346 :デフォルトの名無しさん:2017/01/25(水) 07:20:09.51 ID:fntd/u0o.net
>>345
> ユーザーの入力に応答している
をきちんと定義しないと無理でしょ

347 :デフォルトの名無しさん:2017/01/25(水) 09:04:47.86 ID:paQpH1yu.net
ネットワークプログラミングで言う所のキープアライブ的なのを実装じゃあかんの?

348 :デフォルトの名無しさん:2017/01/25(水) 10:50:26.10 ID:SLV8VPLP.net
>>345
WM_PAINT系のメッセージを投げて
クライアント領域が書き換わってるかどうかとか
show/hideメッセージ送って反応するかどうか見るとか

349 :デフォルトの名無しさん:2017/01/25(水) 10:51:21.94 ID:SLV8VPLP.net
>ウィンドウがない可能性

プロセスId見て稼働率調べるかな

350 :デフォルトの名無しさん:2017/01/25(水) 10:51:49.68 ID:SLV8VPLP.net
ああ無限ループで稼働率100%だとだめなのか

351 :デフォルトの名無しさん:2017/01/25(水) 12:52:29.97 ID:uJriqNlz.net
WaitForInputIdle

352 :デフォルトの名無しさん:2017/02/02(木) 12:01:31.08 ID:386srHJg.net
TrayNotifyWndにアプリアイコンを追加と削除をしたいのですが、どうすればよいでしょうか?
Shell_NotifyIconの登録みたいなやつです。
Shell_NotifyIconの登録と削除右派知っています。

353 :デフォルトの名無しさん:2017/02/02(木) 12:17:03.67 ID:Nq0thOwX.net
Shell_NotifyIconでないならこれのことかな
https://msdn.microsoft.com/en-us/library/windows/desktop/cc144099(v=vs.85).aspx

354 :デフォルトの名無しさん:2017/02/02(木) 13:37:19.22 ID:386srHJg.net
>>353
情報ありがとうございます。やりたい内容と、ちょっと違います。
windows8.1/10とかだと、タスクバーが上か下にあるとき、タスクトレイの右側か左側にTrayNotifyWndに
[IME]、[タッチパネル向けのキーボード]、[通知]などが表示されていますよね?

それらの場所に、自作のアプリアイコンを作りたいのです。
スパイでみると、
通知 ハンドル 001016E キャプション 通知センター クラス TrayButton
キーボード ハンドル 0010172 キャプション タッチキーボード クラス TIPBand
IME ハンドル 0010156 キャプション 無し クラス Button
となっています。
親ハンドルからたどってクラスを見るとTrayNotifyWndとなっています。
知りたいのは、SHAppBarMessageを使ったタスクバーみたいなウインドウではありません。

355 :デフォルトの名無しさん:2017/02/02(木) 13:49:49.54 ID:386srHJg.net
googleの画像検索で googleimeとかってやると下のような画面がでますよね?
https://www.google.co.jp/search?q=googleime&biw=1280&bih=607&source=lnms&tbm=isch&sa=X&sqi=2&ved=0ahUKEwiZzey0zfDRAhUJbrwKHQ4dBuAQ_AUICCgD#imgrc=j130VRRhjR7jdM:

TrayNotifyWndでにて、設定メニュをいじっているような画面のようなプログラムを作りたいのです。

356 :デフォルトの名無しさん:2017/02/02(木) 13:52:18.95 ID:89UtyOev.net
Shell_NotifyIconで登録して、クリックされたらメニュー表示すればそれになる

357 :デフォルトの名無しさん:2017/02/02(木) 14:17:43.87 ID:386srHJg.net
>>356
一般的な、Shell_NotifyIconでタスクトレイの登録ではないです。
タスクトレイの横に登録する手続きが知りたいのです。
mozcのソースコードをgrepしたところShell_NotifyIconは使われていないようです。

comクラスとかでTrayNotifyWndに追加するような機能があるのかなぁ。。

358 :デフォルトの名無しさん:2017/02/02(木) 14:36:09.97 ID:89UtyOev.net
すまん。通知領域はその右側か盲目だった
直接CreateWindowでぶらさげちゃうとかできないかな

359 :デフォルトの名無しさん:2017/02/02(木) 15:53:49.61 ID:8dKrrq5G.net
IMEツールバーみたいにタスクトレイにドッキングしたいってこと?

360 :デフォルトの名無しさん:2017/02/02(木) 16:11:08.48 ID:386srHJg.net
>>359
機能はIMEではないですが、そんなかんじです。

361 :デフォルトの名無しさん:2017/02/02(木) 18:11:54.04 ID:gbCpBU15.net
TrayNotifyWndを親にしてCreateToolbarExで作ればいいんじゃないのかな

362 :デフォルトの名無しさん:2017/02/02(木) 19:12:40.06 ID:qO0hDPsp.net
>>357
> mozcのソースコードをgrepしたところShell_NotifyIconは使われていないようです。
ならそのソースを読めばいいんじゃね?

363 :デフォルトの名無しさん:2017/02/02(木) 20:07:51.95 ID:Eu4e1EaI.net
>>362
多分ソースは言語バーのcomクラス呼び出しだけで、実際の実装はWindows側

364 :デフォルトの名無しさん:2017/02/02(木) 23:04:33.49 ID:386srHJg.net
>>363
ざっくり調べたところ、おっしゃる通り言語バーのcom呼び出してるだけっぽかったです。
>>361
HWND hTaskBar = ::FindWindow(L"Shell_TrayWnd", NULL);
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
hButton = CreateWindowEx(0,L"button",L"@",WS_CHILD | WS_VISIBLE,0,0,48,24,hTrayNotify,0,hInst,0);
一瞬ボタンが表示されて消えましたw
登録のさせ方がたぶん違いますよね。
TBBUTTON tbButton = { 0 , 0 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 };
SendMessage(hTrayNotify, TB_ADDBUTTONS, 1, (LPARAM)&tbButton);
なにも起こらず。。orz

365 :デフォルトの名無しさん:2017/02/02(木) 23:11:43.26 ID:386srHJg.net
HWND hTaskBar = ::FindWindow(L"Shell_TrayWnd", NULL);
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
だと、タスクトレイの内部に描画されてました。
やりたいことと違う;;

366 :デフォルトの名無しさん:2017/02/03(金) 01:27:36.38 ID:3xPmzf3n.net
>>364
親側をsubclassしてボタン用のエリア常に用意してないからじゃない?

367 :デフォルトの名無しさん:2017/02/03(金) 09:17:19.56 ID:pF10NEzN.net
>>364
TrayNotifyWndが、もしツールバーのクラスを内部で保持してたら登録できるかなーと思いついての実験でした。。
ウインドクラスTrayNotifyWndにそんな機能はなかった。うまくいかないものですね。

368 :デフォルトの名無しさん:2017/02/03(金) 09:34:28.94 ID:pF10NEzN.net
HWND hTaskBar = ::FindWindow(L"Shell_TrayWnd", NULL);
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
HWND hToolbarWindow32 = FindWindowEx(hTrayNotify, NULL, L"ToolbarWindow32", NULL);
printf("handle %p %p %p ", hTaskBar, hTrayNotify, hToolbarWindow32);
SendMessage(hToolbarWindow32, TB_ADDBUTTONS, 1, (LPARAM)&tbButton);
実験してだめだったコード。。こんな感じでした。ウインドハンドルは普通に取得は成功していたみたいなんですけどね〜

369 :デフォルトの名無しさん:2017/02/03(金) 11:42:55.01 ID:mwiWK7Ca.net
指定したソフトが生きてるかフリーズしてるかを判断できるAPI教えてくださいよ

370 :デフォルトの名無しさん:2017/02/03(金) 12:11:25.19 ID:oHw8NUL1.net
メッセージ投げて帰ってくるかどうか

371 :デフォルトの名無しさん:2017/02/03(金) 13:01:49.10 ID:3xPmzf3n.net
>>368
>>364の上のコードでいいでしょ。あとはボタン用の領域作るだけでいけるよ
http://i.imgur.com/26zlYcY.png

372 :デフォルトの名無しさん:2017/02/03(金) 14:07:18.26 ID:pF10NEzN.net
>>371
その画像だと、ウインドウが、タスクトレイの位置にありませんか?
タスクトレイの内部にアプリアイコンを作るのであれば、Shell_NotifyIconで登録すればいいだけです。
やりたいのは、その画像でいうと、時計の右横の通知領域の右にウインド領域を追加したいのです。

373 :デフォルトの名無しさん:2017/02/03(金) 14:11:00.00 ID:mwiWK7Ca.net
>>370
それだと帰ってこなかったら出した側も固まりませんか?

374 :デフォルトの名無しさん:2017/02/03(金) 14:13:38.31 ID:oHw8NUL1.net
>>373
別スレッドからメッセージ投げて、メインでスレッド監視して待機時間オーバーしたかどうかで判定するとか

375 :デフォルトの名無しさん:2017/02/03(金) 14:20:41.69 ID:mwiWK7Ca.net
>>374
なるほど。
メッセージ投げてから返答が帰るまでの待ち時間で判断するって事ですね。
ありがとうございます。さっそくやってみます。

376 :デフォルトの名無しさん:2017/02/03(金) 14:22:20.52 ID:3xPmzf3n.net
>>372
タスクトレイの左側にある隠れたアイコンを表示するための ^ ボタンの上に作ったボタンが表示されてる
ウインドウ表示位置だけの問題で期待してる通りだと思うよ
http://i.imgur.com/dyVnefi.png

>>373
無限ループで処理してるかもしれないから、生き死にの定義による

377 :デフォルトの名無しさん:2017/02/03(金) 14:39:36.19 ID:Q4UhsfCm.net
>>375
IsHungAppWindow

378 :デフォルトの名無しさん:2017/02/03(金) 15:40:26.62 ID:mwiWK7Ca.net
>>376
今ターゲットソフトをwhile(1)で固めて
監視ソフトでPostMessageやGetWindowRectをしたら正常に帰ってきました。
while(1)だとウィンドウの移動もできたのでこれは死亡にはならないですね

>>377
そんなのあったのですね、ありがとうございます試してみます

379 :デフォルトの名無しさん:2017/02/03(金) 17:34:15.41 ID:Q4UhsfCm.net
>>378
PostMessageは相手の処理を待たないから当然。
GetWindowRectも相手のプロセスが情報を返すわけじゃないから当然。
その方法を試すならSendMessage。

>while(1)だとウィンドウの移動もできたので
コンパイラの最適化によって(無意味な)無限ループが消されているかも。

380 :デフォルトの名無しさん:2017/02/03(金) 18:01:24.26 ID:Q4UhsfCm.net
あと参考までに

SendMessageTimeout
https://msdn.microsoft.com/ja-jp/library/cc411010.aspx

381 :デフォルトの名無しさん:2017/02/03(金) 18:07:05.86 ID:mwiWK7Ca.net
>>379
失礼、PostMessageじゃなくてSendMessageでした。
while(1)はウィンドウは動かせますがフォーム自体は固まった状態でした(マウスカーソルがくるくるになります)

IsHungAppWindowで指定間隔で数回みて連続でTRUEなら落ちてると判断できそうな感じでした

しかしwhile(1)ではなく実際にどこかのDLL関数内で落ちてる場合とかにFindWindowでハンドルは取れるのでしょうか?

382 :デフォルトの名無しさん:2017/02/03(金) 18:08:21.50 ID:mwiWK7Ca.net
>>380
こんな関数あったんですね・・・
これは良い情報を頂きましたありがとうございます

383 :デフォルトの名無しさん:2017/02/04(土) 13:09:50.99 ID:koQjiQcQ.net
メッセージ投げといてタイムアウトしたらあとは知らないって
まるで鍵垢へのフォロリクか2ちゃんの独り言のようだ

384 :デフォルトの名無しさん:2017/02/04(土) 13:21:18.26 ID:cCtqcbdk.net
ピンポーン 宅配便でーす お留守ですかー ピンポーン ピンポーン

385 :デフォルトの名無しさん:2017/02/04(土) 15:21:09.56 ID:e9aNESBj.net
帰りに台車を放り投げて荷物を蹴とばすんですね判ります

386 :デフォルトの名無しさん:2017/02/05(日) 11:14:06.81 ID:bZw/U4Ow.net
使い道が想像できない

387 :デフォルトの名無しさん:2017/02/05(日) 19:54:32.92 ID:ajRW1B46.net
GetWindowRectで得た値から計算して
MoveWindowに使うとズレるんですがこれは仕様なんですか?

例えばGetWindowRectで
left=100  right=200
top=100  bottom=200
だったとして、これだと幅と高さが
101になるので
MoveWindow(hwnd,100,100,101,101,TRUE)
としたら幅と高さが1ドットずつ膨らんでしまいます

388 :デフォルトの名無しさん:2017/02/05(日) 19:59:38.66 ID:lBwes1rb.net
WindowsAPIのRect系は右と下の1ドットは含まれないはずだったが

389 :デフォルトの名無しさん:2017/02/05(日) 20:00:15.60 ID:Kv3SwlRy.net
ピクセルの左上の隙間の位置を返す仕様(Javaと同じ)
なので単純に差を出して指定しないと膨らむ

390 :デフォルトの名無しさん:2017/02/05(日) 20:02:41.46 ID:wagcFIA6.net
>>387
画面DPI100%以外になってない?vista以降はそれ原因で従来のAPIの扱いが面倒になってる

391 :デフォルトの名無しさん:2017/02/05(日) 20:05:12.27 ID:ajRW1B46.net
MSDNを見ると
GetClientRectはleftとtopが常に0で
rightとbottomには幅と高さが入ってくると書かれていて
事実その通りになっていますが
GetWindowRectのほうは
ウインドウの左上座標と右下座標と表記されてるので
right-left+1 が幅になるはずです
なのでこの仕様はおかしいと思います

392 :デフォルトの名無しさん:2017/02/05(日) 20:08:48.13 ID:DkYFBwwC.net
>>391
英語版みたらちゃんと書いてあったよ

ていうかこの関数に限らず
Rect構造体の定義としてbottomとrightは1ピクセル外側を示すことになってる

393 :デフォルトの名無しさん:2017/02/05(日) 20:19:29.52 ID:ajRW1B46.net
オセロでなく碁盤で数えろってことですね
納得しました

394 :デフォルトの名無しさん:2017/02/06(月) 11:44:22.96 ID:atuXlQHb.net
>>392この辺ちゃんと理解してないと1ドット足りないみたいな事態になるんだよな
VBerとか1オリジンでUboundとか慣れてるとドはまりしそう

395 :デフォルトの名無しさん:2017/02/06(月) 15:30:39.87 ID:sNAkUIYE.net
>>391
GetClientRectの話だけど
left=top=0だとして
right=bottom=1だったら
幅と高さは1で
ウィンドウは(0,0)-(0,0)で1ピクセルのウィンドウだから
やっぱり幅と高さは1だし矛盾しない

396 :デフォルトの名無しさん:2017/02/06(月) 16:17:17.14 ID:atuXlQHb.net
画像の部分クリップとかやりだすとちょっと混乱したりする教訓か
ドトネトなんかではx y width heightなプロパティを別に持っている

397 :デフォルトの名無しさん:2017/02/06(月) 17:51:48.08 ID:2YUAIh/k.net
SetWindowPosとMoveWindowとで
ウィンドウを動かした時に何か違いはあるんでしょうか?
SetWindowPosでウィンドウは動かせるのに
MoveWindowは何のために用意されてるんですか?

398 :片山博文MZ ◆T6xkBnTXz7B0 :2017/02/06(月) 18:06:24.84 ID:myCEQNc2.net
>>397
SetWindowPosの方がフラグ指定や挿入位置指定など、できることが多い。

399 :デフォルトの名無しさん:2017/02/07(火) 08:29:41.33 ID:g0+JjgLn.net
>>398
ではMoveWindowは何のために存在しているの

400 :デフォルトの名無しさん:2017/02/07(火) 09:23:30.46 ID:mtDQmVBr.net
フラグとか触らないでただ動かす時のため

401 :デフォルトの名無しさん:2017/02/07(火) 11:23:40.44 ID:IHNU1ydF.net
昔のことは知らないけど SetWindowPos が後から追加されたんじゃないの

402 :デフォルトの名無しさん:2017/02/07(火) 11:40:48.78 ID:+LdvU0fQ.net
理由も昔のことも知らないけど 今はMoveWindowの内部でSetWindowPosが呼ばれてたと思う

403 :デフォルトの名無しさん:2017/02/07(火) 15:19:54.85 ID:LuCsRke8.net
後方互換性のため

404 :デフォルトの名無しさん:2017/02/07(火) 22:51:17.46 ID:m2J0GXa0.net
DeferWindowPos

405 :デフォルトの名無しさん:2017/02/17(金) 18:42:29.90 ID:xKxGFEhy.net
実行ファイルの埋め込みマニフェストの実体をいじらずに
内容を修正した上で起動したり、任意の外部マニフェストファイルを読めるように
操作できませんか?
具体的には、マニフェストのcompatibilityの項目なんですが。。。

406 :デフォルトの名無しさん:2017/02/17(金) 19:08:12.47 ID:yGnzX63H.net
OSのバージョンにより異なる
ttps://msdn.microsoft.com/ja-jp/library/ms235342%28VS.80%29.aspx
ttp://www.taosoftware.co.jp/blog/2008/02/windows_1.html
ttp://nekojiru.blog.so-net.ne.jp/2007-09-03

407 :デフォルトの名無しさん:2017/02/17(金) 19:35:32.23 ID:xKxGFEhy.net
Windows7以降は埋め込み優先で、
実行ファイルのマニフェスト自身を書き換える方法、レジストリでOS自体の設定をいじる方法、
ActivateActCtx()でcommctl.dllは変更できるっぽい?
ってのはわかったんですが、個別に実行ファイルをいじらずに操作する方法があるかな、と思った次第です。

408 :デフォルトの名無しさん:2017/02/17(金) 19:51:35.09 ID:Z3/lG4/1.net
ショートカット作って、そのプロパティにアクセスして、互換性編集して、そのショートカットで起動させるとか?

409 :デフォルトの名無しさん:2017/03/01(水) 19:41:47.62 ID:GhHUeiw5.net
windows8.1/10 マルチモニター環境で、ウインドウの位置がタッチパネルデバイスを
有するモニターであるかを調べたい場合どうすればよいですか?

HMONITOR hMonitor = MonitorFromWindow(hWnd,MONITOR_DEFAULTTONEAREST);
これで、モニターのハンドルは調べられるのですが、
このモニターがタッチパネルを有するモニターを調べる場合どうすればいいかわかりません。

410 :デフォルトの名無しさん:2017/03/01(水) 19:53:26.09 ID:IeB4TnBd.net
Win32_PointingDeviceあたりだろうな

411 :デフォルトの名無しさん:2017/03/02(木) 16:15:18.67 ID:35Ccu8m+.net
Win32 Pointhig Device軽く調べたんですが、それっぽいのないですね;;

412 :デフォルトの名無しさん:2017/03/02(木) 16:33:06.48 ID:j0RdOmJS.net
それでタッチかどうかわかるでしょ
あとはWin32_VideoController、Win32_DesktopMonitor、GetMonitorInfoあたりと情報突き合わせたら
その座標がタッチ対応かわかる

413 :デフォルトの名無しさん:2017/03/02(木) 17:34:40.28 ID:HWkXh2UP.net
応用がきくプログラマーを目指せ

414 :デフォルトの名無しさん:2017/03/02(木) 19:31:01.50 ID:ZV5SMkF2.net
ここさわって

っていううメッセージを描いておく

415 :デフォルトの名無しさん:2017/03/02(木) 20:19:05.81 ID:HWkXh2UP.net
俺ならそのメッセージでもマウス操作しかしなさそうだわw

416 :デフォルトの名無しさん:2017/03/02(木) 21:11:15.50 ID:35Ccu8m+.net
ユーザー側に、全てのモニターをタッチさせて、有効無効を設定してくれとダイアログだろうかと思いましたが、
プライマリーモニターかどうかを調べるのは簡単だったので、プライマリーモニターのみ対応にしたほうが混乱ないかなーと思いました。

417 :デフォルトの名無しさん:2017/03/02(木) 21:14:09.87 ID:35Ccu8m+.net
ユーザー側に、全てのモニターをタッチさせて、有効無効を設定してくれと、ダイアログを出そうかと思いましたが、
プライマリーモニターかどうかを調べるのは簡単だったので、プライマリーモニターのみ対応にしたほうが混乱ないかなーと思いました。

418 :デフォルトの名無しさん:2017/03/03(金) 12:32:15.32 ID:IUFykjWp.net
Windowsじゃ何やっても無駄ですよ。
生産性はないです。

まともにタブで操作すると考え方をタブに合わせて全体を設計し直さないとダメでです。
ポインターの概念を画像で処理する必要ががります。
マルチで接触してる部分の個々の中心点を求めて

接触している部分にボタンの候補があるかどうか
そういう処理を行わないとだめ
Windowsが使えないのは、ポインティングデバイスから無理に
座標変換してるので誤操作と誤作動だらけになる。

マイクロソフトにはこの分野は作れないと思いますよ。

419 :デフォルトの名無しさん:2017/03/03(金) 12:56:20.62 ID:Loi48FLt.net
入力なんていう低レベルからシェア捕れる可能性を秘めてる
集金システムもまともなのがないからそこもね
ハードからソフトまでガチガチなiphoneやandroidと違ってビジネスチャンスに溢れた自由なOS。それがWindows

420 :デフォルトの名無しさん:2017/03/03(金) 16:55:05.95 ID:7kccr9GO.net
>>418
窓板に何年も毎日貼り付いてるキチガイタイポマカーのコピペじゃねえかw

421 :デフォルトの名無しさん:2017/03/04(土) 13:10:48.65 ID:aE/wnzST.net
どんなに優れていても誰にも使われなければ意味が無い。

422 :デフォルトの名無しさん:2017/03/04(土) 13:24:45.44 ID:il8vJgV1.net
使われてるやん
って言ったら使ってる奴がアホってか?

423 :デフォルトの名無しさん:2017/03/04(土) 14:25:59.12 ID:GRvQ2lmz.net
シェア獲得率と優劣は比例しない

424 :デフォルトの名無しさん:2017/03/04(土) 14:32:38.90 ID:svzWwCAT.net
そう言っておかないとシェア4%のMacなんか何の立場もないもんな

425 :デフォルトの名無しさん:2017/03/04(土) 14:46:44.82 ID:nGVyMKq0.net
シェア獲得率が高いものは、シェアに優れてる

426 :デフォルトの名無しさん:2017/03/04(土) 15:10:40.29 ID:aE/wnzST.net
別に使われてると思ってるなら良いんでない?
俺は趣味でもあり金を稼ぐ道具でもあるからMacなんて使わんけど。

だいたい、知らんもんで金は稼げない。

427 :デフォルトの名無しさん:2017/03/04(土) 18:17:19.42 ID:ZJLt6oM8.net
MacをPCだとするとシェア4%になるが
DTMコンソールやCG用レンダラーだとするとシェアが何倍にもなる不思議

428 :デフォルトの名無しさん:2017/03/05(日) 13:07:20.68 ID:Fl7T0tas.net
>>419
でも優良見込み客を囲い込んでるのは i & a なんだよなぁ

429 :デフォルトの名無しさん:2017/03/05(日) 13:41:54.91 ID:1JomNGIg.net
>>427
2015年での世界におけるAppleのシェアは7.5%だそうです。

http://ascii.jp/elem/000/001/104/1104428/20160113_yohiro_PCShipment_03_767x659.png

430 :デフォルトの名無しさん:2017/03/05(日) 14:27:40.01 ID:zkc5hO4d.net
ベンダー出荷シェアとかOSの販売数ってのは利用率なシェアとは別モンだからな

431 :デフォルトの名無しさん:2017/03/05(日) 17:20:05.73 ID:KDLljhIv.net
光学ドライブのAutoRunを無効にしてると、ディスクを入れ替えたことに気付けないみたいですが、
どうやったらディスクの情報をリフレッシュさせることができるのでしょうか?
ディレクトリ一覧を取得しようとしても、入れ替え前のディスクのディレクトリが出てきて困ってます

432 :デフォルトの名無しさん:2017/03/05(日) 19:16:54.98 ID:zkc5hO4d.net
今のOSはAutoRun最初から無効だから、それが本当ならほとんどのPCでまともに取得できないってことになるな
ソースどっかミスってるんでしょ

433 :デフォルトの名無しさん:2017/03/05(日) 19:23:58.07 ID:91bxBwXE.net
もちろんエクスプローラーで開けば情報は更新されます。プログラムからトレイを開閉しても情報は更新されます。
光学ドライブのボタンで開閉すると、情報が更新されないままなのです。

434 :デフォルトの名無しさん:2017/03/05(日) 19:45:45.34 ID:1JomNGIg.net
>>431
この辺、参考にならないかな

https://support.microsoft.com/ja-jp/help/163503/how-to-receive-notification-of-cd-rom-insertion-or-removal

435 :デフォルトの名無しさん:2017/03/10(金) 01:12:03.58 ID:5qliBH2Z.net
https://ideone.com/i4fQGS
Win32API勉強中なんですが、ウィンドウを作ることができません、hWndがNULLになってしまって途中で終わってしまいます
ウィンドウクラスの登録も失敗していないみたいなので原因がわかりません、どこが悪いのか教えてください

436 :デフォルトの名無しさん:2017/03/10(金) 03:42:45.84 ID:Vp9TD86Z.net
自分のウインドのZオーダーが変化したタイミングを調べたいのですが、
ウインドメッセージでなにかありましたっけ?

437 :デフォルトの名無しさん:2017/03/10(金) 03:48:47.30 ID:G57q42um.net
>>435
× defalut
〇 default
>>436
WM_WINDOWPOSCHANGEDかな

438 :デフォルトの名無しさん:2017/03/10(金) 04:07:50.94 ID:Vp9TD86Z.net
WM_WINDOWPOSCHANGEDは、だめでした。

ちなみにウインドウはCreateWindowExで、WS_EX_TOPMOSTしています。
ウインドウのスタートメニューが重なっと時にそれよりも前面に表示したいのですが。。
WM_WINDOWPOSCHANGEDにメッセージ来てないっぽいです。

今は、代案として1秒ごとに、SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);を入れているのですが、
もっといい方法ないでしょうか?

いま、GetWindowあたり調べているのですが、GetWindow(hWnd, GW_HWNDPREV);だと
imeのハンドルが取れるっぽいのでなんか違う。。orz

439 :デフォルトの名無しさん:2017/03/10(金) 05:09:47.00 ID:j91K0HTy.net
ランサムウェアですねわかります

440 :デフォルトの名無しさん:2017/03/10(金) 05:17:14.60 ID:Vp9TD86Z.net
>>439
悪さするアプリじゃないんだが?

441 :デフォルトの名無しさん:2017/03/10(金) 07:10:36.82 ID:n8W4k0Sb.net
異教徒の大量虐殺をためらわない一神教の思想性を理解するのに役立つ。
いずれ日本がアメリカに復讐する日が来るだろう。

442 :デフォルトの名無しさん:2017/03/10(金) 07:13:07.30 ID:n8W4k0Sb.net
>>441 誤爆失礼

443 :デフォルトの名無しさん:2017/03/10(金) 08:47:49.51 ID:Lkoti1g0.net
>>440
昔からこういう奴はいるから気にするな

444 :デフォルトの名無しさん:2017/03/10(金) 14:11:40.65 ID:wwCDmvkp.net
図星ですねわかります

445 :片山博文MZ ◆T6xkBnTXz7B0 :2017/03/10(金) 14:29:16.92 ID:iyjWrKHK.net
NG: (HBRUSH)COLOR_BACKGROUND
OK: (HBRUSH)(COLOR_3DFACE + 1)

ShowWindow(hWnd, SW_SHOW);の後にUpdateWindow(hWnd);がない。

446 :片山博文MZ ◆T6xkBnTXz7B0 :2017/03/10(金) 14:30:21.93 ID:iyjWrKHK.net
ShowWindow(hWnd, SW_SHOW);
じゃなくて、ShowWindow(hWnd, nCmdShow);
かShowWindow(hWnd, SW_SHOWNORMAL);にしろ。

447 :デフォルトの名無しさん:2017/03/10(金) 14:40:49.87 ID:ALHJU+Fn.net
>>437
ありがとうございますこれでいけました

448 :デフォルトの名無しさん:2017/03/10(金) 16:29:28.86 ID:ALHJU+Fn.net
すいませんまた質問させてください
テトリスを作る動画を見ながらこれを作っているのですが、リソースの画像を一度表示されたんですが、画像のサイズが変だったので訂正したところ表示されなくなりました
どこが悪いのか教えて頂けないでしょうか?
https://ideone.com/i4fQGS

449 :デフォルトの名無しさん:2017/03/10(金) 17:21:39.95 ID:wwCDmvkp.net
r.right = 24 * 10;
r.bottom = 24 * 20;

450 :デフォルトの名無しさん:2017/03/12(日) 21:56:50.24 ID:EdU52Ynw.net
タスクトレイのShell_NotifyIcon();について質問です。
タスクトレイのアイコンサイズは32x32または16x16が一般的っぽいのですが、
64x32などの長方形サイズなどのカスタムアイコンを設定できるのでしょうか?
icdata.dwInfoFlagsで NIIF_LARGE_ICONっていうパラメーターを設定したのですが、
反映されていないっぽいです。
case WM_CREATE:
{
ZeroMemory(&icdata, sizeof(icdata));
hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));
icdata.cbSize = sizeof(NOTIFYICONDATA);
icdata.hWnd = hWnd; icdata.uID = 0;
icdata.uFlags = NIF_MESSAGE | NIF_TIP | NIF_SHOWTIP | NIF_ICON;
icdata.dwInfoFlags = NIIF_LARGE_ICON;
icdata.uCallbackMessage = WM_USER;
icdata.uVersion = NOTIFYICON_VERSION_4;
icdata.hIcon = hIcon;
wcscpy_s(icdata.szTip, sizeof(icdata.szTip), L"左クリックで終了");
Shell_NotifyIcon(NIM_ADD, &icdata);
}

451 :450:2017/03/12(日) 22:56:10.20 ID:EdU52Ynw.net
LoadIconは、LoadIconMetricでした。
HRESULT hr = LoadIconMetric(hInst, MAKEINTRESOURCE(IDI_ICON1), LIM_LARGE, &hIcon);
しかし、変化なし。。

452 :デフォルトの名無しさん:2017/03/13(月) 06:26:15.42 ID:cVbgmuk1.net
右クリックとかでよく出るポップアップメニューの
フォントの大きさを変更したい場合どうすればよいですか?
case WM_RBUTTONDOWN:
{
POINT pt;
pt.x = LOWORD(lParam);pt.y = HIWORD(lParam);
ClientToScreen(hWnd, &pt);
TrackPopupMenu(hMenu, TPM_LEFTALIGN, pt.x, pt.y, 0, hWnd, NULL);
}
break;

453 :デフォルトの名無しさん:2017/03/13(月) 06:47:05.65 ID:cVbgmuk1.net
自己解決。。調べたら、メニュー・オーナードローについて詳しいページが出てきました。

454 :デフォルトの名無しさん:2017/03/13(月) 08:55:13.87 ID:hLVIfrQc.net
紀平さんのか

455 :片山博文MZ ◆T6xkBnTXz7B0 :2017/03/13(月) 13:01:19.28 ID:VNPYsRzK.net
>>450
shell icon sizeで画一的に決まってる。

456 :デフォルトの名無しさん:2017/03/13(月) 13:43:30.21 ID:N3DmujAP.net
>>450
オーナードロー

457 :デフォルトの名無しさん:2017/03/13(月) 13:49:46.45 ID:wbj+4uLG.net
>>456
それだけじゃ答えから遠い

458 :デフォルトの名無しさん:2017/03/13(月) 17:27:27.81 ID:RCZql05q.net
>>449
違うみたいです・・・

459 :デフォルトの名無しさん:2017/03/13(月) 20:18:35.18 ID:DGoKmeFN.net
https://ideone.com/i4fQGS
VC++で見ているんですが24行目のhBitmapにはちゃんとアドレスが確保されているのになぜか描画されません
どういった原因が考えられるでしょうか?

460 :片山博文MZ ◆T6xkBnTXz7B0 :2017/03/13(月) 20:24:18.16 ID:VNPYsRzK.net
>>459
SelectObjectは、BeginPaintの後に呼ばないといけない。HDCが違う。

461 :デフォルトの名無しさん:2017/03/13(月) 23:00:39.35 ID:cCiuixm4.net
>>459
コンパイルして実行してみたけど表示されたよ。bmpファイルがおかしいんじゃない?
あとWM_DESTROYでhMemDCとhBlockDCをDeleteObjectしてるけどDeleteDCじゃないとダメ

462 :デフォルトの名無しさん:2017/03/14(火) 10:21:04.36 ID:vbV/Jpv3.net
>>459
テトリスのひとか
がんがれ

463 :459:2017/03/14(火) 23:58:45.78 ID:MclzPbbI.net
環境も書いたほうがいいですね、Win7 x64でVC++2010 Expressです、rcファイル作って「BLOCKS BITMAP "block.bmp"」と書いてます
ファイル名は間違えていないですし、リンクしてoファイルは作っていないですけど間違っていますか?
最初は自作のbmpファイルでやっていたんですけど、途中から作られたbmpファイルでやろうとして表示されなくなりました
ここにあるblock.bmpというやつです
https://github.com/DQNEO/CppTetris

動画を見てロジックを理解しながら学習したいのですが、なかなか捗らないです

>>460
ごめんなさい、何行目のことかわからないです

>>461
修正しました!

>>462
ありがとうございます

464 :デフォルトの名無しさん:2017/03/15(水) 12:08:58.48 ID:7YWEdixI.net
馬鹿には無理

465 :デフォルトの名無しさん:2017/03/15(水) 12:54:33.61 ID:rPK+nkkO.net
用意されてたbmpでは動く。自作bmpでは動かない。ってことかよ。だとしたら原因ひとつじゃん

466 :デフォルトの名無しさん:2017/03/15(水) 13:11:54.57 ID:h6gBY/+f.net
>>463
imgurにでも自分で作ったbmp上げてみてよ

467 :デフォルトの名無しさん:2017/03/15(水) 13:37:27.01 ID:7YWEdixI.net
imgurって内容変わるんじゃね

468 :デフォルトの名無しさん:2017/03/15(水) 13:42:29.19 ID:h6gBY/+f.net
マジかごめん

469 :デフォルトの名無しさん:2017/03/15(水) 16:58:13.14 ID:0QbqsbzH.net
>>463
たぶん表示されてるんだと思う
WM_CREATE内の//debugの下の行を
BitBlt(hMemDC, 0, 0, 24, 24, hBlockDC, 0, 24, SRCCOPY);
にするとどうなる?

470 :デフォルトの名無しさん:2017/03/15(水) 18:59:14.47 ID:Jw8FgjFy.net
ちょっと見てみたよ
bmpのIDだけど、BLOCKS と "BLOCKS" は別だからね
BLOCKSは数値に置き換えられてるけどLoadBitmapは文字列の"BLOCKS"で読もうとしてる
初心者の頃はやりがちなやつだな

471 :デフォルトの名無しさん:2017/03/15(水) 20:15:49.77 ID:5s+i++Yx.net
>>469
ありがとうございます、これで表示されました
でもhttp://dqn.sakusakutto.jp/2012/11/cpp_tetris.htmlこの動画とは別の画像が表示されます
動画上では灰色ブロックが出てきているのに、自分の環境では赤色のブロックが出てきている状況です

>>470
動画では「"BLOCKS"」と定義されていたので自分は「TEXT("BLOCKS")」と定義したんですが両者は違うものなのでしょうか?

472 :デフォルトの名無しさん:2017/03/15(水) 20:16:40.91 ID:LU+w+iAT.net
rcの方だろ

473 :デフォルトの名無しさん:2017/03/15(水) 21:50:38.03 ID:5BC7GJpQ.net
USBメモリなどUSB機器の接続検知をおこないたいのですが、WM_DEVICECHANGEを使用すると
https://qanda.rakuten.ne.jp/qa5211631.html
のようにUSBメモリによってはDBT_DEVICEARRIVALが何度か来てしまいます。
↑のQ&Aにあるように、正常に認識されたときを検出するにはどうすればよいでしょうか?

474 :デフォルトの名無しさん:2017/03/15(水) 23:07:40.31 ID:5s+i++Yx.net
>>472
rcのほうが間違えているということですか?
では「"BLOCKS" BITMAP "block.bmp"」ってことですか?

475 :デフォルトの名無しさん:2017/03/16(木) 09:34:05.83 ID:fy4K8iiJ.net
こうやって手取り足取りな奴はイライラする

476 :デフォルトの名無しさん:2017/03/16(木) 11:58:27.68 ID:bBZQNLcb.net
>>475
じゃあ来なければいいよ

477 :デフォルトの名無しさん:2017/03/16(木) 15:14:09.34 ID:Oq2mLnGK.net
お前が手足を完全にもいでトドメを刺せばいい

478 :デフォルトの名無しさん:2017/03/16(木) 17:17:19.21 ID:Xe646fvV.net
モイっ!

479 :デフォルトの名無しさん:2017/03/16(木) 22:29:13.60 ID:xw1bzJ/c.net
>>473
((PDEV_BROADCAST_HDR)lParam)->dbch_devicetype が全部同じなの?

480 :デフォルトの名無しさん:2017/03/19(日) 01:08:24.24 ID:bawtCMkE.net
SHAppBarMessage(ABM_QUERYPOS, &abd);が正しい値を取得できない場合どうすればいいですか?

Windows10の設定:システム:ディスプレイ:ディプレイカスタマイズ画面
テキスト、アプリ、その他の項目サイズを変更する
で100%から175%までいろいろ変化させてみると表示位置のずれが発生します。

481 :デフォルトの名無しさん:2017/03/19(日) 04:28:36.19 ID:yhAiVzME.net
>>473
デバイスイベントが来たら、タイマーで少し時間が経ってからデバイスをチェックする。
時間が経つ前に次のデバイスイベントが来たら、タイマーをセットしなおしてまた少し時間が経つまで待つ。

482 :デフォルトの名無しさん:2017/03/20(月) 10:38:14.59 ID:px9bK4BM.net
タスクトレイの自動的に隠すになっているかを調べる場合どうすればよいですか?

483 :デフォルトの名無しさん:2017/03/20(月) 11:02:11.90 ID:OlmnVrTw.net
レジストリでも見ればわかるんじゃない?

484 :482:2017/03/20(月) 11:03:48.79 ID:px9bK4BM.net
自己解決・・
APPBARDATA appbardata;
appbardata.cbSize = sizeof(APPBARDATA);
appbardata.hWnd = FindWindow(L"Shell_TrayWnd", 0);
if(SHAppBarMessage(ABM_GETSTATE, &appbardata))
{
// 自動的に隠れている
}

485 :デフォルトの名無しさん:2017/03/20(月) 23:28:19.28 ID:pgDQQg6b.net
最近、win32 はいつまで残るんだろうな、とふと不安になる
.net とか妙なものが蔓延ってるけど。

486 :デフォルトの名無しさん:2017/03/21(火) 00:19:55.43 ID:3zup+qvo.net
MS32bitOSが居る限りはなくならないだろ
.netだって内部的にWin32API呼び出しているし

487 :デフォルトの名無しさん:2017/03/21(火) 02:42:20.25 ID:dRq3wtLU.net
ここまで来て過去の莫大な資産を捨てることなんてあるの?
過去のwindowsアプリが新しいwindowsで動かなくなる日が来たら、それはもうwindowsじゃないと思う

488 :デフォルトの名無しさん:2017/03/21(火) 03:05:14.83 ID:RH/+/4vn.net
.NetですらFormsもWPFも放置でUWPに移行させようとしてるし、本音では過去のを全て捨ててUWPに一本化したいんだろう。
現実的には自らの強み(過去の資産)を手放すことになるから、やりたくてもやれないのだろうけど。

489 :デフォルトの名無しさん:2017/03/21(火) 03:48:34.60 ID:5huRZA1V.net
> FormsもWPFも放置でUWPに移行

MSって過去にも色々出しては無かったことにしてきたよな・・・
UWPすらどうなることか

490 :デフォルトの名無しさん:2017/03/21(火) 04:41:12.33 ID:ScjZQ1Ox.net
新しいものを出してきても、古いOSに対応させないから状況的に使えなくて、
使ってもいいかなと思える状況になった頃には古い技術になっているという悪循環

491 :デフォルトの名無しさん:2017/03/21(火) 14:27:42.86 ID:6WWBsw/3.net
>>485
windowsが無くなるまでは残るだろうと思ってたが

windowsが無くなりそうだしな

492 :デフォルトの名無しさん:2017/03/21(火) 14:35:53.84 ID:3zup+qvo.net
Win32APIは過去の莫大な資産であり、過去の莫大な負債でもある

493 :デフォルトの名無しさん:2017/03/21(火) 17:25:00.36 ID:ghEa3fZg.net
WindowsRuntimeを使わないといけなくなって
c++でコーディングし始めたけどかなり面倒くさい。
c++/cx使えっていうことだろうけど。
windows runtimeがwin32apiの代わりになるのかな?

494 :デフォルトの名無しさん:2017/03/21(火) 23:26:33.91 ID:y88e15JH.net
しっかし、なんで win32 はあんなに作るのが面倒くさいんだろうな・・・
1〜10まで教える感じではなく、1、10、100、1000まで教えてやっと動く感じ。
その分痒い所に手が届くが。。。
だんだん倦厭されているということは、今の納期!納期!の文化とは合わないんだろうな。

495 :デフォルトの名無しさん:2017/03/22(水) 00:22:36.94 ID:153gnM05.net
>>493
CX糞

https://github.com/Microsoft/cppwinrt
↑正解

496 :デフォルトの名無しさん:2017/03/22(水) 00:24:51.70 ID:Qoic3+WX.net
工程の短縮というのもあるけど
「どのアプリケーションでも同じことをしたければ同じ操作をすればいい」と言うのを求めると
同じ操作(同じ動作)をひとつの部品として提供するほうが良い
そういう開発者独自の機能より、一般化された機能や操作性が重要視されるようになったのも一因だと思う

497 :デフォルトの名無しさん:2017/03/22(水) 00:30:45.76 ID:oXk4FtJ8.net
>>495
これってまだいろいろ未完成じゃないん?
sdkにも含まれてないし扱いが不鮮明なんだよな。

498 :デフォルトの名無しさん:2017/03/22(水) 00:48:25.76 ID:KP40M7fU.net
https://msdn.microsoft.com/en-us/magazine/mt745094
https://msdn.microsoft.com/en-us/magazine/mt745090

C++/CXを置き換えてくのか平行してくのか知らんけど言語プロジェクションを
純C++のヘッダのみで提供するコンセプトなのかしら
ただ肝心の.winmdからヘッダを生成するコンパイラが(まだ)未提供だから
Win2Dみたいな標準に含まれてないランタイムコンポーネントは使えん感じ

ちょっと試してみた感じ/ZWも不要で既存のC++ライブラリとマージしやすそうだし
VS2017+CUの時点で使い物になってて欲しいなあ

499 :デフォルトの名無しさん:2017/03/23(木) 12:03:55.36 ID:39On3zda.net
>>494
APIの粒度の問題を言われてもな

500 :デフォルトの名無しさん:2017/03/23(木) 20:22:15.45 ID:NUnQTAC3.net
でも結局どの言語でもAPIインポートするんだよな
意味ないな

501 :デフォルトの名無しさん:2017/03/26(日) 14:21:34.35 ID:bO2o38VX.net
>>494
>痒い所に手が届く

これ重要

502 :デフォルトの名無しさん:2017/03/26(日) 15:20:48.57 ID:6+wpTDFL.net
代わりに痒くもないところが腫れあがる

503 :デフォルトの名無しさん:2017/03/27(月) 08:29:30.36 ID:S+/FPMiq.net
そりゃ掻いてる場所が違うんだ

504 :デフォルトの名無しさん:2017/03/27(月) 08:31:23.68 ID:CkZovUeE.net
痒いところをかくといけないのでかけないようになってます

505 :デフォルトの名無しさん:2017/03/29(水) 15:32:52.21 ID:Si2XZHCG.net
ショートカットの.lnkとかあと特殊なフォルダとかに出る
アイコン右下のやつってなんて名前なんでしょうか?

506 :片山博文MZ ◆T6xkBnTXz7B0 :2017/03/29(水) 15:39:16.42 ID:uG+6tdKu.net
overlay icons

507 :デフォルトの名無しさん:2017/03/29(水) 15:40:33.19 ID:F9h34aTY.net
IDがqz
https://www.youtube.com/watch?v=9zzRg-rBpOQ
https://twitter.com/NomuraShuya/status/846159908542169088

508 :デフォルトの名無しさん:2017/03/29(水) 15:41:59.56 ID:3SDK0DLs.net
右下ってシールドか?
キャプチャぐらい貼れよ無能

509 :デフォルトの名無しさん:2017/03/29(水) 15:43:11.84 ID:F9h34aTY.net
これやろ

矢印

510 :デフォルトの名無しさん:2017/03/29(水) 16:02:42.50 ID:3SDK0DLs.net
矢印は左下だろ
アイコンオーバーレイって名称のことかな。ま、どうでもいいや

511 :デフォルトの名無しさん:2017/04/01(土) 18:40:58.67 ID:m+AYjiBS.net
Win32APIサポート終了のお知らせ

512 :片山博文MZ ◆T6xkBnTXz7B0 :2017/04/01(土) 18:56:32.68 ID:Q4azjyiD.net
>>511
ソース希望

513 :デフォルトの名無しさん:2017/04/01(土) 19:30:55.19 ID:WcYopVS3.net
>>512
今日の日付

514 :デフォルトの名無しさん:2017/04/03(月) 01:29:34.83 ID:BKde4+E+.net
嘘をついていいのは午前中なんだが。

515 :デフォルトの名無しさん:2017/04/03(月) 02:36:19.44 ID:EQsFkd4r.net
それもウソだよ

516 :デフォルトの名無しさん:2017/04/03(月) 20:45:49.66 ID:fIAaSCsY.net
ウソだってのがウソなんだよ

517 :デフォルトの名無しさん:2017/04/03(月) 20:47:03.89 ID:DvppQH2R.net
4/1だけにしとけよ

518 :デフォルトの名無しさん:2017/04/03(月) 21:39:52.92 ID:gWDrFV4S.net
昭和64年は短命
64も短命?
128移行か

519 :デフォルトの名無しさん:2017/04/03(月) 23:53:31.94 ID:qQvnlfYK.net
コンピュータの進歩がかなり鈍化してきているし
物理的な限界に直面しつつあるから
128bitは俺の生きている間に来るかどうか
今の段階では個人用途でそれだけのメモリ空間が必要になる使い道が思い浮かばん
それはPCの性能がまだそこに全然達していないから全く思い浮かばんってことなんだけど
そこへ至るまでに何段階もの紆余曲折あるだろうから今の段階で考えるだけ無駄だけどね
世の中も全然変わってるだろうし
それはともかく256テラバイト以上のメモリともなると
それを処理するCPUも相当速くないと意味ないからね
今の状態ですらどちらかというとメモリは余り気味でCPUがボトルネックになってる感じだし
メモリは余ってるけど、データ積んだところでCPUが現実的な時間で処理しきれないっていう
まぁ1万コアぐらいないと256テラバイト以上のメモリは生かしきれないんじゃないかな
その場合メモリ帯域は足りるのかとか考えると、コアごとにキャッシュを山のように積むか
コヒーレンシとか考えるともはやそれも難しく
PS3のCellみたいなプログラミングを強いられるかもしれないな
生きてないと思うけど

520 :デフォルトの名無しさん:2017/04/04(火) 00:09:36.07 ID:3+iIkQVP.net
そういうことを考えると128bitはあまり現実味がないというか
ムーアの法則通りに半導体の性能が上がり続けたとしても
あくまで実時間に対して2倍2倍に増えていくってオーダーだけども
bit数の増え方はもっと激しくて、1bit増えるたびに2倍の空間になるのに
そのbit数自体が2倍2倍に増えて行くわけだから、オーダーが全然違う
8bit→16bit、16bit→32bit、32bit→64bitのように順調にはいかない
どんどん間が長くなっていく
128bitは遠い遠い未来か、もしくは訪れないってことになる

521 :デフォルトの名無しさん:2017/04/04(火) 00:18:54.12 ID:u5Wjlvjc.net
>>519
そのころはAIがプログラム書くようになるから心配無いよ

522 :デフォルトの名無しさん:2017/04/04(火) 01:30:54.91 ID:BzumqOQh.net
>>520
>8bit→16bit、16bit→32bit、32bit→64bitのように順調にはいかない

それはマイクロプロセッサしか見てないだろ。
メインフレームの世界だと、トランジスタ機になったときには
32bitや36bitがすでにできていたから、そこから全く進化してない
ともいえる。

523 :デフォルトの名無しさん:2017/04/04(火) 05:56:42.50 ID:/PIYb7TP.net
>>519
VLIWは?

524 :デフォルトの名無しさん:2017/04/04(火) 08:06:05.98 ID:Tyt+m4C4.net
>PS3のCellみたいなプログラミングを強いられるかもしれないな

中国のスパコン1位がそんなアーキティクチャで2位以下にトリプルスコアの圧勝だったな。
この先、性能を追求したらそうならざるを得ないかも。

525 :デフォルトの名無しさん:2017/04/04(火) 08:19:35.41 ID:1dU9a0gl.net
そんな下の層の違いは上には影響しないから俺には関係ないな

526 :デフォルトの名無しさん:2017/04/04(火) 09:42:55.60 ID:mPQmMovw.net
ボトルネックといえばフロントサイドバスとストレージ

527 :デフォルトの名無しさん:2017/04/04(火) 22:01:11.94 ID:73kME/Mz.net
128ビットも必要なプログラムは人間には書けない

528 :デフォルトの名無しさん:2017/04/04(火) 22:14:00.40 ID:eHZToKh6.net
書くのは簡単

529 :デフォルトの名無しさん:2017/04/04(火) 22:23:58.48 ID:u5Wjlvjc.net
一桁二桁の加減乗除なら良いが、128ビットフルに使う計算だと、紙の幅越えないかなw

530 :デフォルトの名無しさん:2017/04/04(火) 22:31:01.19 ID:2+tk3Olf.net
SSE2使ってるとどうやって128bit使おうかばかり考える

531 :デフォルトの名無しさん:2017/04/05(水) 01:26:41.60 ID:XXr1MGA7.net
っつーかナニを128ビットにするわけよ?

532 :デフォルトの名無しさん:2017/04/05(水) 02:45:28.37 ID:qYLi57Sr.net
俺のナニは8bitだしorz

533 :デフォルトの名無しさん:2017/04/05(水) 08:06:40.12 ID:Bh5NPBNH.net
なに見栄張ってるんだよ
お前のは a bit (=ちょっと) だろ

534 :デフォルトの名無しさん:2017/04/05(水) 08:54:18.24 ID:BdqpqknF.net
just bit(1ビットだけ)だろ?

535 :デフォルトの名無しさん:2017/04/05(水) 09:46:20.77 ID:v8qJ9EUo.net
>>531
そりゃcharを16個詰め込んだりするだろ

536 :デフォルトの名無しさん:2017/04/05(水) 14:24:34.32 ID:+eJqUohN.net
ここまで漏れの自演

537 :デフォルトの名無しさん:2017/04/06(木) 17:46:17.73 ID:Wug7VRpa.net
質問お願いします。
QueryPerformanceFrequency
で得た値は実行ごとに変わったりするから毎回計測しないと駄目ですか?

538 :デフォルトの名無しさん:2017/04/06(木) 18:05:42.24 ID:lEpGhGGY.net
どんな理由から毎回計測しないようにしたいんだ?それによる

539 :デフォルトの名無しさん:2017/04/06(木) 18:18:16.44 ID:Wug7VRpa.net
QueryPerformanceFrequencyの値がプログラムを終了するまで一定なら
1回しかこれを実行したくないし変わるなら一回時間を計測するごとにこれを実行したいです

540 :デフォルトの名無しさん:2017/04/06(木) 18:30:27.17 ID:lEpGhGGY.net
それなら一度だけでよかったはず

541 :デフォルトの名無しさん:2017/04/07(金) 17:01:14.12 ID:3o5iBWIM.net
システム起動中に変わることはないってさ

542 :デフォルトの名無しさん:2017/04/07(金) 22:21:01.99 ID:9JlGmFFU.net
ハイバーネーションみたいなのとかVMとか組み合わさるとどうなるかわかんないけどそういうことになってるね

543 :デフォルトの名無しさん:2017/04/08(土) 09:03:07.92 ID:ptqONvxu.net
俺は使うたびに毎回読んでるわ
あえてそうしない意味もないから

544 :デフォルトの名無しさん:2017/04/08(土) 17:48:41.54 ID:C7AQR+Mi.net
すみません、教えてください。

Borland BCC でC/Cppを勉強しているのですが、
CreateWindow( "EDIT", "あああああ", ....
にすると、あああああ の部分が文字化けして ,,,, と表示されてしまいます。
CreateWindow( "STATIC", "あああああ", ...
だと問題なく表示されます。

どうか教えてください、宜しくお願いします。

545 :デフォルトの名無しさん:2017/04/08(土) 22:40:07.71 ID:42pK0vcr.net
>>544
BCCはよくわかんけど、パラメーターが変とかじゃね?あと考えられるのはUNICODEとか?
このコードは RAD Studio10.1 BerlinとVS2015/2017で動くことは確認済み
HINSTANCE hInst;HWND hEdit,hStatic;
HWND hWnd= Handle; // BCBとか用
hInst=GetModuleHandle(0);
hEdit = CreateWindow(TEXT("EDIT") , TEXT("あああ") ,WS_CHILD | WS_VISIBLE | ES_LEFT,0 , 0 , 400 , 20 , hWnd , 0 ,hInst , NULL);
hStatic = CreateWindow(TEXT("STATIC") , TEXT("あああ") ,WS_CHILD | WS_VISIBLE | ES_LEFT ,0 , 20 , 400 , 20 ,hWnd , 0 ,hInst , NULL);

546 :片山博文MZ ◆T6xkBnTXz7B0 :2017/04/09(日) 07:27:35.73 ID:qFsmFYyf.net
>>544
省略せずに書いてみて。

547 :544:2017/04/10(月) 07:47:25.26 ID:RoCnetHj.net
すみません、お手数をおかけします。


// あああああ が表示される
CreateWindow( "STATIC",
"あああああ", WS_CHILD | WS_VISIBLE | SS_CENTER,
x, y, w, h,
hGrp1, (HMENU)ID_TEXT1, hInst, NULL );

// あああああ が表示されず ,,,,, となる
CreateWindow( "EDIT",
"あああああ", WS_CHILD | WS_VISIBLE | SS_CENTER,
x, y+50, w, h,
hGrp1, (HMENU)ID_TEXT2, hInst, NULL );

hGrp1 はグループボックスです。

548 :片山博文MZ ◆T6xkBnTXz7B0 :2017/04/10(月) 08:21:28.02 ID:73IQobxS.net
"EDIT"にはSS_CENTERは使えないよ。EDITにはES_...スタイルを使う。

549 :デフォルトの名無しさん:2017/04/10(月) 08:53:21.05 ID:ZIRNWk3W.net
>>547
とりあえずコントロール毎に指定フラグが違う事を指摘しておく

550 :デフォルトの名無しさん:2017/04/10(月) 16:45:44.18 ID:PH6zMRzh.net
>>547
マルチバイト文字列が上手くいかないなら"AAAA"のようにシングルバイト文字列で試してみればいいじゃないか。

551 :デフォルトの名無しさん:2017/04/10(月) 17:20:37.45 ID:vopNHtdq.net
>>547
WM_SETFONTを使って、フォントを関連付けしてみたらどうだい?

552 :片山博文MZ ◆T6xkBnTXz7B0 :2017/04/10(月) 17:25:49.47 ID:73IQobxS.net
SS_CENTERがES_ENDELIPSISとして解釈されたんだろうな。
【今日の教訓】
EDITコントロールには、ES_で始まるスタイルを使え。SS_はEDITには使うな。

553 :片山博文MZ ◆T6xkBnTXz7B0 :2017/04/10(月) 17:32:00.56 ID:73IQobxS.net
ごめん、ES_ENDELIPSISというスタイルはなかった。SS_CENTERの代わりにES_CENTERを指定すればいい。

554 :デフォルトの名無しさん:2017/04/10(月) 21:33:08.91 ID:G1/iiInq.net
なんでESとかSSとか種類が有るの?

555 :デフォルトの名無しさん:2017/04/10(月) 21:59:23.57 ID:PH6zMRzh.net
そりゃ特定のコントロールに対するものだからさ。
あとSS_CENTERもES_CENTERも winuser.h で 0x01L と定義されている。

例えば共通の定義 XX_CENTER 0x01L としていた場合、
EDITコントロールの仕様変更でXX_CENTER 0x02L としたくても
STATICコントロールで同じ意義を使っているため変えることが出来ないだろ。
もし定義を変えた場合、STATICコントロールで0x02L というのは別の意味を持っている(かもしれない)ので動作がおかしくなる。
だから意味は同じでも“値”としては別のものとして扱う(定義する)。

556 :デフォルトの名無しさん:2017/04/10(月) 22:00:00.06 ID:PH6zMRzh.net
ミス
意義→定義

557 :デフォルトの名無しさん:2017/04/10(月) 23:44:29.58 ID:CESguEkt.net
じゃー将来SS_CENTERが別の値に変更されても安心だね

558 :デフォルトの名無しさん:2017/04/11(火) 07:55:30.63 ID:pJyY6xCH.net
変えたらひどいことになるけどなw
本音と建前みたいなもんでCの欠点だな。後発言語はそういうとこカバーされてる(のもある)

559 :デフォルトの名無しさん:2017/04/11(火) 17:52:35.12 ID:xC3FSY5Y.net
モーダルダイアログをメインの親とし、その後動的にサブメニューを表示する仕組みがあります。
サブメニュー表示中も親側の操作を可能とするため、サブメニューはモードレスとしていますが、
TABなどのキー入力が効きません。
辛うじて、初期フォーカスがあるボタンのみスペースキーを受け付けます。
マウス操作は問題ありません。

原因としてはサブメニューのキー処理をする IsDialogMessage を含むメッセージループが必要
なんだろうと思いますが、こういう場合の定石というのはあるのでしょうか?

思い付く実装は以下2パターンです。

その1
親もモードレスとし、親のメッセージループ中にサブメニューのメッセージも処理する仕組みを入れる。

その2
サブメニュー表示後に別スレッドを立ち上げ、そこでサブメニューのメッセージループを回す。


普通はこうだよ。とか他の方法などありましたらお願いします。

560 :デフォルトの名無しさん:2017/04/11(火) 17:55:40.75 ID:xC3FSY5Y.net
ちょっと語弊がありましたので訂正です。

ここで言う「サブメニュー」とは、CreateMenu などで作られる一般的に言うメニューではなく、
単なるポップアップスタイルのタイトルなしダイアログのことです。
CreateDialog で画面を作っています。
勝手に言葉を作ってすみません。

561 :デフォルトの名無しさん:2017/04/11(火) 18:23:36.29 ID:9HH9Hffg.net
2つウインドウがあって、1つはメインウインドウ、もう1つはメニューウインドウ
メインウインドウにキーフォーカスがあるとメニューウインドウでキー操作できず、メニューウインドウにフォーカスがあるとメインウインドウでキー操作できない
メッセージを適宜流せばいいんじゃないか?

562 :デフォルトの名無しさん:2017/04/11(火) 22:23:16.04 ID:xC3FSY5Y.net
フォーカスはそれがあるウィンドウで処理できるようなUIを考えています。
ユーザーがメインウィンドウにフォーカスを(マウスなどで)移せば、
以降はそのウィンドウでキーボード操作ができればいいです。その逆も然り。

適宜メッセージを流すにしても、結局どこでメッセージループを回すかという
話になるのではと思うのですが、違うのでしょうか?

563 :デフォルトの名無しさん:2017/04/12(水) 22:43:12.22 ID:iYQoJoP4.net
なにいってんだこいつ

564 :デフォルトの名無しさん:2017/04/12(水) 23:28:35.38 ID:lhjyuLrL.net
分からないのに無理して答えるなよ

565 :デフォルトの名無しさん:2017/04/13(木) 02:45:23.01 ID:8XBnDqPS.net
最近よく足がつる

566 :デフォルトの名無しさん:2017/04/13(木) 11:42:08.71 ID:9jlRESvt.net
>>562
フォーカスを移してキーボード操作なんて危険なことを平気でやろうとする人はWin32APIなんて使わない方が良いんじゃね?

普通はフォーカスを移そうとしているオブジェクトにフォーカスを移す移さない関係なく文字列送信するもんじゃないの?

キーボード操作中にユーザーが別のウィンドウをクリックした場合とか考えないの?

567 :デフォルトの名無しさん:2017/04/13(木) 13:32:39.75 ID:OCOdT3+H.net
>>562
難しく考えるよりも、例えば、MVCベースで考えて設計したらいいんじゃねーの?
オブジェクト指向で設計するのもいいし、データ処理ありきで設計するのもあり、やりやすいように作ればいいよ。

568 :デフォルトの名無しさん:2017/04/13(木) 17:59:38.26 ID:zh4lU2gJ.net
>>566
なんで何も理解できていないのに無理に話に入ろうとするの?

569 :デフォルトの名無しさん:2017/04/13(木) 18:16:04.36 ID:xmE6C1ua.net
spyで見てどこにメッセージ届いてるか見ろ

570 :デフォルトの名無しさん:2017/04/14(金) 00:20:20.46 ID:+RGtmVs/.net
フォースを使うのじゃ

571 :デフォルトの名無しさん:2017/04/14(金) 00:39:04.52 ID:6ECgJlCU.net
Windows 10 Creators Update入れたら
DrawTextで大きめのフォントの描画が異常に遅くなった。
高DPI未対応のアプリは見捨ててGDIはシンプルに動いてほしい。

572 :デフォルトの名無しさん:2017/04/14(金) 05:38:58.24 ID:kIyPPZzD.net
>>567
2行目めちゃくちゃだなw

573 :デフォルトの名無しさん:2017/04/14(金) 10:41:54.49 ID:7fCdXhh/.net
>>561
>メッセージを適宜
それが質問内容でしょうよ。

>>566
タブコンに子ウィンドウ貼り付けて画面切り替えやキー入力受付なんて
日常茶飯事なのになにとち狂ったこと言ってるんだよ。

>>572
ほんとそう。
自分の知ってる単語を並べただけだわな。

574 :デフォルトの名無しさん:2017/04/14(金) 11:11:32.10 ID:LVRPT4/o.net
Win32APIの後継でc++/cliじゃないライブラリってないのかね?

575 :デフォルトの名無しさん:2017/04/14(金) 11:29:24.19 ID:iAr+rl+J.net
win32apiはオンリーワンで現役なので後継ってもんがそもそもなし
.netはラッパーライブラリ、cliは言語仕様
>>574の求めてる物の意味が分からん
UWPでも触ってろと言えばいいのか?

576 :デフォルトの名無しさん:2017/04/14(金) 15:40:59.51 ID:Z/bjVn5R.net
しいて言えばQtじゃね?
Qtのアプリって結構あるよね

577 :デフォルトの名無しさん:2017/04/14(金) 18:23:47.19 ID:R7yCPQGT.net
>>574
ライブラリってかAPIはユニバーサルwinのがそれじゃないの?

578 :デフォルトの名無しさん:2017/04/14(金) 18:31:24.82 ID:uRqmXJpf.net
WinRT API

579 :デフォルトの名無しさん:2017/04/14(金) 22:27:03.58 ID:Gjx6wpyy.net
ここでWTLがまさかの大復活を遂げるわけよ

580 :デフォルトの名無しさん:2017/04/15(土) 06:16:39.59 ID:qt9qpnGQ.net
ちょっとしたもんつくるにはwtlが一番いい

581 :デフォルトの名無しさん:2017/04/15(土) 18:14:11.71 ID:JjgxHVsv.net
>>574
Windows API
後継っつーか名前が変わっただけだが

582 :デフォルトの名無しさん:2017/05/05(金) 00:01:23.37 ID:j+7+fM28.net
Windows10S では Win32/.net アプリは動かないだと。
UWPに変換すれば行けるらしいが、もうおしまいか?

583 :デフォルトの名無しさん:2017/05/05(金) 00:15:11.42 ID:NU+YZp1H.net
Windows10Sが相手にされなくて終わるだけ。

584 :デフォルトの名無しさん:2017/05/05(金) 00:41:30.18 ID:W8ns9+oF.net
既に相手されていない感

585 :デフォルトの名無しさん:2017/05/05(金) 03:08:44.86 ID:IUUvTOhg.net
お前らが相手にされてないじゃん
おっさんしかいないだろうこのスレ

586 :デフォルトの名無しさん:2017/05/05(金) 08:12:57.54 ID:WdEsZnG0.net
今回のターゲット層はメインストリームじゃないから
既存のアプリが使えなくても不満は少ないと踏んでるんだろう
まあWindowsRTみたいに核爆死はしないんじゃないか
MSもそんなに数を出荷しないだろうから

もう一度WindowsRTをSurfaceやらに載せることを夢見ているのなら
やはりもう一度爆死するだろう

587 :デフォルトの名無しさん:2017/05/05(金) 18:13:03.55 ID:ERU+CvkU.net
教育用途だっけ
今時のキッズは学校支給タブレットの制限外してゲームしてるらしいからその点ではいいかもな

588 :片山博文MZ :2017/05/06(土) 18:59:21.43 ID:0OTJXmRc.net
あるプログラムで使用中のGDIオブジェクトの個数を数える方法はありますか?

589 :デフォルトの名無しさん:2017/05/06(土) 20:36:55.22 ID:TAVkl+y8.net
タスクマネージャで見れるよ

590 :デフォルトの名無しさん:2017/05/06(土) 20:50:23.24 ID:IA0Dpe0I.net
GetGuiResources(hProcess, GR_GDIOBJECTS)

591 :デフォルトの名無しさん:2017/05/06(土) 20:53:17.94 ID:Mwx5Td89.net
>>588
GetGuiResources
GR_GDIOBJECTS(0) Return the count of GDI objects.
ってあるし。

592 :片山博文MZ :2017/05/06(土) 20:54:47.07 ID:NWV3MG9s.net
ありがとー。

593 :デフォルトの名無しさん:2017/05/06(土) 21:06:22.69 ID:HiVS0qll.net
なにするつもりなのさ

594 :片山博文MZ :2017/05/06(土) 21:08:39.06 ID:NWV3MG9s.net
メモリーリーク対策やデバッグやらだよ。

595 :雪風:2017/05/06(土) 21:54:04.69 ID:QwsGrGdx.net
>>593
自演 オナヌーだろ

596 :デフォルトの名無しさん:2017/05/06(土) 22:06:22.10 ID:sQ11ayCM.net
書いてて恥ずかしくないの?

597 :デフォルトの名無しさん:2017/05/07(日) 02:01:32.34 ID:KMqw+OzL.net
memory leak detector
https://tocsworld.wordpress.com/2014/09/02/vc%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%AF%E6%A4%9C%E5%87%BA%E3%83%84%E3%83%BC%E3%83%AB/

598 :デフォルトの名無しさん:2017/05/07(日) 07:23:08.46 ID:fOF53fEF.net
firefoxとかリーク笑えるよな

599 :デフォルトの名無しさん:2017/05/09(火) 09:36:37.30 ID:PBqzgUoz.net
特定のアプリケーションがハング状態になってるかを判断する方法ありませんか?
.netではRespondingプロパティで判断できるようですがwin32apiでやりたいので

600 :デフォルトの名無しさん:2017/05/09(火) 09:45:13.26 ID:XSL1JKA6.net
そこまで分かってるならソース読めよ
https://github.com/Microsoft/referencesource/blob/master/System/services/monitoring/system/diagnosticts/Process.cs

SendMessageTimeoutでWM_NULLを投げてるだけだな

601 :デフォルトの名無しさん:2017/05/09(火) 10:04:41.73 ID:4hsRJ4JE.net
その質問コピペだよ

602 :デフォルトの名無しさん:2017/05/09(火) 10:17:40.46 ID:PBqzgUoz.net
ありがとうございました!

603 :デフォルトの名無しさん:2017/05/09(火) 11:30:51.02 ID:fjUlBZmQ.net
>>600
これ使ってDoS攻撃みたいなこと出来るんかな

604 :デフォルトの名無しさん:2017/05/09(火) 21:20:50.87 ID:2/UhKD8y.net
最近のアプリに多い、重い処理は別スレッドで実行してGUIが固まらないようにしてる場合は役に立たないかな

605 :デフォルトの名無しさん:2017/05/09(火) 21:48:08.53 ID:LCRfM0F6.net
>>604
それは「重い処理のときにハングアップしているように見える」というだけの話で、
そういうレベルでの意味ならマルチスレッド化によって役には立たない。
でもそういうマルチスレッド化したソフトウェアでも
画面描画の時の不具合などでハングアップすることもあるわけで役に立たないということはないよ。

606 :デフォルトの名無しさん:2017/05/09(火) 22:06:52.23 ID:2/UhKD8y.net
>>605
バグでずっと重い処理が終わらない場合を想定してた。ウィンドウメッセージは処理されるものの、事実上のハング。
確かに全く役に立たないわけではないね。

607 :デフォルトの名無しさん:2017/05/09(火) 23:47:50.15 ID:Ephb2XFu.net
ウィンドウがわかるならIsHungAppWindowってのがある

608 :デフォルトの名無しさん:2017/05/10(水) 02:35:27.31 ID:bnhY1qc6.net
>>606
動画の変換みたいに純粋に時間がかかる場合とか、ユーザーのクリック待ちとかもあるから、判断はできんだろうな

609 :デフォルトの名無しさん:2017/05/10(水) 02:56:46.04 ID:SJjrbjyQ.net
止めようとしても停まらないもの?
WindowsUpdateかな?

610 :デフォルトの名無しさん:2017/05/10(水) 11:25:51.30 ID:Cp7+CNi6.net
>>609
ネットワーク切れてからのタイムアウトも異常に遅いんだよな

611 :デフォルトの名無しさん:2017/05/14(日) 19:29:07.89 ID:QF9yNcvN.net
まだ見放されてないぞ

【IT】マイクロソフト、サポート切れOS「Windows 8、Windows XP、Windows Server 2003」にも修正ソフト提供

asahi.2ch.net
test/read.cgi/newsplus/1494723803

612 :デフォルトの名無しさん:2017/05/19(金) 19:48:39.48 ID:7xgwPeWo.net
質問ささてください
構造体AをGlobalAllocで領域を確保して値を入れた後、構造体BをGlobalAllocで確保すると、構造体Aのメンバであるポインタのアドレスが変わってしまうのですが何が原因なのでしょうか?

613 :デフォルトの名無しさん:2017/05/19(金) 20:35:00.88 ID:bDipVMhT.net
あるプロセスのメモリ情報のリージョンサイズや属性を調べるにはどのAPIを使えばいいですか?

614 :デフォルトの名無しさん:2017/05/19(金) 20:49:42.55 ID:McGsnd5l.net
>>612
Windowsは働き者の賢いOSだからなぁ

615 :デフォルトの名無しさん:2017/05/19(金) 21:09:20.04 ID:/MnRfLXT.net
動かしたくないならLockしてください

616 :デフォルトの名無しさん:2017/05/19(金) 21:11:02.62 ID:vqbyNvRL.net
>>612
GlobalAllocじゃなくて自分で書き換えてるんでしょ

617 :デフォルトの名無しさん:2017/05/19(金) 21:22:03.75 ID:Q8L1LGu9.net
>>612
GMEM_FIXEDを指定していないGlobalAllocでロックカウントが0の場合はメモリの再配置が起きる
GlobalLockとGlobalUnlockの間なら
「構造体Aのメンバであるポインタのアドレス」は変わることがないけど
GlobalUnlockを呼び出しロックを解除した場合は再配置される可能性がある

618 :デフォルトの名無しさん:2017/05/20(土) 18:36:33.10 ID:urI3JAo7.net
皆様レスありがとうございます
>>612
構造体BのGlobalAllocをコメントアウトすれば問題なく動くのでこれが原因なのはたぶん間違いないです

>>617
構造体A自体のLockやFIXは試しましたがダメでした。構造体Aは領域確保後にwinAPIに渡して値を格納してもらうのですが格納後にメンバ全ての固定が必要なのでしょうか?


ともあれメモリ再配置が原因なのですね。ありがとうございました。この方向でもう少し試してみます。

619 :デフォルトの名無しさん:2017/05/20(土) 18:43:52.60 ID:YAniTqrY.net
違うんじゃね

620 :デフォルトの名無しさん:2017/05/20(土) 19:05:41.41 ID:rnnQH6fx.net
ソースコードにイージーミスがある可能性の方がクッソ高いと思う

621 :デフォルトの名無しさん:2017/05/20(土) 19:06:46.68 ID:opost44+.net
>>618
そもそもの使い方が間違っているんじゃないか?

>構造体Aは領域確保後にwinAPIに渡して
そのwinAPIは何?
というかなぜ隠す必要があるのか

622 :デフォルトの名無しさん:2017/05/20(土) 19:08:39.87 ID:YAniTqrY.net
必要最小限の再現ソース晒してからだな

623 :デフォルトの名無しさん:2017/05/21(日) 02:26:55.08 ID:8+aEBKAw.net
構造体A、もしくはその近くのメモリ確保量が足りていないような気がする
スタック破壊、または、メモリ内容破壊では?

624 :デフォルトの名無しさん:2017/05/21(日) 10:34:21.57 ID:UufpipHO.net
>>613
VirtualQueryEx

625 :デフォルトの名無しさん:2017/05/21(日) 10:40:12.71 ID:8IHB32RP.net
すみません。自分がC++素人でメモリ周り疎いのでよくあるトラブルかなと思い、動作確認できている部分は抽象的に書きました。イージーミスの可能性はかなりあります。
ソースが手元にないのですが、具体的にはこのような処理をしています。スマホから書いたので文法ミスあるかもしれません。

メイン処理
DWOR count=0;
LPBYTE pStructA = (LPBYTE)GlobalAlloc(GHND,sizeof(0));

GetPrinterInfo(pStructA,&count);//自作関数 pStructAに構造体格納

/*ここでブレーク張ってpStructAのpNameのアドレスが正しい文字列指してるのは確認済み*/
PStructB pStructB = (PStructB)GlobalAlloc(GHND,sizeof(StructB)*count);

/*ここで改めてpNameを取得しようとするとpNameのアドレスがpStructBを確保する前と変わっている。元の文字列データは以前として前のアドレス上に存在してることは確認済み。pStructA自体のアドレスは変わっていない
*/
for(i=0 ;i<count;i++){
LPTSTR name= (((PRINTER_INFO_1*)pStructA)+count)->pName;
}
〜〜〜
自作関数 (動作確認済み)
DWORD GetPrinterInfo(LPBYTE pStructA, LPDWORD count){
DWORD result=0;
DWORD pNeeded=0;
//必要サイズ取得
EnumPrinter(PRINTER_ENUM_LOCAL,NULL,1,NULL,pdw
&pNeeded,count);
//必要サイズ再確保
Global ReAlloc(pStructA,pNeeded,GHND);
//ここでPRINTER_INFO_1構造体をpStructAに格納
EnumPrinter(PRINTER_ENUM_LOCAL,NULL,1,pStructA,pdw
pNeeded,count);
return result;
}

626 :デフォルトの名無しさん:2017/05/21(日) 11:10:23.22 ID:Bmvuj1qA.net
GlobalAllocの戻り値のハンドルを直接キャストしてポインタに代入したら駄目だろ
ハンドルを引数としてGlobalLockを呼び出して、その戻り値をキャストしてポインタに代入しろ

627 :デフォルトの名無しさん:2017/05/21(日) 11:25:17.73 ID:8zMWeNzv.net
蓋を開けてみればやはりこんなもんだ

628 : :2017/05/21(日) 11:29:51.82 ID:pUWFtSb1.net
p = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
HeapFree(GetProcessHeap(), 0, p);
でうまくやってるよ,GlobalAlloc は win3.1 の仕様を下敷きにしているので使いにくいよ

629 :デフォルトの名無しさん:2017/05/21(日) 14:52:03.05 ID:2E7Z41P0.net
オワコンだしな
今はもうmallocでいいよ

630 : :2017/05/21(日) 15:16:35.99 ID:pUWFtSb1.net
>>629
それはどこにあるのかな?

631 :デフォルトの名無しさん:2017/05/21(日) 16:25:59.44 ID:qIzrXw0L.net
>>625
関数の仕様ぐらい確認しろといいたい
https://msdn.microsoft.com/ja-jp/library/cc430065.aspx
GMEM_FIXEDを指定していないGlobalAllocはメモリハンドルを返す
アドレスではなくハンドルであり、このハンドルをGlobalLockに渡すことでメモリアドレスを取得できる

メイン処理
DWORD count=0;
HGLOBAL gm = GlobalAlloc(GHND,sizeof(0));
GetPrinterInfo(gm,&count);
LPBYTE pStructA = (LPBYTE)GlobalLock(gm);
for(i=0 ;i<count;i++){
LPTSTR name= ((PRINTER_INFO_1*)pStructA)[i].pName;
}
〜〜〜
DWORD GetPrinterInfo(HGLOBAL gm, LPDWORD count){
DWORD dwSize;
DWORD result=0;
DWORD pNeeded=0;
EnumPrinter(PRINTER_ENUM_LOCAL,NULL,1,NULL,0,&pNeeded,count);
Global ReAlloc(gm,pNeeded,GHND);
dwSize = GlobalSize(gm);
LPBYTE pStructA = (LPBYTE)GlobalLock(gm);
EnumPrinter(PRINTER_ENUM_LOCAL,NULL,1,pStructA,dwSize,&pNeeded,count);
GlobalUnlock(gm);
return result;
}

632 :デフォルトの名無しさん:2017/05/21(日) 16:40:14.23 ID:s+TjotGN.net
GMEM_MOVEABLE
移動可能メモリを割り当てます。Win32 環境では、物理メモリ内でメモリブロックが移動されることは決してありませんが、既定のヒープ内で移動することは可能です。
戻り値は、メモリオブジェクトのハンドルです。このハンドルをポインタへ変換するには、GlobalLock 関数を使います。
この値を GMEM_FIXED フラグと組み合わせることはできません。

Win32では移動することがないあるよって言ってるし、GPTRフラグを使うか、メモリ確保をmallocなりに置き換えたほうが良いね
EnumPrintersに渡すバッファのポインタは別になんでも良いみたいだし

633 :デフォルトの名無しさん:2017/05/21(日) 16:51:37.43 ID:UufpipHO.net
GlobalAllocはクリップボード弄る時くらいでいいよ

634 :デフォルトの名無しさん:2017/05/21(日) 18:27:54.67 ID:8+aEBKAw.net
こうゆう奴がプロジェクトにいると、デバックでは動くがリリースでは動かない
プログラムとか出来上がるんだろうな。。。

(もちろん、リリース+デバック情報埋込なら動く最悪のパターン)

635 :デフォルトの名無しさん:2017/05/22(月) 03:45:08.81 ID:6WP6IGo9.net
mallocでも、newでも好きなのつかったらいいんじゃね?

636 :デフォルトの名無しさん:2017/05/22(月) 07:02:35.87 ID:1fjxccfj.net
sizeof(0) ...

637 :デフォルトの名無しさん:2017/05/22(月) 10:58:01.86 ID:ZhEHdQZR.net
みなさま本当にありがとうございました。
メモリ確保の方法に関しては古いのはなんとなくわかってるのですが、意見できる程知識がないのが実情です……
ともあれ解決方法の兆しが見えたので頑張ってみます。

>>634
耳が痛いですが自分も本当にそう思います……個人的には勉強になるのでいいんですが……
リリース気をつけておきます

638 :片山博文MZ :2017/05/26(金) 15:19:18.57 ID:hi3mNk6y.net
※未承認広告※
Win32メッセージクラッカー簡単入力。
MsgCrack
https://github.com/katahiromz/MsgCrack

639 :片山博文MZ :2017/05/27(土) 10:36:14.50 ID:je1Ltzc3.net
※未承認広告※
これがWin32のラバーバンドやで。重要な技術だから、確認しとくれや。
https://github.com/katahiromz/RubberBandSample

640 :デフォルトの名無しさん:2017/05/27(土) 10:39:23.30 ID:I7pwMhhb.net
皆さんは、ダイアログの HWND に対し SetWindowLongPtr, GetWindowLongPtr を使用する場合
GWLP_USERDATA と DWLP_USER をどのように使い分けていますか?

641 :デフォルトの名無しさん:2017/05/27(土) 13:16:53.40 ID:olQh0zw8.net
使い分けもなにも
get してから & とか | とかして set してる

642 :デフォルトの名無しさん:2017/06/14(水) 11:22:26.39 ID:+7k/9HY0.net
エディットボックスにES_MULTILINEを付けると
Ctrl+Aですべて選択ができなくなってしまうのだけど、
これはなにか技術的な理由があってのことですか?
それとも、昔から修正されていないだけのバグですか?

643 :デフォルトの名無しさん:2017/06/14(水) 11:39:15.66 ID:+7k/9HY0.net
642の追記ですが、ES_MULTILINEだけでなく、ES_READONLYを付けたときも、
同じようにCtrl+Aが効かなくなるようです。

644 :デフォルトの名無しさん:2017/06/14(水) 12:11:52.68 ID:Jdv7hZ4r.net
>>643
それはサブクラス化で対応

645 :デフォルトの名無しさん:2017/06/14(水) 12:19:57.15 ID:+7k/9HY0.net
>>644
つまり、ES_MULTILINEやES_READONLYはCtrl+Aに対応すべき状態ではない
というような技術的な理由があるわけではなく、
単にマイクロソフトが修正していない昔からのバグで、
サブクラス化などで対応しても問題ないものなんですよね?

646 :デフォルトの名無しさん:2017/06/14(水) 13:35:54.11 ID:pxuX+RKK.net
ctrl+aが全選択という統一ルールがないとかなんとか

647 :デフォルトの名無しさん:2017/06/14(水) 19:35:40.93 ID:+7k/9HY0.net
>>646
エディットボックスが常にCtrl+Aを扱っていないなら納得するんですが、
ES_MULTILINEやES_READONLYが付いているときだけ効かなくなるんです。

648 :デフォルトの名無しさん:2017/06/15(木) 10:24:59.35 ID:0e975zeL.net
>>647
挙動としては認識通り
技術的な問題ではないのでサブクラスなりインスタンスなりのKeyDownイベントでSelectAll()して構わない
普通はついでにCopy()やCut()のショートカットキー処理もつけておく

649 :デフォルトの名無しさん:2017/06/15(木) 11:09:41.39 ID:pFacwd6b.net
>>648
解説ありがとうございます。
エディットボックスの処理を信じずに、Ctrl+Aなどの動作を載せてしまいます。

650 :デフォルトの名無しさん:2017/06/23(金) 01:36:52.51 ID:/7Z8Xk53.net
CLIP STUDIO PAINTのようにツールっぽくする為にウインドウ全体を茶色に統一するようなWin32APIと言うのがありますでしょうか?
SKINかもしれないのですがSKINの仕方が解りません。

それとMediBang Paint Proのようにウインドウ全体でなくメニューとツールウインドウだけを茶色に統一する方法も
解りましたらお願いします。

651 :デフォルトの名無しさん:2017/06/23(金) 03:31:09.37 ID:1Ua/Rfq9.net
>>650
ないです。

652 :デフォルトの名無しさん:2017/06/23(金) 10:30:01.91 ID:0OdP20aK.net
中学生でもランサム作ってるんだから
がんがれ

653 :デフォルトの名無しさん:2017/06/24(土) 05:45:55.83 ID:AiSsJYjg.net
>>652
ランサムだけなら誰でもできる。ランサムウェアと呼ぶから重要なことが抜けて伝わってしまう。

654 :デフォルトの名無しさん:2017/06/24(土) 12:23:00.00 ID:29Lhuze+.net
ただのバッチだったしな

655 :デフォルトの名無しさん:2017/06/24(土) 12:44:27.58 ID:TJcGM6+6.net
警察は実績が欲しく、子供は有名になりたかったらしいので
両者の思惑が一致した最高の形なんだろう

656 :デフォルトの名無しさん:2017/06/24(土) 18:30:11.33 ID:AiSsJYjg.net
>>654
重要なのはWindowsの穴をついてプログラムを実行できたところだからね。

657 :デフォルトの名無しさん:2017/06/24(土) 18:34:45.55 ID:xexj0oOj.net
穴ついてたのかよw
どうせこのbat実行してね、だろうと思ってたんだが違ったか

658 :デフォルトの名無しさん:2017/06/24(土) 18:47:24.91 ID:fDMY1AQ8.net
エッチなビデオ.avi .bat
とかじゃないの?

659 :デフォルトの名無しさん:2017/06/24(土) 19:05:41.31 ID:xexj0oOj.net
軽くぐぐってみたがどこの穴ついたかわからなかった

660 :デフォルトの名無しさん:2017/06/24(土) 20:21:25.60 ID:sGEalsxM.net
そういえば歴代OSの擬人化
みんな女の子だったよな
穴あって当然だな

661 :デフォルトの名無しさん:2017/06/24(土) 20:22:32.89 ID:fDMY1AQ8.net
男の子にだって穴はあるよ?

662 :デフォルトの名無しさん:2017/06/24(土) 20:25:44.81 ID:sGEalsxM.net
アッー!

663 :デフォルトの名無しさん:2017/06/24(土) 21:08:00.00 ID:eqxuJWIk.net
こないだの WannaCrypt ランサムの話なら SMB の穴だけど

664 :デフォルトの名無しさん:2017/06/24(土) 21:26:43.99 ID:xexj0oOj.net
中学生WannaCryptt使ってたのかよ・・・

665 :デフォルトの名無しさん:2017/06/25(日) 16:33:39.46 ID:WhQ0StjH.net
バッチファイルを書き換えられると危険が危ないと書いてある
朝日新聞の記事を読んだだけなのでよくわからないけど、
暗号化するプログラムをコピペで作ったんでしょう?
暗号化するバッチをコピペで作っただけなの?

どっちにせよ、穴は使ってない、ただのオナニーだった感じなんだが。

666 :デフォルトの名無しさん:2017/06/25(日) 17:24:22.61 ID:wnVI7vr5.net
>>665
じゃあどうやってファイルを書き換えたんだよ?

667 :デフォルトの名無しさん:2017/06/25(日) 17:29:15.45 ID:ZffRoDi0.net
バッチファイル実行前にファイル書き換えたのか?

668 :デフォルトの名無しさん:2017/06/25(日) 17:35:36.22 ID:wnVI7vr5.net
ランサムウェアよりも前に穴をつくマルウェアが出てきて、そのマルウェアを参考にしたのが、今回のランサムウェアだと思うが。

669 :デフォルトの名無しさん:2017/06/25(日) 18:10:10.89 ID:ZffRoDi0.net
その元になったマルウェアは何なんだ?

670 :デフォルトの名無しさん:2017/06/25(日) 18:17:51.52 ID:gomAIGS/.net
nimda

671 :デフォルトの名無しさん:2017/06/25(日) 18:22:48.05 ID:WhQ0StjH.net
>>666
crypt.exe c:\windows\*.*
echo 暗号化しました金払え

こんな感じ。

672 :デフォルトの名無しさん:2017/06/25(日) 18:43:40.36 ID:ZffRoDi0.net
>>670
nimdaで中学生逮捕って情報見つからん。ソースどっかある?

673 :デフォルトの名無しさん:2017/06/25(日) 22:03:09.80 ID:mrQK8XKT.net
いい加減にしろよ
引っ込みつかなくなった奴のマウント取って喜ぶような
小学生並みの神経してんのかお前は

674 :デフォルトの名無しさん:2017/06/25(日) 22:11:16.11 ID:a6wiqT5o.net
そんなキレるような話なのか

675 :デフォルトの名無しさん:2017/06/25(日) 22:42:25.16 ID:x/CHo8JV.net
windows10のGDI描画をXP相当にするAPIは無いものかのう

676 :デフォルトの名無しさん:2017/06/25(日) 23:05:37.96 ID:WhQ0StjH.net
>>672
誰がnimdaで中学生逮捕なんて話をしてんだ?
脳みそ湧いてんの?

677 :デフォルトの名無しさん:2017/06/25(日) 23:21:44.20 ID:43L7ow5i.net
>>675
visual style、runa style...いわゆる ThemeAPI の話?
なら、いわゆるスキンの類だと思うので API とか GDI とかの階層の話じゃないと思う。

カスタマイズでどうにかって話になるか、
ttps://www.japan-secure.com/entry/how_to_customize_the_windows_10_to_windows_xp.html

XP から theme.dll をぶっこ抜き・・・うーんワスレタ

678 :デフォルトの名無しさん:2017/06/26(月) 05:22:59.28 ID:PKYMbkgl.net
>>677
THX もう少し研究してみます

679 :デフォルトの名無しさん:2017/06/26(月) 12:35:00.28 ID:H+izVTcm.net
XP風は好きじゃないので
2000風にしたいな

680 :デフォルトの名無しさん:2017/06/26(月) 12:42:47.84 ID:SXHfurBW.net
>>675
MFCとかを使っていいのなら、そういうライブラリは売ってるけどな。

681 :デフォルトの名無しさん:2017/06/27(火) 16:01:04.05 ID:SkJ0mgKG.net
>>675
GDIのAPI自体は変わってないと思うんだけど
Direct3Dを通さないで描画するとかならもう無理じゃね

682 :デフォルトの名無しさん:2017/06/27(火) 18:31:38.30 ID:5NUjqPYf.net
そういう話じゃないんじゃね

683 :デフォルトの名無しさん:2017/06/27(火) 18:49:42.58 ID:ZZnYACXF.net
自分のアプリだけならオーナードロー
OS全部なら方法わからん

684 :デフォルトの名無しさん:2017/06/27(火) 22:00:01.81 ID:EYZSSY+5.net
OS全体ならXP時代によくやってたtheme.dllの差し替えでいける・・・はずなんだが
XP時代でしか通用しない技なのかも知れんね

685 :デフォルトの名無しさん:2017/06/27(火) 23:05:04.28 ID:c8HyVbZT.net
だってそれまんま脆弱性だし

686 :デフォルトの名無しさん:2017/06/28(水) 01:51:29.20 ID:AXq98w3R.net
なあに、グローバルフックすりゃなんとななるやろ(鼻ほじ

687 :デフォルトの名無しさん:2017/06/28(水) 05:06:05.09 ID:7tvQPx7M.net
なんとかなればそれも脆弱性だっていう

688 :デフォルトの名無しさん:2017/06/28(水) 06:37:49.26 ID:RlkwH7vS.net
脆弱性って意味わかってんのかな・・・

689 :デフォルトの名無しさん:2017/06/28(水) 07:28:38.92 ID:7tvQPx7M.net
お前こそ

690 :デフォルトの名無しさん:2017/06/28(水) 10:07:49.00 ID:bCVBq3sa.net
MSのハンコ入りなら大丈夫

691 :デフォルトの名無しさん:2017/06/28(水) 10:45:09.51 ID:dLzkw9+d.net
どういうつもりでみんなGDI描画という言葉を使ってるのかわけわからんな

692 :デフォルトの名無しさん:2017/06/28(水) 14:01:52.20 ID:MYEGHP5e.net
GDI 描画と言えば FillRect とかの、HDC 用いるグラフィック描画で、
Windows 10 でも Windows 3.1 でも基本的に動作同じだよね。

693 :デフォルトの名無しさん:2017/06/28(水) 14:02:36.67 ID:MYEGHP5e.net
↑動作というか出力というか

694 :デフォルトの名無しさん:2017/06/28(水) 14:03:11.40 ID:bCVBq3sa.net
>>692
違うよ
ルートウィンドウの扱いとかキャプチャしてみると違いが判る

695 :デフォルトの名無しさん:2017/06/28(水) 14:14:49.61 ID:PPOfwgdP.net
そりゃ違うけど同じだよ

696 :デフォルトの名無しさん:2017/06/28(水) 14:27:13.10 ID:NYSM+Urs.net
ウィンドウシステムの動作は GDI では規定されていないだろ。
以上、異論は無視する。

697 :デフォルトの名無しさん:2017/06/28(水) 16:20:30.66 ID:DxMay05+.net
>>692 が考えてる範囲が(以下略)

698 :デフォルトの名無しさん:2017/06/28(水) 20:15:54.39 ID:BLqcsHlp.net
矩形を塗りつぶすという意味の範囲では同じだな

699 :デフォルトの名無しさん:2017/06/28(水) 20:21:27.87 ID:azrexzpP.net
FillRectはuser32.dll

700 :デフォルトの名無しさん:2017/06/29(木) 05:23:51.54 ID:RYKjplhO.net
dwm.exe というデスクトップマネージャーのプロセスがGUI描画の番人になってるからXP再現は無理でしょ。

701 :デフォルトの名無しさん:2017/06/29(木) 06:47:05.22 ID:LierOJHW.net
xpからファイル持ってきてosにぶちこむのができないからって
>>675ができないというわけじゃない

702 :デフォルトの名無しさん:2017/06/30(金) 09:55:47.80 ID:pDIkSJMf.net
VM使えよ

703 :デフォルトの名無しさん:2017/06/30(金) 10:04:08.61 ID:8lmMmyG2.net
Win10 SDK で作ると Windows 8.1 で動かないんだっけ?

704 :デフォルトの名無しさん:2017/06/30(金) 10:24:15.07 ID:JfivK6eA.net
動くよ

705 :デフォルトの名無しさん:2017/07/01(土) 00:02:15.02 ID:E7tKWa34.net
確かにそう書いてあるな
Windows 7 SP1 以降がターゲットなら Win10 SDK でいいのか。

https://developer.microsoft.com/ja-jp/windows/downloads/windows-10-sdk

706 :デフォルトの名無しさん:2017/07/01(土) 00:55:09.30 ID:SrP9qrPF.net
Win10SDKにまだ手を出していないんだけど、ようするに
Platform SDK、Windows SDK と思っていいんだよね?

707 :デフォルトの名無しさん:2017/07/01(土) 02:14:37.92 ID:3PhSHuZP.net
>>706
Win10SDKは directX SDK が変な統合のされ方しててインクルード警告が沢山でる。実害はない。

708 :デフォルトの名無しさん:2017/07/03(月) 01:10:58.28 ID:u//qTFEB.net
http://fast-uploader.com/file/7054567135089/
ウインドウを表示するだけのC++コードなんですが
ウインドウを消して終了しようとするとアクセス違反の例外が発生します
誰か解決方法を教えてください

709 :デフォルトの名無しさん:2017/07/03(月) 20:14:34.18 ID:pLc9U1QI.net
const WCHAR *className = L"MainWindow";

static const WCHAR *className = L"MainWindow"; 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


710 :デフォルトの名無しさん:2017/07/03(月) 22:00:50.05 ID:QZMxmlWX.net
>>708
WM_NCDESTROY だか WM_POSTNCDESTORY が来るまで
window のインスタンスを消しちゃいけなかったような

PostQuitMessage の前に DestroyWindow しておけば良かったような

711 :デフォルトの名無しさん:2017/07/04(火) 00:24:40.83 ID:UJlaPfcf.net
VS2017でそのままビルド実行してみたけど例外など発生せずに正常に終了した
何か条件とかあるのかね

712 :デフォルトの名無しさん:2017/07/04(火) 00:48:55.57 ID:vYvTEYNl.net
708です
原因がわかりました
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/12b5bb0f-d2f1-470b-9b9b-39e3e834aa80/win32api?forum=vcgeneralja
ウイルスバスターが原因でした
許さんぞ

713 :デフォルトの名無しさん:2017/07/04(火) 02:04:52.19 ID:XS8CaxP/.net
とはいえ、
「ウイルスバスターを利用されている場合はエラーが出ます」
ってわけにもいかないだろうからこの先面倒だね。
健闘をお祈りします。

714 :デフォルトの名無しさん:2017/07/04(火) 02:37:05.07 ID:48gcNEwZ.net
ウィルスバスター入れてても、その自作プログラム以外のソフトでは
そういう終了時に例外が出る問題は出ないんだよね?
とすると、そのプログラムが何かを踏んでるようにみえるけど

715 :デフォルトの名無しさん:2017/07/04(火) 02:41:32.21 ID:DygcEzqH.net
原因は >>710 で大方間違いないし

716 :デフォルトの名無しさん:2017/07/05(水) 10:54:07.33 ID:Qpg00Afa.net
>>708
>>710
while( GetMessage( &msg, NULL, 0, 0 ) < 0 )
じゃないのか

717 :デフォルトの名無しさん:2017/07/05(水) 11:14:56.55 ID:K9O/lDO5.net
GetMessageの戻り値が-1ならbreakもな

718 :デフォルトの名無しさん:2017/07/06(木) 14:11:37.94 ID:eR2pXU0u.net
ウイルスバスター側にしてみれば
DestroyWindow されてないのに SendMessage したら落ちたww
ということだろうな

719 :デフォルトの名無しさん:2017/07/06(木) 19:13:43.60 ID:Uj2/753t.net
>>712
static LRESULT CALLBACK proc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )

wc.lpfnWndProc = &proc;

これはどういうことかね、くわしく説明してもらおう

720 :デフォルトの名無しさん:2017/07/09(日) 21:40:21.92 ID:u50+Yb/E.net
Windows10タブレットで、画面の右端のメニュー(?)でディスプレイの明るさを変更できるじゃないですか。
あれをプログラムから変更できるようにしたいんですが、Win32APIで可能ですか?

721 :デフォルトの名無しさん:2017/07/09(日) 22:21:40.92 ID:sO4xRRZ4.net
>>720
PowerWriteACValueIndex
難易度高めだよ

722 :720:2017/07/09(日) 22:58:40.50 ID:u50+Yb/E.net
>>721
ありがとうございます!
む、難しいですか・・・。
頑張ってみます!

723 :デフォルトの名無しさん:2017/07/11(火) 10:34:24.01 ID:x+ezuj+Y.net
ソケット通信でUDPでrecv関数でデータ取ってるのですが
これrecvでデータを取る前に何バイト溜まってるか確認するAPIあったら教えてください

724 :デフォルトの名無しさん:2017/07/11(火) 11:58:32.19 ID:EEzJWlBe.net
>>723
.netではioctlsocketでFIONREADを読んでるっぽいのでそれでいんじゃね

725 :デフォルトの名無しさん:2017/07/11(火) 15:22:08.77 ID:x+ezuj+Y.net
>>724
おお、マジでできましたありがとう

726 :デフォルトの名無しさん:2017/07/12(水) 22:50:08.62 ID:scyI/W/6.net
#include <thread>
using namespace std;

・・・

SOCKET Sock = accept( ・・・ );

だとエラーになるんですが、

threadをincludeしない、あるいはusing namespace stdを書かないと、
正常なソケットを返します。

なぜこんなことが起こるのでしょうか??

727 :デフォルトの名無しさん:2017/07/13(木) 11:47:56.92 ID:vFZ8mgsl.net
名前が衝突してるから

728 :726:2017/07/13(木) 19:49:38.44 ID:NRXck0Ni.net
>>727
でも、エラーもなくコンパイル通りますし、VS上で定義を参照しても、
いずれの場合もWinSockのaccept()が参照されます。

同じWinSockのAPIでbind()がstd::bind()と衝突することはありましたが、
今回のaccept()はそれとは違う感じです。

729 :デフォルトの名無しさん:2017/07/13(木) 19:54:13.72 ID:EhXEoqOX.net
エラーになるけどエラーないってことか

730 :デフォルトの名無しさん:2017/07/13(木) 20:11:37.92 ID:WT5N9OT5.net
>>728
エラーになる最小のコードを晒さんとなんとも言えんわ

731 :726:2017/07/13(木) 20:44:11.52 ID:NRXck0Ni.net
>>729
コンパイルエラーはありませんが、
実行時にaccept()がエラーを返します。

>>730

#include <winsock.h>
#pragma comment( lib, "wsock32.lib" )

#include <thread>
using namespace std;

int main()
{
WSADATA WSAData;
WSAStartup( MAKEWORD( 1, 1 ), &WSAData );

SOCKET SockListen = socket( AF_INET, SOCK_STREAM, 0 );

SOCKADDR_IN Addr;
Addr.sin_family = AF_INET;
Addr.sin_addr.s_addr = htonl( INADDR_ANY );
Addr.sin_port = htons( 1234 );

bind( SockListen, ( SOCKADDR* )&Addr, sizeof( SOCKADDR ) );

listen( SockListen, 1 );

SOCKET SockAccept = accept( SockListen, NULL, NULL );

closesocket( SockAccept );
closesocket( SockListen );

WSACleanup();

return 0;
}

これが、accept()がエラーを返すコードです。
#include <thread>かusing namespace std;のいずれか、あるいは両方をコメントアウトすると
正常なソケットを返します。
IDEはVisual Studio Express 2015 for Windows Desktopです。

732 :726:2017/07/13(木) 20:49:20.67 ID:NRXck0Ni.net
自己解決しました!
std::bind()とwinsockのbind()が入れ替わってました!
::bind()とすればaccept()もエラーを返さなくなりました。
以前はエラーが出たと思ったのですが、うっかりしてました・・・。

失礼しました!

733 :デフォルトの名無しさん:2017/07/13(木) 20:58:52.65 ID:WT5N9OT5.net
ドンマイ

734 :デフォルトの名無しさん:2017/07/13(木) 21:25:50.23 ID:ICDc/LUP.net
bindというマクロが定義されてるライブラリがあって困ったことがあるな

735 :デフォルトの名無しさん:2017/07/14(金) 10:38:54.13 ID:V0t+uF1e.net
>>728
名前衝突のときエラーメッセージみるのは
リンク時だろ

736 :デフォルトの名無しさん:2017/07/14(金) 12:41:08.29 ID:g8QLqbc9.net
>>735
今更だし
的はずれだし

737 :デフォルトの名無しさん:2017/07/14(金) 14:56:41.55 ID:QI5b+orn.net
>>731
>using namespace std;
そもそもコレできるけど関数名書かないならやらない方がいい

738 :デフォルトの名無しさん:2017/07/14(金) 21:54:21.02 ID:rNsHAWgc.net
エンコードした動画データをWinSockを使ってUDPで送信しているんですが、
通信速度が妙に制限されている感じがします。

送信PC → (有線LAN GbE) → Wi-Fiルーター → (無線11ac) → Winタブ

有線の方はGbEなのに、データ量を増やすと8Mbpsあたりで頭打ちになり、
無線の方も11acなのに3Mbpsあたりで受信が頭打ちになります。
(いずれもタスクマネージャーのパフォーマンスタブで確認)

無線の方は最初もっと酷くて、調べたらワイヤレスアダプタが省電力モードになっていたので、
これを解除すると改善はしたのですが、それでも上記の通り3Mbps程度です。
実効帯域は理論値には及ばないとは思いますが、それにしても酷くないですか??
何かリミッターがかかっているのでしょうか?
それともこんなもんでしょうか?

739 :デフォルトの名無しさん:2017/07/15(土) 00:49:20.22 ID:9CUWPUhe.net
受け取り側WinXPにしても速度一緒かね?
DDOS対策されたに一票

740 :デフォルトの名無しさん:2017/07/15(土) 11:33:44.05 ID:UAO9e8fy.net
>>738
jumboフレームにしてないとかいうオチ

741 :デフォルトの名無しさん:2017/07/15(土) 17:41:49.53 ID:9CUWPUhe.net
jumboじゃなくても100MBsecぐらいすぐ出るかと

742 :デフォルトの名無しさん:2017/07/15(土) 19:33:47.48 ID:jhhap/jh.net
1byte毎にsend()してるとかかも w

743 :デフォルトの名無しさん:2017/07/15(土) 19:39:10.00 ID:GPnBT/AI.net
>>742
+1

744 :738:2017/07/17(月) 11:59:14.97 ID:/eGUIGmm.net
>>739
XPのPCがないので検証できないですね。
DDOS対策だとすると、成す術なしでしょうか・・・。

>>740
ジャンボフレームの設定は、Surfaceではできないみたいです。
仮にジャンボフレームじゃないにしても、今の帯域は小さすぎる気がします。

>>742
送り側はsendto()で、一度に送れる最大サイズの65507バイトで送ってます。

745 :デフォルトの名無しさん:2017/07/17(月) 15:26:50.32 ID:JChZsj9+.net
>>744
むしろ一度に送りすぎでは?
etherのフレームに入り切らないとipレベルでフラグメンテーションを起こして余計遅くなることもある。
1500-20-8=1472以下だとどうなる?

746 :デフォルトの名無しさん:2017/07/18(火) 07:29:21.72 ID:pxoS8Rlj.net
>>744
ソケットのバッファが溢れているのかもしれない。UDPだからsendしても黙って破棄されうる。これが原因だったらsetsockoptで送信、受信のバッファを大きくすれば良い。
また、UDPではOSが送信速度の調節をしないから、アプリケーション側で一定の速度でsendしないと途中のデバイスや受信側で破棄されることもある。
例えば、5Mbpsで送っているつもりでも、10ms間に500Mbpsで送り、後の990msは何もしていない可能性がある。その場合途中のWi-Fiルータのバッファが溢れるかもしれない。
送信用のスレッドを作り、send毎に経過時間と送信量を調べ、適当にsleepさせれば良い。

747 :デフォルトの名無しさん:2017/07/18(火) 13:10:40.68 ID:Qgn2HB2W.net
LANケーブルの方は10Mbpsでリンクアップしてない?

748 :デフォルトの名無しさん:2017/07/18(火) 13:18:25.28 ID:LIY57LJN.net
パケットキャプチャしないの?

749 :738:2017/07/18(火) 23:58:54.20 ID:wXjNiN5C.net
本日、色々検証してみまして、分かったことを書きます。

送信側(優先)のPCで、whileループでひたすらsendto()しまくる単純なプログラムを動かしたところ、
何と1Gbps近く出ました!
動画圧縮・送信アプリで送信制限があるかに見えたのは、
単にエンコードのAPIが、一定以上のビットレートではデータサイズが飽和しているだけのようです。
このアプリを複数起動したところ、1プロセス×起動数分の帯域(12Mbps等)をちゃんと消費しました。

しかし、一方の受信側(無線)のタブレットPCでは、whileループでひたすらrecvfrom()しまくっても
5Mbps程度でやはり頭打ちしました。

これらはすべてUDPでの送受信ですが、
試しにTCPではどうか検証してみたところ、
フリーのFTP転送アプリで、送受信ともに、何と200Mbpsくらい出ました!

そんなバカな、と思い、自分でTCP送受信だけをひたすら行う単純なプログラムを書いて実行してみたところ、
200Mbpsには至らなかったものの、26Mbpsくらいまでは送受信ともに出せました。
なお、帯域を大きくすればするほど、送信に失敗する確率が高まる傾向が見られました。
これはTCPで見られる、受信側のバッファ枯渇によるものと思われます。
アプリ側でsetsockopt()で受信バッファを拡張してやると改善し、上記bpsに至りました。

FTP転送アプリがなぜ200Mbpsも叩き出せたかは分かりませんが、
今回の動画送受信アプリでは26Mbpsでも十分な帯域なので、結果的にはUDPからTCPに変更ことで対策が完了しました。

750 :738:2017/07/19(水) 00:04:16.35 ID:eXD5VvDv.net
今回の検証で、以下のような仮説が立ったのですが、いかがでしょうか?

・11acにまで広帯域化し、TCPの再送制御等のオーバーヘッドが相対的に小さくなった
・11acで帯域は向上し、エラーレートも抑えられているものの、パケットロスする絶対数(機会)は
増加しているため、UDPには向かなくなっている

こうなると、「大容量のデータを効率的に送受信」というUDPのメリットは失われ、
ブロードキャスティングでデータ共有の利点が残る程度になるのかなぁ、という感じです。

この考察は的を射ているでしょうか?
だとしたら、業界では知られてることなんでしょうかね?

751 :デフォルトの名無しさん:2017/07/19(水) 01:57:20.58 ID:Q4K+dCVc.net
>>750
@TCPのオーバーヘッドは送受信の処理が重いことが主で、別にそれほど帯域を浪費する訳ではない。
ヘッダによる消費は、UDPだと1500バイト中28バイト、TCPだと1500バイト中40バイト。TCPだと適宜ACKが返ってくるが、それも各パケット数十バイト。
送受信側の処理速度向上が大きい。
AUDP向きかどうかは当然何をしたいかに依る。
TCPの処理が邪魔になる場合(遅延やパフォーマンス等の理由で)、「何もしない」UDP上に独自の実装をする。TCPで問題ないならTCPで良い。
信頼できるストリーム通信が必要なら、結局UDP上にTCPもどきを作ることになるだけ。
BTCPの欠点に、RTTが大きいと遅くなることがある。海外との大量のファイル転送はUDP上の独自プロトコルで行ったりする。あと、TCPoverTCPはパフォーマンスが劣化するから、VPNやトンネリングはUDP上が良い。
また、コネクションレスであることは、NATやFWを越える時に便利だったりする。
C普通、何もしないUDPは、余計な処理をするTCPより遅くはならない。UDPで5Mbpsしか出ないのは、どこかのバッファが溢れているか、大きすぎるデータをsendしてフラグメンテーションを起こしているかどちらかの可能性が高い。

752 :デフォルトの名無しさん:2017/07/19(水) 09:22:44.41 ID:q1yo5LZE.net
>>750
>・11acで帯域は向上し、エラーレートも抑えられているものの、パケットロスする絶対数(機会)は
>増加しているため、UDPには向かなくなっている

そんなにパケットロスしているとtcpも速度出ないですよ。
原理的には、制御して再送する分だけudpより遅くなるでしょう。

udp で速度が出ないのは主として送受信側のバッファ溢れでしょうから、

・送信側は溢れないレートで送信する
例えば帯域1GHz WiFi で 1Gbps で送信したら帯域を食い潰して受信側へ再送出できませんよね。
ケーブルの場合と違って電波は PC->基地局-> 受信側とairを2回経由します。
あまり大量に送ると基地局まで届いてもそこでドロップされます。

・read側はなるべくread I/O を発行しっぱなしにしてあげる
スレッド使うなどカーネルの受信バッファあてにしないで頑張る。

753 :デフォルトの名無しさん:2017/07/19(水) 11:44:11.55 ID:+fK80sDM.net
>>749
FTPはpasvじゃね

754 :デフォルトの名無しさん:2017/07/19(水) 22:12:25.78 ID:54vs2xq7.net
>>750
> 今回の検証で、以下のような仮説が立ったのですが、いかがでしょうか?
全然的はずれ

755 :738:2017/07/19(水) 23:45:01.11 ID:eXD5VvDv.net
詳細なご助言、ありがとうございます。
ソケットプログラミングを舐めてました・・・。
勉強します。

756 :デフォルトの名無しさん:2017/07/23(日) 21:24:45.77 ID:i/1Azv/r.net
Windows10の環境で、ShowCursor(FALSE);、ShowCursor(TRUE);
が何故か動かないですが、原因わかりますか?代用のAPIってありますか?
カーソルの形状を透明に置き換えるしかないかな。。。

757 :デフォルトの名無しさん:2017/07/23(日) 21:33:57.11 ID:gJMUPJMf.net
>>756
自分のプログラムではWindows10で動いてるよ。

複数回呼んだりしてない?
ShowCursor()は内部の参照カウントみたいなのをインクリメント/デクリメントして、
0以上かどうかで表示/非表示が変わる。
確実にやるならwhile文で戻り値(カウント値)をチェックしてやる。

758 :デフォルトの名無しさん:2017/07/24(月) 00:50:38.22 ID:Q/sCu+tw.net
自分のアプリ内だけ消したいとかならWM_SETCURSORでSetCursorにぬるぽ渡してるなあ

759 :デフォルトの名無しさん:2017/07/24(月) 01:03:43.40 ID:ApWJ+3q2.net
動かない原因がわかりました。。。
自分のWINDOWを表示していない場合、カーソル非表示にならないっぽいです。

ジョイスパッドで操作するマウスを作っていて、マウスを移動した後で、
自動的にマウスカーソルの表示/非表示したかったのですが、
自分のウインドウを表示していないためにうまくいかない;;

カーソルの形状変えて回避を試すか、透過ウインドとかで回避?

760 :デフォルトの名無しさん:2017/07/24(月) 01:40:41.42 ID:ApWJ+3q2.net
もしかして、フック使わないとだめ?

761 :デフォルトの名無しさん:2017/07/24(月) 02:06:27.33 ID:etlzFZfn.net
どうだったかなぁ
グローバルにマウスカーソルを消す方法はあったかなぁ
相当な迷惑行為だからなぁ
そんな事をしたい奴も居ないだろうしなぁ

762 :デフォルトの名無しさん:2017/07/24(月) 02:58:51.42 ID:mnSWSFmQ.net
透過ウィンドウが王道じゃなかったか
忘れたけど

763 :デフォルトの名無しさん:2017/07/24(月) 08:28:59.85 ID:axe1Ox+X.net
透過ウィンドウ最大化でなんとかしてた

764 :デフォルトの名無しさん:2017/07/24(月) 15:15:22.73 ID:BdqEvISL.net
vfd

765 :デフォルトの名無しさん:2017/07/25(火) 00:03:21.82 ID:SY0Mxk4f.net
SetSystemCursorで一応変更できるけど完璧にはできない

766 :デフォルトの名無しさん:2017/07/26(水) 21:44:38.92 ID:dmLhcxPj.net
マウスの件ですが、サイズ1x1のウインドウを作って、WM_TIMERでウインドウを追尾するようにして対処しました。
透過ウインドでアルファ1設定しています。0にしちゃうとダメっぽいです。もっといい方法あるのでしょうか?
hWnd = CreateWindowEx(WS_EX_TOPMOST | WS_EX_LAYERED, szWindowClass, szTitle,WS_POPUP,0, 0, 1, 1, NULL, NULL, hInstance, NULL);
SetLayeredWindowAttributes(hWnd, 0, 1, LWA_ALPHA); // 透明1
int n;do { n = ShowCursor(0); } while (n >= 0); // マウスカーソルを消す
case WM_TIMER: POINT pt;GetCursorPos(&pt);SetWindowPos(hWnd, HWND_TOPMOST, pt.x, pt.y, 0, 0, SWP_NOSIZE);

767 :片山博文MZ ◆T6xkBnTXz7B0 :2017/07/26(水) 21:49:04.00 ID:bC5SPfn2.net
ウィンドウを仮想スクリーンいっぱいにすれば、追尾の必要はない。

768 :デフォルトの名無しさん:2017/07/26(水) 22:17:49.99 ID:dmLhcxPj.net
>>767
仮想スクリーンサイズいっぱいにウインドウを作っちゃうと、CPU/GPUのパワー無駄に使いませんか?
1x1サイズのほうが、アプリ的には、軽いと思うんですが?

769 :片山博文MZ ◆T6xkBnTXz7B0 :2017/07/27(木) 01:34:42.30 ID:vaTNWP9F.net
>>768
WS_EX_TRANSPARENTを使えば描画が透過になるらしい。

770 :デフォルトの名無しさん:2017/07/27(木) 16:09:43.62 ID:5IXklzdW.net
そのようなことが本当に可能かどうかの確認もせずに書き込むのはなぜなんですか?
実際に昔自分が試したことがあって、完全にわかっているなら良いと思うけど
やったこともないことを、試しもせずに、どうして適当書き込むの?

まずレイヤードウィンドウで、SetLayeredWindowAttributes でアルファ値を0にした場合
完全な透明になるとともに、マウスの当たり判定も何もなくなって
まるでウィンドウが存在していないかのような扱いになるので
マウスカーソルがウィンドウ上に有るよっていう扱いが無くなって
マウスカーソルを非表示にしても、非常時にはならない
で、アルファ値を1とか適当な値にするとマウスの当たり判定が出来るので
めでたくマウスカーソルを非表示にすることが出来る
ここまでは質問者が書いている内容

ここで、ウィンドウサイズを画面いっぱいに広げると
画面全体がアルファ値の「1」の分の影響を受けそうだということもあるが
とりあえず質問者はGPUの負荷を気にしている
そこでアルファ値を0にするとWindows内の最適化でGPUでの合成処理はスキップされるだろうが
しかし先ほども書いた通りマウスの当たり判定も無くなるのでマウスカーソルは消えなくなる
で、この場合WS_EX_TRANSPARENTの何が有効なんだという話
これを指定したからといって、アルファ値が1であればウィンドウは表示されるし
表示されるんなら、GPUに負荷がかかることに変わりなし

だが、ここまでであればまだよい、まだわかる、それはいい、本当の問題は
レイヤードウィンドウにおいてのWS_EX_TRANSPARENTは、「マウスイベントを透過させる」の意だ
つまり、ウィンドウは半透明とかで表示するけども、マウス的には無きものとして扱う
そういう意味であるので、マウスの判定は無くなるし、ウィンドウ上にマウスがあるって扱いも無くなるので
「マウスカーソルは消えない」
だから、レイヤードウィンドウでWS_EX_TRANSPARENTだと
アルファ値が何であろうと、ウィンドウサイズが何であると、関係なく
そもそもマウスカーソルは消えない

つまり言ってることが二重三重にデタラメ

771 :デフォルトの名無しさん:2017/07/27(木) 16:26:35.88 ID:TSUPQXzA.net
とりあえず全部読んだ

772 :デフォルトの名無しさん:2017/07/27(木) 16:32:39.41 ID:5IXklzdW.net
ちなみにレイヤードウィンドウじゃない普通のウィンドウに
WS_EX_TRANSPARENTを指定しても
今回の件はうまくいかないからな
WS_EX_TRANSPARENTの仕様はその昔のWindowsの描画の仕様に強く依存していて
それ故にかなり複雑な動きをするところもあったかもしれないが
しかしながら今回の件において、それも既に関係が無い
なぜなら今はデスクトップコンポジションだから

ウィンドウは自分のビットマップを持ってるので
かつてのWindowsの再描画の仕様によってもたらされていた
ウィンドウの下のものが透けて見えるように感じる、という現象は起こらない

773 :片山博文MZ ◆T6xkBnTXz7B0 :2017/07/27(木) 17:02:53.88 ID:LWV2Yf86.net
WM_ERASEBKGNDをつぶせば透過に

774 :デフォルトの名無しさん:2017/07/27(木) 17:54:30.49 ID:5IXklzdW.net
良くわからないなら少なくとも出来るかどうか確認してから言えといっただろ

775 :デフォルトの名無しさん:2017/07/27(木) 18:03:15.82 ID:DvER6G26.net
それがにちゃんねるクォリティというもの、コードを貼らない書き込みに期待しないのがいい

776 :デフォルトの名無しさん:2017/07/27(木) 18:06:42.35 ID:46kBibo2.net
誰に確認してから言えって言ってるの?
回答側に確認義務があるなら、だれも回答したくなくるしヒントも言えんわ。

777 :デフォルトの名無しさん:2017/07/27(木) 18:22:49.05 ID:t8Fq16Nl.net
片山はNGワードでOK

778 :デフォルトの名無しさん:2017/07/27(木) 18:29:25.65 ID:DvER6G26.net
>>775
これは質問者にもいえる、最低限のコードを貼れない様ではまともな回答も期待できない
うんこQZでも1万ステップ程度のコードを貼っていた
まずは手を動かしたほうがいい

779 :デフォルトの名無しさん:2017/07/27(木) 19:16:34.98 ID:P1js1uXh.net
責任ある解答が欲しけりゃ金払えよ
払っても責任とってくれるかどうかは知らんけど w

780 :デフォルトの名無しさん:2017/07/27(木) 20:24:33.89 ID:5IXklzdW.net
スレの運営方針とか、自治的な何かとは、関係ない
2chのスレがグダグダになろうが、嘘であふれかえろうが、知ったことではない

知りもしないことを、調べもしないで、確かめることもせず
知ったかがしたいという唯それだけのために適当なことを書き込む
あなたはいったい何なんだ?そして実際間違ってる
という単なる個人攻撃

そして、また間髪おかず間違ったことを書き込んだから
なぜ同じ過ちを繰り返す?としたまで

拡大解釈して一般化してどうこう言うようなものではないぞ

781 :デフォルトの名無しさん:2017/07/27(木) 20:39:13.38 ID:7IEdpfIL.net
>>780
しったかが多いのは何もにちゃんねるに限らない,世間様でもあきれ返るばかりに多いんだよ

782 :デフォルトの名無しさん:2017/07/27(木) 21:17:08.86 ID:lePSsggt.net
>>780
無駄な正義感で生きにくそう

783 :デフォルトの名無しさん:2017/07/27(木) 21:57:41.84 ID:P8zzUyc0.net
>>780
2chがどうなろうと知ったこっちゃないのに個人が間違ったこと書くのは許せないとか
アホすぎ w

784 :デフォルトの名無しさん:2017/07/27(木) 22:02:56.93 ID:DDfF3pSC.net
株式会社メビウス(mob)
http://matsuri.2ch.net/test/read.cgi/infosys/1501121465/

785 :デフォルトの名無しさん:2017/07/27(木) 22:40:03.60 ID:lBgNNeyr.net
ネットでデタラメ狩りしてもキリがないもんな
大抵は質問する側の方が知識あるから大丈夫

786 :デフォルトの名無しさん:2017/07/27(木) 23:21:44.69 ID:TSUPQXzA.net
知識がある質問側が知識のない回答者に訊くのか

787 :デフォルトの名無しさん:2017/07/28(金) 01:04:49.84 ID:/BbkHPYe.net
質問する人は自分でやってみて上手くいかず答えが難しいから質問するわけで、
やったこともなく難しいということすらわからず当てずっぽうな返答を書く人よりは知識あるでしょ。

788 :デフォルトの名無しさん:2017/07/28(金) 01:14:51.00 ID:/BbkHPYe.net
ところで当てずっぽうで書くけど拡張ウィンドウスタイルで透明にして
erasebkgnd やら ncpaint やらで描画サボっても透明になるんじゃないか
昔のバイナリはそうやって穴あきウィンドウとか実装してたわけで
その辺は今でも互換性あるでしょ

789 :デフォルトの名無しさん:2017/07/28(金) 04:15:41.18 ID:OlX0v1uA.net
>>787
どこまで頭悪いとそういう理論にたどり着くのか

790 :デフォルトの名無しさん:2017/07/28(金) 07:47:39.36 ID:bTFRT7jO.net
>>786
そういえば、知識のある人に訊いたつもりなのに知識ない人から変な回答が付くってのはよくあるなぁ。

791 :デフォルトの名無しさん:2017/07/28(金) 09:01:08.00 ID:QaJRNrxO.net
つもりだからでしょ
つもりしゃなくてそうしなよ

792 :デフォルトの名無しさん:2017/07/28(金) 10:41:48.20 ID:HR9e4R3v.net
>>780
>>770で言っていることは正しいと思うよ
理想としてはね
でも現実にはそういう人はなくならない
なら相手に「誠心誠意真実のみを語る」ことを求めるより
相手の言葉をヒントとして自分で試す、実践していくことのほうが
より確実に真実に近づくと言えるのではないだろうか

>>787
でも質問した内容について、「どっちも知識ない」ことは同じじゃないだろうか
目くそ鼻くそなんだし仲良くすればいいと思うよ

793 :デフォルトの名無しさん:2017/07/28(金) 20:56:53.43 ID:bTFRT7jO.net
「知識のある人だけ答えてください」とか書いたら余計バカが集まるw

794 :デフォルトの名無しさん:2017/07/29(土) 00:30:51.84 ID:K1UV3B/G.net
>>770
まさにその通りですね。詳しい解説ありがとうございます。WS_EX_TRANSPARENTは、片山さんから助言受ける前に試してました。
画面サイズ最大で作って、erasebkgnd やら ncpaintとかは、リペイントのコストかかるので向いてないかも、ウインドの下でゲームや、動画とか再生されてた時などに不具合出そう。
できるだけシンプルに作りたかったので、今回はサイズ1x1で追尾にしました。(追尾といっても任意の動作後に追尾命令1回なので低コスト)
>>778
最低限のコード張ってないのは、どっかのサイトにでもコード張っておけばよかったかもですね。
大した処理ではないので、>>766で書いたCreateWindowEx、SetLayerdWindowAttributes、ShowCursorなどを張り付けておけばわかる人は分かるだろうと思っていたのですみません。
とりあえず、解決です。皆さま、ありがとうございました。

795 :デフォルトの名無しさん:2017/07/29(土) 11:30:19.14 ID:Ws5hVYlo.net
>>786
2ちゃんはそんなのばっかだよ

796 :デフォルトの名無しさん:2017/07/29(土) 11:31:52.72 ID:Ws5hVYlo.net
>>791
知らないのにレスしないでください
うざいだけです

797 :デフォルトの名無しさん:2017/07/29(土) 15:22:56.00 ID:Vfg3EN7i.net
そのレス懐かしい

798 :デフォルトの名無しさん:2017/07/29(土) 20:59:35.56 ID:Y56dLgVa.net
こっちで書けるかな?。あっち
https://mevius.2ch.net/test/read.cgi/tech/1482549747/l50
で、あいこんのきり変えに失敗した、とかいたんだが
ついに成功した。 LoadIcon(ょ
か゜しかし、LoadImage()では成功していない。

799 :デフォルトの名無しさん:2017/07/29(土) 21:08:08.69 ID:GuKX0EtE.net
基本的には自力解決するしかないのが多いからな
長年書いていても遭遇するとは限らない突拍子もない現象が起きたりする
WinApiはカオスだ
質問は気休めにもならない
むしろ面白い現象をここで報告するつもりで質問してほしい

800 :デフォルトの名無しさん:2017/07/29(土) 23:32:33.06 ID:muGZrUiV.net
ダイアログボックス上に複数のラジオボタンがあり連続で並んでいます。
先頭のラジオボタンのみグループ属性が付加されており、マウスやキーボードで
操作するとどれか一つだけしか選択できない状態です。

プログラムから現在選択しているラジオボタンとは別のラジオボタンを
選択する際、CheckDlgButtonを使って選択するのですが、これ自体は
選択処理は正常に働きますが、以前選んでいたラジオボタンも選ばれた
ままとなります。
これはそういうものでしょうか?

WindowsのデフォルトUI動作で単独のラジオボタンしか選べないように
なっていると思っていたのですが、プログラムコードではそれは自分で
考慮して処理が必要と言うことでしょうか?

801 :デフォルトの名無しさん:2017/07/29(土) 23:49:29.00 ID:N293m3Oe.net
>>800
CheckRadioButton
https://msdn.microsoft.com/ja-jp/library/cc410654.aspx

802 :デフォルトの名無しさん:2017/07/29(土) 23:58:28.88 ID:9HfHoOru.net
ダイアログエディタで作成した場合
タブオーダーだったかリソース IDだったかが
順序どおりになってないとそういう現象になる

803 :デフォルトの名無しさん:2017/07/30(日) 01:59:49.31 ID:pLyoXQEm.net
>>801
そんな関数があったのか。自分で処理するものかと思ってた

804 :デフォルトの名無しさん:2017/07/30(日) 07:13:09.16 ID:m983gJFf.net
800です。

>>801
ばっちりです。どうもありがとうございました。

>>802
これは問題ないことを確認しました。

>>803
恥ずかしながら、CheckDlgButtonでもOSが処理してくれると思い込んでいました。

805 :デフォルトの名無しさん:2017/07/30(日) 09:08:42.74 ID:xziOu8cb.net
>>804
モードレスダイアログのコントロールIDが一番若いラジオボタンは
BN_CLICKEDが生成時に2回発生するから注意してね

806 :デフォルトの名無しさん:2017/08/02(水) 01:43:28.46 ID:+cEHF0jB.net
WinSockで、クライアント側がconnect()をコールして、
サーバ側がメッセージプロシージャでFD_ACCEPTを受け取るまでの間に、
MessageBox()でダイアログボックスを表示すると、FD_ACCEPTが届かない・・・。

これ、どういう理屈なんだろう?

何とかMessageBox()が挟まらないように改変しようとしてるんだけど、
ちょっとしたことでこの問題を回避できたりしないかな?

807 :デフォルトの名無しさん:2017/08/02(水) 03:41:53.16 ID:fdgsCGyr.net
俺はWinSockの専門家でも何でもないけど
http://eternalwindows.jp/network/winsock/winsock05s.html
のサイトを丸コピペしつつ
MessageBoxを表示したのち
別スレッドでコネクトしたら
普通に接続できたんだが・・・
http://www.geocities.jp/notenop/winsock_demo.cpp

808 :デフォルトの名無しさん:2017/08/02(水) 07:39:11.06 ID:6ap2AYHE.net
>>806
MessageBoxはサーバー側かクライアント側かどっちで表示?

809 :806:2017/08/02(水) 08:16:03.56 ID:+cEHF0jB.net
>>807
そうでしたか。
他のことが原因かもしれませんね。
けっこう規模の大きいプログラムで発生したので、
>>807さんが試みられたように、一度最小コードで再現させてみます。

>>808
すみません、情報不足でした。
サーバー、クライアントともに同一プロセス同一スレッド内です。
外部PCとの通信も考慮しての使用ですが、今回問題が発生したのは、同一PC内です。

810 :デフォルトの名無しさん:2017/08/02(水) 08:24:30.04 ID:i5+f8wcz.net
>>809
> サーバー、クライアントともに同一プロセス
ここまではまだわかるが...
> 同一スレッド内です。
え?

811 :デフォルトの名無しさん:2017/08/02(水) 09:09:46.19 ID:6ap2AYHE.net
>>809
文字通り受け取ると
クライアントコネクト
→メッセージボックス
→サーバーアクセプト
が同一プロセス・同一スレッド?

そらメッセージボックス閉じないと処理が進まない

812 :デフォルトの名無しさん:2017/08/02(水) 09:11:05.84 ID:6ap2AYHE.net
それかメッセージボックスの親をNULLか

813 :806:2017/08/02(水) 09:43:58.29 ID:7ng0/iaA.net
>>811
>>812
すみません、言葉足らずでした。
ダイアログボックス表示中はもちろん処理の流れがブロックされるんですが、
(MessageBox()のウィンドウハンドルはNULLで、フラグがMB_TASKMODAL | MB_ICONEXCLAMATIONです)
ダイアログボックスを閉じた後もFD_READが届かないんです。

フラグを単にMB_OKにしてもブロックされるので変わらずでした。

814 :806:2017/08/02(水) 09:45:23.67 ID:7ng0/iaA.net
↑すみません、FD_ACCEPTです。

815 :デフォルトの名無しさん:2017/08/02(水) 09:47:13.93 ID:3fh+5Dja.net
もしかしてWSAAsyncSelect で hWnd に NULL 指定してるとか?

816 :デフォルトの名無しさん:2017/08/02(水) 09:52:12.86 ID:3fh+5Dja.net
正しく処理されればメッセージボックス表示「中」にFD_ACCEPT がくるはずだけど…

817 :デフォルトの名無しさん:2017/08/19(土) 23:59:27.57 ID:3LWi1RRc.net
直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は70万払ってる) 客:短期延長していい?
5次受けの50万(客は110万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 
長時間労働 高稼働 高スキル要求が多い

零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと

これならJIETから3次でいったほうがいいな

446非決定性名無しさん2017/08/02(水) 22:12:48.95

JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした

473非決定性名無しさん2017/08/03(木) 15:21:30.71

JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。

372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ

それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト

自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む

818 :デフォルトの名無しさん:2017/08/20(日) 14:00:03.74 ID:nY0Q5mUa.net
なんか自分が今まで関係してきた金額に比べて全ての金額が安すぎてビックリ。
これじゃ派遣の方がよっぽどましなんじゃね?

819 :デフォルトの名無しさん:2017/08/21(月) 16:30:24.87 ID:Fg01UA7s.net
>>813
MessageBoxに限らず、モーダルダイアログは自前でメッセージループ持ってるので
他の人も言ってるように受け取り先きちんと指定しないとダイアログに取られちゃうかも

820 :806:2017/08/21(月) 19:20:15.44 ID:eYNo081O.net
>>819
ありがとうございます。
モーダルダイアログが自前のメッセージループを持っているということ、勉強になりました。
受け取り先を指定するというのは>>815さんが指摘していることでしょうか?

>>815
お返事失念しており申し訳ありません。
WSAAsyncSelectにはメインウィンドウのウィンドウハンドルを指定しており、問題ないかと思います。

821 :デフォルトの名無しさん:2017/08/23(水) 12:20:49.09 ID:6Fed8jeE.net
江添亮タイホワロスωω

822 :デフォルトの名無しさん:2017/08/25(金) 18:39:23.90 ID:R/niZf6L.net
プロセス名のアイコンを取得するAPIか方法があれば教えてください

823 :片山博文MZ :2017/08/25(金) 18:53:44.95 ID:M7y+0IYN.net
http://blog.goo.ne.jp/masaki_goo_2006/e/9e9f82fe965dda84e8794f1ba7e64718

Extractなんちゃら関数使えば、パス名からアイコンを抽出できるはずだ。

824 :デフォルトの名無しさん:2017/08/25(金) 18:54:59.55 ID:Ds4q9hnC.net
プロセス名→exeパス→アイコン取得

825 :デフォルトの名無しさん:2017/08/25(金) 18:57:58.24 ID:R/niZf6L.net
ありゃりゃしたー

826 :デフォルトの名無しさん:2017/08/29(火) 17:52:01.06 ID:ehSPqLug.net
プロセスのハンドルって1回オープンしないと取得できない?

827 :デフォルトの名無しさん:2017/08/29(火) 19:35:58.35 ID:1xpDkX/7.net
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10178733385
URL先は知恵袋です。
教えてくださいお願いします。

828 :デフォルトの名無しさん:2017/08/30(水) 00:20:15.11 ID:9+VQiQGO.net
>>827
こういうのあったけど?
pdbファイルが見つからないってやつじゃねーの?
ttps://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10103558640
ttps://msdn.microsoft.com/ja-jp/library/yd4f8bd1(v=vs.80).aspx
それ以外で解放関連ミスってるかどうかは全コードをGITとかに上げてみろ。

829 :デフォルトの名無しさん:2017/08/30(水) 09:21:54.56 ID:Lglrs9g0.net
>>827

> 'rpg.exe' (Win32): 'C:\Windows\SysWOW64\wer.dll' が読み込まれました。
> PDB ファイルを開けないか、ファイルが見つかりません。

というメッセージが出てきたら、
「PDB ファイルを開けないか、ファイルが見つかりません」
でググってみるものだ。それでも解らないことを質問すべきだろう。
その手間を惜しむ人間に教えることなどない。

830 :デフォルトの名無しさん:2017/08/30(水) 09:30:54.88 ID:Hx/erJ+v.net
知恵遅れの相手するなんておまえらやさしいな

831 :デフォルトの名無しさん:2017/08/30(水) 13:24:52.28 ID:7h6sel33.net
827です。
自己解決しました。
ありがとうございました。

832 :デフォルトの名無しさん:2017/09/02(土) 16:07:42.07 ID:uMF7D0UJ.net
夏休みがまだ終わらない

833 :デフォルトの名無しさん:2017/09/02(土) 16:41:15.17 ID:LVvUpSa+.net
僕の夏休み。8/32日バージョンか

834 :デフォルトの名無しさん:2017/09/04(月) 05:34:56.37 ID:5SeLbfqh.net
今まで使えていたwriteprocessmemory 等を用いてプロセスアタッチを行なっていたのですが急に動作が不安定になり10回中2回ほどしか成功しません。

別PC(ネットカフェ)環境からだと問題なく動作します。
PC自体に負荷をかけるようなことを行なっていたためパーツ側に何か問題があると見ていまして、このような症状をご存知の方教えて下さい。

835 :デフォルトの名無しさん:2017/09/05(火) 00:20:00.00 ID:v8OLWv5g.net
ヒント:プログラムが糞

836 :デフォルトの名無しさん:2017/09/05(火) 01:08:33.79 ID:v1SMPV1x.net
処理速度差でインジェクトタイミングがずれてとらぶってんだろうな

837 :デフォルトの名無しさん:2017/09/11(月) 18:49:35.09 ID:qZ9UWi9t.net
>>836
解決しました。
上の方で無職で憂さ晴らしを楽しんでいる方がいましたが助かりました。

838 :デフォルトの名無しさん:2017/09/16(土) 13:40:49.72 ID:sYdQKwx0.net
Windows 7です

callwndproc でグローバルフックを作って
ウインドウを閉じるWM_CLOSEなどのメッセージを検知させたいのですが
動作はしたもののInternet Explorer (IE11)だけうまく行きません。
IE11ではapiを使ったフックはできないんでしょうか?

環境・手法はcpp, DLLでのデータ共有, Visual Studio 2015のコマンドラインコンパイラです。

839 :デフォルトの名無しさん:2017/09/16(土) 16:47:44.09 ID:ZCzFTInQ.net
できますよ

840 :デフォルトの名無しさん:2017/09/17(日) 13:16:45.39 ID:9dlPIQ/A.net
出来るよ

841 :デフォルトの名無しさん:2017/09/17(日) 19:55:34.73 ID:j4nqlc4K.net
CreateWindowEx で WS_EX_COMPOSITED を指定しても、なぜかWS_EX_COMPOSITEDが未定義のシンボル扱いで通りません。
他のスタイル変数だと通ります。
CS_OWNDC、CS_CLASSDC は使っていません。
原因と、解決策を教えてください。それらしいワードでググっても良くわかりませんでした。
お願いします。

OS windows7 32bit
環境 BCC Developer

842 :デフォルトの名無しさん:2017/09/17(日) 20:19:20.70 ID:5uCVCcKi.net
BCCを捨てろ

843 :デフォルトの名無しさん:2017/09/17(日) 21:00:05.91 ID:53PrWSTF.net
定義すりゃいい

844 :片山博文MZ :2017/09/17(日) 22:17:44.95 ID:mYmSE/6P.net
#ifndef WS_EX_COMPOSITED
#define WS_EX_COMPOSITED 0x02000000L
#endif

845 :デフォルトの名無しさん:2017/09/17(日) 23:25:53.44 ID:npppe4f/.net
WinUserヘッダーをインクルードしてないのか?

846 :片山博文MZ :2017/09/17(日) 23:36:19.72 ID:abFJ0XwA.net
>>845
古い環境(bcc55)だから、<winuser.h>でも未定義。

847 :デフォルトの名無しさん:2017/09/17(日) 23:47:17.58 ID:CQjOt/D7.net
そもそも今時デメリットしかねえから要らんやろこのスタイル>WS_EX_COMPOSITED

848 :841:2017/09/18(月) 06:53:54.99 ID:7suqbGay.net
>>844
ありがとうございます。動きました。
なるほど古すぎたんですね。

849 :838:2017/09/18(月) 15:12:02.60 ID:3H+QkIIH.net
>>839 >>840
Chromeウィンドウなどのフックと同じようにやるだけで出来ますか?
なにか別な要素が必要でしょうか?

850 :デフォルトの名無しさん:2017/09/19(火) 05:20:12.63 ID:v8M0fO45.net
ヒント:プログラムが糞

851 :デフォルトの名無しさん:2017/09/19(火) 08:46:47.66 ID:87FEHvFq.net
知らんけどIEはフックされないようにしてるんじゃないか?
バンドオブジェクトか何かつっこんで中でやった方がいいと思う

852 :デフォルトの名無しさん:2017/09/19(火) 18:11:52.42 ID:AsNvJAjE.net
>>850
お前暇なんだな

853 :デフォルトの名無しさん:2017/09/19(火) 18:23:41.92 ID:3zeZgKZU.net
昔から常駐してる人力スクリプトだよ
毎度これ書いて上から目線でホルホルしてるんだろうけど、何年経っても成長しとらんw

854 :デフォルトの名無しさん:2017/09/19(火) 23:36:26.74 ID:AsNvJAjE.net
人力スクリプトw
言えてるわw

855 :デフォルトの名無しさん:2017/09/23(土) 23:55:50.86 ID:IXBVjbYe.net
>>841
環境、vs2017やvs2015とかにしたらいいんじゃね?
community版なら、無料で使えるよ

856 :デフォルトの名無しさん:2017/09/24(日) 14:16:10.86 ID:xJTY0L3v.net
使用言語 FreeBasic + FBE
OS    Windows 10
症状、1MB, 100 個BASファイル(1MB)、10個位BIファイル(100KB)、を超えたあたりから、
異常停止し、「Debugしますか、停止しますか」の旨の表示を出して終了する。異常停止場所はその日によってバラバラ。
しかし、タスクマネージャーと同時実行では発生しない。

FreeBasic の場合、OS由来で異常停止する場合が多発して、
言語側の障害(仕様)は、*.DLLファイルの不在、配列宣言外の要素を参照した時、に発生する。
両者ともに特定の場所で、異常停止してくれるが、今回は、停止位置が実行中の他のタスク(タスクマネーシャー)の影響を受けている。
したがって、何かの事象を発生させる、等の対応で修正可能と思われる。
ご存知の方いらっしゃいましたらば、お知らせください。

857 :デフォルトの名無しさん:2017/09/24(日) 14:35:17.40 ID:okRUlktS.net
それはFreeBasicのバグなので、FreeBasicに治してもらえ

858 :デフォルトの名無しさん:2017/09/24(日) 15:05:57.20 ID:KcVpSqdX.net
新興のGoだろうがRustだろうがWindows10でバグったりしないぞ
明らかに言語側の問題

859 :デフォルトの名無しさん:2017/09/24(日) 16:39:30.63 ID:xJTY0L3v.net
>>857
>それはFreeBasicのバグなので
フリーソフトなので、ご指摘のように言い切った内容ですと、既にどなたかが発表しているものと思われます。
発表されている内容をお知らせください

>>858
>バグったりしないぞ
処理系が異なります。したがって、一概に言えないのですが。
Rustについては普及しているようです。
https://ja.wikipedia.org/wiki/Rust_%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%29
>2016年8月2日にリリースされたFirefox 48にはRustで書き直されたメディアパーサが組み込まれており、Mozillaが開発しているブラウザのFirefoxにおいてRustで書かれたコードが書き加えられる初例となった
ただ、Firefox で3ウインドー、30タグつぐらい同時に読み取ると異常終了するので、障害発生部位がRustで書かれているのであれば、同様な現象と思われます。
旧osバージョン+対応fIREFOXでは、異常停止が発生しなかったと記憶しています。

860 :デフォルトの名無しさん:2017/09/24(日) 16:51:45.14 ID:J5jaZAG3.net
ここ、Win32APIのスレなんだけど、Win32APIにバグがあるっていうのが主旨ですか?

861 :デフォルトの名無しさん:2017/09/24(日) 16:55:14.25 ID:okRUlktS.net
>>859
調査費用30万円(税込)申し受けますが、ご用意はよろしいでしょうか。

862 :デフォルトの名無しさん:2017/09/24(日) 16:59:28.04 ID:KdVNcd4v.net
たった30万で請けてくれるのか。良心的だな

863 :デフォルトの名無しさん:2017/09/24(日) 17:04:46.71 ID:xJTY0L3v.net
>>861 支払う意思はありません。
>>860 ザベの巻号年を忘れましたが、「ユーザー又は末端ユーザーが回避できる障害はバクではない」旨の記事がありました。
従いまして、回避方法が公開されているのであれば、APIのバクではありません。
ユーザー(プログラマー)に回避する義務(商習慣?, 公序良俗?)がありますので。

864 :デフォルトの名無しさん:2017/09/24(日) 17:13:08.33 ID:7Tzf/3Hr.net
互いに矛盾する結果を出すAPIを同時に使用する必要があるなんてざらだ
それを吸収しなければならない上位層は必ず矛盾が発生し、複雑化する
とりあえず当座必要な全機能には矛盾のない解には到達するが、それ以上の機能を追加すると矛盾が再発する
APIがしっかりしていればソフトは10分の1ほどのコードで済むだろう

865 :デフォルトの名無しさん:2017/09/24(日) 17:13:55.12 ID:xJTY0L3v.net
>>862
同様な調査を自治会長は500円でやれ、とポケットむに500円ねじ込んだ。
サーチャーに依頼するとして、20年ぐらい前に概略を電話問い合わせした時には、20万もって窓口まで来てくれ、という返事だったので断った。
だけど、自治会長の考え方だと500円でできるという内容。

866 :デフォルトの名無しさん:2017/09/24(日) 17:24:23.20 ID:okRUlktS.net
>>863
「ユーザー又は末端ユーザーが回避できる障害はバクではない」
回避方法が公開されている必要はないだろ。自分で回避すればいいんだから。

867 :デフォルトの名無しさん:2017/09/24(日) 17:30:18.48 ID:6sZgRRai.net
FreeBasicみたいなゴミを使ってるから頭がおかしくなったのか
頭がおかしかったからFreeBasicみたいなゴミに手を出したのか

868 :デフォルトの名無しさん:2017/09/24(日) 17:35:20.31 ID:jWeMnfEt.net
>>867
まだFreeBasicのせいだと決まったわけではあるまい。
ただ残念なのは>>856の内容ではWin側の問題だとは全く思えない所。

869 :デフォルトの名無しさん:2017/09/24(日) 17:42:11.62 ID:uKYPwFuQ.net
引き合いに出してる記事とやらもやべえな
ある言語の浮動小数点演算が狂ってるとして、
ユーザーが整数演算で浮動小数点を再実装して回避した場合
言語のバグではなくなるのか
狂ってるだろ

まあこの脳味噌数ミリグラムしかなさそうなアホがうろ覚えしただけか
自分に都合のいいように曲解したか
どちらかだろうけど

バグじゃなくてバクですとか言うなよ

870 :デフォルトの名無しさん:2017/09/24(日) 17:46:29.30 ID:KdVNcd4v.net
曲解だろうな

871 :デフォルトの名無しさん:2017/09/24(日) 17:49:22.16 ID:xJTY0L3v.net
>>867
>頭がおかしかったからFreeBasicみたいなゴミに手を出したのか
大正解。
MS の3か月ぐらい無料で使える Visual stuio https://www.microsoft.com/ja-jp/dev/campaign/free-edition.aspx
をDLしたのだが、使い方(操作方法)がさっぱりわからなかった。

>>866
>自分で回避すればいいんだから。
まー、外注に出したり、OSを入れ替えたり、MSやFBで公開しないですむ回避方法があるわ。

で、Freebasicに手を出した。

>>868
タスクマネージャーを同じことをすれば、回避できるから、
タスクマネージャーがやっている手法をしりたいのよ。
おっしゃるとおり、タスクマネージャーを起動することで回避できるから、APIのバグではない。

872 :デフォルトの名無しさん:2017/09/24(日) 17:51:14.63 ID:KdVNcd4v.net
>>856
起きてる問題は1MBや100KB越えると異常停止するわけでしょ
ということはそのサイズ以下に抑えれば問題が起きない
ユーザー又は末端ユーザーが回避できる障害だからバグでもない
これで無事解決よ。めでたしめでたし

873 :デフォルトの名無しさん:2017/09/24(日) 17:59:36.07 ID:xJTY0L3v.net
>>869
>言語のバグではなくなるのか
>狂ってるだろ
過去にやったことがある。Fotran 6だったかな、
単精度小数演算で10進数を出力してファイルに保存する、保存した値を再度利用する、を延々繰り返すルーチンで、
小数点2桁目て゛ずれるようになった。1000倍して、整数演算に直して、使用するようにした。
>>867の指摘するように、くるっているよ。

>バグじゃなくてバクですとか言うなよ
すまんな。
画面の濁点が全く読めないくらいに視力がないので、結構間違える。逆うち、ぜの代わりに゛せとかもやる。

874 :デフォルトの名無しさん:2017/09/24(日) 18:11:55.34 ID:xJTY0L3v.net
>>872
それやったことがある。
最初にソースを適当に作って、
使用しているサブルーチンを拾って、つなげるルーチンを作って実行
という手法。
結局、この拾う作業が膨大になって、自分自身のオーバーレイ化しないと動かなくなってしまった。
同じオーバーレイ化するならば、最初から直接動かした方が単純だ、ということで、もとに戻した。

当時は、サブルーチン別に拾ってlinkするという機能が、Fotran6しか対応していなかった。
1990年頃に発行になった書籍では、「頭の良いコンパイラーは」という条件が付くものの、この機能が存在することが指摘されていた。

なお、Visual Basic 6.0で使っていた自家製Libの内80%位の内容。
FreeBasic になった関係で、旧QuickBasicのLibの一部が復活している。
残る20%はGSL, GMP, MPFR, Sqlite等に切り替えられそうなので、これから、まだ増える予定。

875 :デフォルトの名無しさん:2017/09/24(日) 18:51:56.99 ID:80+QkRIz.net
やはり狂人であったか

876 :デフォルトの名無しさん:2017/09/24(日) 20:08:47.40 ID:TezdVn6/.net
知ってる単語並べればマウント取れると思ってるあたり、無能だなコイツ

877 :デフォルトの名無しさん:2017/09/24(日) 22:14:32.71 ID:mcfyXVZ5.net
どこのスレだか忘れたが無差別に住人を煽りながらDarkBasicを推してたクソコテを思い出した

878 :デフォルトの名無しさん:2017/09/24(日) 23:27:07.55 ID:Bf5PdX/p.net
ざっくりいうと、OSのせいで1MB程度で不具合が起こることはない
RustのはFirefoxのプログラムが悪い

タスクマネージャーを起動してると落ちない理由は思いつく限り
・偶然
・OSの環境が壊れてる(別のPCやOSクリーンインストールでなおる)
・FreeBasicやウイルス対策ソフト、その他(ウイルスとか)がタスクマネージャーが存在するなどを理由に挙動を変える
とかかな

とりあえず別のPCで確認

879 :デフォルトの名無しさん:2017/09/25(月) 10:09:40.59 ID:JnK94/2y.net
ちゃんとあるんだからそっちでやれと。なぜここで聞くのか頭おかしいやつの行動は意味わからない

【QBASIC互換!?】FreeBasic【GPL】 2 [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1482549747/

880 :片山博文MZ :2017/09/25(月) 19:13:35.73 ID:ViN5SaQX.net
リソーエディタ 1.0をリリースしました。
テストを充分行い、多数の修正をしました。
http://katahiromz.web.fc2.com/re/ja/index.html
https://github.com/katahiromz/RisohEditor

リソーエディタのバグ報告に謝礼としてAmazonギフト券5000円分差し上げます。
どしどしご応募下さい。

881 :デフォルトの名無しさん:2017/09/26(火) 03:05:32.57 ID:OZczKUwr.net
謝礼渡す基準は?
まぁ誰も触るわけないだろうが

882 :デフォルトの名無しさん:2017/09/26(火) 11:26:08.01 ID:7ABpskwx.net
ギフト券を受け取るには10000円分のギフトIDを報告する必要があります

883 :デフォルトの名無しさん:2017/09/26(火) 12:36:12.89 ID:CgqsIdu0.net
古来からあるリソースエディタと何が違うの?
と思ったら、リソースエディタじゃなくてリソーエディタかよ。
で、なにこれ?

884 :デフォルトの名無しさん:2017/09/26(火) 12:45:40.74 ID:dGip1y4C.net
リンク踏む気にもならんな

885 :デフォルトの名無しさん:2017/09/26(火) 14:38:17.78 ID:OZczKUwr.net
ドヤ顔でリリースしましたとか言ってるけど
こんな誰に需要あるのかわからないゴミみたいなオナニーツール触ってくれる奴なんかおるんかね

886 :デフォルトの名無しさん:2017/09/26(火) 14:42:29.95 ID:oJHPfbUh.net
おまいら親切だな
いちいち相手してあげて

887 :片山博文MZ :2017/09/26(火) 16:22:16.43 ID:mKY8ED9y.net
>>881
未知のバグであること。
メールで連絡が取れること。
Amazonギフト券を受け取る意思があること。

888 :片山博文MZ :2017/09/26(火) 16:24:29.68 ID:mKY8ED9y.net
>>883
EXEやDLLに含まれているリソースを追加・編集・抽出・削除ができるツールです。
ダイアログエディタ代わりに使うこともできます。

889 :片山博文MZ :2017/09/26(火) 16:38:39.81 ID:mKY8ED9y.net
>>885
ドヤ顔が見えますか? それは幻覚です。病院へ行って下さい。映画を観ない人は、映画評論家になる資格は
ありません。公共の掲示板でお下品な話はやめましょうね。わからないのは、あなたの知能が足りないからです。

890 :片山博文MZ :2017/09/26(火) 16:41:56.72 ID:mKY8ED9y.net
>>884
リンクは踏むものですか? クリックするものじゃないですか?

891 :片山博文MZ :2017/09/26(火) 16:42:20.94 ID:mKY8ED9y.net
>>882
ありません。

892 :デフォルトの名無しさん:2017/09/26(火) 16:50:48.66 ID:CgqsIdu0.net
>>888
昔からあるリソースハッカーとかと何か違うところあるのかなってのが主旨で、
分かったのは名前が違ったって点なの。
何ができるかは貴殿の書いてるとおり分かっています。

893 :デフォルトの名無しさん:2017/09/26(火) 16:58:00.73 ID:dGip1y4C.net
XN Resource Editor 最強説

894 :片山博文MZ :2017/09/26(火) 17:22:42.38 ID:mKY8ED9y.net
>>892
拡張性が高い。
オープンソース。
リソースIDの関連付けを設定すれば、resource.hが読める。
GUI編集が可能。

895 :デフォルトの名無しさん:2017/09/26(火) 17:27:19.78 ID:oJHPfbUh.net
スレチだアホ

896 :片山博文MZ :2017/09/26(火) 18:01:27.06 ID:mKY8ED9y.net
ソース見ればわかると思うけど、C++03とWin32APIだけで作った。

897 :デフォルトの名無しさん:2017/09/26(火) 18:45:08.23 ID:piJXswiP.net
スレチ

898 :デフォルトの名無しさん:2017/09/27(水) 04:02:55.04 ID:f2v5tQrk.net
客観的に見てバグと思われるものは全部未知のバグなんだけど頭大丈夫か?
片山が未知のバグに対して”仕様です”と言わない保証は?
まともな頭ならこっちが発見したバグは全部未知のバグで1回報告するたびに5千円くれるのか?
まぁ誰も触らんだろうが

899 :片山博文MZ :2017/09/27(水) 04:42:53.66 ID:wqCON9vO.net
>>898
確かに非加算無限個存在するかも知れないが、デパートの試食コーナーみたいに常識的に考えてくれ。

900 :デフォルトの名無しさん:2017/09/27(水) 05:39:27.71 ID:Cy9euBKG.net
片山の相手をしている奴も正気を疑うが

901 :デフォルトの名無しさん:2017/09/27(水) 07:54:56.73 ID:Ep3hxvTm.net
非加算無限個www

902 :デフォルトの名無しさん:2017/09/27(水) 10:38:38.93 ID:k2PS2F7X.net
>>894
GUI編集って、例えばダイアログイメージが表示されてマウスで移動やサイズ変更可能ってこと?
それならまあ、いつか使うかもね。

903 :デフォルトの名無しさん:2017/09/27(水) 11:42:36.33 ID:zCHNwx74.net
誰か助けてください
ゲームのマウスの入力読み取りが、RawInputと DirectInput ありますよね、
昔は設定でオン、オフがあったのに、いつの間にか設定を無くし、RawInputを強要する糞アプリがあります!!

これを、強制的にRawからDirectInputにしたいのですが

なにをどうすればいいのですか?

フックして raw inputをブロックすれば実現できます?

そもそも raw inputのマウスってどのAPIなのか、詳細分かりません

ヘルプ
たのんます

904 :デフォルトの名無しさん:2017/09/27(水) 17:03:40.82 ID:7dA/9JOQ.net
元のアプリからDirectInput用のコードが削除されてたら
何やっても無理じゃね?無いんだから

905 :デフォルトの名無しさん:2017/09/27(水) 18:49:01.07 ID:zCHNwx74.net
はい? raw inputってXP以降しか使えないんですが?
じゃあ2Kで動かしたらどうなる訳、ってraw inputの有無で切り替えてるわけですよね

だからWndProcフックしてraw input関係の該当API?を防げば いいと思ってるわけで、

APIのプロが集うであろう当スレで聞いてるわけですが?

906 :デフォルトの名無しさん:2017/09/27(水) 18:51:50.24 ID:I+WFkDPH.net
アプリ以上に糞な奴だな

907 :デフォルトの名無しさん:2017/09/27(水) 19:32:45.39 ID:CtWRhHzI.net
XPのサポートどころかVistaのサポートも切れてるのに何を言っているのやら。
きっと、設定とともに切り替える機能自体も削除されてるだろ。

908 :片山博文MZ :2017/09/27(水) 19:43:59.36 ID:wqCON9vO.net
仮想OS使えば〜?

909 :デフォルトの名無しさん:2017/09/27(水) 20:00:59.41 ID:zCHNwx74.net
>>907
だから、削除されてるとかそういう勝手な妄想はいらないんですよ
てか、Directinput無かったら2kのマウスは何で動いてるんすか?笑
2kでも動いた、これが事実ですから。
↑に書いたようにraw inputのAPIをファックしてしまえばDirectinputなるんですよ

raw inputマウスだけでキーボードはDirectinputですしね

後から追加にしたに過ぎず、100%UIからON、OFF消し去っただけなんですよ

ってわけで有益なアドバイスをお願いします

910 :片山博文MZ :2017/09/27(水) 20:02:58.50 ID:wqCON9vO.net
DLLインジェクションでAPI関数を置き換え

911 :デフォルトの名無しさん:2017/09/27(水) 20:04:21.30 ID:zCHNwx74.net
>>908
仮想OSとか持ち出したらAPIスレの意義は?
仮想は遅いから嫌ですね、、

コテハンの力見せて下さいよ、お願いします

912 :デフォルトの名無しさん:2017/09/27(水) 20:09:02.92 ID:CtWRhHzI.net
>>909
あぁ、現行のバージョンでも2kで動くのか。
>>905の書き方じゃ意味が分からなかったよ。

913 :デフォルトの名無しさん:2017/09/27(水) 20:17:19.60 ID:ExBmpI99.net
後出しの説明にレスすんじゃねえよ
>>905の説明に方を付けてもらわないとな

914 :デフォルトの名無しさん:2017/09/27(水) 20:24:19.97 ID:oG2Zpa4d.net
DirectInputのコードが残ってんなら
俺だったらOllyDbgで調べて、分岐しているところを
WriteProcessMemory()で書き換えるプログラムをつくる

915 :デフォルトの名無しさん:2017/09/27(水) 21:55:19.23 ID:zCHNwx74.net
DLLインジェクションでAPI関数を置き換え

↑これをしたいのですが意味が分かりません
今回の置き換えるべき関数名でSetWindowsHookEx を使いサンプルコードを示してください

916 :デフォルトの名無しさん:2017/09/27(水) 22:00:15.91 ID:hZX+opcA.net
> てか、Directinput無かったら2kのマウスは何で動いてるんすか?笑
ぶっちゃけFPSとかでもなけりゃWM_MOUSEMOVEで大抵事足りるべな

917 :デフォルトの名無しさん:2017/09/27(水) 22:28:55.48 ID:Cy9euBKG.net
頭悪いって大変だよな〜

918 :片山博文MZ :2017/09/27(水) 22:31:28.31 ID:wqCON9vO.net
まずはDLL作って原理を覚えるところから始めないと

919 :デフォルトの名無しさん:2017/09/28(木) 08:16:32.65 ID:H8dM1RkU.net
>>915
それもう丸投げだから諦めろ
普通にAPIフック関係の色んなページ見て
自分なりに統合させて試行錯誤しろ

920 :デフォルトの名無しさん:2017/09/28(木) 10:29:02.28 ID:mxHsq9Is.net
マルチ

921 :片山博文MZ :2017/09/28(木) 12:57:11.07 ID:kdrH0PSi.net
ほらよ。これがAPIフックのサンプルだ。
https://github.com/katahiromz/SimpleApiHook

DLLの動作原理とCMakeの使い方を勉強しろよ。

922 :903:2017/09/28(木) 13:41:17.72 ID:te0QQW2V.net
皆さんありがとうございます。
APIフック関連ページ読み漁ってますが、direct→rawを試みてる人はちらほら居ても、逆はいなくてソース無いので難航してます。

それで現状の知識では、目的のAPIフック完成させれていないので、私がやろうとしてる事は実現可能なのかだけお聞きしたいので、どなたか回答お願いします

>>916を見て、調べなおしたのですが、
2kはDirectinputに切り替わっているといいましたが、これは誤りでした。
単にタイトル画面、設定画面といった画面でのみ、OS関係なく
Directinput、WM_MOUSEMOVE(Windows Input?)どちらかは分かりませんが、とにかくRawinput以外を使っているだけでした

で、お聞きしたいことですが、
DLLインジェクトでRawinputの関数をフックして、DirectinputもしくはWindows Inputの関数に飛ばすわけですよね

コードがあるといっても、メニュー画面だけなわけですが、
上記のようなフックをした場合、メニュー画面以外でもマウス動くのでしょうか?

推測で構わないので教えてください、よろしくお願いします

923 :デフォルトの名無しさん:2017/09/28(木) 14:35:28.79 ID:jImnQ5Gm.net
> 上記のようなフックをした場合、メニュー画面以外でもマウス動くのでしょうか?
アプリの作りによる

> 実現可能なのかだけお聞きしたい
可能
だけどお前に作れるとは思えない。作者に再サポートするように要望出せ。メールに数万分ギフトコード添えれば修正の可能性上がる

924 :デフォルトの名無しさん:2017/09/28(木) 20:44:32.90 ID:te0QQW2V.net
>>923
今回のはAPIフックすれば出来ることでしょ?
raw→direct置き換えで
もし、アプリ側にdirectInputのコードが残ってなかったら、
DLLインジェクションでその処理も追加しないといけなくて、その場合一気に敷居が高くなるってことですよね?

今回は幸いにも、メニュー画面だけとはいえ、directInputで処理されてる部分が残ってるので、
APIフックで飛ばしてしまえば目的動作するわけで、
その手助けをお願いしてるんですよ?
要望出してこたえるような作者だったらとっくにやってますわ

925 :デフォルトの名無しさん:2017/09/28(木) 20:52:04.74 ID:te0QQW2V.net
あと、片山博文MZ ◆T6xkBnTXz7B0さんのサンプル見たんですけど、
これIAT書き換えですよね。
アプリOEP書き換えられてるのでこの方法は無理くさいんです

そこで今、MS detoursってフックライブラリを用いてAPIフックしたいんですけど上手くいきません

detour分かる人いませんか?

Cスレで聞いてますが、内容ほぼAPI関係ですしCスレ住人では手に負えないようなので、
APIのプロである皆さんの手助けをお願いします

DLLの動作原理は理解しました。DLL=アプリ拡張。exeにぶちこんで機能追加、動作変更とやりたい放題出来るのがdll

926 :デフォルトの名無しさん:2017/09/28(木) 21:02:10.43 ID:plgdDRJR.net
う〜ん。
自分は識者とはとても呼べないレベルだけど、DirectInputもraw inputと同じでWM_INPUT読むんじゃないの?
MSでこんなこと書かれてるんだけど。

内部的には、DirectInput によって WM_INPUT データを読み取る 2 つ目のスレッドが作成され、DirectInput API を使用することによって、単に WM_INPUT を直接読み取る場合よりもオーバーヘッドが増加します。

https://msdn.microsoft.com/ja-jp/library/bb206183(v=vs.85).aspx

927 :デフォルトの名無しさん:2017/09/28(木) 21:04:11.65 ID:9inLL+H4.net
>>924
フックで出来ると思うなら、とりあえずフックして置き換えてみればいいじゃん
それが可能かどうかなんて実際に試すかエスパーじゃない限り分らないよw

928 :片山博文MZ :2017/09/28(木) 21:20:53.09 ID:Msp1dHAD.net
UPXによるアンパックは試してみたか?

多分、IATの再構築が必要。

929 :デフォルトの名無しさん:2017/09/28(木) 23:15:38.58 ID:LqzHR2s+.net
DirectInput を使うメリットが分からない。
遅延させたいのかね。

930 :デフォルトの名無しさん:2017/09/29(金) 00:28:00.92 ID:RPVfxA+q.net
directinputとraw inputは実装方法が異なるからapihookで修正するのはかなり面倒くさいと思うんだが。
あとeasyhookってライブラリがお勧め。

931 :デフォルトの名無しさん:2017/09/29(金) 01:23:58.99 ID:JdAsAkqo.net
フックするよりバイナリ書き換えたほうが早いんじゃないか?

932 :デフォルトの名無しさん:2017/09/29(金) 03:50:21.56 ID:OKETC/Nl.net
このスレの1にAdvanced Windows読めよって書いてなかったっけ
読んでから質問しろで終わりだろ
なに相手してんだ馬鹿どもが

933 :デフォルトの名無しさん:2017/09/29(金) 06:20:31.11 ID:XCA+sdta.net
>>903-905
この流れでこいつ相手するのはちょっとなってなるんだけど、暇だからなw

934 :デフォルトの名無しさん:2017/09/29(金) 07:54:38.41 ID:zrPER7+W.net
>>924
フックで飛ばすのは意識だけにしとけ

>>925
> DLLの動作原理は理解しました。DLL=アプリ拡張。exeにぶちこんで機能追加、動作変更とやりたい放題出来るのがdll
全然違う
万能ではない

935 :デフォルトの名無しさん:2017/09/29(金) 08:02:36.27 ID:jgex0uNR.net
どこから「万能」とかいう単語が出て来た?
頭おかしい?

936 :デフォルトの名無しさん:2017/09/29(金) 08:19:00.83 ID:zrPER7+W.net
>>935
> やりたい放題

937 :デフォルトの名無しさん:2017/09/29(金) 08:26:10.73 ID:XCA+sdta.net
一般的なdllの定義とは違うけど、やりたい放題はできる

938 :デフォルトの名無しさん:2017/09/29(金) 08:41:13.28 ID:zrPER7+W.net
>>937
ぶちこめればって前提つき?

939 :デフォルトの名無しさん:2017/09/29(金) 09:01:43.36 ID:tIQyCYwJ.net
やりたい放題を万能と訳してしまう文盲がいると聞いて

940 :デフォルトの名無しさん:2017/09/29(金) 09:12:29.27 ID:XCA+sdta.net
日本語としてはイコールじゃないが、これはイコールでいいだろ
そういうの読めないほうが…

941 :デフォルトの名無しさん:2017/09/29(金) 09:23:48.72 ID:zrPER7+W.net
>>940
>>935>>939もスルーでいいよ
論点には突っ込めずただ煽りたいだけだろうし

942 :デフォルトの名無しさん:2017/09/29(金) 09:44:33.30 ID:Rcj5pIbT.net
スレのテンプレも読めない奴が言うと草

943 :デフォルトの名無しさん:2017/10/02(月) 15:54:05.43 ID:RCSwdawe.net
BYTE型の配列をメモリ上で圧縮展開できないか調べてます。
形式はZIPでもそれ以外でもなんでもいいです。

C#だとDeflateStreamというクラスがあるようなのですが、
Win32APIではどういう方法が考えられますか?

944 :片山博文MZ :2017/10/02(月) 16:04:59.75 ID:glCRVK81.net
lzexpandかexpand.exeなら圧縮ファイルの展開ができる。メモリー上でやりたいなら、Win32APIじゃないけどzlibがスタンダード。

945 :デフォルトの名無しさん:2017/10/02(月) 16:11:45.58 ID:oE42sBRL.net
RLE

946 :デフォルトの名無しさん:2017/10/02(月) 16:30:11.11 ID:L6BLLTIR.net
Cabinet.dll系

947 :デフォルトの名無しさん:2017/10/03(火) 21:46:20.74 ID:njFrOp6b.net
>>879
ID:xJTY0L3vは、そのスレを私物化した頭がおかしい人
この人の文章は特徴があるから、該当したらスルー推奨

ここにまで出張してきたのか、なんてこったい

948 :デフォルトの名無しさん:2017/10/04(水) 22:35:29.05 ID:PQrbpt2K.net
>>947 >ここにまで出張してきたのか
というリクエストにお答えして、
https://www.slideshare.net/MoriharuOhzu/ss-14083300
という指摘があって、指摘通り、複数機能を分割してツギハギの算譜を構築していった。
80%位が、VBのライブ(常駐部+非常駐部)の内容に、旧バージョンのQBやGWの内容を継ぎ足していった。
その結果、巨大になりすぎて、発生条件が異なるハングアップが発生した。
常に同じ場所で発生するのであれば、ルーチンの障害が考えられるけど、数行の追加・削除で発生位置が変化するハングアップは、原因特定が困難なメモリーの管理障害と考えられる。
ここでも指摘があった通り、わずか1MB位のソースデータで発生する障害というと、Win32系、つまり、Win-NT系がMS-DOSから引き継いでいる、常駐処理部分の640又は720KBの壁と呼ばれている、メモリーの割り当て部分の内容。
これは、N88, GW-Basic, Q-Basic, Visual Basic とずっと悩まされ続けた内容で、
GQとQBは、オーバーレイ化、VBは、30-60KB位づつ非常駐部(*.FRM)に移動して対応した。
FBでの対応というと、DLL化とGW用語でのチルドレンの使用。
ということで、GWの頃のルーチンの復活、半自動化したチルドレン作成ソフトの復活となった。
ここでは、このあたりの指摘をする人がいないので、探したところ
大学のサイトで、解説があった。
http://pepper.is.sci.toho-u.ac.jp/index.php?plugin=attach&refer=%BB%B3%C6%E2%A4%CE%BC%F8%B6%C8%A4%CE%A5%DA%A1%BC%A5%B8%2F16%BD%A9%2F%A5%AA%A5%DA%A5%EC%A1%BC
%A5%C6%A5%A3%A5%F3%A5%B0%A5%B7%A5%B9%A5%C6%A5%E0&openfile=8-3_%C2%E7%CD%C6%CE%CC%CC%E4%C2%EA%A4%C8%A5%AA%A1%BC%A5%D0%A1%BC%A5%EC%A5%A4.pdf
http://www-higashi.ist.osaka-u.ac.jp/~y-nakamr/lecture/systemsprograming2008/sp20081015.pdf
のが見つかった。
日曜プログラマーなので、障害対応ルーチン、つまり、現在実行中のルーチン名、正常終了以外の場合の終了情報、異常値で参照された場合の自動復旧情報をファイルに出力し続けている。
専門のプログラマーはあまりやらない機能だが、ド素人が行う場合には必須の機能。専門のプログラマーの方でも、ゲームプログラムの実行状況をRS-232Cから垂れ流すという市販ソフトがあった。
これが邪魔して、DLL化ができないでいる。

949 :デフォルトの名無しさん:2017/10/04(水) 22:40:41.59 ID:arhAZny/.net
病院行っとけよ

950 :片山博文MZ :2017/10/04(水) 23:02:37.86 ID:HMkkIXOi.net
DLL化実現したくば、此、再入可能な算符で新たなる記憶管理法に改める事を強いる。新時代たる基本軟件の見識を理解せずば、現代的に非ず也。

951 :片山博文MZ :2017/10/04(水) 23:21:47.13 ID:HMkkIXOi.net
日曜博客を名乗る者共、何時迄プロに転身せぬ身の程を哀しむ乎。是、翌檜にも劣る迷い人と見るに、難儀なる人生を案ずる也。
我、所謂ギットハブなるウェッブ居留地にて自分の造成物を多数散布しけり。時代を先取るべき博客が時代に遅れるとは如何に惨めなる乎。

952 :片山博文MZ :2017/10/04(水) 23:29:27.16 ID:HMkkIXOi.net
ここまで古いヤツが居たとは。。。
博物館行き決定!!!

953 :デフォルトの名無しさん:2017/10/05(木) 22:13:32.68 ID:NosQ3QuL.net
>>950
高校を4年で卒業した実績を有する吾輩としては、書き下し文を正しく理解する力を能わず。
因りて誤読、誤字、誤文法多数ありなん。人我を天災と呼ぶなん。
人再入可能というなん。なれど具体的例を流れ図で説明するを能わす、Cをもって説明す。
https://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A8%E3%83%B3%E3%83%88%E3%83%A9%E3%83%B3%E3%83%88
今は昔人Aを診ず、よりてCを持って語る。8080Aを語る我、Cを語ること能わず。

人古き良き伝統を破棄し、新語を創り語る。更なる新語を作るも、これなん、古き伝統なり。
>>952
要は、多重処理が可能な(大型コンピューターでは)一般的なライブルーチンでしょう。
作業領域をサブ内に持たないように、参照側に定義してゆく方法。
外部参照を前提とする大域参照(障害情報の保存)ができないことがDLL化できない理由になっています。
専用の障害処理ルーチンを作れば別ですけど。https://www.slideshare.net/MoriharuOhzu/ss-14083300
な方々が、同じような処理をコピーするなというのです。

954 :デフォルトの名無しさん:2017/10/05(木) 22:14:41.62 ID:NosQ3QuL.net
>>951
友有。遠方に居たり。友センターにて9割を取る博学なり。されど卒業するを能わず。
電算技術を学びたるも9割が中退す。
我5割なり。門にて脚切られたり。電算を学ぶ事能わず、4馬鹿カルテットの門に入る。
電算の夢追いて、野に下る。雅号を探せば文人の末席を汚すを知るなり。
我が電算技術は幼稚なり。人我を踏み越えて新譜を発表す。
時代の先端を征く者、時代には生きられぬ。
>>952
博物館で展示されているような、MS-DOS用ソフトのいくつかは、私が発表した内容の改良品です。
「これこれの機能はありません」と記載されていた「これこれ」は私が発表したものです。
発表から2年ぐらい遅れて申請されて特許になっていた処理方法もあったし、
こんなのやってますよ、って求人に来た某社人事部長に内容を話せば、「おかげで特許取れました」と、お茶菓子を持ってきたし。
「新しい方法を開発した」なんて、販促パンフに書いてあったソフトを買ったらば、電算課の教授陣が「(私のやり方は)無意味な方法だ」と罵倒していた方法だったりした。
同級会の帰りバスの中で「こんなソフトがあったらいいね」「お前描けよ」「英語を読まなきゃなんないからいやだ」と話していたら、だれかわからないですが、真剣に聞いていた人がいました。
この方法は発表されました。大学同窓会での会話から新規に開発されるソフトって結構多いです。

>>869 の指摘、一般教養の講義内容で、
>単精度ではおかしくなる。
倍精度を使って処理する方法があるけど、講義では単精度で対応する方法を教える
という内容があった。何かで大学教授の手記が記載されていて、
32bitでやるようにという課題に対して、大学のシステムには64ビット処理ライブラリーが登録されていないから実行不能である(課題に間違いがある)という回答があったこと
を嘆いていた内容があった。
この手の処理で、64ビット処理を自作してやった同級生(電算課以外)がいたのですが、大型を使っていたら、電算科教授に殴られたのです。
暴行を受けているような声が聞こえたので、電算室に飛び込んだらば、教授が出て行って、痛みをこらえている同級生がいました。
電算科の暴力教授なら、単精度でやらないと殴りつけていたね。今は昔。

955 :片山博文MZ :2017/10/05(木) 22:32:50.80 ID:Xv32D2hU.net
>>953
ファイルマッピングを使えば、メモリー領域を共有できるよ。

956 :片山博文MZ :2017/10/05(木) 22:43:02.71 ID:Xv32D2hU.net
DLLの共有セクションに変数やコードを入れれば、変数やコードを共有できるよ。
MSVCの場合は、
#pragma data_seg(".shared")
...
#pragma data_seg()
の中に変数を入れて
.defファイルに
SECTIONS
".shared" READ WRITE SHARED
と書いて、DLLのプロジェクトに.defファイルを追加する。

957 :片山博文MZ :2017/10/05(木) 22:57:50.83 ID:Xv32D2hU.net
https://msdn.microsoft.com/ja-jp/library/h90dkhs0.aspx

958 :デフォルトの名無しさん:2017/10/06(金) 00:07:58.97 ID:4rQw4n+d.net
>>956
ちょこっとだけメモリ共有したいときいいよね
排他処理に InterlockedExchange なんかを使って

959 :片山博文MZ :2017/10/06(金) 00:17:07.07 ID:u49AV52w.net
gcc/g++の場合は、__attribute__((section (".shared"),shared))を使うんだった。

960 :デフォルトの名無しさん:2017/10/29(日) 16:13:05.10 ID:9AFyIjHV.net
shcreatedirectoryexを無効化するにはどうしたら良いでしょうか?

961 :片山博文MZ :2017/10/29(日) 16:14:21.78 ID:k1qoOab2.net
>>960
APIフック。

962 :デフォルトの名無しさん:2017/11/06(月) 16:32:15.17 ID:vBzMORbG.net
PEヘッダについての質問ってどこですればいいですか?
スレチな気がします・・・けどお願いします

963 :デフォルトの名無しさん:2017/11/06(月) 19:45:55.24 ID:6JLIEeFJ.net
聴き給へ

964 :デフォルトの名無しさん:2017/11/06(月) 21:00:51.96 ID:vBzMORbG.net
ありがとうございます

APIフックのための仲介DLL作成ツールを使おうと思ったんですけどkernel32.dllやuser32.dllを引数に与えても動かなくて
エラーの内容見てみたらNumberOfRvaAndSizes=0って出ていて
調べてみるとディレクトリ配列の数を示すパラメータみたいなんでPE INFOをつかって見てみました
そうしたら、Directoriesの情報タブにはExportの内容が表示されていたのですがDirectories Exportのサイズは0でした

ここで疑問なんですが、Directoriesのパラメータ(Rva, Size)がPE Infoに表示されているのにディレクトリ配列の数が0になっているのはなぜでしょうか?
また、ExportディレクトリがSize=0ならエクスポート関数のリストはどこから来たんでしょうか?

そのソフトのソースを見てみると本来はディレクトリ配列の最初の要素からエクスポート関数のリストを得るものだったのですがそのようなメンバはない(というかディレクトリ配列の数が0)みたいです

どなたかわかりましたらよろしくお願いします

965 :デフォルトの名無しさん:2017/11/06(月) 23:03:33.39 ID:9FNc82fk.net
手元にWindows環境がないので当てずっぽうに過ぎないが
dllがx64の奴だからと予想

966 :デフォルトの名無しさん:2017/11/06(月) 23:21:19.33 ID:vBzMORbG.net
>>965
ありがとうございます、user「32」.dllとなっていたのでx86と同じだと思っていました
試してみたいですけど家に32bit環境ないですね・・・

967 :デフォルトの名無しさん:2017/11/07(火) 16:30:21.10 ID:speVoQlz.net
wow64の中のを入れた?

968 :デフォルトの名無しさん:2017/11/08(水) 00:50:49.35 ID:ZqGpDlPC.net
>>967

>>964です
wow64のなかにあったuser32.dllを使うと動きました、ありがとうございます!
できれば、なぜ64bit版としか思えないフォルダ名のなかのものなら動いたのか、そもそもwow64とsystem32の同名ファイルは何が違うのか教えていただけないでしょうか?

969 :デフォルトの名無しさん:2017/11/08(水) 00:59:31.38 ID:ZqGpDlPC.net
すみません、ググったら出てきました
System32フォルダに入ってる方のdllが64bit用、wow64の中が32bit用という逆転があるんですね

教えていただいた方々ありがとうございました

970 :片山博文MZ :2017/11/08(水) 01:01:16.79 ID:TZ5JAUzS.net
マイクロソフトは、64ビット環境で動くDLLをsystem32に格納し、32ビットのDLLをwow64に格納することにした。
32ビットと同じ名前なのは、互換性のため。詳しくはWin64APIについて調べるといい。

971 :デフォルトの名無しさん:2017/11/08(水) 01:01:34.79 ID:0mQs8SG2.net
>>968
wow64 = Windows (32bit) on Windows 64bit
→32bit

system32 = 昔(32bit)の時のフォルダー名変更してないだけ
→64bit

972 :デフォルトの名無しさん:2017/11/08(水) 01:31:09.47 ID:MEe7IGP8.net
systemのままで良かったよね

973 :デフォルトの名無しさん:2017/11/08(水) 03:22:35.44 ID:pi2d/ZnM.net
32ビットはブームだったからなあ
そのくせProgram Filesはx86ってなんだよって感じ

974 :デフォルトの名無しさん:2017/11/08(水) 03:41:30.24 ID:R0qhel/o.net
system32はWoW16でsystemを使ってたからねしょうがないね

975 :デフォルトの名無しさん:2017/11/08(水) 06:10:07.81 ID:ZWKv78KM.net
>>969
w(32) on w64
の略だから逆転はしていない
紛らわしいネーミングだとは思うが
ディレクトリ名決め打ちの糞ソフトが
大量に出回ったあとだからやむを得ない

976 :デフォルトの名無しさん:2017/11/08(水) 18:38:40.88 ID:ROkXXR0p.net
win32Windowsアプリって真っ白から作るんだな昔凄い量打ち込んでやっとウィンドウ出したのを思い出したわ・・・

977 :デフォルトの名無しさん:2017/11/08(水) 18:48:38.98 ID:ZM9wnitb.net
main()から手打ちしてたのはwin3.1時代までだなw

978 :デフォルトの名無しさん:2017/11/08(水) 19:00:03.99 ID:ROkXXR0p.net
>>977
今は基礎作ってくれるのか10年前だからな基礎作るだけで学校の午後の授業が半分使ったしw

979 :デフォルトの名無しさん:2017/11/08(水) 19:02:13.24 ID:u5hLhTv2.net
10年前でも、WinMainから書いて無かったか?

980 :デフォルトの名無しさん:2017/11/08(水) 19:07:13.31 ID:ROkXXR0p.net
書いてなかったねえprint貰って全部手書きで最初からウィンドウの幅構成とかカタカタ打ってたなそれか楽させないために空のファイルで作らされてたか

981 :片山博文MZ :2017/11/08(水) 19:09:52.22 ID:TZ5JAUzS.net
今じゃWTLとかMFCとかが無料で使えるから、手作業は減っているはずだ。

https://github.com/katahiromz/MZC4

982 :デフォルトの名無しさん:2017/11/08(水) 20:59:58.61 ID:ROkXXR0p.net
構成の仕方まだわからんから出来ない

983 :デフォルトの名無しさん:2017/11/08(水) 21:34:54.68 ID:R0qhel/o.net
最後にWTLウィザード使ったのいつだろう?ってぐらいご無沙汰だわ

984 :デフォルトの名無しさん:2017/11/08(水) 23:59:13.54 ID:S5satkVH.net
バッチプログラムから起動するかコマンドラインから起動するかで WinMain() アプリからの戻り方が違うのが困る、いまさらだが。

985 :デフォルトの名無しさん:2017/11/09(木) 00:24:21.64 ID:UmTkKmYx.net
バッチで?

986 :デフォルトの名無しさん:2017/11/09(木) 03:45:53.03 ID:5qwvxsG7.net
コマンドプロンプトやパワーシェル上から手入力でnotepad.exeと入力してメモ帳を起動すると、すぐに端末に制御が戻ってくる。

一方、以下の内容のように2回メモ帳を起動するbatファイルを作り実行すると一つ目のメモ帳が終わるまで待つことがわかる。
notepad.exe
notepad.exe

なお、windows10の場合、電卓calc.exeがユニバーサルWindowsプラットフォームのアプリなので
以下の内容のbatファイルからの起動でもすぐに制御が戻ってくるので電卓が2つ同時起動された状態になる。
calc.exe
calc.exe

ようするに、コンソールアプリ、Windowアプリ、ユニバーサルWindowsプラットフォームアプリの3種類でそれぞれ挙動が違う。

987 :デフォルトの名無しさん:2017/11/09(木) 04:18:01.90 ID:OMOJ5BWv.net
昔はopenGLを使ってたんだったわ昔のプロジェクト起動したらおまじないがエラー起こしてた

988 :デフォルトの名無しさん:2017/11/09(木) 05:04:07.82 ID:RrHmFgzV.net
コマンドプロンプト上でのバッチファイル実行の挙動はDOSの仕様(MS-DOS)

バッチファイルは順次に作動するように作られてるので、WIN32プロセスの
終了待機が行われる。
ユニバーサルアプリは、DOS窓がEXEの終了待機を処理できないだけ。
WIN32アプリも、作りによっては同じく終了待機できない可能性はある。

989 :デフォルトの名無しさん:2017/11/09(木) 05:06:38.10 ID:RrHmFgzV.net
補足すると、exeの戻り値で処理を分けるっていうのはDOS時代よく行うことだったので、
終了待機しないと戻り値が取れなくて困る。

990 :デフォルトの名無しさん:2017/11/09(木) 10:21:19.15 ID:5qwvxsG7.net
OSの正常なシャットダウンや再起動を妨げるクソなドライバー ZN200pcie.sys が悪名を轟かせている、
SKNET MonsterTV PCIE3 のドライバー追加・削除する時に処理をある程度自動化するため今もバッチ処理使ってる。
ドライバーを追加・削除するためのSKNET謹製アプリがGUIアプリなので終了を待ってくれないといろいろ困る。


set WAIT_EXE="C:\Program Files\Git\usr\bin\sleep.exe"
taskkill /F /IM MonsterTVLivePlayer.exe
taskkill /F /IM MonsterTVPlayer.exe
taskkill /F /IM MonsterTVMenu.exe
sc stop MonsterTVService
%WAIT_EXE% 3
PCIE3_win10_Driver\DriverInstall.exe <-- こいつがGUIアプリ。
sc start MonsterTVService
exit /B

991 :デフォルトの名無しさん:2017/11/09(木) 10:33:48.20 ID:RrHmFgzV.net
PCIE3_win10_Driver\DriverInstall.exe の終了を待ちたいけど待ってくれないなら、
このスレ的にはそれを起動して終了を待つプログラムを組めばいいんじゃない?

992 :デフォルトの名無しさん:2017/11/09(木) 10:46:19.38 ID:5qwvxsG7.net
>>991
失礼。質問したかったんじゃなくて、バッチがいまだ現役な例をあげた。
バッチでPCIE3_win10_Driver\DriverInstall.exe を終了待ちできてるので問題ない。

993 :デフォルトの名無しさん:2017/11/09(木) 11:23:34.26 ID:UInw5/Yz.net
次スレよろ

994 :デフォルトの名無しさん:2017/11/09(木) 11:38:29.16 ID:9lAepYsb.net
待ってくれないならループで待つようにすればいいだけの話だな

995 :デフォルトの名無しさん:2017/11/09(木) 16:34:53.73 ID:3Mpnex4d.net
待っててくれないなら追いかければいいよ

996 :デフォルトの名無しさん:2017/11/11(土) 19:44:42.77 ID:4LNBDgYy.net
Win32API質問箱 Build124
https://mevius.5ch.net/test/read.cgi/tech/1510395780/

997 :デフォルトの名無しさん:2017/11/12(日) 17:50:54.93 ID:k+Q3OR2Q.net
test
http://mevius.2ch.net/test/read.cgi/tech/1510395780/

998 :デフォルトの名無しさん:2017/11/12(日) 17:51:42.96 ID:k+Q3OR2Q.net
なるほど新リンク先は 5ch がいいのか 2ch がいいのか
ようわからん
教えてけれ

999 :片山博文MZ :2017/11/12(日) 17:55:07.59 ID:hcIx1LXl.net
>>998
将来的には5chに移行するから、5chがいい。

1000 :デフォルトの名無しさん:2017/11/12(日) 18:27:23.43 ID:C1sLEmf0.net
ラスト

1001 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1001
265 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★