板検索:
Win32API質問箱 Build123 (1302)
まとめビュー
重複読み込みスレ:このスレは、2重読み込みでレスが重複している可能性があります。修復する場合はこちらをクリックしてください。
1
デフォルトの名無しさん[sageteoff]   投稿日:2016/10/08 12:33:02  ID:0jaJMPXG.net(10)
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build122
コメント2件


2
デフォルトの名無しさん[]   投稿日:2016/10/08 12:35:25  ID:RMZHGp4O.net(4)
>1 乙乙

3
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:43:30  ID:0jaJMPXG.net(10)
関連スレ

【C++】 DirectX初心者質問スレ Part40
【C++】 DirectX初心者質問スレ Part40 【C】

Visual Studio 2015 Part7

4
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:44:15  ID:0jaJMPXG.net(10)

5
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:45:29  ID:0jaJMPXG.net(10)

6
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:48:44  ID:SDbMDtMb.net(4)
MFCはオワコン

MFC相談室 mfc23d.dll

7
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:50:40  ID:iZfxeHbI.net(4)
Win32API が使える windows 用の Objective-C ってある?

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

9
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:57:43  ID:iZfxeHbI.net(4)
_T はやめて L しか使ってないな
コメント4件

10
デフォルトの名無しさん[sage]   投稿日:2016/10/08 13:05:44  ID:SDbMDtMb.net(4)
VC++のBOMなしutf-8対応はよ

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

12
デフォルトの名無しさん[sage]   投稿日:2016/10/08 13:13:10  ID:RMZHGp4O.net(4)
swiftでWin32API叩けるんかな

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

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

15
デフォルトの名無しさん[sage]   投稿日:2016/10/08 19:01:31  ID:GxOhc35M.net(4)
誤爆orz

16
デフォルトの名無しさん[]   投稿日:2016/10/09 14:41:37  ID:zS2VLXB8.net(2)

17
デフォルトの名無しさん[sage]   投稿日:2016/10/12 13:29:03  ID:CGbCriuU.net(2)
なんでWin64APIって出ないんだろうね
コメント2件

18
デフォルトの名無しさん[sage]   投稿日:2016/10/12 18:18:40  ID:rUC8jhfl.net(2)
_T でもう慣れちまった
コメント2件

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

20
デフォルトの名無しさん[]   投稿日:2016/10/15 13:31:49  ID:5kX/FrWC.net(2)
>9
+1

21
デフォルトの名無しさん[sage]   投稿日:2016/10/15 19:45:46  ID:D3zuPPkw.net(2)
>18
スレッド的には TEXT 一択

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

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

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

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

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

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

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

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

30
デフォルトの名無しさん[]   投稿日:2016/10/26 13:52:39  ID:58gjeL/k.net(2)
ジョイステックってキーボードやマウスみたいにフックできるのでしょうか
こんなコードが検索でかかるのですが、これをつかいますか?
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  ID:L3NvQGUf.net(2)
ドライバーの存在しないデバイスに無理矢理標準のゲームパットのドライバをインストールさせることは可能でしょうか

32
デフォルトの名無しさん[sage]   投稿日:2016/10/31 11:48:02  ID:8iOXYzaz.net(2)
それのどこがWin32APIなの?

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

34
デフォルトの名無しさん[sage]   投稿日:2016/10/31 14:24:45  ID:oRn+7MiJ.net(4)

35
デフォルトの名無しさん[sage]   投稿日:2016/11/01 07:22:31  ID:BruE0qoG.net(2)
あざす

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

37
デフォルトの名無しさん[sage]   投稿日:2016/11/05 00:31:14  ID:DUzD1Vkt.net(4)
そうだな
そんなに速度に対してシビアなプログラミングしてるのか?w
コメント2件

38
デフォルトの名無しさん[sage]   投稿日:2016/11/05 01:16:53  ID:echkH5Mx.net(2)
>37
あえて遅い方を選ぶ理由は?
コメント4件

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

40
デフォルトの名無しさん[sage]   投稿日:2016/11/05 03:05:01  ID:jJRBXXEI.net(6)
VCの最適化は糞なんでOFFしてます

41
デフォルトの名無しさん[sage]   投稿日:2016/11/05 03:43:13  ID:QPrRTgR0.net(4)
SSD使えよ

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

43
デフォルトの名無しさん[sage]   投稿日:2016/11/05 07:53:22  ID:QPrRTgR0.net(4)
Win32でもconio.hで書けるよ

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

45
デフォルトの名無しさん[sage]   投稿日:2016/11/05 11:58:41  ID:2n9hgzl5.net(6)
普通の人は使い分けてるのか?
普通のwinプログラミングじゃfopen見ないと思うんだが
コメント4件

46
デフォルトの名無しさん[sage]   投稿日:2016/11/05 12:11:34  ID:Bnw8PuKo.net(2)
>45
ホントカネー

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

48
デフォルトの名無しさん[sage]   投稿日:2016/11/05 12:50:18  ID:0pOl8O7N.net(4)
>47
_tfopen_sの実態は
fopen_s, _wfopen_sなんだがw

fopen 9,180,000件
適当こいてんじゃねーよw
コメント2件

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

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

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

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

そんなことはない。

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

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

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

54
デフォルトの名無しさん[sage]   投稿日:2016/11/05 13:54:15  ID:V6+SRNFm.net(2)
>44
Windowsでfopenを使う理由はないよ
コメント2件

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

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

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

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

59
デフォルトの名無しさん[sage]   投稿日:2016/11/05 23:04:33  ID:kO1gZKnI.net(4)
おまえら、なんの話してんだ?
linuxってなんだよwスレタイを0xffffffffffffffff回復唱しろよ
コメント2件

60
デフォルトの名無しさん[sage]   投稿日:2016/11/05 23:08:52  ID:qKcyypJI.net(10)
こんなスレに来るんだからプログラム書くんだろうに、
Linuxの名前くらい知らずに仕事になるの?
コメント2件

61
デフォルトの名無しさん[sage]   投稿日:2016/11/05 23:09:10  ID:Y72Y2Zla.net(4)
既にスレ全体を-1回読んでいる

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

63
デフォルトの名無しさん[sage]   投稿日:2016/11/05 23:16:43  ID:/oeNR6O2.net(2)
>59
-1回復唱するとは?
コメント2件

64
デフォルトの名無しさん[sage]   投稿日:2016/11/05 23:24:36  ID:jJRBXXEI.net(6)
>63
ggれかす

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

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

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

68
デフォルトの名無しさん[sage]   投稿日:2016/11/06 08:28:24  ID:LG3GvlVh.net(2)
っえ?
linuxでもWin32api呼べるよ
コメント2件

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

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

71
デフォルトの名無しさん[sage]   投稿日:2016/11/06 09:15:57  ID:rGVVvSQ9.net(2)
>65
それで問題ない
UTF-8だけなら
コメント2件

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

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

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

75
デフォルトの名無しさん[sage]   投稿日:2016/11/06 12:55:35  ID:5/z3Ppl4.net(14)
つConnectDebugger

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

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

78
デフォルトの名無しさん[sage]   投稿日:2016/11/06 14:25:48  ID:7DBohWvr.net(10)
使える、呼べる、の定義次第だな。
呼ぶだけ(何もしない)ならすぐできる。
コメント2件

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

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

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

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

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

っあ、分かったWin32APIというものがなんなのかしらないのか
コメント2件

84
デフォルトの名無しさん[sage]   投稿日:2016/11/06 15:36:21  ID:7DBohWvr.net(10)
>83
プログラマならLinuxくらい勉強しておこうぜ。
コメント2件

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

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

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

87
デフォルトの名無しさん[sage]   投稿日:2016/11/06 15:48:22  ID:7DBohWvr.net(10)
>85
APIと実装は違うというのはわかってるよね?
コメント2件

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

89
デフォルトの名無しさん[sage]   投稿日:2016/11/06 15:59:46  ID:xHDOqiQx.net(2)

90
デフォルトの名無しさん[sage]   投稿日:2016/11/06 16:01:51  ID:YPGx/bgn.net(4)
Lindows

91
デフォルトの名無しさん[sage]   投稿日:2016/11/06 16:07:35  ID:5/z3Ppl4.net(14)
wineもLindows関する話題もOKですね
boostもOKですか?
コメント2件

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

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

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

>91
LindowsのどこにWin32APIがあるんだよ。
boostもだ。
コメント2件

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

96
デフォルトの名無しさん[sage]   投稿日:2016/11/06 19:47:14  ID:YPGx/bgn.net(4)
今今C

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

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

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

ちなみに、DialogBoxでは処理が滞ってしまいました。
コメント4件

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

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

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

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

103
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/11/07 00:33:16  ID:bxaGR4em.net(4)
>98
IsDialogMessage使ったか?

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

105
デフォルトの名無しさん[]   投稿日:2016/11/07 04:01:23  ID:EaPQMBZD.net(2)
>101
これはひどい

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

107
デフォルトの名無しさん[sage]   投稿日:2016/11/07 08:37:44  ID:fwwW9lIx.net(2)
>101
何を言っているんだ?

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

109
デフォルトの名無しさん[sage]   投稿日:2016/11/07 21:00:42  ID:lMECrzfj.net(2)
あるね

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

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

111
デフォルトの名無しさん[]   投稿日:2016/11/07 23:35:14  ID:xNTfrSvb.net(2)
98です。

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

一瞬で終わっているのは事実です。
IsDialogMessageは使っています。
原因を調べています。
コメント2件

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

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

114
デフォルトの名無しさん[]   投稿日:2016/11/08 00:42:20  ID:/LmyXqRX.net(2)
>110
シュミレーションってなに?
コメント2件

115
デフォルトの名無しさん[sage]   投稿日:2016/11/08 00:44:34  ID:unHUC1CF.net(4)
シュミなら何でもできる

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

117
デフォルトの名無しさん[sage]   投稿日:2016/11/08 01:36:27  ID:unHUC1CF.net(4)
1.80代
2.60代
3.40代

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

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

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

121
98[]   投稿日:2016/11/08 06:00:23  ID:EP2Ba4mn.net(2)
>112

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

122
デフォルトの名無しさん[sage]   投稿日:2016/11/10 21:09:42  ID:AasTbJ+R.net(2)

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

ついでに次スレはワッチョイでもつけよう
コメント2件

124
デフォルトの名無しさん[sage]   投稿日:2016/11/11 12:39:26  ID:/bmaODHZ.net(2)
もうホスト名表示でいいだろ

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

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

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

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

128
デフォルトの名無しさん[sage]   投稿日:2016/11/11 19:38:22  ID:F0Rj6jl1.net(4)
IDでじゅうぶん

129
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:04:48  ID:0rL2xNMJ.net(4)
ホスト名がベター

130
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:06:12  ID:DbOMb6Sb.net(2)
ホスト名出して主張してくれや

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

132
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:36:56  ID:F0Rj6jl1.net(4)
IDはあったほうがいいね

133
sp49-98-77-115.mse.spmode.ne.jp[]   投稿日:2016/11/11 20:37:29  ID:0rL2xNMJ.net(4)
ホスト名がベター

134
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:44:35  ID:X9bDlJ5d.net(2)
ホスト名は「たちばな誠」

135
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:51:04  ID:Tfn5AWDv.net(2)
ホスト名が良いカモね

136
デフォルトの名無しさん[sage]   投稿日:2016/11/12 04:05:38  ID:6wPviZ3t.net(4)
スレチ

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

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

139
デフォルトの名無しさん[sage]   投稿日:2016/11/12 09:21:42  ID:cY8zOPne.net(2)
たんに荒らしが伸ばしてただけでしょう

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

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

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

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

144
デフォルトの名無しさん[sage]   投稿日:2016/11/12 18:18:57  ID:B8iRPOxS.net(2)
はあ…

145
デフォルトの名無しさん[sage]   投稿日:2016/11/12 21:46:22  ID:6wPviZ3t.net(4)
loopyを3回となえてください

146
デフォルトの名無しさん[sage]   投稿日:2016/11/13 04:10:41  ID:+F2H1InO.net(4)
>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...
真面目に対応しようとするとけっこう面倒
コメント2件

147
デフォルトの名無しさん[sage]   投稿日:2016/11/13 14:25:24  ID:Wy5L1qQW.net(8)
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
デフォルトの名無しさん[sage]   投稿日:2016/11/13 19:35:16  ID:wHFHc9ra.net(2)
>146
俺はGetWindowRectがまともに動かない時点でスケーリング対応は諦めたわ。なんなのこのクソOS
コメント2件

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

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

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

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

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

MF_DISABLEDとMF_GRAYEDが違ったのはWindows3.1とかの時代で今は同じ
コメント2件

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

154
デフォルトの名無しさん[]   投稿日:2016/11/14 17:38:20  ID:lPYI51le.net(4)
リストビューを一番下までスクロールさせるプログラムは?
コメント2件

155
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/11/14 17:39:51  ID:L1+AAJlg.net(2)
>154
WM_VSCROLL

156
デフォルトの名無しさん[sage]   投稿日:2016/11/14 17:51:37  ID:LtnXkA90.net(2)
メッセージおくれ
コメント4件

157
デフォルトの名無しさん[sage]   投稿日:2016/11/14 18:02:49  ID:NhpFtVry.net(2)
ListView_EnsureVisible()マクロないしは
ListView_Scroll()マクロ

158
154[sage]   投稿日:2016/11/14 19:38:32  ID:lPYI51le.net(4)
>156-157
サンクス!

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

160
デフォルトの名無しさん[sage]   投稿日:2016/11/18 03:36:41  ID:AM2vlSzW.net(4)
えっ?

161
デフォルトの名無しさん[sage]   投稿日:2016/11/18 03:58:35  ID:2yb3wpBY.net(2)
>156
つ メッセージ

162
デフォルトの名無しさん[sage]   投稿日:2016/11/18 07:05:51  ID:8X6DMoza.net(2)
Win3.1(Win16) ならスレ違いだろw

163
デフォルトの名無しさん[sage]   投稿日:2016/11/18 11:11:21  ID:GZ4BhfWs.net(2)
Win32sかもしれない

164
デフォルトの名無しさん[]   投稿日:2016/11/18 15:45:40  ID:sN4pSlll.net(2)
WS_EX_TOOLWINDOWに関して質問です。

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

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

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

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

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

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

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

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

172
デフォルトの名無しさん[sage]   投稿日:2016/11/20 16:35:07  ID:HG1JDYXN.net(2)
PCG

173
デフォルトの名無しさん[sage]   投稿日:2016/11/21 11:15:47  ID:RFCc0VFb.net(2)
ビデオカード次第だったよな

174
デフォルトの名無しさん[sage]   投稿日:2016/11/21 12:21:40  ID:gVIfBZaZ.net(2)
PSG

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

176
デフォルトの名無しさん[sage]   投稿日:2016/11/22 15:42:16  ID:eab8TQx6.net(2)
"%4s"をsprintfで作る

177
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/11/22 15:44:33  ID:iRpYF31I.net(2)
"%*s"

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

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

180
デフォルトの名無しさん[sage]   投稿日:2016/11/22 18:37:11  ID:mC9XTyoU.net(2)
ウンコしてくる

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

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

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

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

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

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

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

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

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

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

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

186
デフォルトの名無しさん[sage]   投稿日:2016/11/29 12:57:55  ID:NaRikWXT.net(4)
GetThreadTimesで計算したのは処理時間でなくスレッド生成オーバーヘッドとかも含んでるからとか?
コメント2件

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

>185
1/16は1/64の誤りです。
コメント4件

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

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

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

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

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

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

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

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

192
185[]   投稿日:2016/11/29 16:21:45  ID:ITJWJL4i.net(12)
>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

ほぼ期待通り(本来あるべき)の結果となりました。
コメント4件

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

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

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

誤差が均等にバラつくなんていう保証はないだろ
コメント2件

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

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

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

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

199
デフォルトの名無しさん[sage]   投稿日:2016/11/29 19:46:41  ID:Ofu9bBqm.net(2)
どちらか言えばDDK(WDK)の領域じゃね

200
185[]   投稿日:2016/11/29 20:53:31  ID:ITJWJL4i.net(12)
新たな発見がありました。

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

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

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

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

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

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

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

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

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

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

204
デフォルトの名無しさん[]   投稿日:2016/11/30 02:17:24  ID:WhaKofQb.net(2)
馬鹿発見

205
デフォルトの名無しさん[]   投稿日:2016/11/30 03:54:14  ID:tfyAgmME.net(2)
おいおい
話逸れすぎていて草

206
185[]   投稿日:2016/11/30 16:27:00  ID:NmhabroG.net(10)
>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()は比較的正確です。
コメント10件

207
デフォルトの名無しさん[sage]   投稿日:2016/11/30 18:01:03  ID:3E8a/W4X.net(4)
まあ当然の結果だな
コメント2件

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

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

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

210
デフォルトの名無しさん[sage]   投稿日:2016/11/30 18:03:45  ID:3E8a/W4X.net(4)
ゲームスレで聞いてみ
コメント2件

211
185[]   投稿日:2016/11/30 18:15:54  ID:NmhabroG.net(10)
>210
そうですか。教えてくれないなら結構です。
コメント2件

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

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

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

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

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

214
デフォルトの名無しさん[]   投稿日:2016/11/30 20:49:57  ID:o1dhiyLy.net(2)
.
.
■■人間性に批判殺到 あの悪質パクツイ垢 @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  ID:b9TNuS14.net(4)
>212の方法でスレッドCPU時間を見積もって報告し、帰宅しました。
ID変わります。

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

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

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

216
デフォルトの名無しさん[]   投稿日:2016/11/30 23:20:53  ID:EvMIugyq.net(2)
1回目はいろいろオーバーヘッドあるよね
コメント6件

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

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

不思議だらけで、困惑しております。
コメント2件

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

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

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

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

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

222
デフォルトの名無しさん[]   投稿日:2016/12/01 00:54:41  ID:O5qZU2qd.net(8)
クロックカウンタ使えよ

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

224
デフォルトの名無しさん[]   投稿日:2016/12/01 04:56:48  ID:O5qZU2qd.net(8)
スタック生成だけ考えても1回目と2回目以降で違ってくると思う
コメント4件

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

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

226
185[]   投稿日:2016/12/01 11:39:04  ID:SFr2s2fw.net(6)
>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で何がそんなに変わるでしょうか。
コメント10件

227
デフォルトの名無しさん[sage]   投稿日:2016/12/01 11:55:52  ID:lOA8D/0g.net(2)
最適化切ったら
コメント2件

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

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

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


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

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

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

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

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

同じ傾向になりました。

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

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

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

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

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

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

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

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

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

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

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

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

これは、大前提としてあってますよね?
コメント2件

238
デフォルトの名無しさん[sage]   投稿日:2016/12/02 10:47:04  ID:rEQGNTwO.net(2)
なんだ学校の課題だったのか

239
デフォルトの名無しさん[sage]   投稿日:2016/12/02 11:24:10  ID:EDk65fqO.net(4)
質問者より賢い人はいないのか?
これでは、質問箱が成り立たないなw
コメント2件

240
デフォルトの名無しさん[sage]   投稿日:2016/12/02 11:27:08  ID:+ocxhyeH.net(4)
>239
そうだな
じゃあ頼んだ

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

242
185[]   投稿日:2016/12/02 11:58:27  ID:H1x5ETqP.net(8)
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  ID:H1x5ETqP.net(8)
H
timeGetTime()による時間:7msec
カーネルモード時間:655usec
ユーザモード時間:9672usec
I
timeGetTime()による時間:7msec
カーネルモード時間:218usec
ユーザモード時間:4149usec
J
timeGetTime()による時間:7msec
カーネルモード時間:405usec
ユーザモード時間:10795usec
全体(A〜J)
timeGetTime()による時間:74msec
カーネルモード時間:6645usec
ユーザモード時間:71510usec

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

245
185[]   投稿日:2016/12/02 13:02:57  ID:H1x5ETqP.net(8)
本件、私としては以下の結論に至りました。

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

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

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

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

247
デフォルトの名無しさん[]   投稿日:2016/12/02 14:04:58  ID:ELslSS33.net(4)
timeGetTimeやめてQueryPerformanceCounterを使ったら?
コメント2件

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

249
デフォルトの名無しさん[sage]   投稿日:2016/12/02 14:17:49  ID:6Vgvdyao.net(2)
あらかじめtimeBeginPeriodも呼んでおかないと精度変わる
コメント2件

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

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

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

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

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

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

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

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

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

259
デフォルトの名無しさん[sage]   投稿日:2016/12/03 20:35:28  ID:xp0AwakX.net(4)
GO

260
デフォルトの名無しさん[sage]   投稿日:2016/12/03 20:36:25  ID:xp0AwakX.net(4)
the old new thing

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

262
デフォルトの名無しさん[sage]   投稿日:2016/12/04 11:37:47  ID:NE4G8kum.net(2)
com1〜com256まで
コメント2件

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

264
デフォルトの名無しさん[sage]   投稿日:2016/12/04 12:22:02  ID:SxgHpTya.net(2)
select欲しい

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

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

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

268
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/12/09 01:07:15  ID:IirsZJ4E.net(4)
訂正。
× AltはWM_NCKEYDOWNで確認できる。
○ AltはWM_SYSKEYDOWNで確認できる。

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

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

270
デフォルトの名無しさん[sage]   投稿日:2016/12/12 20:14:54  ID:cpVlzpwx.net(2)
>269
つ AllocConsole
コメント2件

271
デフォルトの名無しさん[sage]   投稿日:2016/12/12 20:17:01  ID:dREO/TsY.net(2)
EM_SETLIMITTEXT
コメント2件

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

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

273
デフォルトの名無しさん[sage]   投稿日:2016/12/13 09:08:32  ID:GC6m09wL.net(2)
>272
検索が必要ならリッチエディット
コメント2件

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

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

276
デフォルトの名無しさん[sage]   投稿日:2016/12/19 07:17:38  ID:jpBVYjvn.net(2)
拡張ウィンドウスタイル使え。
コメント2件

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

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

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

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

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

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

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

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

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

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

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

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

286
デフォルトの名無しさん[sage]   投稿日:2016/12/20 17:33:10  ID:Sq2CbWR0.net(2)
OSSのソフトを逆コンパイルするの?

287
デフォルトの名無しさん[sage]   投稿日:2016/12/20 17:44:58  ID:F0IdvAwo.net(6)
今はちがうだろ

288
デフォルトの名無しさん[sage]   投稿日:2016/12/20 18:45:47  ID:lAXr92yw.net(6)
新手のアフィか

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

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

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

292
デフォルトの名無しさん[sage]   投稿日:2016/12/21 01:09:18  ID:GvkBvmPc.net(2)
int Data = 123456;;
DWORD writeLen;
WriteFile(hFile,&Data,sizeof(Data),&writeLen,NULL);

こういうことだろ?
コメント2件

293
デフォルトの名無しさん[sage]   投稿日:2016/12/21 01:10:40  ID:kLgQ2k1v.net(2)
変数のアドレスをwritefileにわたさないとだめ。数値そのままわたしてるんでしょ
コメント2件

294
デフォルトの名無しさん[sage]   投稿日:2016/12/21 21:06:02  ID:HCdO29Rc.net(4)
>292
>293

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

295
デフォルトの名無しさん[sage]   投稿日:2016/12/22 08:34:56  ID:tk15BRot.net(4)
msdn 関数名
でググる癖をつけよう

296
デフォルトの名無しさん[]   投稿日:2016/12/22 12:50:31  ID:y+mdv7YD.net(2)
-jp もお忘れなく
コメント2件

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

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

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

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

299
デフォルトの名無しさん[sage]   投稿日:2016/12/22 18:39:46  ID:hYDEOt1H.net(6)
>298
+jp じゃなくて -jp
コメント2件

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

301
デフォルトの名無しさん[]   投稿日:2016/12/22 18:55:29  ID:zHNnrJEM.net(4)
>299
ごめんなさいwww

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

302
デフォルトの名無しさん[sage]   投稿日:2016/12/22 19:02:14  ID:tk15BRot.net(4)
>301
C言語を始めよう!

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

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

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

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

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

304
デフォルトの名無しさん[sage]   投稿日:2016/12/22 23:02:45  ID:hYDEOt1H.net(6)
LVN_ITEMCHANGED
コメント2件

305
デフォルトの名無しさん[sage]   投稿日:2016/12/23 14:54:42  ID:qGVMhgWM.net(2)
質問です。

win10 x64

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

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

よろしくお願いします。
コメント6件

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

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

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

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

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

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

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

310
デフォルトの名無しさん[]   投稿日:2016/12/23 15:59:09  ID:5tPECy1o.net(2)
>305
proxy arp

311
305[sage]   投稿日:2016/12/23 16:14:48  ID:sqLqmtwC.net(2)
>305, 306

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

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


>307

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

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

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

313
デフォルトの名無しさん[sage]   投稿日:2016/12/23 16:45:40  ID:Kb3OsEli.net(6)
>311
WDKサンプルのこのあたりが参考になるのかな
NDIS 6.0 Filter Driver
Windows Filtering Platform Packet Modification Sample
コメント2件

314
デフォルトの名無しさん[sage]   投稿日:2016/12/24 07:41:05  ID:AXa0yhpU.net(2)
>313
ありがとうございます。参考にさせて頂きます。
コメント2件

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

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

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

317
デフォルトの名無しさん[sage]   投稿日:2016/12/26 00:55:07  ID:cwwyPIk6.net(2)
同一行にコメントはwindows的にアウト
コメント2件

318
316[sage]   投稿日:2016/12/26 01:06:56  ID:CvSBnmkv.net(2)
>317
なるほど!
ありがとうございました!

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

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

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

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

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

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

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

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

325
デフォルトの名無しさん[sage]   投稿日:2016/12/30 13:46:15  ID:ymKNG2iV.net(2)
WSAStartupは成功してんの?
コメント2件

326
デフォルトの名無しさん[sage]   投稿日:2016/12/30 13:47:50  ID:LToUj4mC.net(6)
名無しだからcontinueですっ飛ばしてんだろ
コメント2件

327
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/12/30 14:07:12  ID:nsN9rWIv.net(2)
GetLastError()を調べてみよ。
コメント2件

328
324[sage]   投稿日:2016/12/30 14:41:23  ID:qor2kyvR.net(6)
>325
成功しているようです

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

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


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

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

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

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

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

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

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

330
デフォルトの名無しさん[]   投稿日:2016/12/30 15:39:26  ID:Q3tvxZdg.net(2)
マクロというオチ

331
デフォルトの名無しさん[sage]   投稿日:2016/12/30 15:40:45  ID:LToUj4mC.net(6)
対処は名前比較じゃなくてアドレス比較
コメント2件

332
デフォルトの名無しさん[sage]   投稿日:2016/12/30 19:08:50  ID:qor2kyvR.net(6)
>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関数のアドレス
を比較し一致したものを書き換えたら成功しました。

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

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

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

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

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

335
デフォルトの名無しさん[sage]   投稿日:2017/01/21 19:16:05  ID:RjpRPNfA.net(2)
前後のソース載せてみて
コメント2件

336
デフォルトの名無しさん[sage]   投稿日:2017/01/21 20:46:43  ID:1cIKmUbZ.net(4)
>333
まずは使ってるプログラム言語から書こうか
コメント2件

337
デフォルトの名無しさん[]   投稿日:2017/01/21 23:19:24  ID:0py1wTB0.net(4)
>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↑
コメント4件

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

339
デフォルトの名無しさん[]   投稿日:2017/01/21 23:31:13  ID:/qDbjX4N.net(2)
アクセス権か

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

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

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

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

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

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

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

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

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

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

349
デフォルトの名無しさん[sage]   投稿日:2017/01/25 10:51:21  ID:SLV8VPLP.net(6)
>ウィンドウがない可能性

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

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

351
デフォルトの名無しさん[sage]   投稿日:2017/01/25 12:52:29  ID:uJriqNlz.net(2)
WaitForInputIdle

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

353
デフォルトの名無しさん[sage]   投稿日:2017/02/02 12:17:03  ID:Nq0thOwX.net(2)
Shell_NotifyIconでないならこれのことかな
https://msdn.microsoft.com/en-us/library/windows/desktop/cc144099(v=vs.85).aspx
コメント2件

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

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

355
デフォルトの名無しさん[sage]   投稿日:2017/02/02 13:49:49  ID:386srHJg.net(14)
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
デフォルトの名無しさん[sage]   投稿日:2017/02/02 13:52:18  ID:89UtyOev.net(4)
Shell_NotifyIconで登録して、クリックされたらメニュー表示すればそれになる
コメント2件

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

comクラスとかでTrayNotifyWndに追加するような機能があるのかなぁ。。
コメント2件

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

359
デフォルトの名無しさん[sage]   投稿日:2017/02/02 15:53:49  ID:8dKrrq5G.net(2)
IMEツールバーみたいにタスクトレイにドッキングしたいってこと?
コメント2件

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

361
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:11:54  ID:gbCpBU15.net(2)
TrayNotifyWndを親にしてCreateToolbarExで作ればいいんじゃないのかな
コメント2件

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

363
デフォルトの名無しさん[sage]   投稿日:2017/02/02 20:07:51  ID:Eu4e1EaI.net(2)
>362
多分ソースは言語バーのcomクラス呼び出しだけで、実際の実装はWindows側
コメント2件

364
デフォルトの名無しさん[sage]   投稿日:2017/02/02 23:04:33  ID:386srHJg.net(14)
>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
コメント6件

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

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

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

368
デフォルトの名無しさん[sage]   投稿日:2017/02/03 09:34:28  ID:pF10NEzN.net(6)
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);
実験してだめだったコード。。こんな感じでした。ウインドハンドルは普通に取得は成功していたみたいなんですけどね〜
コメント2件

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

370
デフォルトの名無しさん[sage]   投稿日:2017/02/03 12:11:25  ID:oHw8NUL1.net(4)
メッセージ投げて帰ってくるかどうか
コメント2件

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

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

373
デフォルトの名無しさん[]   投稿日:2017/02/03 14:11:00  ID:mwiWK7Ca.net(12)
>370
それだと帰ってこなかったら出した側も固まりませんか?
コメント4件

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

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

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

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

377
デフォルトの名無しさん[sage]   投稿日:2017/02/03 14:39:36  ID:Q4UhsfCm.net(6)
>375
IsHungAppWindow
コメント2件

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

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

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

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

380
デフォルトの名無しさん[sage]   投稿日:2017/02/03 18:01:24  ID:Q4UhsfCm.net(6)

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

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

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

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

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

384
デフォルトの名無しさん[sage]   投稿日:2017/02/04 13:21:18  ID:cCtqcbdk.net(2)
ピンポーン 宅配便でーす お留守ですかー ピンポーン ピンポーン

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

398
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/02/06 18:06:24  ID:myCEQNc2.net(2)
>397
SetWindowPosの方がフラグ指定や挿入位置指定など、できることが多い。
コメント2件

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

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

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

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

403
デフォルトの名無しさん[sage]   投稿日:2017/02/07 15:19:54  ID:LuCsRke8.net(2)
後方互換性のため

404
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:51:17  ID:m2J0GXa0.net(2)
DeferWindowPos

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

406
デフォルトの名無しさん[]   投稿日:2017/02/17 19:08:12  ID:yGnzX63H.net(2)

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

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

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

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

410
デフォルトの名無しさん[sage]   投稿日:2017/03/01 19:53:26  ID:IeB4TnBd.net(2)
Win32_PointingDeviceあたりだろうな

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

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

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

414
デフォルトの名無しさん[sage]   投稿日:2017/03/02 19:31:01  ID:ZV5SMkF2.net(2)
ここさわって

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

434
デフォルトの名無しさん[sage]   投稿日:2017/03/05 19:45:45  ID:1JomNGIg.net(4)

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

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

437
デフォルトの名無しさん[sage]   投稿日:2017/03/10 03:48:47  ID:G57q42um.net(2)
>435
× defalut
〇 default
>436
WM_WINDOWPOSCHANGEDかな
コメント2件

438
デフォルトの名無しさん[sage]   投稿日:2017/03/10 04:07:50  ID:Vp9TD86Z.net(6)
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
デフォルトの名無しさん[sage]   投稿日:2017/03/10 05:09:47  ID:j91K0HTy.net(2)
ランサムウェアですねわかります
コメント2件

440
デフォルトの名無しさん[sage]   投稿日:2017/03/10 05:17:14  ID:Vp9TD86Z.net(6)
>439
悪さするアプリじゃないんだが?
コメント2件

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

442
デフォルトの名無しさん[sage]   投稿日:2017/03/10 07:13:07  ID:n8W4k0Sb.net(4)
>441 誤爆失礼

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

444
デフォルトの名無しさん[]   投稿日:2017/03/10 14:11:40  ID:wwCDmvkp.net(4)
図星ですねわかります

445
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/03/10 14:29:16  ID:iyjWrKHK.net(4)
NG: (HBRUSH)COLOR_BACKGROUND
OK: (HBRUSH)(COLOR_3DFACE + 1)

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

446
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/03/10 14:30:21  ID:iyjWrKHK.net(4)
ShowWindow(hWnd, SW_SHOW);
じゃなくて、ShowWindow(hWnd, nCmdShow);
かShowWindow(hWnd, SW_SHOWNORMAL);にしろ。

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

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

449
デフォルトの名無しさん[]   投稿日:2017/03/10 17:21:39  ID:wwCDmvkp.net(4)
r.right = 24 * 10;
r.bottom = 24 * 20;
コメント2件

450
デフォルトの名無しさん[sage]   投稿日:2017/03/12 21:56:50  ID:EdU52Ynw.net(4)
タスクトレイの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);
}
コメント4件

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

452
デフォルトの名無しさん[sage]   投稿日:2017/03/13 06:26:15  ID:cVbgmuk1.net(4)
右クリックとかでよく出るポップアップメニューの
フォントの大きさを変更したい場合どうすればよいですか?
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
デフォルトの名無しさん[sage]   投稿日:2017/03/13 06:47:05  ID:cVbgmuk1.net(4)
自己解決。。調べたら、メニュー・オーナードローについて詳しいページが出てきました。

454
デフォルトの名無しさん[sage]   投稿日:2017/03/13 08:55:13  ID:hLVIfrQc.net(2)
紀平さんのか

455
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/03/13 13:01:19  ID:VNPYsRzK.net(4)
>450
shell icon sizeで画一的に決まってる。

456
デフォルトの名無しさん[sage]   投稿日:2017/03/13 13:43:30  ID:N3DmujAP.net(2)
>450
オーナードロー
コメント2件

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

458
デフォルトの名無しさん[sage]   投稿日:2017/03/13 17:27:27  ID:RCZql05q.net(2)
>449
違うみたいです・・・

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

460
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/03/13 20:24:18  ID:VNPYsRzK.net(4)
>459
SelectObjectは、BeginPaintの後に呼ばないといけない。HDCが違う。
コメント2件

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

462
デフォルトの名無しさん[]   投稿日:2017/03/14 10:21:04  ID:vbV/Jpv3.net(2)
>459
テトリスのひとか
がんがれ
コメント2件

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

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

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

>461
修正しました!

>462
ありがとうございます
コメント4件

464
デフォルトの名無しさん[sage]   投稿日:2017/03/15 12:08:58  ID:7YWEdixI.net(4)
馬鹿には無理

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

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

467
デフォルトの名無しさん[sage]   投稿日:2017/03/15 13:37:27  ID:7YWEdixI.net(4)
imgurって内容変わるんじゃね

468
デフォルトの名無しさん[sage]   投稿日:2017/03/15 13:42:29  ID:h6gBY/+f.net(4)
マジかごめん

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

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

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

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

472
デフォルトの名無しさん[]   投稿日:2017/03/15 20:16:40  ID:LU+w+iAT.net(2)
rcの方だろ
コメント2件

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

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

475
デフォルトの名無しさん[sage]   投稿日:2017/03/16 09:34:05  ID:fy4K8iiJ.net(2)
こうやって手取り足取りな奴はイライラする
コメント2件

476
デフォルトの名無しさん[sage]   投稿日:2017/03/16 11:58:27  ID:bBZQNLcb.net(2)
>475
じゃあ来なければいいよ

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

478
デフォルトの名無しさん[]   投稿日:2017/03/16 17:17:19  ID:Xe646fvV.net(2)
モイっ!

479
デフォルトの名無しさん[sage]   投稿日:2017/03/16 22:29:13  ID:xw1bzJ/c.net(2)
>473
((PDEV_BROADCAST_HDR)lParam)->dbch_devicetype が全部同じなの?

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

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

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

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

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

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

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

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

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

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

489
デフォルトの名無しさん[sage]   投稿日:2017/03/21 03:48:34  ID:5huRZA1V.net(2)
> FormsもWPFも放置でUWPに移行

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

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

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

windowsが無くなりそうだしな

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

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

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

495
デフォルトの名無しさん[sage]   投稿日:2017/03/22 00:22:36  ID:153gnM05.net(2)

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

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

498
デフォルトの名無しさん[sage]   投稿日:2017/03/22 00:48:25  ID:KP40M7fU.net(2)
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
デフォルトの名無しさん[sage]   投稿日:2017/03/23 12:03:55  ID:39On3zda.net(2)
>494
APIの粒度の問題を言われてもな

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

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

これ重要

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

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

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

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

506
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/03/29 15:39:16  ID:uG+6tdKu.net(2)
overlay icons

507
デフォルトの名無しさん[sage]   投稿日:2017/03/29 15:40:33  ID:F9h34aTY.net(4)

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

509
デフォルトの名無しさん[sage]   投稿日:2017/03/29 15:43:11  ID:F9h34aTY.net(4)
これやろ

矢印

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

511
デフォルトの名無しさん[]   投稿日:2017/04/01 18:40:58  ID:m+AYjiBS.net(2)
Win32APIサポート終了のお知らせ
コメント2件

512
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/04/01 18:56:32  ID:Q4azjyiD.net(2)
>511
ソース希望
コメント2件

513
デフォルトの名無しさん[sage]   投稿日:2017/04/01 19:30:55  ID:WcYopVS3.net(2)
>512
今日の日付

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

515
デフォルトの名無しさん[sage]   投稿日:2017/04/03 02:36:19  ID:EQsFkd4r.net(2)
それもウソだよ

516
デフォルトの名無しさん[sage]   投稿日:2017/04/03 20:45:49  ID:fIAaSCsY.net(2)
ウソだってのがウソなんだよ

517
デフォルトの名無しさん[sage]   投稿日:2017/04/03 20:47:03  ID:DvppQH2R.net(2)
4/1だけにしとけよ

518
デフォルトの名無しさん[sage]   投稿日:2017/04/03 21:39:52  ID:gWDrFV4S.net(2)
昭和64年は短命
64も短命?
128移行か

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

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

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

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

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

523
デフォルトの名無しさん[sage]   投稿日:2017/04/04 05:56:42  ID:/PIYb7TP.net(2)
>519
VLIWは?

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

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

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

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

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

528
デフォルトの名無しさん[sage]   投稿日:2017/04/04 22:14:00  ID:eHZToKh6.net(2)
書くのは簡単

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

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

531
デフォルトの名無しさん[]   投稿日:2017/04/05 01:26:41  ID:XXr1MGA7.net(2)
っつーかナニを128ビットにするわけよ?
コメント2件

532
デフォルトの名無しさん[sage]   投稿日:2017/04/05 02:45:28  ID:qYLi57Sr.net(2)
俺のナニは8bitだしorz

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

534
デフォルトの名無しさん[sage]   投稿日:2017/04/05 08:54:18  ID:BdqpqknF.net(2)
just bit(1ビットだけ)だろ?

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

536
デフォルトの名無しさん[]   投稿日:2017/04/05 14:24:34  ID:+eJqUohN.net(2)
ここまで漏れの自演

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

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

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

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

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

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

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

544
デフォルトの名無しさん[sage]   投稿日:2017/04/08 17:48:41  ID:C7AQR+Mi.net(2)
すみません、教えてください。

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

どうか教えてください、宜しくお願いします。
コメント4件

545
デフォルトの名無しさん[sage]   投稿日:2017/04/08 22:40:07  ID:42pK0vcr.net(2)
>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 [sage]   投稿日:2017/04/09 07:27:35  ID:qFsmFYyf.net(2)
>544
省略せずに書いてみて。

547
544[sage]   投稿日:2017/04/10 07:47:25  ID:RoCnetHj.net(2)
すみません、お手数をおかけします。


// あああああ が表示される
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 はグループボックスです。
コメント6件

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

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

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

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

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

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

554
デフォルトの名無しさん[sage]   投稿日:2017/04/10 21:33:08  ID:G1/iiInq.net(2)
なんでESとかSSとか種類が有るの?

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

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

556
デフォルトの名無しさん[sage]   投稿日:2017/04/10 22:00:00  ID:PH6zMRzh.net(6)
ミス
意義→定義

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

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

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

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

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

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

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


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

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

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

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

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

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

563
デフォルトの名無しさん[sage]   投稿日:2017/04/12 22:43:12  ID:iYQoJoP4.net(2)
なにいってんだこいつ

564
デフォルトの名無しさん[sage]   投稿日:2017/04/12 23:28:35  ID:lhjyuLrL.net(2)
分からないのに無理して答えるなよ

565
デフォルトの名無しさん[]   投稿日:2017/04/13 02:45:23  ID:8XBnDqPS.net(2)
最近よく足がつる

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

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

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

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

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

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

570
デフォルトの名無しさん[sage]   投稿日:2017/04/14 00:20:20  ID:+RGtmVs/.net(2)
フォースを使うのじゃ

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

572
デフォルトの名無しさん[sage]   投稿日:2017/04/14 05:38:58  ID:kIyPPZzD.net(2)
>567
2行目めちゃくちゃだなw
コメント2件

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

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

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

574
デフォルトの名無しさん[sage]   投稿日:2017/04/14 11:11:32  ID:LVRPT4/o.net(2)
Win32APIの後継でc++/cliじゃないライブラリってないのかね?
コメント6件

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

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

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

578
デフォルトの名無しさん[sage]   投稿日:2017/04/14 18:31:24  ID:uRqmXJpf.net(2)
WinRT API

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

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

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

582
デフォルトの名無しさん[sage]   投稿日:2017/05/05 00:01:23
Windows10S では Win32/.net アプリは動かないだと。
UWPに変換すれば行けるらしいが、もうおしまいか?

583
デフォルトの名無しさん[sage]   投稿日:2017/05/05 00:15:11
Windows10Sが相手にされなくて終わるだけ。

584
デフォルトの名無しさん[sage]   投稿日:2017/05/05 00:41:30
既に相手されていない感

585
デフォルトの名無しさん[sage]   投稿日:2017/05/05 03:08:44
お前らが相手にされてないじゃん
おっさんしかいないだろうこのスレ

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

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

587
デフォルトの名無しさん[sage]   投稿日:2017/05/05 18:13:03
教育用途だっけ
今時のキッズは学校支給タブレットの制限外してゲームしてるらしいからその点ではいいかもな

588
片山博文MZ [age]   投稿日:2017/05/06 18:59:21
あるプログラムで使用中のGDIオブジェクトの個数を数える方法はありますか?
コメント2件

589
デフォルトの名無しさん[sage]   投稿日:2017/05/06 20:36:55
タスクマネージャで見れるよ

590
デフォルトの名無しさん[sage]   投稿日:2017/05/06 20:50:23
GetGuiResources(hProcess, GR_GDIOBJECTS)

591
デフォルトの名無しさん[sage]   投稿日:2017/05/06 20:53:17
>588
GetGuiResources
GR_GDIOBJECTS(0) Return the count of GDI objects.
ってあるし。

592
片山博文MZ [age]   投稿日:2017/05/06 20:54:47
ありがとー。

593
デフォルトの名無しさん[sage]   投稿日:2017/05/06 21:06:22
なにするつもりなのさ
コメント2件

594
片山博文MZ [age]   投稿日:2017/05/06 21:08:39
メモリーリーク対策やデバッグやらだよ。

595
雪風[]   投稿日:2017/05/06 21:54:04
>593
自演 オナヌーだろ

596
デフォルトの名無しさん[sage]   投稿日:2017/05/06 22:06:22
書いてて恥ずかしくないの?

597
デフォルトの名無しさん[sage]   投稿日:2017/05/07 02:01:32

598
デフォルトの名無しさん[]   投稿日:2017/05/07 07:23:08
firefoxとかリーク笑えるよな

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

600
デフォルトの名無しさん[sage]   投稿日:2017/05/09 09:45:13
そこまで分かってるならソース読めよ
https://github.com/Microsoft/referencesource/blob/master/System/...

SendMessageTimeoutでWM_NULLを投げてるだけだな
コメント2件

601
デフォルトの名無しさん[sage]   投稿日:2017/05/09 10:04:41
その質問コピペだよ

602
デフォルトの名無しさん[sage]   投稿日:2017/05/09 10:17:40
ありがとうございました!

603
デフォルトの名無しさん[sage]   投稿日:2017/05/09 11:30:51
>600
これ使ってDoS攻撃みたいなこと出来るんかな

604
デフォルトの名無しさん[sage]   投稿日:2017/05/09 21:20:50
最近のアプリに多い、重い処理は別スレッドで実行してGUIが固まらないようにしてる場合は役に立たないかな
コメント2件

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

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

607
デフォルトの名無しさん[sage]   投稿日:2017/05/09 23:47:50
ウィンドウがわかるならIsHungAppWindowってのがある

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

609
デフォルトの名無しさん[sage]   投稿日:2017/05/10 02:56:46
止めようとしても停まらないもの?
WindowsUpdateかな?
コメント2件

610
デフォルトの名無しさん[sage]   投稿日:2017/05/10 11:25:51
>609
ネットワーク切れてからのタイムアウトも異常に遅いんだよな

611
デフォルトの名無しさん[]   投稿日:2017/05/14 19:29:07
まだ見放されてないぞ

【IT】マイクロソフト、サポート切れOS「Windows 8、Windows XP、Windows Server 2003」にも修正ソフト提供

asahi.2ch.net
test/read.cgi/newsplus/1494723803

612
デフォルトの名無しさん[]   投稿日:2017/05/19 19:48:39
質問ささてください
構造体AをGlobalAllocで領域を確保して値を入れた後、構造体BをGlobalAllocで確保すると、構造体Aのメンバであるポインタのアドレスが変わってしまうのですが何が原因なのでしょうか?
コメント8件

613
デフォルトの名無しさん[sage]   投稿日:2017/05/19 20:35:00
あるプロセスのメモリ情報のリージョンサイズや属性を調べるにはどのAPIを使えばいいですか?
コメント2件

614
デフォルトの名無しさん[sage]   投稿日:2017/05/19 20:49:42
>612
Windowsは働き者の賢いOSだからなぁ

615
デフォルトの名無しさん[]   投稿日:2017/05/19 21:09:20
動かしたくないならLockしてください

616
デフォルトの名無しさん[sage]   投稿日:2017/05/19 21:11:02
>612
GlobalAllocじゃなくて自分で書き換えてるんでしょ

617
デフォルトの名無しさん[sage]   投稿日:2017/05/19 21:22:03
>612
GMEM_FIXEDを指定していないGlobalAllocでロックカウントが0の場合はメモリの再配置が起きる
GlobalLockとGlobalUnlockの間なら
「構造体Aのメンバであるポインタのアドレス」は変わることがないけど
GlobalUnlockを呼び出しロックを解除した場合は再配置される可能性がある
コメント2件

618
デフォルトの名無しさん[]   投稿日:2017/05/20 18:36:33
皆様レスありがとうございます
>612
構造体BのGlobalAllocをコメントアウトすれば問題なく動くのでこれが原因なのはたぶん間違いないです

>617
構造体A自体のLockやFIXは試しましたがダメでした。構造体Aは領域確保後にwinAPIに渡して値を格納してもらうのですが格納後にメンバ全ての固定が必要なのでしょうか?


ともあれメモリ再配置が原因なのですね。ありがとうございました。この方向でもう少し試してみます。
コメント2件

619
デフォルトの名無しさん[sage]   投稿日:2017/05/20 18:43:52
違うんじゃね

620
デフォルトの名無しさん[sage]   投稿日:2017/05/20 19:05:41
ソースコードにイージーミスがある可能性の方がクッソ高いと思う

621
デフォルトの名無しさん[sage]   投稿日:2017/05/20 19:06:46
>618
そもそもの使い方が間違っているんじゃないか?

>構造体Aは領域確保後にwinAPIに渡して
そのwinAPIは何?
というかなぜ隠す必要があるのか

622
デフォルトの名無しさん[sage]   投稿日:2017/05/20 19:08:39
必要最小限の再現ソース晒してからだな

623
デフォルトの名無しさん[sage]   投稿日:2017/05/21 02:26:55
構造体A、もしくはその近くのメモリ確保量が足りていないような気がする
スタック破壊、または、メモリ内容破壊では?

624
デフォルトの名無しさん[sage]   投稿日:2017/05/21 10:34:21
>613
VirtualQueryEx

625
デフォルトの名無しさん[]   投稿日:2017/05/21 10:40:12
すみません。自分が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;
}
コメント2件

626
デフォルトの名無しさん[sage]   投稿日:2017/05/21 11:10:23
GlobalAllocの戻り値のハンドルを直接キャストしてポインタに代入したら駄目だろ
ハンドルを引数としてGlobalLockを呼び出して、その戻り値をキャストしてポインタに代入しろ

627
デフォルトの名無しさん[sage]   投稿日:2017/05/21 11:25:17
蓋を開けてみればやはりこんなもんだ

628
[sage]   投稿日:2017/05/21 11:29:51
p = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
HeapFree(GetProcessHeap(), 0, p);
でうまくやってるよ,GlobalAlloc は win3.1 の仕様を下敷きにしているので使いにくいよ

629
デフォルトの名無しさん[sage]   投稿日:2017/05/21 14:52:03
オワコンだしな
今はもうmallocでいいよ
コメント2件

630
[sage]   投稿日:2017/05/21 15:16:35
>629
それはどこにあるのかな?

631
デフォルトの名無しさん[sage]   投稿日:2017/05/21 16:25:59
>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
GMEM_MOVEABLE
移動可能メモリを割り当てます。Win32 環境では、物理メモリ内でメモリブロックが移動されることは決してありませんが、既定のヒープ内で移動することは可能です。
戻り値は、メモリオブジェクトのハンドルです。このハンドルをポインタへ変換するには、GlobalLock 関数を使います。
この値を GMEM_FIXED フラグと組み合わせることはできません。

Win32では移動することがないあるよって言ってるし、GPTRフラグを使うか、メモリ確保をmallocなりに置き換えたほうが良いね
EnumPrintersに渡すバッファのポインタは別になんでも良いみたいだし

633
デフォルトの名無しさん[sage]   投稿日:2017/05/21 16:51:37
GlobalAllocはクリップボード弄る時くらいでいいよ

634
デフォルトの名無しさん[sage]   投稿日:2017/05/21 18:27:54
こうゆう奴がプロジェクトにいると、デバックでは動くがリリースでは動かない
プログラムとか出来上がるんだろうな。。。

(もちろん、リリース+デバック情報埋込なら動く最悪のパターン)
コメント2件

635
デフォルトの名無しさん[sage]   投稿日:2017/05/22 03:45:08
mallocでも、newでも好きなのつかったらいいんじゃね?

636
デフォルトの名無しさん[]   投稿日:2017/05/22 07:02:35
sizeof(0) ...

637
デフォルトの名無しさん[]   投稿日:2017/05/22 10:58:01
みなさま本当にありがとうございました。
メモリ確保の方法に関しては古いのはなんとなくわかってるのですが、意見できる程知識がないのが実情です……
ともあれ解決方法の兆しが見えたので頑張ってみます。

>634
耳が痛いですが自分も本当にそう思います……個人的には勉強になるのでいいんですが……
リリース気をつけておきます

638
デフォルトの名無しさん[sageteoff]   投稿日:2016/10/08 12:33:02  ID:0jaJMPXG.net(10)
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build122

639
デフォルトの名無しさん[]   投稿日:2016/10/08 12:35:25  ID:RMZHGp4O.net(4)
>1 乙乙

640
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:43:30  ID:0jaJMPXG.net(10)
関連スレ

【C++】 DirectX初心者質問スレ Part40
【C++】 DirectX初心者質問スレ Part40 【C】

Visual Studio 2015 Part7

641
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:44:15  ID:0jaJMPXG.net(10)

642
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:45:29  ID:0jaJMPXG.net(10)

643
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:48:44  ID:SDbMDtMb.net(4)

644
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:50:40  ID:iZfxeHbI.net(4)
Win32API が使える windows 用の Objective-C ってある?
コメント1件

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

646
デフォルトの名無しさん[sage]   投稿日:2016/10/08 12:57:43  ID:iZfxeHbI.net(4)
_T はやめて L しか使ってないな
コメント1件

647
デフォルトの名無しさん[sage]   投稿日:2016/10/08 13:05:44  ID:SDbMDtMb.net(4)
VC++のBOMなしutf-8対応はよ
コメント1件

648
デフォルトの名無しさん[sage]   投稿日:2016/10/08 13:10:51  ID:T/Z20i9z.net(2)
>9
同じく
さすがに CreateFileW( ) まではしないけど
コメント1件

649
デフォルトの名無しさん[sage]   投稿日:2016/10/08 13:13:10  ID:RMZHGp4O.net(4)
swiftでWin32API叩けるんかな

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

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

652
デフォルトの名無しさん[sage]   投稿日:2016/10/08 19:01:31  ID:GxOhc35M.net(4)
誤爆orz
コメント1件

653
デフォルトの名無しさん[]   投稿日:2016/10/09 14:41:37  ID:zS2VLXB8.net(2)

654
デフォルトの名無しさん[sage]   投稿日:2016/10/12 13:29:03  ID:CGbCriuU.net(2)
なんでWin64APIって出ないんだろうね
コメント1件

655
デフォルトの名無しさん[sage]   投稿日:2016/10/12 18:18:40  ID:rUC8jhfl.net(2)
_T でもう慣れちまった

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

657
デフォルトの名無しさん[]   投稿日:2016/10/15 13:31:49  ID:5kX/FrWC.net(2)
>9
+1

658
デフォルトの名無しさん[sage]   投稿日:2016/10/15 19:45:46  ID:D3zuPPkw.net(2)
>18
スレッド的には TEXT 一択

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

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

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

662
デフォルトの名無しさん[sage]   投稿日:2016/10/22 16:36:41  ID:ypW/SG0/.net(2)
どれ?と聞く場合は、選択肢を並べてくれないと。

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

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

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

666
デフォルトの名無しさん[]   投稿日:2016/10/23 10:32:03  ID:CGzeXgZh.net(2)
Video for Windows

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

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

669
デフォルトの名無しさん[sage]   投稿日:2016/10/31 11:48:02  ID:8iOXYzaz.net(2)
それのどこがWin32APIなの?

670
デフォルトの名無しさん[]   投稿日:2016/10/31 14:23:59  ID:oRn+7MiJ.net(4)
DDKの使い方ならここかな

671
デフォルトの名無しさん[sage]   投稿日:2016/10/31 14:24:45  ID:oRn+7MiJ.net(4)

672
デフォルトの名無しさん[sage]   投稿日:2016/11/01 07:22:31  ID:BruE0qoG.net(2)
あざす

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

674
デフォルトの名無しさん[sage]   投稿日:2016/11/05 00:31:14  ID:DUzD1Vkt.net(4)
そうだな
そんなに速度に対してシビアなプログラミングしてるのか?w

675
デフォルトの名無しさん[sage]   投稿日:2016/11/05 01:16:53  ID:echkH5Mx.net(2)
>37
あえて遅い方を選ぶ理由は?

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

677
デフォルトの名無しさん[sage]   投稿日:2016/11/05 03:05:01  ID:jJRBXXEI.net(6)
VCの最適化は糞なんでOFFしてます

678
デフォルトの名無しさん[sage]   投稿日:2016/11/05 03:43:13  ID:QPrRTgR0.net(4)
SSD使えよ

679
デフォルトの名無しさん[sage]   投稿日:2016/11/05 07:35:56  ID:DUzD1Vkt.net(4)
>38
スレチになるがマルチプラットフォーム

680
デフォルトの名無しさん[sage]   投稿日:2016/11/05 07:53:22  ID:QPrRTgR0.net(4)
Win32でもconio.hで書けるよ

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

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

683
デフォルトの名無しさん[sage]   投稿日:2016/11/05 12:11:34  ID:Bnw8PuKo.net(2)
>45
ホントカネー

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

685
デフォルトの名無しさん[sage]   投稿日:2016/11/05 12:50:18  ID:0pOl8O7N.net(4)
>47
_tfopen_sの実態は
fopen_s, _wfopen_sなんだがw

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

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

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

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

688
デフォルトの名無しさん[sage]   投稿日:2016/11/05 13:02:14  ID:qKcyypJI.net(10)
>50
>winプログラミングはTでいくのが普通だから

そんなことはない。

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

690
デフォルトの名無しさん[sage]   投稿日:2016/11/05 13:19:32  ID:0pOl8O7N.net(4)
>50
>47でヒット件数に言及しておいてそれかよw

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

691
デフォルトの名無しさん[sage]   投稿日:2016/11/05 13:54:15  ID:V6+SRNFm.net(2)
>44
Windowsでfopenを使う理由はないよ

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

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

694
デフォルトの名無しさん[sage]   投稿日:2016/11/05 18:58:42  ID:Y72Y2Zla.net(4)
Linuxでビルドできないと困るので標準関数を主に使う

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

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

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

698
デフォルトの名無しさん[sage]   投稿日:2016/11/05 23:09:10  ID:Y72Y2Zla.net(4)
既にスレ全体を-1回読んでいる

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

700
デフォルトの名無しさん[sage]   投稿日:2016/11/05 23:16:43  ID:/oeNR6O2.net(2)
>59
-1回復唱するとは?

701
デフォルトの名無しさん[sage]   投稿日:2016/11/05 23:24:36  ID:jJRBXXEI.net(6)
>63
ggれかす

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

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

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

705
デフォルトの名無しさん[sage]   投稿日:2016/11/06 08:28:24  ID:LG3GvlVh.net(2)
っえ?
linuxでもWin32api呼べるよ

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

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

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

709
デフォルトの名無しさん[sage]   投稿日:2016/11/06 09:19:59  ID:TO8zu+f0.net(4)
>71
UTF-16LEも

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

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

712
デフォルトの名無しさん[sage]   投稿日:2016/11/06 12:55:35  ID:5/z3Ppl4.net(14)
つConnectDebugger

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

714
デフォルトの名無しさん[sage]   投稿日:2016/11/06 14:17:46  ID:PBN3DkC0.net(4)
どんな環境でも win32api が使えるのかね?

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

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

717
デフォルトの名無しさん[sage]   投稿日:2016/11/06 15:20:40  ID:PBN3DkC0.net(4)
>78
そんなものを win32api というのかね?

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

719
デフォルトの名無しさん[sage]   投稿日:2016/11/06 15:26:33  ID:jrejtDgu.net(4)
アホが釣れたで

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

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

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

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

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

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

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

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

726
デフォルトの名無しさん[sage]   投稿日:2016/11/06 15:59:46  ID:xHDOqiQx.net(2)

727
デフォルトの名無しさん[sage]   投稿日:2016/11/06 16:01:51  ID:YPGx/bgn.net(4)
Lindows

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

729
デフォルトの名無しさん[sage]   投稿日:2016/11/06 16:11:14  ID:bCh//xB2.net(2)
おまいはだめ

730
デフォルトの名無しさん[sage]   投稿日:2016/11/06 16:12:50  ID:5/z3Ppl4.net(14)
おまえはなんでいいの?

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

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

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

733
デフォルトの名無しさん[sage]   投稿日:2016/11/06 19:47:14  ID:YPGx/bgn.net(4)
今今C

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

735
デフォルトの名無しさん[]   投稿日:2016/11/06 21:36:12  ID:hZSM5tbK.net(2)
初心者です。

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

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

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

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

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

739
デフォルトの名無しさん[sage]   投稿日:2016/11/06 23:04:51  ID:AHO3vAwR.net(4)
だから当たり前のこと。

740
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/11/07 00:33:16  ID:bxaGR4em.net(4)
>98
IsDialogMessage使ったか?

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

742
デフォルトの名無しさん[]   投稿日:2016/11/07 04:01:23  ID:EaPQMBZD.net(2)
>101
これはひどい

743
デフォルトの名無しさん[sage]   投稿日:2016/11/07 07:43:13  ID:/5KK1SgJ.net(2)
ここまで酷いと98が釣りに思えてきた

744
デフォルトの名無しさん[sage]   投稿日:2016/11/07 08:37:44  ID:fwwW9lIx.net(2)
>101
何を言っているんだ?

745
デフォルトの名無しさん[sage]   投稿日:2016/11/07 16:06:23  ID:iTWgrf69.net(2)
イベントループまわしてない糞アプリは結構あるけどな

746
デフォルトの名無しさん[sage]   投稿日:2016/11/07 21:00:42  ID:lMECrzfj.net(2)
あるね

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

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

748
デフォルトの名無しさん[]   投稿日:2016/11/07 23:35:14  ID:xNTfrSvb.net(2)
98です。

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

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

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

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

751
デフォルトの名無しさん[]   投稿日:2016/11/08 00:42:20  ID:/LmyXqRX.net(2)
>110
シュミレーションってなに?

752
デフォルトの名無しさん[sage]   投稿日:2016/11/08 00:44:34  ID:unHUC1CF.net(4)
シュミなら何でもできる

753
デフォルトの名無しさん[sage]   投稿日:2016/11/08 01:35:14  ID:Y3RxQGSc.net(4)
シュミーズとスリップとキャミソールの違いってなに?

754
デフォルトの名無しさん[sage]   投稿日:2016/11/08 01:36:27  ID:unHUC1CF.net(4)
1.80代
2.60代
3.40代

755
デフォルトの名無しさん[sage]   投稿日:2016/11/08 02:08:30  ID:U/Ju3opf.net(2)
>114
その程度も想像できない人の意見なんてどうでもいいです

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

757
デフォルトの名無しさん[sage]   投稿日:2016/11/08 03:20:49  ID:jUCVZHcM.net(2)
win32apiに関係なくてもいいんじゃなかったけ?

758
98[]   投稿日:2016/11/08 06:00:23  ID:EP2Ba4mn.net(2)
>112

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

759
デフォルトの名無しさん[sage]   投稿日:2016/11/10 21:09:42  ID:AasTbJ+R.net(2)

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

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

761
デフォルトの名無しさん[sage]   投稿日:2016/11/11 12:39:26  ID:/bmaODHZ.net(2)
もうホスト名表示でいいだろ

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

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

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

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

765
デフォルトの名無しさん[sage]   投稿日:2016/11/11 19:38:22  ID:F0Rj6jl1.net(4)
IDでじゅうぶん

766
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:04:48  ID:0rL2xNMJ.net(4)
ホスト名がベター

767
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:06:12  ID:DbOMb6Sb.net(2)
ホスト名出して主張してくれや

768
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:12:52  ID:LmTjZr7C.net(2)
ワッチョイは争いの火種
最初からないほうがまし
別にIDもいらない

769
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:36:56  ID:F0Rj6jl1.net(4)
IDはあったほうがいいね

770
sp49-98-77-115.mse.spmode.ne.jp[]   投稿日:2016/11/11 20:37:29  ID:0rL2xNMJ.net(4)
ホスト名がベター

771
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:44:35  ID:X9bDlJ5d.net(2)
ホスト名は「たちばな誠」

772
デフォルトの名無しさん[sage]   投稿日:2016/11/11 20:51:04  ID:Tfn5AWDv.net(2)
ホスト名が良いカモね

773
デフォルトの名無しさん[sage]   投稿日:2016/11/12 04:05:38  ID:6wPviZ3t.net(4)
スレチ

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

775
デフォルトの名無しさん[]   投稿日:2016/11/12 07:40:36  ID:VYJ07zOJ.net(4)
単にWin32から.NETへの移行が進んだだけでしょう

776
デフォルトの名無しさん[sage]   投稿日:2016/11/12 09:21:42  ID:cY8zOPne.net(2)
たんに荒らしが伸ばしてただけでしょう

777
デフォルトの名無しさん[sage]   投稿日:2016/11/12 10:58:41  ID:aMxeZQXn.net(2)
>137
勢いじゃなく、荒らされていた時期な

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

779
デフォルトの名無しさん[]   投稿日:2016/11/12 13:10:05  ID:VYJ07zOJ.net(4)
うろ覚えだけど
SetWindowOrgEx
SetViewportOrgEx
辺りじゃないの

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

781
デフォルトの名無しさん[sage]   投稿日:2016/11/12 18:18:57  ID:B8iRPOxS.net(2)
はあ…

782
デフォルトの名無しさん[sage]   投稿日:2016/11/12 21:46:22  ID:6wPviZ3t.net(4)
loopyを3回となえてください

783
デフォルトの名無しさん[sage]   投稿日:2016/11/13 04:10:41  ID:+F2H1InO.net(4)
>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...
真面目に対応しようとするとけっこう面倒

784
デフォルトの名無しさん[sage]   投稿日:2016/11/13 14:25:24  ID:Wy5L1qQW.net(8)
EnableMenuItem
https://msdn.microsoft.com/ja-jp/library/cc410786.aspx

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

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

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

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

786
デフォルトの名無しさん[sage]   投稿日:2016/11/13 20:07:24  ID:dhGoOq8f.net(2)
>148
adjustするのが定石

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

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

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

789
デフォルトの名無しさん[sage]   投稿日:2016/11/13 23:32:34  ID:+F2H1InO.net(4)
非表示はWM_UNINITMENUPOPUP

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

790
150[sage]   投稿日:2016/11/13 23:57:21  ID:Wy5L1qQW.net(8)
>152
ありがとうございました!
助かりました!

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

792
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/11/14 17:39:51  ID:L1+AAJlg.net(2)
>154
WM_VSCROLL

793
デフォルトの名無しさん[sage]   投稿日:2016/11/14 17:51:37  ID:LtnXkA90.net(2)
メッセージおくれ

794
デフォルトの名無しさん[sage]   投稿日:2016/11/14 18:02:49  ID:NhpFtVry.net(2)
ListView_EnsureVisible()マクロないしは
ListView_Scroll()マクロ

795
154[sage]   投稿日:2016/11/14 19:38:32  ID:lPYI51le.net(4)
>156-157
サンクス!

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

797
デフォルトの名無しさん[sage]   投稿日:2016/11/18 03:36:41  ID:AM2vlSzW.net(4)
えっ?

798
デフォルトの名無しさん[sage]   投稿日:2016/11/18 03:58:35  ID:2yb3wpBY.net(2)
>156
つ メッセージ

799
デフォルトの名無しさん[sage]   投稿日:2016/11/18 07:05:51  ID:8X6DMoza.net(2)
Win3.1(Win16) ならスレ違いだろw

800
デフォルトの名無しさん[sage]   投稿日:2016/11/18 11:11:21  ID:GZ4BhfWs.net(2)
Win32sかもしれない

801
デフォルトの名無しさん[]   投稿日:2016/11/18 15:45:40  ID:sN4pSlll.net(2)
WS_EX_TOOLWINDOWに関して質問です。

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

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

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

804
164[sage]   投稿日:2016/11/19 22:31:46  ID:m8v4iLe9.net(2)
>165
なるほど、そういうことだったんですか。
ありがとうございます。

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

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

807
デフォルトの名無しさん[sage]   投稿日:2016/11/20 12:16:32  ID:KiQiujJB.net(2)
16bit と間違ったんじゃね

808
デフォルトの名無しさん[sage]   投稿日:2016/11/20 12:20:21  ID:IiH4Q+hE.net(2)
PC-9801の話だと思った。

809
デフォルトの名無しさん[sage]   投稿日:2016/11/20 16:35:07  ID:HG1JDYXN.net(2)
PCG

810
デフォルトの名無しさん[sage]   投稿日:2016/11/21 11:15:47  ID:RFCc0VFb.net(2)
ビデオカード次第だったよな

811
デフォルトの名無しさん[sage]   投稿日:2016/11/21 12:21:40  ID:gVIfBZaZ.net(2)
PSG

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

813
デフォルトの名無しさん[sage]   投稿日:2016/11/22 15:42:16  ID:eab8TQx6.net(2)
"%4s"をsprintfで作る

814
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/11/22 15:44:33  ID:iRpYF31I.net(2)
"%*s"

815
デフォルトの名無しさん[sage]   投稿日:2016/11/22 15:45:01  ID:RWgWe0KR.net(4)
>175
int space = 4;
sscanf(buffer, "%*s", space, "t")

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

817
デフォルトの名無しさん[sage]   投稿日:2016/11/22 18:37:11  ID:mC9XTyoU.net(2)
ウンコしてくる

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

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

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

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

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

819
デフォルトの名無しさん[sage]   投稿日:2016/11/27 16:59:16  ID:CC34oqbC.net(2)
Watashi no Namae wa Nakano desu

820
デフォルトの名無しさん[sage]   投稿日:2016/11/27 19:36:59  ID:iFUA1Ofz.net(2)
Watashi ni Namae wa Nakattano desu

821
デフォルトの名無しさん[]   投稿日:2016/11/28 15:21:52  ID:msYXnjQ5.net(2)
情報通信業の残業やばす
https://www.youtube.com/watch?v=TnZEDQchkJk

822
デフォルトの名無しさん[]   投稿日:2016/11/29 12:19:49  ID:ITJWJL4i.net(12)
分かる方、教えて下さい。

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

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

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

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

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

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

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

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

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

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

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

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

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

829
185[]   投稿日:2016/11/29 16:21:45  ID:ITJWJL4i.net(12)
>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

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

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

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

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

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

833
デフォルトの名無しさん[sage]   投稿日:2016/11/29 18:14:13  ID:NaRikWXT.net(4)
時間取得のオーバーヘッドじゃないか?

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

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

835
デフォルトの名無しさん[sage]   投稿日:2016/11/29 19:46:40  ID:w2ftYsPy.net(2)
環境というか仕組み上プラスしかないとかマイナスしかないということもある

836
デフォルトの名無しさん[sage]   投稿日:2016/11/29 19:46:41  ID:Ofu9bBqm.net(2)
どちらか言えばDDK(WDK)の領域じゃね

837
185[]   投稿日:2016/11/29 20:53:31  ID:ITJWJL4i.net(12)
新たな発見がありました。

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

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

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

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

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

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

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

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

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

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

841
デフォルトの名無しさん[]   投稿日:2016/11/30 02:17:24  ID:WhaKofQb.net(2)
馬鹿発見

842
デフォルトの名無しさん[]   投稿日:2016/11/30 03:54:14  ID:tfyAgmME.net(2)
おいおい
話逸れすぎていて草

843
185[]   投稿日:2016/11/30 16:27:00  ID:NmhabroG.net(10)
>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()は比較的正確です。

844
デフォルトの名無しさん[sage]   投稿日:2016/11/30 18:01:03  ID:3E8a/W4X.net(4)
まあ当然の結果だな

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

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

846
185[]   投稿日:2016/11/30 18:02:13  ID:NmhabroG.net(10)
>207
おっと!
なぜ当然の結果なのですか。
教えて下さい。

847
デフォルトの名無しさん[sage]   投稿日:2016/11/30 18:03:45  ID:3E8a/W4X.net(4)
ゲームスレで聞いてみ

848
185[]   投稿日:2016/11/30 18:15:54  ID:NmhabroG.net(10)
>210
そうですか。教えてくれないなら結構です。

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

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

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

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

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

851
デフォルトの名無しさん[]   投稿日:2016/11/30 20:49:57  ID:o1dhiyLy.net(2)
.
.
■■人間性に批判殺到 あの悪質パクツイ垢 @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垢以上作ってるキチガイ出会い厨 (粘着やめろ詐欺師!はやく捕まれホラ吹きネットストーカー犯罪者!!)

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

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

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

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

853
デフォルトの名無しさん[]   投稿日:2016/11/30 23:20:53  ID:EvMIugyq.net(2)
1回目はいろいろオーバーヘッドあるよね

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

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

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

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

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

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

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

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

859
デフォルトの名無しさん[]   投稿日:2016/12/01 00:54:41  ID:O5qZU2qd.net(8)
クロックカウンタ使えよ

860
デフォルトの名無しさん[sage]   投稿日:2016/12/01 02:56:36  ID:wMlr02vN.net(2)
CPUがいくら速くても切り替えは60Hzくらい

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

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

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

863
185[]   投稿日:2016/12/01 11:39:04  ID:SFr2s2fw.net(6)
>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で何がそんなに変わるでしょうか。

864
デフォルトの名無しさん[sage]   投稿日:2016/12/01 11:55:52  ID:lOA8D/0g.net(2)
最適化切ったら

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

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

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


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

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

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

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

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

同じ傾向になりました。

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

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

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

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

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

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

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

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

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

873
デフォルトの名無しさん[sage]   投稿日:2016/12/02 09:21:55  ID:+ocxhyeH.net(4)
>211みたいな事言ってるからお察し

874
185[]   投稿日:2016/12/02 10:43:58  ID:H1x5ETqP.net(8)
報告書は突っ返されたので、まだまだ続きそうです。

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

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

875
デフォルトの名無しさん[sage]   投稿日:2016/12/02 10:47:04  ID:rEQGNTwO.net(2)
なんだ学校の課題だったのか

876
デフォルトの名無しさん[sage]   投稿日:2016/12/02 11:24:10  ID:EDk65fqO.net(4)
質問者より賢い人はいないのか?
これでは、質問箱が成り立たないなw

877
デフォルトの名無しさん[sage]   投稿日:2016/12/02 11:27:08  ID:+ocxhyeH.net(4)
>239
そうだな
じゃあ頼んだ

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

879
185[]   投稿日:2016/12/02 11:58:27  ID:H1x5ETqP.net(8)
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

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

881
デフォルトの名無しさん[sage]   投稿日:2016/12/02 12:10:39  ID:fHtgnGrJ.net(2)
仕事が出来ないから、タダで手取り足取り協力してくれってか

882
185[]   投稿日:2016/12/02 13:02:57  ID:H1x5ETqP.net(8)
本件、私としては以下の結論に至りました。

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

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

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

883
デフォルトの名無しさん[sage]   投稿日:2016/12/02 13:27:24  ID:bjzW9gj9.net(2)
>228
ドラスレの木屋さんも、timeGetTimeのこと調べてたな

884
デフォルトの名無しさん[]   投稿日:2016/12/02 14:04:58  ID:ELslSS33.net(4)
timeGetTimeやめてQueryPerformanceCounterを使ったら?

885
デフォルトの名無しさん[sage]   投稿日:2016/12/02 14:15:28  ID:ocojT6FV.net(2)
内容のアホさからして
オバケじゃないことは確実

886
デフォルトの名無しさん[sage]   投稿日:2016/12/02 14:17:49  ID:6Vgvdyao.net(2)
あらかじめtimeBeginPeriodも呼んでおかないと精度変わる

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

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

889
デフォルトの名無しさん[]   投稿日:2016/12/02 17:49:56  ID:EDk65fqO.net(4)
結局>237すら教えてあげなかったんだな。

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

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

892
デフォルトの名無しさん[sage]   投稿日:2016/12/02 23:51:36  ID:DveiiCO5.net(2)
>247とか>249とか、全然関係ないことじゃん。

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

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

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

896
デフォルトの名無しさん[sage]   投稿日:2016/12/03 20:35:28  ID:xp0AwakX.net(4)
GO

897
デフォルトの名無しさん[sage]   投稿日:2016/12/03 20:36:25  ID:xp0AwakX.net(4)
the old new thing

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

899
デフォルトの名無しさん[sage]   投稿日:2016/12/04 11:37:47  ID:NE4G8kum.net(2)
com1〜com256まで

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

901
デフォルトの名無しさん[sage]   投稿日:2016/12/04 12:22:02  ID:SxgHpTya.net(2)
select欲しい

902
261[sage]   投稿日:2016/12/04 16:50:15  ID:8oIVw/6i.net(4)
>262
>263
ありがとうございました!

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

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

905
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/12/09 01:07:15  ID:IirsZJ4E.net(4)
訂正。
× AltはWM_NCKEYDOWNで確認できる。
○ AltはWM_SYSKEYDOWNで確認できる。

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

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

907
デフォルトの名無しさん[sage]   投稿日:2016/12/12 20:14:54  ID:cpVlzpwx.net(2)
>269
つ AllocConsole

908
デフォルトの名無しさん[sage]   投稿日:2016/12/12 20:17:01  ID:dREO/TsY.net(2)
EM_SETLIMITTEXT

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

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

910
デフォルトの名無しさん[sage]   投稿日:2016/12/13 09:08:32  ID:GC6m09wL.net(2)
>272
検索が必要ならリッチエディット

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

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

913
デフォルトの名無しさん[sage]   投稿日:2016/12/19 07:17:38  ID:jpBVYjvn.net(2)
拡張ウィンドウスタイル使え。

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

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

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

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

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

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

917
デフォルトの名無しさん[sage]   投稿日:2016/12/20 00:02:24  ID:tFkwVopE.net(2)
>275の意味がまったくわからなkったわww

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

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

920
デフォルトの名無しさん[]   投稿日:2016/12/20 12:55:43  ID:lAXr92yw.net(6)
>278
おめ
興奮は伝わったが
もちつけ

921
デフォルトの名無しさん[]   投稿日:2016/12/20 13:00:10  ID:lAXr92yw.net(6)
>279
はてぶのことですねわかります

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

923
デフォルトの名無しさん[sage]   投稿日:2016/12/20 17:33:10  ID:Sq2CbWR0.net(2)
OSSのソフトを逆コンパイルするの?

924
デフォルトの名無しさん[sage]   投稿日:2016/12/20 17:44:58  ID:F0IdvAwo.net(6)
今はちがうだろ

925
デフォルトの名無しさん[sage]   投稿日:2016/12/20 18:45:47  ID:lAXr92yw.net(6)
新手のアフィか

926
デフォルトの名無しさん[sage]   投稿日:2016/12/20 19:12:59  ID:F0IdvAwo.net(6)
アフィだったのかよ。新手すぎてアフィの影すら俺には見えん

927
デフォルトの名無しさん[]   投稿日:2016/12/20 22:05:37  ID:JPbALvOm.net(2)
MSDNのコピペサイト全般のことだろう>アフィ

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

929
デフォルトの名無しさん[sage]   投稿日:2016/12/21 01:09:18  ID:GvkBvmPc.net(2)
int Data = 123456;;
DWORD writeLen;
WriteFile(hFile,&Data,sizeof(Data),&writeLen,NULL);

こういうことだろ?

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

931
デフォルトの名無しさん[sage]   投稿日:2016/12/21 21:06:02  ID:HCdO29Rc.net(4)
>292
>293

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

932
デフォルトの名無しさん[sage]   投稿日:2016/12/22 08:34:56  ID:tk15BRot.net(4)
msdn 関数名
でググる癖をつけよう

933
デフォルトの名無しさん[]   投稿日:2016/12/22 12:50:31  ID:y+mdv7YD.net(2)
-jp もお忘れなく

934
デフォルトの名無しさん[sage]   投稿日:2016/12/22 13:04:48  ID:hYDEOt1H.net(6)
どうしてこういう訳そのままずっと放置してんだろうな

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

935
デフォルトの名無しさん[]   投稿日:2016/12/22 18:24:16  ID:zHNnrJEM.net(4)
>296
なんで付けるの?
誤訳トラップにハマりたいの?

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

936
デフォルトの名無しさん[sage]   投稿日:2016/12/22 18:39:46  ID:hYDEOt1H.net(6)
>298
+jp じゃなくて -jp

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

938
デフォルトの名無しさん[]   投稿日:2016/12/22 18:55:29  ID:zHNnrJEM.net(4)
>299
ごめんなさいwww

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

939
デフォルトの名無しさん[sage]   投稿日:2016/12/22 19:02:14  ID:tk15BRot.net(4)
>301
C言語を始めよう!

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

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

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

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

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

941
デフォルトの名無しさん[sage]   投稿日:2016/12/22 23:02:45  ID:hYDEOt1H.net(6)
LVN_ITEMCHANGED

942
デフォルトの名無しさん[sage]   投稿日:2016/12/23 14:54:42  ID:qGVMhgWM.net(2)
質問です。

win10 x64

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

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

よろしくお願いします。

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

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

945
デフォルトの名無しさん[sage]   投稿日:2016/12/23 15:36:22  ID:5J5pLbD7.net(2)
以下の処理を実装したく、助言をお願いします。

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

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

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

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

947
デフォルトの名無しさん[]   投稿日:2016/12/23 15:59:09  ID:5tPECy1o.net(2)
>305
proxy arp

948
305[sage]   投稿日:2016/12/23 16:14:48  ID:sqLqmtwC.net(2)
>305, 306

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

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


>307

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

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

949
デフォルトの名無しさん[sage]   投稿日:2016/12/23 16:17:28  ID:gpKoKuI/.net(2)
>304
解決しました。
どうもありがとうございました。

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

951
デフォルトの名無しさん[sage]   投稿日:2016/12/24 07:41:05  ID:AXa0yhpU.net(2)
>313
ありがとうございます。参考にさせて頂きます。

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

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

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

954
デフォルトの名無しさん[sage]   投稿日:2016/12/26 00:55:07  ID:cwwyPIk6.net(2)
同一行にコメントはwindows的にアウト

955
316[sage]   投稿日:2016/12/26 01:06:56  ID:CvSBnmkv.net(2)
>317
なるほど!
ありがとうございました!

956
デフォルトの名無しさん[sage]   投稿日:2016/12/26 08:40:18  ID:I+2Q+LPS.net(2)
コメントを勘違いしてるんじゃね?

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

958
デフォルトの名無しさん[sage]   投稿日:2016/12/26 21:34:05  ID:sfc5Nc1U.net(2)
じゃあ「;abc」で試してみればよくね?

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

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

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

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

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

962
デフォルトの名無しさん[sage]   投稿日:2016/12/30 13:46:15  ID:ymKNG2iV.net(2)
WSAStartupは成功してんの?

963
デフォルトの名無しさん[sage]   投稿日:2016/12/30 13:47:50  ID:LToUj4mC.net(6)
名無しだからcontinueですっ飛ばしてんだろ

964
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2016/12/30 14:07:12  ID:nsN9rWIv.net(2)
GetLastError()を調べてみよ。

965
324[sage]   投稿日:2016/12/30 14:41:23  ID:qor2kyvR.net(6)
>325
成功しているようです

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

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


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

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

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

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

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

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

966
デフォルトの名無しさん[sage]   投稿日:2016/12/30 15:38:47  ID:LToUj4mC.net(6)
>328
関数名は名前あるけど、インポートが名無し

967
デフォルトの名無しさん[]   投稿日:2016/12/30 15:39:26  ID:Q3tvxZdg.net(2)
マクロというオチ

968
デフォルトの名無しさん[sage]   投稿日:2016/12/30 15:40:45  ID:LToUj4mC.net(6)
対処は名前比較じゃなくてアドレス比較

969
デフォルトの名無しさん[sage]   投稿日:2016/12/30 19:08:50  ID:qor2kyvR.net(6)
>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関数のアドレス
を比較し一致したものを書き換えたら成功しました。

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

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

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

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

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

972
デフォルトの名無しさん[sage]   投稿日:2017/01/21 19:16:05  ID:RjpRPNfA.net(2)
前後のソース載せてみて

973
デフォルトの名無しさん[sage]   投稿日:2017/01/21 20:46:43  ID:1cIKmUbZ.net(4)
>333
まずは使ってるプログラム言語から書こうか

974
デフォルトの名無しさん[]   投稿日:2017/01/21 23:19:24  ID:0py1wTB0.net(4)
>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↑

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

976
デフォルトの名無しさん[]   投稿日:2017/01/21 23:31:13  ID:/qDbjX4N.net(2)
アクセス権か

977
デフォルトの名無しさん[sage]   投稿日:2017/01/21 23:55:07  ID:1cIKmUbZ.net(4)
>337
まずは CreatepProcess の戻り値とエラーなら GetLastError の値を確認しようか

978
デフォルトの名無しさん[sage]   投稿日:2017/01/22 06:55:36  ID:JOxquhah.net(2)
_Tの中は本当にそれでいいのか

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

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

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

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

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

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

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

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

986
デフォルトの名無しさん[sage]   投稿日:2017/01/25 10:51:21  ID:SLV8VPLP.net(6)
>ウィンドウがない可能性

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

987
デフォルトの名無しさん[sage]   投稿日:2017/01/25 10:51:49  ID:SLV8VPLP.net(6)
ああ無限ループで稼働率100%だとだめなのか

988
デフォルトの名無しさん[sage]   投稿日:2017/01/25 12:52:29  ID:uJriqNlz.net(2)
WaitForInputIdle

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

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

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

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

992
デフォルトの名無しさん[sage]   投稿日:2017/02/02 13:49:49  ID:386srHJg.net(14)
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でにて、設定メニュをいじっているような画面のようなプログラムを作りたいのです。

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

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

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

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

996
デフォルトの名無しさん[sage]   投稿日:2017/02/02 15:53:49  ID:8dKrrq5G.net(2)
IMEツールバーみたいにタスクトレイにドッキングしたいってこと?

997
デフォルトの名無しさん[sage]   投稿日:2017/02/02 16:11:08  ID:386srHJg.net(14)
>359
機能はIMEではないですが、そんなかんじです。

998
デフォルトの名無しさん[sage]   投稿日:2017/02/02 18:11:54  ID:gbCpBU15.net(2)
TrayNotifyWndを親にしてCreateToolbarExで作ればいいんじゃないのかな

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

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

1001
デフォルトの名無しさん[sage]   投稿日:2017/02/02 23:04:33  ID:386srHJg.net(14)
>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

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

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

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

1005
デフォルトの名無しさん[sage]   投稿日:2017/02/03 09:34:28  ID:pF10NEzN.net(6)
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);
実験してだめだったコード。。こんな感じでした。ウインドハンドルは普通に取得は成功していたみたいなんですけどね〜

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

1007
デフォルトの名無しさん[sage]   投稿日:2017/02/03 12:11:25  ID:oHw8NUL1.net(4)
メッセージ投げて帰ってくるかどうか

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

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

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

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

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

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

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

1014
デフォルトの名無しさん[sage]   投稿日:2017/02/03 14:39:36  ID:Q4UhsfCm.net(6)
>375
IsHungAppWindow

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

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

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

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

1017
デフォルトの名無しさん[sage]   投稿日:2017/02/03 18:01:24  ID:Q4UhsfCm.net(6)
あと参考までに

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

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

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

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

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

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

1021
デフォルトの名無しさん[sage]   投稿日:2017/02/04 13:21:18  ID:cCtqcbdk.net(2)
ピンポーン 宅配便でーす お留守ですかー ピンポーン ピンポーン

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

1023
デフォルトの名無しさん[sage]   投稿日:2017/02/05 11:14:06  ID:bZw/U4Ow.net(2)
使い道が想像できない

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

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

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

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

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

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

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

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

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

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

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

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

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

1035
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/02/06 18:06:24  ID:myCEQNc2.net(2)
>397
SetWindowPosの方がフラグ指定や挿入位置指定など、できることが多い。

1036
デフォルトの名無しさん[sage]   投稿日:2017/02/07 08:29:41  ID:g0+JjgLn.net(2)
>398
ではMoveWindowは何のために存在しているの

1037
デフォルトの名無しさん[sage]   投稿日:2017/02/07 09:23:30  ID:mtDQmVBr.net(2)
フラグとか触らないでただ動かす時のため

1038
デフォルトの名無しさん[sage]   投稿日:2017/02/07 11:23:40  ID:IHNU1ydF.net(2)
昔のことは知らないけど SetWindowPos が後から追加されたんじゃないの

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

1040
デフォルトの名無しさん[sage]   投稿日:2017/02/07 15:19:54  ID:LuCsRke8.net(2)
後方互換性のため

1041
デフォルトの名無しさん[sage]   投稿日:2017/02/07 22:51:17  ID:m2J0GXa0.net(2)
DeferWindowPos

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

1043
デフォルトの名無しさん[]   投稿日:2017/02/17 19:08:12  ID:yGnzX63H.net(2)

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

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

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

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

1047
デフォルトの名無しさん[sage]   投稿日:2017/03/01 19:53:26  ID:IeB4TnBd.net(2)
Win32_PointingDeviceあたりだろうな

1048
デフォルトの名無しさん[sage]   投稿日:2017/03/02 16:15:18  ID:35Ccu8m+.net(6)
Win32 Pointhig Device軽く調べたんですが、それっぽいのないですね;;

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

1050
デフォルトの名無しさん[sage]   投稿日:2017/03/02 17:34:40  ID:HWkXh2UP.net(4)
応用がきくプログラマーを目指せ

1051
デフォルトの名無しさん[sage]   投稿日:2017/03/02 19:31:01  ID:ZV5SMkF2.net(2)
ここさわって

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

1052
デフォルトの名無しさん[sage]   投稿日:2017/03/02 20:19:05  ID:HWkXh2UP.net(4)
俺ならそのメッセージでもマウス操作しかしなさそうだわw

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

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

1055
デフォルトの名無しさん[]   投稿日:2017/03/03 12:32:15  ID:IUFykjWp.net(2)
Windowsじゃ何やっても無駄ですよ。
生産性はないです。

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

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

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

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

1057
デフォルトの名無しさん[sage]   投稿日:2017/03/03 16:55:05  ID:7kccr9GO.net(2)
>418
窓板に何年も毎日貼り付いてるキチガイタイポマカーのコピペじゃねえかw

1058
デフォルトの名無しさん[sage]   投稿日:2017/03/04 13:10:48  ID:aE/wnzST.net(4)
どんなに優れていても誰にも使われなければ意味が無い。

1059
デフォルトの名無しさん[sage]   投稿日:2017/03/04 13:24:45  ID:il8vJgV1.net(2)
使われてるやん
って言ったら使ってる奴がアホってか?

1060
デフォルトの名無しさん[]   投稿日:2017/03/04 14:25:59  ID:GRvQ2lmz.net(2)
シェア獲得率と優劣は比例しない

1061
デフォルトの名無しさん[sage]   投稿日:2017/03/04 14:32:38  ID:svzWwCAT.net(2)
そう言っておかないとシェア4%のMacなんか何の立場もないもんな

1062
デフォルトの名無しさん[sage]   投稿日:2017/03/04 14:46:44  ID:nGVyMKq0.net(2)
シェア獲得率が高いものは、シェアに優れてる

1063
デフォルトの名無しさん[sage]   投稿日:2017/03/04 15:10:40  ID:aE/wnzST.net(4)
別に使われてると思ってるなら良いんでない?
俺は趣味でもあり金を稼ぐ道具でもあるからMacなんて使わんけど。

だいたい、知らんもんで金は稼げない。

1064
デフォルトの名無しさん[sage]   投稿日:2017/03/04 18:17:19  ID:ZJLt6oM8.net(2)
MacをPCだとするとシェア4%になるが
DTMコンソールやCG用レンダラーだとするとシェアが何倍にもなる不思議

1065
デフォルトの名無しさん[sage]   投稿日:2017/03/05 13:07:20  ID:Fl7T0tas.net(2)
>419
でも優良見込み客を囲い込んでるのは i & a なんだよなぁ

1066
デフォルトの名無しさん[sage]   投稿日:2017/03/05 13:41:54  ID:1JomNGIg.net(4)
>427
2015年での世界におけるAppleのシェアは7.5%だそうです。

http://ascii.jp/elem/000/001/104/1104428/20160113_yohiro_PCSh...

1067
デフォルトの名無しさん[sage]   投稿日:2017/03/05 14:27:40  ID:zkc5hO4d.net(4)
ベンダー出荷シェアとかOSの販売数ってのは利用率なシェアとは別モンだからな

1068
デフォルトの名無しさん[sage]   投稿日:2017/03/05 17:20:05  ID:KDLljhIv.net(2)
光学ドライブのAutoRunを無効にしてると、ディスクを入れ替えたことに気付けないみたいですが、
どうやったらディスクの情報をリフレッシュさせることができるのでしょうか?
ディレクトリ一覧を取得しようとしても、入れ替え前のディスクのディレクトリが出てきて困ってます

1069
デフォルトの名無しさん[sage]   投稿日:2017/03/05 19:16:54  ID:zkc5hO4d.net(4)
今のOSはAutoRun最初から無効だから、それが本当ならほとんどのPCでまともに取得できないってことになるな
ソースどっかミスってるんでしょ

1070
デフォルトの名無しさん[sage]   投稿日:2017/03/05 19:23:58  ID:91bxBwXE.net(2)
もちろんエクスプローラーで開けば情報は更新されます。プログラムからトレイを開閉しても情報は更新されます。
光学ドライブのボタンで開閉すると、情報が更新されないままなのです。

1071
デフォルトの名無しさん[sage]   投稿日:2017/03/05 19:45:45  ID:1JomNGIg.net(4)

1072
デフォルトの名無しさん[sage]   投稿日:2017/03/10 01:12:03  ID:5qliBH2Z.net(2)
https://ideone.com/i4fQGS
Win32API勉強中なんですが、ウィンドウを作ることができません、hWndがNULLになってしまって途中で終わってしまいます
ウィンドウクラスの登録も失敗していないみたいなので原因がわかりません、どこが悪いのか教えてください

1073
デフォルトの名無しさん[sage]   投稿日:2017/03/10 03:42:45  ID:Vp9TD86Z.net(6)
自分のウインドのZオーダーが変化したタイミングを調べたいのですが、
ウインドメッセージでなにかありましたっけ?

1074
デフォルトの名無しさん[sage]   投稿日:2017/03/10 03:48:47  ID:G57q42um.net(2)
>435
× defalut
〇 default
>436
WM_WINDOWPOSCHANGEDかな

1075
デフォルトの名無しさん[sage]   投稿日:2017/03/10 04:07:50  ID:Vp9TD86Z.net(6)
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

1076
デフォルトの名無しさん[sage]   投稿日:2017/03/10 05:09:47  ID:j91K0HTy.net(2)
ランサムウェアですねわかります

1077
デフォルトの名無しさん[sage]   投稿日:2017/03/10 05:17:14  ID:Vp9TD86Z.net(6)
>439
悪さするアプリじゃないんだが?

1078
デフォルトの名無しさん[]   投稿日:2017/03/10 07:10:36  ID:n8W4k0Sb.net(4)
異教徒の大量虐殺をためらわない一神教の思想性を理解するのに役立つ。
いずれ日本がアメリカに復讐する日が来るだろう。

1079
デフォルトの名無しさん[sage]   投稿日:2017/03/10 07:13:07  ID:n8W4k0Sb.net(4)
>441 誤爆失礼

1080
デフォルトの名無しさん[sage]   投稿日:2017/03/10 08:47:49  ID:Lkoti1g0.net(2)
>440
昔からこういう奴はいるから気にするな

1081
デフォルトの名無しさん[]   投稿日:2017/03/10 14:11:40  ID:wwCDmvkp.net(4)
図星ですねわかります

1082
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/03/10 14:29:16  ID:iyjWrKHK.net(4)
NG: (HBRUSH)COLOR_BACKGROUND
OK: (HBRUSH)(COLOR_3DFACE + 1)

ShowWindow(hWnd, SW_SHOW);の後にUpdateWindow(hWnd);がない。

1083
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/03/10 14:30:21  ID:iyjWrKHK.net(4)
ShowWindow(hWnd, SW_SHOW);
じゃなくて、ShowWindow(hWnd, nCmdShow);
かShowWindow(hWnd, SW_SHOWNORMAL);にしろ。

1084
デフォルトの名無しさん[sage]   投稿日:2017/03/10 14:40:49  ID:ALHJU+Fn.net(4)
>437
ありがとうございますこれでいけました

1085
デフォルトの名無しさん[sage]   投稿日:2017/03/10 16:29:28  ID:ALHJU+Fn.net(4)
すいませんまた質問させてください
テトリスを作る動画を見ながらこれを作っているのですが、リソースの画像を一度表示されたんですが、画像のサイズが変だったので訂正したところ表示されなくなりました
どこが悪いのか教えて頂けないでしょうか?
https://ideone.com/i4fQGS

1086
デフォルトの名無しさん[]   投稿日:2017/03/10 17:21:39  ID:wwCDmvkp.net(4)
r.right = 24 * 10;
r.bottom = 24 * 20;

1087
デフォルトの名無しさん[sage]   投稿日:2017/03/12 21:56:50  ID:EdU52Ynw.net(4)
タスクトレイの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);
}

1088
450[sage]   投稿日:2017/03/12 22:56:10  ID:EdU52Ynw.net(4)
LoadIconは、LoadIconMetricでした。
HRESULT hr = LoadIconMetric(hInst, MAKEINTRESOURCE(IDI_ICON1), LIM_LARGE, &hIcon);
しかし、変化なし。。

1089
デフォルトの名無しさん[sage]   投稿日:2017/03/13 06:26:15  ID:cVbgmuk1.net(4)
右クリックとかでよく出るポップアップメニューの
フォントの大きさを変更したい場合どうすればよいですか?
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;

1090
デフォルトの名無しさん[sage]   投稿日:2017/03/13 06:47:05  ID:cVbgmuk1.net(4)
自己解決。。調べたら、メニュー・オーナードローについて詳しいページが出てきました。

1091
デフォルトの名無しさん[sage]   投稿日:2017/03/13 08:55:13  ID:hLVIfrQc.net(2)
紀平さんのか

1092
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/03/13 13:01:19  ID:VNPYsRzK.net(4)
>450
shell icon sizeで画一的に決まってる。

1093
デフォルトの名無しさん[sage]   投稿日:2017/03/13 13:43:30  ID:N3DmujAP.net(2)
>450
オーナードロー

1094
デフォルトの名無しさん[sage]   投稿日:2017/03/13 13:49:46  ID:wbj+4uLG.net(2)
>456
それだけじゃ答えから遠い

1095
デフォルトの名無しさん[sage]   投稿日:2017/03/13 17:27:27  ID:RCZql05q.net(2)
>449
違うみたいです・・・

1096
デフォルトの名無しさん[sage]   投稿日:2017/03/13 20:18:35  ID:DGoKmeFN.net(2)
https://ideone.com/i4fQGS
VC++で見ているんですが24行目のhBitmapにはちゃんとアドレスが確保されているのになぜか描画されません
どういった原因が考えられるでしょうか?

1097
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/03/13 20:24:18  ID:VNPYsRzK.net(4)
>459
SelectObjectは、BeginPaintの後に呼ばないといけない。HDCが違う。

1098
デフォルトの名無しさん[sage]   投稿日:2017/03/13 23:00:39  ID:cCiuixm4.net(2)
>459
コンパイルして実行してみたけど表示されたよ。bmpファイルがおかしいんじゃない?
あとWM_DESTROYでhMemDCとhBlockDCをDeleteObjectしてるけどDeleteDCじゃないとダメ

1099
デフォルトの名無しさん[]   投稿日:2017/03/14 10:21:04  ID:vbV/Jpv3.net(2)
>459
テトリスのひとか
がんがれ

1100
459[sage]   投稿日:2017/03/14 23:58:45  ID:MclzPbbI.net(2)
環境も書いたほうがいいですね、Win7 x64でVC++2010 Expressです、rcファイル作って「BLOCKS BITMAP "block.bmp"」と書いてます
ファイル名は間違えていないですし、リンクしてoファイルは作っていないですけど間違っていますか?
最初は自作のbmpファイルでやっていたんですけど、途中から作られたbmpファイルでやろうとして表示されなくなりました
ここにあるblock.bmpというやつです
https://github.com/DQNEO/CppTetris

動画を見てロジックを理解しながら学習したいのですが、なかなか捗らないです

>460
ごめんなさい、何行目のことかわからないです

>461
修正しました!

>462
ありがとうございます

1101
デフォルトの名無しさん[sage]   投稿日:2017/03/15 12:08:58  ID:7YWEdixI.net(4)
馬鹿には無理

1102
デフォルトの名無しさん[sage]   投稿日:2017/03/15 12:54:33  ID:rPK+nkkO.net(2)
用意されてたbmpでは動く。自作bmpでは動かない。ってことかよ。だとしたら原因ひとつじゃん

1103
デフォルトの名無しさん[sage]   投稿日:2017/03/15 13:11:54  ID:h6gBY/+f.net(4)
>463
imgurにでも自分で作ったbmp上げてみてよ

1104
デフォルトの名無しさん[sage]   投稿日:2017/03/15 13:37:27  ID:7YWEdixI.net(4)
imgurって内容変わるんじゃね

1105
デフォルトの名無しさん[sage]   投稿日:2017/03/15 13:42:29  ID:h6gBY/+f.net(4)
マジかごめん

1106
デフォルトの名無しさん[sage]   投稿日:2017/03/15 16:58:13  ID:0QbqsbzH.net(2)
>463
たぶん表示されてるんだと思う
WM_CREATE内の//debugの下の行を
BitBlt(hMemDC, 0, 0, 24, 24, hBlockDC, 0, 24, SRCCOPY);
にするとどうなる?

1107
デフォルトの名無しさん[sage]   投稿日:2017/03/15 18:59:14  ID:Jw8FgjFy.net(2)
ちょっと見てみたよ
bmpのIDだけど、BLOCKS と "BLOCKS" は別だからね
BLOCKSは数値に置き換えられてるけどLoadBitmapは文字列の"BLOCKS"で読もうとしてる
初心者の頃はやりがちなやつだな

1108
デフォルトの名無しさん[sage]   投稿日:2017/03/15 20:15:49  ID:5s+i++Yx.net(4)
>469
ありがとうございます、これで表示されました
でもhttp://dqn.sakusakutto.jp/2012/11/cpp_tetris.htmlこの動画とは別の画像が表示されます
動画上では灰色ブロックが出てきているのに、自分の環境では赤色のブロックが出てきている状況です

>470
動画では「"BLOCKS"」と定義されていたので自分は「TEXT("BLOCKS")」と定義したんですが両者は違うものなのでしょうか?

1109
デフォルトの名無しさん[]   投稿日:2017/03/15 20:16:40  ID:LU+w+iAT.net(2)
rcの方だろ

1110
デフォルトの名無しさん[sage]   投稿日:2017/03/15 21:50:38  ID:5BC7GJpQ.net(2)
USBメモリなどUSB機器の接続検知をおこないたいのですが、WM_DEVICECHANGEを使用すると
https://qanda.rakuten.ne.jp/qa5211631.html
のようにUSBメモリによってはDBT_DEVICEARRIVALが何度か来てしまいます。
↑のQ&Aにあるように、正常に認識されたときを検出するにはどうすればよいでしょうか?

1111
デフォルトの名無しさん[sage]   投稿日:2017/03/15 23:07:40  ID:5s+i++Yx.net(4)
>472
rcのほうが間違えているということですか?
では「"BLOCKS" BITMAP "block.bmp"」ってことですか?

1112
デフォルトの名無しさん[sage]   投稿日:2017/03/16 09:34:05  ID:fy4K8iiJ.net(2)
こうやって手取り足取りな奴はイライラする

1113
デフォルトの名無しさん[sage]   投稿日:2017/03/16 11:58:27  ID:bBZQNLcb.net(2)
>475
じゃあ来なければいいよ

1114
デフォルトの名無しさん[sage]   投稿日:2017/03/16 15:14:09  ID:Oq2mLnGK.net(2)
お前が手足を完全にもいでトドメを刺せばいい

1115
デフォルトの名無しさん[]   投稿日:2017/03/16 17:17:19  ID:Xe646fvV.net(2)
モイっ!

1116
デフォルトの名無しさん[sage]   投稿日:2017/03/16 22:29:13  ID:xw1bzJ/c.net(2)
>473
((PDEV_BROADCAST_HDR)lParam)->dbch_devicetype が全部同じなの?

1117
デフォルトの名無しさん[sage]   投稿日:2017/03/19 01:08:24  ID:bawtCMkE.net(2)
SHAppBarMessage(ABM_QUERYPOS, &abd);が正しい値を取得できない場合どうすればいいですか?

Windows10の設定:システム:ディスプレイ:ディプレイカスタマイズ画面
テキスト、アプリ、その他の項目サイズを変更する
で100%から175%までいろいろ変化させてみると表示位置のずれが発生します。

1118
デフォルトの名無しさん[sage]   投稿日:2017/03/19 04:28:36  ID:yhAiVzME.net(2)
>473
デバイスイベントが来たら、タイマーで少し時間が経ってからデバイスをチェックする。
時間が経つ前に次のデバイスイベントが来たら、タイマーをセットしなおしてまた少し時間が経つまで待つ。

1119
デフォルトの名無しさん[sage]   投稿日:2017/03/20 10:38:14  ID:px9bK4BM.net(4)
タスクトレイの自動的に隠すになっているかを調べる場合どうすればよいですか?

1120
デフォルトの名無しさん[sage]   投稿日:2017/03/20 11:02:11  ID:OlmnVrTw.net(2)
レジストリでも見ればわかるんじゃない?

1121
482[sage]   投稿日:2017/03/20 11:03:48  ID:px9bK4BM.net(4)
自己解決・・
APPBARDATA appbardata;
appbardata.cbSize = sizeof(APPBARDATA);
appbardata.hWnd = FindWindow(L"Shell_TrayWnd", 0);
if(SHAppBarMessage(ABM_GETSTATE, &appbardata))
{
// 自動的に隠れている
}

1122
デフォルトの名無しさん[sage]   投稿日:2017/03/20 23:28:19  ID:pgDQQg6b.net(2)
最近、win32 はいつまで残るんだろうな、とふと不安になる
.net とか妙なものが蔓延ってるけど。

1123
デフォルトの名無しさん[sage]   投稿日:2017/03/21 00:19:55  ID:3zup+qvo.net(4)
MS32bitOSが居る限りはなくならないだろ
.netだって内部的にWin32API呼び出しているし

1124
デフォルトの名無しさん[sage]   投稿日:2017/03/21 02:42:20  ID:dRq3wtLU.net(2)
ここまで来て過去の莫大な資産を捨てることなんてあるの?
過去のwindowsアプリが新しいwindowsで動かなくなる日が来たら、それはもうwindowsじゃないと思う

1125
デフォルトの名無しさん[sage]   投稿日:2017/03/21 03:05:14  ID:RH/+/4vn.net(2)
.NetですらFormsもWPFも放置でUWPに移行させようとしてるし、本音では過去のを全て捨ててUWPに一本化したいんだろう。
現実的には自らの強み(過去の資産)を手放すことになるから、やりたくてもやれないのだろうけど。

1126
デフォルトの名無しさん[sage]   投稿日:2017/03/21 03:48:34  ID:5huRZA1V.net(2)
> FormsもWPFも放置でUWPに移行

MSって過去にも色々出しては無かったことにしてきたよな・・・
UWPすらどうなることか

1127
デフォルトの名無しさん[sage]   投稿日:2017/03/21 04:41:12  ID:ScjZQ1Ox.net(2)
新しいものを出してきても、古いOSに対応させないから状況的に使えなくて、
使ってもいいかなと思える状況になった頃には古い技術になっているという悪循環

1128
デフォルトの名無しさん[sage]   投稿日:2017/03/21 14:27:42  ID:6WWBsw/3.net(2)
>485
windowsが無くなるまでは残るだろうと思ってたが

windowsが無くなりそうだしな

1129
デフォルトの名無しさん[sage]   投稿日:2017/03/21 14:35:53  ID:3zup+qvo.net(4)
Win32APIは過去の莫大な資産であり、過去の莫大な負債でもある

1130
デフォルトの名無しさん[sage]   投稿日:2017/03/21 17:25:00  ID:ghEa3fZg.net(2)
WindowsRuntimeを使わないといけなくなって
c++でコーディングし始めたけどかなり面倒くさい。
c++/cx使えっていうことだろうけど。
windows runtimeがwin32apiの代わりになるのかな?

1131
デフォルトの名無しさん[sage]   投稿日:2017/03/21 23:26:33  ID:y88e15JH.net(2)
しっかし、なんで win32 はあんなに作るのが面倒くさいんだろうな・・・
1〜10まで教える感じではなく、1、10、100、1000まで教えてやっと動く感じ。
その分痒い所に手が届くが。。。
だんだん倦厭されているということは、今の納期!納期!の文化とは合わないんだろうな。

1132
デフォルトの名無しさん[sage]   投稿日:2017/03/22 00:22:36  ID:153gnM05.net(2)

1133
デフォルトの名無しさん[sage]   投稿日:2017/03/22 00:24:51  ID:Qoic3+WX.net(2)
工程の短縮というのもあるけど
「どのアプリケーションでも同じことをしたければ同じ操作をすればいい」と言うのを求めると
同じ操作(同じ動作)をひとつの部品として提供するほうが良い
そういう開発者独自の機能より、一般化された機能や操作性が重要視されるようになったのも一因だと思う

1134
デフォルトの名無しさん[sage]   投稿日:2017/03/22 00:30:45  ID:oXk4FtJ8.net(2)
>495
これってまだいろいろ未完成じゃないん?
sdkにも含まれてないし扱いが不鮮明なんだよな。

1135
デフォルトの名無しさん[sage]   投稿日:2017/03/22 00:48:25  ID:KP40M7fU.net(2)
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の時点で使い物になってて欲しいなあ

1136
デフォルトの名無しさん[sage]   投稿日:2017/03/23 12:03:55  ID:39On3zda.net(2)
>494
APIの粒度の問題を言われてもな

1137
デフォルトの名無しさん[sage]   投稿日:2017/03/23 20:22:15  ID:NUnQTAC3.net(2)
でも結局どの言語でもAPIインポートするんだよな
意味ないな

1138
デフォルトの名無しさん[sage]   投稿日:2017/03/26 14:21:34  ID:bO2o38VX.net(2)
>494
>痒い所に手が届く

これ重要

1139
デフォルトの名無しさん[sage]   投稿日:2017/03/26 15:20:48  ID:6+wpTDFL.net(2)
代わりに痒くもないところが腫れあがる

1140
デフォルトの名無しさん[sage]   投稿日:2017/03/27 08:29:30  ID:S+/FPMiq.net(2)
そりゃ掻いてる場所が違うんだ

1141
デフォルトの名無しさん[sage]   投稿日:2017/03/27 08:31:23  ID:CkZovUeE.net(2)
痒いところをかくといけないのでかけないようになってます

1142
デフォルトの名無しさん[sage]   投稿日:2017/03/29 15:32:52  ID:Si2XZHCG.net(2)
ショートカットの.lnkとかあと特殊なフォルダとかに出る
アイコン右下のやつってなんて名前なんでしょうか?

1143
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/03/29 15:39:16  ID:uG+6tdKu.net(2)
overlay icons

1144
デフォルトの名無しさん[sage]   投稿日:2017/03/29 15:40:33  ID:F9h34aTY.net(4)

1145
デフォルトの名無しさん[sage]   投稿日:2017/03/29 15:41:59  ID:3SDK0DLs.net(4)
右下ってシールドか?
キャプチャぐらい貼れよ無能

1146
デフォルトの名無しさん[sage]   投稿日:2017/03/29 15:43:11  ID:F9h34aTY.net(4)
これやろ

矢印

1147
デフォルトの名無しさん[sage]   投稿日:2017/03/29 16:02:42  ID:3SDK0DLs.net(4)
矢印は左下だろ
アイコンオーバーレイって名称のことかな。ま、どうでもいいや

1148
デフォルトの名無しさん[]   投稿日:2017/04/01 18:40:58  ID:m+AYjiBS.net(2)
Win32APIサポート終了のお知らせ

1149
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/04/01 18:56:32  ID:Q4azjyiD.net(2)
>511
ソース希望

1150
デフォルトの名無しさん[sage]   投稿日:2017/04/01 19:30:55  ID:WcYopVS3.net(2)
>512
今日の日付

1151
デフォルトの名無しさん[sage]   投稿日:2017/04/03 01:29:34  ID:BKde4+E+.net(2)
嘘をついていいのは午前中なんだが。

1152
デフォルトの名無しさん[sage]   投稿日:2017/04/03 02:36:19  ID:EQsFkd4r.net(2)
それもウソだよ

1153
デフォルトの名無しさん[sage]   投稿日:2017/04/03 20:45:49  ID:fIAaSCsY.net(2)
ウソだってのがウソなんだよ

1154
デフォルトの名無しさん[sage]   投稿日:2017/04/03 20:47:03  ID:DvppQH2R.net(2)
4/1だけにしとけよ

1155
デフォルトの名無しさん[sage]   投稿日:2017/04/03 21:39:52  ID:gWDrFV4S.net(2)
昭和64年は短命
64も短命?
128移行か

1156
デフォルトの名無しさん[sage]   投稿日:2017/04/03 23:53:31  ID:qQvnlfYK.net(2)
コンピュータの進歩がかなり鈍化してきているし
物理的な限界に直面しつつあるから
128bitは俺の生きている間に来るかどうか
今の段階では個人用途でそれだけのメモリ空間が必要になる使い道が思い浮かばん
それはPCの性能がまだそこに全然達していないから全く思い浮かばんってことなんだけど
そこへ至るまでに何段階もの紆余曲折あるだろうから今の段階で考えるだけ無駄だけどね
世の中も全然変わってるだろうし
それはともかく256テラバイト以上のメモリともなると
それを処理するCPUも相当速くないと意味ないからね
今の状態ですらどちらかというとメモリは余り気味でCPUがボトルネックになってる感じだし
メモリは余ってるけど、データ積んだところでCPUが現実的な時間で処理しきれないっていう
まぁ1万コアぐらいないと256テラバイト以上のメモリは生かしきれないんじゃないかな
その場合メモリ帯域は足りるのかとか考えると、コアごとにキャッシュを山のように積むか
コヒーレンシとか考えるともはやそれも難しく
PS3のCellみたいなプログラミングを強いられるかもしれないな
生きてないと思うけど

1157
デフォルトの名無しさん[sage]   投稿日:2017/04/04 00:09:36  ID:3+iIkQVP.net(2)
そういうことを考えると128bitはあまり現実味がないというか
ムーアの法則通りに半導体の性能が上がり続けたとしても
あくまで実時間に対して2倍2倍に増えていくってオーダーだけども
bit数の増え方はもっと激しくて、1bit増えるたびに2倍の空間になるのに
そのbit数自体が2倍2倍に増えて行くわけだから、オーダーが全然違う
8bit→16bit、16bit→32bit、32bit→64bitのように順調にはいかない
どんどん間が長くなっていく
128bitは遠い遠い未来か、もしくは訪れないってことになる

1158
デフォルトの名無しさん[sage]   投稿日:2017/04/04 00:18:54  ID:u5Wjlvjc.net(4)
>519
そのころはAIがプログラム書くようになるから心配無いよ

1159
デフォルトの名無しさん[sage]   投稿日:2017/04/04 01:30:54  ID:BzumqOQh.net(2)
>520
>8bit→16bit、16bit→32bit、32bit→64bitのように順調にはいかない

それはマイクロプロセッサしか見てないだろ。
メインフレームの世界だと、トランジスタ機になったときには
32bitや36bitがすでにできていたから、そこから全く進化してない
ともいえる。

1160
デフォルトの名無しさん[sage]   投稿日:2017/04/04 05:56:42  ID:/PIYb7TP.net(2)
>519
VLIWは?

1161
デフォルトの名無しさん[sage]   投稿日:2017/04/04 08:06:05  ID:Tyt+m4C4.net(2)
>PS3のCellみたいなプログラミングを強いられるかもしれないな

中国のスパコン1位がそんなアーキティクチャで2位以下にトリプルスコアの圧勝だったな。
この先、性能を追求したらそうならざるを得ないかも。

1162
デフォルトの名無しさん[sage]   投稿日:2017/04/04 08:19:35  ID:1dU9a0gl.net(2)
そんな下の層の違いは上には影響しないから俺には関係ないな

1163
デフォルトの名無しさん[sage]   投稿日:2017/04/04 09:42:55  ID:mPQmMovw.net(2)
ボトルネックといえばフロントサイドバスとストレージ

1164
デフォルトの名無しさん[sage]   投稿日:2017/04/04 22:01:11  ID:73kME/Mz.net(2)
128ビットも必要なプログラムは人間には書けない

1165
デフォルトの名無しさん[sage]   投稿日:2017/04/04 22:14:00  ID:eHZToKh6.net(2)
書くのは簡単

1166
デフォルトの名無しさん[sage]   投稿日:2017/04/04 22:23:58  ID:u5Wjlvjc.net(4)
一桁二桁の加減乗除なら良いが、128ビットフルに使う計算だと、紙の幅越えないかなw

1167
デフォルトの名無しさん[sage]   投稿日:2017/04/04 22:31:01  ID:2+tk3Olf.net(2)
SSE2使ってるとどうやって128bit使おうかばかり考える

1168
デフォルトの名無しさん[]   投稿日:2017/04/05 01:26:41  ID:XXr1MGA7.net(2)
っつーかナニを128ビットにするわけよ?

1169
デフォルトの名無しさん[sage]   投稿日:2017/04/05 02:45:28  ID:qYLi57Sr.net(2)
俺のナニは8bitだしorz

1170
デフォルトの名無しさん[sage]   投稿日:2017/04/05 08:06:40  ID:Bh5NPBNH.net(2)
なに見栄張ってるんだよ
お前のは a bit (=ちょっと) だろ

1171
デフォルトの名無しさん[sage]   投稿日:2017/04/05 08:54:18  ID:BdqpqknF.net(2)
just bit(1ビットだけ)だろ?

1172
デフォルトの名無しさん[sage]   投稿日:2017/04/05 09:46:20  ID:v8qJ9EUo.net(2)
>531
そりゃcharを16個詰め込んだりするだろ

1173
デフォルトの名無しさん[]   投稿日:2017/04/05 14:24:34  ID:+eJqUohN.net(2)
ここまで漏れの自演

1174
デフォルトの名無しさん[sage]   投稿日:2017/04/06 17:46:17  ID:Wug7VRpa.net(4)
質問お願いします。
QueryPerformanceFrequency
で得た値は実行ごとに変わったりするから毎回計測しないと駄目ですか?

1175
デフォルトの名無しさん[sage]   投稿日:2017/04/06 18:05:42  ID:lEpGhGGY.net(4)
どんな理由から毎回計測しないようにしたいんだ?それによる

1176
デフォルトの名無しさん[sage]   投稿日:2017/04/06 18:18:16  ID:Wug7VRpa.net(4)
QueryPerformanceFrequencyの値がプログラムを終了するまで一定なら
1回しかこれを実行したくないし変わるなら一回時間を計測するごとにこれを実行したいです

1177
デフォルトの名無しさん[sage]   投稿日:2017/04/06 18:30:27  ID:lEpGhGGY.net(4)
それなら一度だけでよかったはず

1178
デフォルトの名無しさん[sage]   投稿日:2017/04/07 17:01:14  ID:3o5iBWIM.net(2)
システム起動中に変わることはないってさ

1179
デフォルトの名無しさん[sage]   投稿日:2017/04/07 22:21:01  ID:9JlGmFFU.net(2)
ハイバーネーションみたいなのとかVMとか組み合わさるとどうなるかわかんないけどそういうことになってるね

1180
デフォルトの名無しさん[sage]   投稿日:2017/04/08 09:03:07  ID:ptqONvxu.net(2)
俺は使うたびに毎回読んでるわ
あえてそうしない意味もないから

1181
デフォルトの名無しさん[sage]   投稿日:2017/04/08 17:48:41  ID:C7AQR+Mi.net(2)
すみません、教えてください。

Borland BCC でC/Cppを勉強しているのですが、
CreateWindow( "EDIT", "あああああ", ....
にすると、あああああ の部分が文字化けして ,,,, と表示されてしまいます。
CreateWindow( "STATIC", "あああああ", ...
だと問題なく表示されます。

どうか教えてください、宜しくお願いします。

1182
デフォルトの名無しさん[sage]   投稿日:2017/04/08 22:40:07  ID:42pK0vcr.net(2)
>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);

1183
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/04/09 07:27:35  ID:qFsmFYyf.net(2)
>544
省略せずに書いてみて。

1184
544[sage]   投稿日:2017/04/10 07:47:25  ID:RoCnetHj.net(2)
すみません、お手数をおかけします。


// あああああ が表示される
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 はグループボックスです。

1185
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/04/10 08:21:28  ID:73IQobxS.net(6)
"EDIT"にはSS_CENTERは使えないよ。EDITにはES_...スタイルを使う。

1186
デフォルトの名無しさん[sage]   投稿日:2017/04/10 08:53:21  ID:ZIRNWk3W.net(2)
>547
とりあえずコントロール毎に指定フラグが違う事を指摘しておく

1187
デフォルトの名無しさん[sage]   投稿日:2017/04/10 16:45:44  ID:PH6zMRzh.net(6)
>547
マルチバイト文字列が上手くいかないなら"AAAA"のようにシングルバイト文字列で試してみればいいじゃないか。

1188
デフォルトの名無しさん[sage]   投稿日:2017/04/10 17:20:37  ID:vopNHtdq.net(2)
>547
WM_SETFONTを使って、フォントを関連付けしてみたらどうだい?

1189
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/04/10 17:25:49  ID:73IQobxS.net(6)
SS_CENTERがES_ENDELIPSISとして解釈されたんだろうな。
【今日の教訓】
EDITコントロールには、ES_で始まるスタイルを使え。SS_はEDITには使うな。

1190
片山博文MZ ◆T6xkBnTXz7B0 [sage]   投稿日:2017/04/10 17:32:00  ID:73IQobxS.net(6)
ごめん、ES_ENDELIPSISというスタイルはなかった。SS_CENTERの代わりにES_CENTERを指定すればいい。

1191
デフォルトの名無しさん[sage]   投稿日:2017/04/10 21:33:08  ID:G1/iiInq.net(2)
なんでESとかSSとか種類が有るの?

1192
デフォルトの名無しさん[sage]   投稿日:2017/04/10 21:59:23  ID:PH6zMRzh.net(6)
そりゃ特定のコントロールに対するものだからさ。
あとSS_CENTERもES_CENTERも winuser.h で 0x01L と定義されている。

例えば共通の定義 XX_CENTER 0x01L としていた場合、
EDITコントロールの仕様変更でXX_CENTER 0x02L としたくても
STATICコントロールで同じ意義を使っているため変えることが出来ないだろ。
もし定義を変えた場合、STATICコントロールで0x02L というのは別の意味を持っている(かもしれない)ので動作がおかしくなる。
だから意味は同じでも“値”としては別のものとして扱う(定義する)。

1193
デフォルトの名無しさん[sage]   投稿日:2017/04/10 22:00:00  ID:PH6zMRzh.net(6)
ミス
意義→定義

1194
デフォルトの名無しさん[sage]   投稿日:2017/04/10 23:44:29  ID:CESguEkt.net(2)
じゃー将来SS_CENTERが別の値に変更されても安心だね

1195
デフォルトの名無しさん[sage]   投稿日:2017/04/11 07:55:30  ID:pJyY6xCH.net(2)
変えたらひどいことになるけどなw
本音と建前みたいなもんでCの欠点だな。後発言語はそういうとこカバーされてる(のもある)

1196
デフォルトの名無しさん[sage]   投稿日:2017/04/11 17:52:35  ID:xC3FSY5Y.net(6)
モーダルダイアログをメインの親とし、その後動的にサブメニューを表示する仕組みがあります。
サブメニュー表示中も親側の操作を可能とするため、サブメニューはモードレスとしていますが、
TABなどのキー入力が効きません。
辛うじて、初期フォーカスがあるボタンのみスペースキーを受け付けます。
マウス操作は問題ありません。

原因としてはサブメニューのキー処理をする IsDialogMessage を含むメッセージループが必要
なんだろうと思いますが、こういう場合の定石というのはあるのでしょうか?

思い付く実装は以下2パターンです。

その1
親もモードレスとし、親のメッセージループ中にサブメニューのメッセージも処理する仕組みを入れる。

その2
サブメニュー表示後に別スレッドを立ち上げ、そこでサブメニューのメッセージループを回す。


普通はこうだよ。とか他の方法などありましたらお願いします。

1197
デフォルトの名無しさん[sage]   投稿日:2017/04/11 17:55:40  ID:xC3FSY5Y.net(6)
ちょっと語弊がありましたので訂正です。

ここで言う「サブメニュー」とは、CreateMenu などで作られる一般的に言うメニューではなく、
単なるポップアップスタイルのタイトルなしダイアログのことです。
CreateDialog で画面を作っています。
勝手に言葉を作ってすみません。

1198
デフォルトの名無しさん[sage]   投稿日:2017/04/11 18:23:36  ID:9HH9Hffg.net(2)
2つウインドウがあって、1つはメインウインドウ、もう1つはメニューウインドウ
メインウインドウにキーフォーカスがあるとメニューウインドウでキー操作できず、メニューウインドウにフォーカスがあるとメインウインドウでキー操作できない
メッセージを適宜流せばいいんじゃないか?

1199
デフォルトの名無しさん[sage]   投稿日:2017/04/11 22:23:16  ID:xC3FSY5Y.net(6)
フォーカスはそれがあるウィンドウで処理できるようなUIを考えています。
ユーザーがメインウィンドウにフォーカスを(マウスなどで)移せば、
以降はそのウィンドウでキーボード操作ができればいいです。その逆も然り。

適宜メッセージを流すにしても、結局どこでメッセージループを回すかという
話になるのではと思うのですが、違うのでしょうか?

1200
デフォルトの名無しさん[sage]   投稿日:2017/04/12 22:43:12  ID:iYQoJoP4.net(2)
なにいってんだこいつ

1201
デフォルトの名無しさん[sage]   投稿日:2017/04/12 23:28:35  ID:lhjyuLrL.net(2)
分からないのに無理して答えるなよ

1202
デフォルトの名無しさん[]   投稿日:2017/04/13 02:45:23  ID:8XBnDqPS.net(2)
最近よく足がつる

1203
デフォルトの名無しさん[sage]   投稿日:2017/04/13 11:42:08  ID:9jlRESvt.net(2)
>562
フォーカスを移してキーボード操作なんて危険なことを平気でやろうとする人はWin32APIなんて使わない方が良いんじゃね?

普通はフォーカスを移そうとしているオブジェクトにフォーカスを移す移さない関係なく文字列送信するもんじゃないの?

キーボード操作中にユーザーが別のウィンドウをクリックした場合とか考えないの?

1204
デフォルトの名無しさん[sage]   投稿日:2017/04/13 13:32:39  ID:OCOdT3+H.net(2)
>562
難しく考えるよりも、例えば、MVCベースで考えて設計したらいいんじゃねーの?
オブジェクト指向で設計するのもいいし、データ処理ありきで設計するのもあり、やりやすいように作ればいいよ。

1205
デフォルトの名無しさん[sage]   投稿日:2017/04/13 17:59:38  ID:zh4lU2gJ.net(2)
>566
なんで何も理解できていないのに無理に話に入ろうとするの?

1206
デフォルトの名無しさん[sage]   投稿日:2017/04/13 18:16:04  ID:xmE6C1ua.net(2)
spyで見てどこにメッセージ届いてるか見ろ

1207
デフォルトの名無しさん[sage]   投稿日:2017/04/14 00:20:20  ID:+RGtmVs/.net(2)
フォースを使うのじゃ

1208
デフォルトの名無しさん[sage]   投稿日:2017/04/14 00:39:04  ID:6ECgJlCU.net(2)
Windows 10 Creators Update入れたら
DrawTextで大きめのフォントの描画が異常に遅くなった。
高DPI未対応のアプリは見捨ててGDIはシンプルに動いてほしい。

1209
デフォルトの名無しさん[sage]   投稿日:2017/04/14 05:38:58  ID:kIyPPZzD.net(2)
>567
2行目めちゃくちゃだなw

1210
デフォルトの名無しさん[sage]   投稿日:2017/04/14 10:41:54  ID:7fCdXhh/.net(2)
>561
>メッセージを適宜
それが質問内容でしょうよ。

>566
タブコンに子ウィンドウ貼り付けて画面切り替えやキー入力受付なんて
日常茶飯事なのになにとち狂ったこと言ってるんだよ。

>572
ほんとそう。
自分の知ってる単語を並べただけだわな。

1211
デフォルトの名無しさん[sage]   投稿日:2017/04/14 11:11:32  ID:LVRPT4/o.net(2)
Win32APIの後継でc++/cliじゃないライブラリってないのかね?

1212
デフォルトの名無しさん[sage]   投稿日:2017/04/14 11:29:24  ID:iAr+rl+J.net(2)
win32apiはオンリーワンで現役なので後継ってもんがそもそもなし
.netはラッパーライブラリ、cliは言語仕様
>574の求めてる物の意味が分からん
UWPでも触ってろと言えばいいのか?

1213
デフォルトの名無しさん[sage]   投稿日:2017/04/14 15:40:59  ID:Z/bjVn5R.net(2)
しいて言えばQtじゃね?
Qtのアプリって結構あるよね

1214
デフォルトの名無しさん[sage]   投稿日:2017/04/14 18:23:47  ID:R7yCPQGT.net(2)
>574
ライブラリってかAPIはユニバーサルwinのがそれじゃないの?

1215
デフォルトの名無しさん[sage]   投稿日:2017/04/14 18:31:24  ID:uRqmXJpf.net(2)
WinRT API

1216
デフォルトの名無しさん[]   投稿日:2017/04/14 22:27:03  ID:Gjx6wpyy.net(2)
ここでWTLがまさかの大復活を遂げるわけよ

1217
デフォルトの名無しさん[sage]   投稿日:2017/04/15 06:16:39  ID:qt9qpnGQ.net(2)
ちょっとしたもんつくるにはwtlが一番いい

1218
デフォルトの名無しさん[sage]   投稿日:2017/04/15 18:14:11  ID:JjgxHVsv.net(2)
>574
Windows API
後継っつーか名前が変わっただけだが

1219
デフォルトの名無しさん[sage]   投稿日:2017/05/05 00:01:23
Windows10S では Win32/.net アプリは動かないだと。
UWPに変換すれば行けるらしいが、もうおしまいか?

1220
デフォルトの名無しさん[sage]   投稿日:2017/05/05 00:15:11
Windows10Sが相手にされなくて終わるだけ。

1221
デフォルトの名無しさん[sage]   投稿日:2017/05/05 00:41:30
既に相手されていない感

1222
デフォルトの名無しさん[sage]   投稿日:2017/05/05 03:08:44
お前らが相手にされてないじゃん
おっさんしかいないだろうこのスレ

1223
デフォルトの名無しさん[sage]   投稿日:2017/05/05 08:12:57
今回のターゲット層はメインストリームじゃないから
既存のアプリが使えなくても不満は少ないと踏んでるんだろう
まあWindowsRTみたいに核爆死はしないんじゃないか
MSもそんなに数を出荷しないだろうから

もう一度WindowsRTをSurfaceやらに載せることを夢見ているのなら
やはりもう一度爆死するだろう

1224
デフォルトの名無しさん[sage]   投稿日:2017/05/05 18:13:03
教育用途だっけ
今時のキッズは学校支給タブレットの制限外してゲームしてるらしいからその点ではいいかもな

1225
片山博文MZ [age]   投稿日:2017/05/06 18:59:21
あるプログラムで使用中のGDIオブジェクトの個数を数える方法はありますか?

1226
デフォルトの名無しさん[sage]   投稿日:2017/05/06 20:36:55
タスクマネージャで見れるよ

1227
デフォルトの名無しさん[sage]   投稿日:2017/05/06 20:50:23
GetGuiResources(hProcess, GR_GDIOBJECTS)

1228
デフォルトの名無しさん[sage]   投稿日:2017/05/06 20:53:17
>588
GetGuiResources
GR_GDIOBJECTS(0) Return the count of GDI objects.
ってあるし。

1229
片山博文MZ [age]   投稿日:2017/05/06 20:54:47
ありがとー。

1230
デフォルトの名無しさん[sage]   投稿日:2017/05/06 21:06:22
なにするつもりなのさ

1231
片山博文MZ [age]   投稿日:2017/05/06 21:08:39
メモリーリーク対策やデバッグやらだよ。

1232
雪風[]   投稿日:2017/05/06 21:54:04
>593
自演 オナヌーだろ

1233
デフォルトの名無しさん[sage]   投稿日:2017/05/06 22:06:22
書いてて恥ずかしくないの?

1234
デフォルトの名無しさん[sage]   投稿日:2017/05/07 02:01:32

1235
デフォルトの名無しさん[]   投稿日:2017/05/07 07:23:08
firefoxとかリーク笑えるよな

1236
デフォルトの名無しさん[sage]   投稿日:2017/05/09 09:36:37
特定のアプリケーションがハング状態になってるかを判断する方法ありませんか?
.netではRespondingプロパティで判断できるようですがwin32apiでやりたいので

1237
デフォルトの名無しさん[sage]   投稿日:2017/05/09 09:45:13
そこまで分かってるならソース読めよ
https://github.com/Microsoft/referencesource/blob/master/System/...

SendMessageTimeoutでWM_NULLを投げてるだけだな

1238
デフォルトの名無しさん[sage]   投稿日:2017/05/09 10:04:41
その質問コピペだよ

1239
デフォルトの名無しさん[sage]   投稿日:2017/05/09 10:17:40
ありがとうございました!

1240
デフォルトの名無しさん[sage]   投稿日:2017/05/09 11:30:51
>600
これ使ってDoS攻撃みたいなこと出来るんかな

1241
デフォルトの名無しさん[sage]   投稿日:2017/05/09 21:20:50
最近のアプリに多い、重い処理は別スレッドで実行してGUIが固まらないようにしてる場合は役に立たないかな

1242
デフォルトの名無しさん[sage]   投稿日:2017/05/09 21:48:08
>604
それは「重い処理のときにハングアップしているように見える」というだけの話で、
そういうレベルでの意味ならマルチスレッド化によって役には立たない。
でもそういうマルチスレッド化したソフトウェアでも
画面描画の時の不具合などでハングアップすることもあるわけで役に立たないということはないよ。

1243
デフォルトの名無しさん[sage]   投稿日:2017/05/09 22:06:52
>605
バグでずっと重い処理が終わらない場合を想定してた。ウィンドウメッセージは処理されるものの、事実上のハング。
確かに全く役に立たないわけではないね。

1244
デフォルトの名無しさん[sage]   投稿日:2017/05/09 23:47:50
ウィンドウがわかるならIsHungAppWindowってのがある

1245
デフォルトの名無しさん[sage]   投稿日:2017/05/10 02:35:27
>606
動画の変換みたいに純粋に時間がかかる場合とか、ユーザーのクリック待ちとかもあるから、判断はできんだろうな

1246
デフォルトの名無しさん[sage]   投稿日:2017/05/10 02:56:46
止めようとしても停まらないもの?
WindowsUpdateかな?

1247
デフォルトの名無しさん[sage]   投稿日:2017/05/10 11:25:51
>609
ネットワーク切れてからのタイムアウトも異常に遅いんだよな

1248
デフォルトの名無しさん[]   投稿日:2017/05/14 19:29:07
まだ見放されてないぞ

【IT】マイクロソフト、サポート切れOS「Windows 8、Windows XP、Windows Server 2003」にも修正ソフト提供

asahi.2ch.net
test/read.cgi/newsplus/1494723803

1249
デフォルトの名無しさん[]   投稿日:2017/05/19 19:48:39
質問ささてください
構造体AをGlobalAllocで領域を確保して値を入れた後、構造体BをGlobalAllocで確保すると、構造体Aのメンバであるポインタのアドレスが変わってしまうのですが何が原因なのでしょうか?

1250
デフォルトの名無しさん[sage]   投稿日:2017/05/19 20:35:00
あるプロセスのメモリ情報のリージョンサイズや属性を調べるにはどのAPIを使えばいいですか?

1251
デフォルトの名無しさん[sage]   投稿日:2017/05/19 20:49:42
>612
Windowsは働き者の賢いOSだからなぁ

1252
デフォルトの名無しさん[]   投稿日:2017/05/19 21:09:20
動かしたくないならLockしてください

1253
デフォルトの名無しさん[sage]   投稿日:2017/05/19 21:11:02
>612
GlobalAllocじゃなくて自分で書き換えてるんでしょ

1254
デフォルトの名無しさん[sage]   投稿日:2017/05/19 21:22:03
>612
GMEM_FIXEDを指定していないGlobalAllocでロックカウントが0の場合はメモリの再配置が起きる
GlobalLockとGlobalUnlockの間なら
「構造体Aのメンバであるポインタのアドレス」は変わることがないけど
GlobalUnlockを呼び出しロックを解除した場合は再配置される可能性がある

1255
デフォルトの名無しさん[]   投稿日:2017/05/20 18:36:33
皆様レスありがとうございます
>612
構造体BのGlobalAllocをコメントアウトすれば問題なく動くのでこれが原因なのはたぶん間違いないです

>617
構造体A自体のLockやFIXは試しましたがダメでした。構造体Aは領域確保後にwinAPIに渡して値を格納してもらうのですが格納後にメンバ全ての固定が必要なのでしょうか?


ともあれメモリ再配置が原因なのですね。ありがとうございました。この方向でもう少し試してみます。

1256
デフォルトの名無しさん[sage]   投稿日:2017/05/20 18:43:52
違うんじゃね

1257
デフォルトの名無しさん[sage]   投稿日:2017/05/20 19:05:41
ソースコードにイージーミスがある可能性の方がクッソ高いと思う

1258
デフォルトの名無しさん[sage]   投稿日:2017/05/20 19:06:46
>618
そもそもの使い方が間違っているんじゃないか?

>構造体Aは領域確保後にwinAPIに渡して
そのwinAPIは何?
というかなぜ隠す必要があるのか

1259
デフォルトの名無しさん[sage]   投稿日:2017/05/20 19:08:39
必要最小限の再現ソース晒してからだな

1260
デフォルトの名無しさん[sage]   投稿日:2017/05/21 02:26:55
構造体A、もしくはその近くのメモリ確保量が足りていないような気がする
スタック破壊、または、メモリ内容破壊では?

1261
デフォルトの名無しさん[sage]   投稿日:2017/05/21 10:34:21
>613
VirtualQueryEx

1262
デフォルトの名無しさん[]   投稿日:2017/05/21 10:40:12
すみません。自分が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;
}

1263
デフォルトの名無しさん[sage]   投稿日:2017/05/21 11:10:23
GlobalAllocの戻り値のハンドルを直接キャストしてポインタに代入したら駄目だろ
ハンドルを引数としてGlobalLockを呼び出して、その戻り値をキャストしてポインタに代入しろ

1264
デフォルトの名無しさん[sage]   投稿日:2017/05/21 11:25:17
蓋を開けてみればやはりこんなもんだ

1265
[sage]   投稿日:2017/05/21 11:29:51
p = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
HeapFree(GetProcessHeap(), 0, p);
でうまくやってるよ,GlobalAlloc は win3.1 の仕様を下敷きにしているので使いにくいよ

1266
デフォルトの名無しさん[sage]   投稿日:2017/05/21 14:52:03
オワコンだしな
今はもうmallocでいいよ

1267
[sage]   投稿日:2017/05/21 15:16:35
>629
それはどこにあるのかな?

1268
デフォルトの名無しさん[sage]   投稿日:2017/05/21 16:25:59
>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;
}

1269
デフォルトの名無しさん[]   投稿日:2017/05/21 16:40:14
GMEM_MOVEABLE
移動可能メモリを割り当てます。Win32 環境では、物理メモリ内でメモリブロックが移動されることは決してありませんが、既定のヒープ内で移動することは可能です。
戻り値は、メモリオブジェクトのハンドルです。このハンドルをポインタへ変換するには、GlobalLock 関数を使います。
この値を GMEM_FIXED フラグと組み合わせることはできません。

Win32では移動することがないあるよって言ってるし、GPTRフラグを使うか、メモリ確保をmallocなりに置き換えたほうが良いね
EnumPrintersに渡すバッファのポインタは別になんでも良いみたいだし

1270
デフォルトの名無しさん[sage]   投稿日:2017/05/21 16:51:37
GlobalAllocはクリップボード弄る時くらいでいいよ

1271
デフォルトの名無しさん[sage]   投稿日:2017/05/21 18:27:54
こうゆう奴がプロジェクトにいると、デバックでは動くがリリースでは動かない
プログラムとか出来上がるんだろうな。。。

(もちろん、リリース+デバック情報埋込なら動く最悪のパターン)

1272
デフォルトの名無しさん[sage]   投稿日:2017/05/22 03:45:08
mallocでも、newでも好きなのつかったらいいんじゃね?

1273
デフォルトの名無しさん[]   投稿日:2017/05/22 07:02:35
sizeof(0) ...

1274
デフォルトの名無しさん[]   投稿日:2017/05/22 10:58:01
みなさま本当にありがとうございました。
メモリ確保の方法に関しては古いのはなんとなくわかってるのですが、意見できる程知識がないのが実情です……
ともあれ解決方法の兆しが見えたので頑張ってみます。

>634
耳が痛いですが自分も本当にそう思います……個人的には勉強になるのでいいんですが……
リリース気をつけておきます

1275
驍フでいいんですが……
リリース気をつけておきます
[]   投稿日:0000/00/00 00:00:00

1276
片山博文MZ [age]   投稿日:2017/05/26 15:19:18  ID:hi3mNk6y.net
※未承認広告※
Win32メッセージクラッカー簡単入力。
MsgCrack
https://github.com/katahiromz/MsgCrack

1277
片山博文MZ [age]   投稿日:2017/05/27 10:36:14  ID:je1Ltzc3.net
※未承認広告※
これがWin32のラバーバンドやで。重要な技術だから、確認しとくれや。
https://github.com/katahiromz/RubberBandSample

1278
デフォルトの名無しさん[sage]   投稿日:2017/05/27 10:39:23  ID:I7pwMhhb.net
皆さんは、ダイアログの HWND に対し SetWindowLongPtr, GetWindowLongPtr を使用する場合
GWLP_USERDATA と DWLP_USER をどのように使い分けていますか?

1279
デフォルトの名無しさん[sage]   投稿日:2017/05/27 13:16:53  ID:olQh0zw8.net
使い分けもなにも
get してから & とか | とかして set してる

1280
デフォルトの名無しさん[sage]   投稿日:2017/06/14 11:22:26  ID:+7k/9HY0.net(4)
エディットボックスにES_MULTILINEを付けると
Ctrl+Aですべて選択ができなくなってしまうのだけど、
これはなにか技術的な理由があってのことですか?
それとも、昔から修正されていないだけのバグですか?

1281
デフォルトの名無しさん[sage]   投稿日:2017/06/14 11:39:15  ID:+7k/9HY0.net(4)
642の追記ですが、ES_MULTILINEだけでなく、ES_READONLYを付けたときも、
同じようにCtrl+Aが効かなくなるようです。

1282
デフォルトの名無しさん[sage]   投稿日:2017/06/14 12:11:52  ID:Jdv7hZ4r.net
>643
それはサブクラス化で対応

1283
デフォルトの名無しさん[sage]   投稿日:2017/06/14 12:19:57  ID:+7k/9HY0.net(4)
>644
つまり、ES_MULTILINEやES_READONLYはCtrl+Aに対応すべき状態ではない
というような技術的な理由があるわけではなく、
単にマイクロソフトが修正していない昔からのバグで、
サブクラス化などで対応しても問題ないものなんですよね?

1284
デフォルトの名無しさん[sage]   投稿日:2017/06/14 13:35:54  ID:pxuX+RKK.net
ctrl+aが全選択という統一ルールがないとかなんとか

1285
デフォルトの名無しさん[sage]   投稿日:2017/06/14 19:35:40  ID:+7k/9HY0.net(4)
>646
エディットボックスが常にCtrl+Aを扱っていないなら納得するんですが、
ES_MULTILINEやES_READONLYが付いているときだけ効かなくなるんです。

1286
デフォルトの名無しさん[sage]   投稿日:2017/06/15 10:24:59  ID:0e975zeL.net
>647
挙動としては認識通り
技術的な問題ではないのでサブクラスなりインスタンスなりのKeyDownイベントでSelectAll()して構わない
普通はついでにCopy()やCut()のショートカットキー処理もつけておく

1287
デフォルトの名無しさん[sage]   投稿日:2017/06/15 11:09:41  ID:pFacwd6b.net
>648
解説ありがとうございます。
エディットボックスの処理を信じずに、Ctrl+Aなどの動作を載せてしまいます。

1288
デフォルトの名無しさん[sage]   投稿日:2017/06/23 01:36:52  ID:/7Z8Xk53.net
CLIP STUDIO PAINTのようにツールっぽくする為にウインドウ全体を茶色に統一するようなWin32APIと言うのがありますでしょうか?
SKINかもしれないのですがSKINの仕方が解りません。

それとMediBang Paint Proのようにウインドウ全体でなくメニューとツールウインドウだけを茶色に統一する方法も
解りましたらお願いします。

1289
デフォルトの名無しさん[sage]   投稿日:2017/06/23 03:31:09  ID:1Ua/Rfq9.net
>650
ないです。

1290
デフォルトの名無しさん[]   投稿日:2017/06/23 10:30:01  ID:0OdP20aK.net
中学生でもランサム作ってるんだから
がんがれ

1291
デフォルトの名無しさん[]   投稿日:2017/06/24 05:45:55  ID:AiSsJYjg.net(2)
>652
ランサムだけなら誰でもできる。ランサムウェアと呼ぶから重要なことが抜けて伝わってしまう。

1292
デフォルトの名無しさん[sage]   投稿日:2017/06/24 12:23:00  ID:29Lhuze+.net
ただのバッチだったしな

1293
デフォルトの名無しさん[sage]   投稿日:2017/06/24 12:44:27  ID:TJcGM6+6.net
警察は実績が欲しく、子供は有名になりたかったらしいので
両者の思惑が一致した最高の形なんだろう

1294
デフォルトの名無しさん[]   投稿日:2017/06/24 18:30:11  ID:AiSsJYjg.net(2)
>654
重要なのはWindowsの穴をついてプログラムを実行できたところだからね。

1295
デフォルトの名無しさん[sage]   投稿日:2017/06/24 18:34:45  ID:xexj0oOj.net(3)
穴ついてたのかよw
どうせこのbat実行してね、だろうと思ってたんだが違ったか

1296
デフォルトの名無しさん[sage]   投稿日:2017/06/24 18:47:24  ID:fDMY1AQ8.net(2)
エッチなビデオ.avi .bat
とかじゃないの?

1297
デフォルトの名無しさん[sage]   投稿日:2017/06/24 19:05:41  ID:xexj0oOj.net(3)
軽くぐぐってみたがどこの穴ついたかわからなかった

1298
デフォルトの名無しさん[sage]   投稿日:2017/06/24 20:21:25  ID:sGEalsxM.net(2)
そういえば歴代OSの擬人化
みんな女の子だったよな
穴あって当然だな

1299
デフォルトの名無しさん[sage]   投稿日:2017/06/24 20:22:32  ID:fDMY1AQ8.net(2)
男の子にだって穴はあるよ?

1300
デフォルトの名無しさん[sage]   投稿日:2017/06/24 20:25:44  ID:sGEalsxM.net(2)
アッー!

1301
デフォルトの名無しさん[sage]   投稿日:2017/06/24 21:08:00  ID:eqxuJWIk.net
こないだの WannaCrypt ランサムの話なら SMB の穴だけど

1302
デフォルトの名無しさん[sage]   投稿日:2017/06/24 21:26:43  ID:xexj0oOj.net(3)
中学生WannaCryptt使ってたのかよ・・・
更新情報
・スレッド一覧ページで過去ログのタイトル検索・一覧表示ができるようになりました(2016/1/20)
NGワード登録
登録する
スレッド内検索

プログラム板 タイトル検索

このスレッドが人気です(実況系)
新婚さんいらっしゃい Part.2 (265)テレ朝実況
NHKのど自慢〜青森県青森市で枠枠枠枠枠枠 その6 (827)NHK実況
噂の!東京マガジン ★1 (795)TBS実況
アキコにおまかせ!★6 (577)TBS実況
ニノさん おじさん達が若者文化にトライ! (445)NTV実況
ウチくる!? → さまぁ〜ずの神ギ問 (855)フジ実況
ビートたけしのTVタックル★2 (431)テレ朝実況
スクール革命! ☆2 (541)NTV実況
このスレッドが人気です(ニュース系)
【文化】スクエニが販売する公式「ドラクエ花札」に、以前花札を販売した同人作家が「一切声掛けもなかった」とブチ切れ★4 (928)ニュー速+
【NMB48】須藤凜々花 「大金使った人は自己責任」「見返りが無いのに人の夢に投資する、それが愛です」★5 (1001)音楽・芸能ニュース
【この、ハゲーーーっ!】自民党 豊田真由子衆議院議員が離党届を提出 ★77 (1001)ニュー速+
【文化】スクエニが販売する公式「ドラクエ花札」に、以前花札を販売した同人作家が「一切声掛けもなかった」とブチ切れ★3 (1001)ニュー速+
【NMB48】須藤凜々花 「大金使った人は自己責任」「見返りが無いのに人の夢に投資する、それが愛です」★4 (1001)音楽・芸能ニュース
安倍首相 「加計学園の獣医学部の新設を検討と格上げしたのは鳩山政権。にもかかわらず政権批判に利用できるとみると手のひらを返す」 (593)ニュー速+
【都議選】民進・蓮舫代表「政治託してほしい」13ヵ所遊説 (482)ニュー速+
【国家戦略特区】安倍首相「獣医学部新設、全国展開を目指す」★24 (1001)ニュー速+
プログラム板の人気スレ
Excel VBA 質問スレ Part48 (996)
ふらっと C#,C♯,C#(初心者用) Part129 (384)
くだすれPython(超初心者用) その34 (553)
Xamarin Part4 (957)
【統計分析】機械学習・データマイニング15 (941)
C言語なら俺に聞け 140 (591)
Java入門・初心者質問スレ Part.3 (938)
オブジェクト指向って自然な文法だな 3 (921)
Visual Studio 2017 Part2 (749)
Pythonのお勉強 Part53 (393)
スレ立てるまでもない質問はここで 148匹目 (315)
ねねっちと一緒にプログラムを勉強するスレ第2話 (896)
Swift part10 (969)
Git 15 (911)
Ruby 初心者スレッド Part 60 (415)
JavaScript の質問用スレッド vol.123 (551)
プログラミング言語 Rust 3 (223)
C++相談室 part130 (545)
次世代言語議論スレ[Go Rust Scala Haskell]第5世代 (72)
推薦図書/必読書のためのスレッド 81 (905)
C#, C♯, C#相談室 Part94 (377)
Visual Studio 2015 Part8 (768)
☆★Java質問・相談スレッド180★★ (288)
ふらっと C#,C♯,C#(初心者用) Part127 (408)
Androidプログラミング質問スレ revision53 (470)
関数型プログラミング言語Haskell Part30 (703)
MacでもLinuxでも使えるVisual Studio Code Part2 (146)
テストしにくいコードをテストする方法 その2 (588)
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 (744)
C# vs Java どっちが好き? その3 (359)
このサイトについて
このサイトは2ちゃんねるからデータを取得し、表示するサービスです。
画像のインライン表示機能について
画像のURLの後ろにある[画像をインライン表示]をクリックすると、URLの下に表示します。
表示される画像は横幅100pxに縮小されていて、クリックすると原寸で表示します。
このサイトの特徴
1)スレッド内検索ができます
2)レス(「>>1」など)のポップアップができます
3)不適切な言葉を含む投稿を表示しません
4)ページ内で画像を直接表示できます
5)2ch他スレッドへのリンクはタイトル・板名つきでリンクします
6)すっきりとしたデザインで表示します
7)最新スレや前スレをチェック・一覧表示します
8)NGワード機能の搭載でイヤな言葉が目に入りません
9)荒らしを自動チェックします
10)スレッド内・同一IDの書き込みだけ表示できます
11)レスの返事をレスされた発言の下に表示する「まとめビュー」が利用できます
12)シリーズ化したスレッドの一覧を表示します
13)最新のスレッドがある場合はお知らせします
削除について
こちらをご覧ください
機能要望について
現在機能要望受付中です。
問い合わせについて
こちらのページからどうぞ
広告


首都圏の方、ソフトバンク光オススメですよ


このサイトは2ch.scからデータを取得・表示しています。削除などについてはこちらをご覧ください。 アクセスモード:差分取得 - 新着書き込みなし(304)