Win32API質問箱 Build123at TECH
Win32API質問箱 Build123 - 暇つぶし2ch2:デフォルトの名無しさん
16/10/08 12:35:25.10 RMZHGp4O.net
>>1 乙乙

3:デフォルトの名無しさん
16/10/08 12:43:30.04 0jaJMPXG.net
関連スレ
【C++】 DirectX初心者質問スレ Part40
スレリンク(tech板)
Visual Studio 2015 Part7
スレリンク(tech板)

4:デフォルトの名無しさん
16/10/08 12:44:15.44 0jaJMPXG.net
つづき
MFC vs .NET
スレリンク(tech板)
【最強CUI】PowerShell -Part 1
スレリンク(tech板)

5:デフォルトの名無しさん
16/10/08 12:45:29.36 0jaJMPXG.net
番外編
MacでもLinuxでも使えるVisual Studio Code
スレリンク(tech板)
D言語 Part34
スレリンク(tech板)

6:デフォルトの名無しさん
16/10/08 12:48:44.68 SDbMDtMb.net
MFCはオワコン
MFC相談室 mfc23d.dll
スレリンク(tech板)

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

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

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

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

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

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

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

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

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

16:デフォルトの名無しさん
16/10/09 14:41:37.01 zS2VLXB8.net
Windows 10 UWPアプリ開発
スレリンク(tech板)

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

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

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

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

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

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

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

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

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

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

27:デフォルトの名無しさん
16/10/23 01:08:31.63 qtfTOnQW.net
OS標準のエンコーダちゅーたらこのへんのくらいしかねえぞ
URLリンク(msdn.microsoft.com)

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

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

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

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

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

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

34:デフォルトの名無しさん
16/10/31 14:24:45.40 oRn+7MiJ.net
貼り忘れ
スレリンク(tech板)

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

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

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

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

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

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

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

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

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

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

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

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

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

48:デフォルトの名無しさん
16/11/05 12:50:18.04 0pOl8O7N.net
>>47
_tfopen_sの実態は
fopen_s, _wfopen_sなんだがw
fopen 9,180,000件
適当こいてんじゃねーよw

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

50:デフォルトの名無しさん
16/11/05 12:59:37.00 2n9hgzl5.net
>>48
プログラミングしたことある?
fopenはwin以外にも使われてるからヒット数多いに決まってるよwww
CreateFileの実態がCreateFileAWってのと同じ
winプログラミングはTでいくのが普通だからAW(fopen_s, _wfopen_s)なんてめったに扱わないし
特にファイルオープンに関しちゃ、A(fopen_s)をわざわざ選ぶ理由なんて皆無でしょ

51:デフォルトの名無しさん
16/11/05 13:02:14.41 qKcyypJI.net
>>50
>winプログラミングはTでいくのが普通だから
そんなことはない。

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

53:デフォルトの名無しさん
16/11/05 13:19:32.14 0pOl8O7N.net
>>50
>>47でヒット件数に言及しておいてそれかよw
プログラミングした事ある?
そのまま返すわ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

85:デフォルトの名無しさん
16/11/06 15:40:05.04 5/z3Ppl4.net
>>84
おまえは馬鹿?
Linuxなんてこのスレとなんの関係があるんだ?
プログラマならLinuxとWin32APIの関係性くらい勉強しておこうぜ。

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

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

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

89:デフォルトの名無しさん
16/11/06 15:59:46.37 xHDOqiQx.net
 
URLリンク(wiki.winehq.org)

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

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

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

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

94:デフォルトの名無しさん
16/11/06 17:59:51.67 7DBohWvr.net
>>88
わからないんなら、わかりませんごめんなさいだろ?
なんで突然単発でわいてくるんだよ。
>>91
LindowsのどこにWin32APIがあるんだよ。
boostもだ。

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

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

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

98:デフォルトの名無しさん
16/11/06 21:36:12.60 hZSM5tbK.net
初心者です。
中断ボタンを出そうと考えています。
スレッドから、CreateDialogで中断の画面を出すとダイアログが一瞬で
消えてしまいます。
ご存じの方いませんか?
ちなみに、DialogBoxでは処理が滞ってしまいました。

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

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

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

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

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

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

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

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

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

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

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

110:デフォルトの名無しさん
16/11/07 23:24:31.73 geFZXkbd.net
WindowsServerの共有フォルダに対して
一台のPCで複数のセッションを
張りたいのですが
そういうことは可能でしょうか?
セッション枯渇をシュミレーション
したいのですが、数十台の
クライアントを用意するのが厳しいので、
よろしくお願いします

111:デフォルトの名無しさん
16/11/07 23:35:14.98 xNTfrSvb.net
98です。
残念ながら本当にわかっていなくて、
なにがひどいのかもわかりません。
一瞬で終わっているのは事実です。
IsDialogMessageは使っています。
原因を調べています。

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

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

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

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

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

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

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

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

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

121:98
16/11/08 06:00:23.87 EP2Ba4mn.net
>>112
ありがとうございます。
試してみます。

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


123:デフォルトの名無しさん
16/11/11 12:10:47.06 9ZvufmQn.net
IDないときにID導入で言い争いなくなってたのに
久しぶりにここ来たらIDありでも構わず言い争いしててワロタ
ついでに次スレはワッチョイでもつけよう

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

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

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

127:デフォルトの名無しさん
16/11/11 13:18:14.05 FF2/z6GJ.net
>>123みたいな奴が色んなスレで終盤になって現れる
その後不自然にワッチョイの話題で加速
付けてもいいけど伸びた方を使う

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

146:デフォルトの名無しさん
16/11/13 04:10:41.48 +F2H1InO.net
>>141
DPIスケーリングならここ見ていけば大体書いてある
URLリンク(msdn.microsoft.com)(v=vs.85).aspx
この辺のAPI使う
URLリンク(msdn.microsoft.com)
真面目に対応しようとするとけっこう面倒

147:デフォルトの名無しさん
16/11/13 14:25:24.31 Wy5L1qQW.net
EnableMenuItem
URLリンク(msdn.microsoft.com)
>MF_DISABLED メニュー項目を無効化します。淡色表示にはしませんが、そのメニュー項目は使用不可能であり、選択できません。
>MF_GRAYED メニュー項目を淡色表示にします。そのメニュー項目は使用不可能であり、選択できません。
となっており、MF_DISABLEDはグレー表示されないように書かれていますが、
Win7で使ってみたところ、グレー表示され、MF_GRAYEDとまったく同じになりました。
MSDNが更新されていないだけで、MF_DISABLEDとMF_GRAYEDは同一挙動になったのでしょうか?
それとも、何か微妙に違いがあったりするのでしょうか?

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

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

150:デフォルトの名無しさん
16/11/13 22:00:12.35 Wy5L1qQW.net
TrackPopupMenu()でポップアップメニューを表示できますが、
ポップアップメニューが表示されたことを検知できるウィンドウメッセージ等はないのでしょうか?
また、ポップアップメニュー以外のところをクリックするとポップアップメニューが非表示になりますが、
これも同様に、どのように検知すればよいでしょうか?

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

152:デフォルトの名無しさん
16/11/13 23:32:34.76 +F2H1InO.net
非表示はWM_UNINITMENUPOPUP
MF_DISABLEDとMF_GRAYEDが違ったのはWindows3.1とかの時代で今は同じ

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

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

155:片山博文MZ ◆T6xkBnTXz7B0
16/11/14 17:39:51.88 L1+AAJlg.net
>>154
WM_VSCROLL

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

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

158:154
16/11/14 19:38:32.87 lPYI51le.net
>>156-157
サンクス!

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

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

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

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

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

164:デフォルトの名無しさん
16/11/18 15:45:40.16 sN4pSlll.net
WS_EX_TOOLWINDOWに関して質問です。
タイトルバーに�


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



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

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

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

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

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

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

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

173:デフォルトの名無しさん
16/11/20 16:35:07.06 HG1JDYXN.net
PCG

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

175:デフォルトの名無しさん
16/11/21 12:21:40.28 gVIfBZaZ.net
PSG

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

177:デフォルトの名無しさん
16/11/22 15:42:16.93 eab8TQx6.net
"%4s"をsprintfで作る

178:片山博文MZ ◆T6xkBnTXz7B0
16/11/22 15:44:33.07 iRpYF31I.net
"%*s"

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

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

181:デフォルトの名無しさん
16/11/22 18:37:11.83 mC9XTyoU.net
ウンコしてくる

182:デフォルトの名無しさん
16/11/27 05:47:03.44 9mn0D+RY.net
windows8.1 環境下、imm にて ImmSetCompositionString で漢字変換したい文字列を設定し、
ImmNotifyIME で CPS_CONVERT、NI_OPENCANDIDATE を投げて
変換候補リストを表示したいのですが、MS-IME 系では問題なく使えていますが、
GoogleIME では変換候補リストが表示されません。
変換したい文字列が入力された状態にはなっていますが、変換候補リストが表示されない
だけでなく、キーボードで変換キーを押しても変換自体ができません。
(GoogleIME ではキー入力でただちに予測変換一覧が表示される仕組みだからか?)
これを実現するには、imm ではなく tsf に移行するしかないのでしょうか?
imm を使わず keybd_event でキー入力をエミュレートすればある程度実現できたのですが、
(文字入力→変換キー→変換候補一覧表示)
変換候補一覧を表示するための変換キーを押す回数が、MS-IME と GoogleIME では異なる
のが困ります。
ImmGetDescription で動作を切り分けることも考えましたが、そもそも ImmGetDescription が
廃止されてしまってこの手が使えません。

183:デフォルトの名無しさん
16/11/27 16:59:16.60 CC34oqbC.net
Watashi no Namae wa Nakano desu

184:デフォルトの名無しさん
16/11/27 19:36:59.90 iFUA1Ofz.net
Watashi ni Namae wa Nakattano desu

185:デフォルトの名無しさん
16/11/28 15:21:52.39 msYXnjQ5.net
情報通信業の残業やばす
URLリンク(www.youtube.com)

186:デフォルトの名無しさん
16/11/29 12:19:49.33 ITJWJL4i.net
分かる方、教えて下さい。
プログラムの処理時間を計っているのですが、
GetThreadTimes()で取得した時間をもとに計算した処理時間(CPU時間)が
timeGetTime()で取得した時間をもとに計算した処理時間(実時間)より長くなりました。
スレッドが複数のコアを同時に使うことはないので
こういうことは起こらないはずだと思うのですが、
どういう場合に起こるのでしょうか。
なお、1/16秒くらいの精度しかないことは、認識しています。
その上でループを何度も回して十分な時間動作させた上で、
前者が後者の2倍くらいになってしまうのです。

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

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

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

190:デフォルトの名無しさん
16/11/29 14:01:14.55 W5POPsuB.net
>>187
GetThreadTimes()がtimeGetTime()の2倍なんでしょ?
ただ2倍と言っても1ミリ秒が2ミリ秒になったってのと1分が2分になったというのではかなり違う
平均して何ミリ秒が何ミリ秒になったの?
timeGetTime() チェックポイントA
スレッド作成  ポイントα
timeGetTime() チェックポイントB
いろいろ実行
timeGetTime() チェックポイントC
スレッド終了  ポイントβ
timeGetTime() チェックポイントD
GetThreadTimes()はαやβの時刻であって、timeGetTime()でA~Dのいずれかで計測しても誤差は生じる。
「スレッドが複数のコアを~」からすると計測スレッドでチェックポイントを設けているように見受けられるので
B、C間とするとαからBまでの差が含まれていないと思うけど。
ポイントαの時刻って言うのも「スレッドの作成を開始した時刻」なのか「スレッドの作成が完了した時刻」なのかでも誤差は生じる。

191:185
16/11/29 14:28:28.52 ITJWJL4i.net
>>188
・timeGetTime()とGetThreadTimes()の単位の違いは認識しています。
・GetThreadTimes()による時間の計り方ですが、
 CreationTimeとExitTimeは一切使用せず、
 KernelTimeとUserTimeだけを使用して、チェックポイント間の差を取り、
 ユーザーモード時間とカーネルモード時間を個別に出しています。
・スレッドの開始及び終了は、チェックポイント間に入っていません。
 >>189のイメージでいう所のBとCの間のいろいろ実行の部分だけを計っている感じです。
>>189
・今動かしてみたら、
 500回ほど回して平均を取った上での数字として、
 B-C間の測定結果が、
 timeGetTime()の場合で9msec
 カーネルモード時間が429usec
 ユーザモード時間が14037usec
 になりました。
 2倍までいってませんが、2倍くらいになることもあります。
・スレッド生成及び終了の処理部分は計っていません。

192:デフォルトの名無しさん
16/11/29 15:45:24.23 1SK7brxW.net
GetThreadTimesが必ずしも正確な時間を返さない可能性もある
スレッドの切り替えは可能な限り超早業で行う必要があるので
細かな正確な時間など、二の次かもしれない
もっと長い時間のかかる処理(10秒とか)を走らせてみて
実時間とスレッド時間を比較してみては?
もしそれで上手くいくのなら、スレッド時間の精度の問題という
可能性が濃厚になる

193:185
16/11/29 16:21:45.88 ITJWJL4i.net
>>191
volatile変数をひたすらインクリメントするコードを書いて、
試してみました。
 timeGetTime()で計った時間:10560msec
 カーネルモード時間:280801usec
 ユーザモード時間:10296066usec
4個のコアを食いつぶさせるために5個同時に動かすと、
 timeGetTime()で計った時間:12sec~18sec
 カーネルモード時間:343msec~608msec
 ユーザモード時間:11902msec~12729msec
1プロセスから2スレッド起動するのもやってみましたが、
 timeGetTime()で計った時間:11869msec
 スレッド1
  カーネルモード時間:312msec
  ユーザモード時間:11403msec
 スレッド2
  カーネルモード時間:390msec
  ユーザモード時間:11528msec
 プロセス
  カーネルモード時間:1092msec
  ユーザモード時間:22776msec
ほぼ期待通り(本来あるべき)の結果となりました。

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


195:「5ミリ秒以上になる」は無視できない誤差だね



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

197:デフォルトの名無しさん
16/11/29 18:02:52.57 kNMZE4WL.net
>>194
> 誤差が毎回毎回プラスあるいはマイナスに偏って出るとは考えにくいので
誤差が均等にバラつくなんていう保証はないだろ

198:デフォルトの名無しさん
16/11/29 18:14:13.77 NaRikWXT.net
時間取得のオーバーヘッドじゃないか?
>>195
誤差の定義てか確率論の考え方を真っ向から否定してるなww

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

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

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

202:185
16/11/29 20:53:31.95 ITJWJL4i.net
新たな発見がありました。
スレッドのCPU時間が実時間よりだいぶ長くなるコードの時間測定ですが、
該当コードを2回実行するコードと3回実行するコードも計ってみました。
(いずれも500回平均です。)
1回
timeGetTime()による時間:7msec
カーネルモード時間:1060usec
ユーザモード時間:13540usec
2回
timeGetTime()による時間:14msec
カーネルモード時間:2246usec
ユーザモード時間:13291usec
3回
timeGetTime()による時間:21msec
カーネルモード時間:2527usec
ユーザモード時間:19468usec
このデータから、
timeGetTime()はかなり正確であり、
GetThreadTimes()が真値より随分大きな値を返していることが強く疑われます。
クロックの誤差は、通常は、クロック更新粒度に起因する誤差であり、
それは一様な分布であるため、平均処理で抑えられます。
しかし、明らかにプラス方向の誤差が生じており、
クロック精度とは別の何らかの原因があるはずなのですが、
現在、原因の特定に至っていません。

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

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

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

206:デフォルトの名無しさん
16/11/30 02:17:24.90 WhaKofQb.net
馬鹿発見

207:デフォルトの名無しさん
16/11/30 03:54:14.51 tfyAgmME.net
おいおい
話逸れすぎていて草

208:185
16/11/30 16:27:00.78 NmhabroG.net
>>200の2回実行するケースについて
1回目と2回目に分けて測定しました。
すなわち、
 timeGetTime(); GetThreadTimes();
 時間測定対象コード A
 timeGetTime(); GetThreadTimes();
 時間測定対象コード B
 timeGetTime(); GetThreadTimes();
とし、500回の平均で計測しました。
AとBは全く同じコードです。
下記結果となりました。

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

timeGetTime()による時間:7msec
カーネルモード時間:93usec
ユーザモード時間:904usec
スレッドCPU時間において、
AがBより圧倒的に長くなりました。
なぜこのようなことが起こるのか分かりません。
どのような可能性があるでしょうか。
なお、>>200で触れましたが、
timeGetTime()は比較的正確です。

209:デフォルトの名無しさん
16/11/30 18:01:03.98 3E8a/W4X.net
まあ当然の結果だな

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

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

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

213:185
16/11/30 18:15:54.33 NmhabroG.net
>>210
そうですか。教えてくれないなら結構です。

214:185
16/11/30 19:24:20.97 NmhabroG.net
>>200に示したように、1回だけ実行すると、
実時間7msec、スレッドCPU時間14msecという不整合が起きます。
ところが10回実行して計ると、
実時間78msec、スレッドCPU時間80msecとなります。
これでも不整合はあるものの、
実時間≒スレッドCPU時間であることから、
1回の場合でも実時間≒スレッドCPU時間であることが想定される。
また実時間の方がより信頼できることが分かっている。
したがって、1回実行時のスレッドCPU時間は7.8msec程度であろう。
このようなスレッドCPU時間の見積もり方で妥当でしょうか。

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

216:デフォルトの名無しさん
16/11/30 20:49:57.04 o1dhiyLy.net
.
.
■■人間性に批判殺到 あの悪質パクツイ垢 @copy__writing の管理人は東京都三鷹市の莉里子■■
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)

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


@riricatputi (新アカ)  URLリンク(imgur.com)

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

217:185
16/11/30 22:05:18.43 b9TNuS14.net
>>212の方法でスレッドCPU時間を見積もって報告し、帰宅しました。
ID変わります。
>>213
クロック更新粒度に基づく精度のことは認識しています(>>185>>187)。
500回の平均を取ることでその問題を回避し、
その上で>>200>>206の結果になります。
>>206のデータは、
1回目で実時間を大きく上回るCPU時間が記録されており、
2回目で殆どCPU時間が経過していないことを表しています。
GetThreadTimes()で取得したクロックは、どうしてこのようになってしまうのか。
それが分からないんです。
どういう場合にこうなり得るのか、御存


218:知の方は教えて下さい。



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

220:185
16/11/30 23:52:18.25 b9TNuS14.net
>>216
ですと、実時間を超えるCPU時間になり得ると?
プロセスCPU時間ではなくスレッドCPU時間で。
同じ処理なのに2回目が1回目の6%のCPU時間で妥当だと?
メモリアクセスのキャッシュヒット率に違いがあるとか
そういうことであれば分かります。
でも、CPU時間ですよ。
CPU時間で圧倒的に2回目が有利でしょうか?
だとしても、
実時間の2倍近いスレッドCPU時間って何なのでしょうか?
不思議だらけで、困惑しております。

221:デフォルトの名無しさん
16/11/30 23:54:22.80 R/TXkRDp.net
>>217
先ずその測定方法では誤差が偏り問題を回避できなかったという事実を認めろ
500回繰り替えして全体の時間を500で割るなら誤差を縮小出来るが
一回分の時間を積み上げたところで誤差も同じように積み上がったということだろ
一回分の時間を積算して精度の問題を解消するには測定開始時刻が
tick周期に対して完全に自由でなければならないのでは?
どんな測定方法をしたのか分からないけどプログラムの起動やスレッド生成や
スケジューリングのスイッチなどがtickと相関関係にあれば破綻する方法だったんだろ

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

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

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

225:デフォルトの名無しさん
16/12/01 00:54:41.76 O5qZU2qd.net
クロックカウンタ使えよ

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

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

228:185
16/12/01 11:21:31.25 SFr2s2fw.net
>>218
第一段落はやり方が悪いというご批判だと思いますが、
ティックが粗いことによる誤差は平均で軽減しました。
その上で誤差が起こっています。
ティックが粗いこと以外の理由で誤差が起こっています。
その理由を知りたく、知恵を拝借したいのです。
間違っていないと思います。
第二段落第一文は、おっしゃる通りです。
第二段落第二文は、思いつきのご発言でしょうか、
それとも知識や経験に基づく助言でしょうか。
後者であれば、もうちょっと詳しくお願いします。
>>206のようなコードで起こりうるでしょうか。

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

230:デフォルトの名無しさん
16/12/01 11:55:52.25 lOA8D/0g.net
最適化切ったら

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

232:デフォルトの名無しさん
16/12/01 12:14:25.23 i7gsdi/t.net
>>225
> 第二段落第一文は、おっしゃる通りです。
> 第二段落第二文は、思いつきのご発言でしょうか、
思いつきと言われればその通りだが、確からしい事(あなたの測定結果)
から推測された事(第二段落第一文の条件が満たされていない)です

>>226
> func()がvolatile intをひたすらインクリメントするコードの場合は、期待通りの結果>>192がでます。しかし、func()を目的のコード(他者製ライブラリの関数)にすると、不自然な結果>>206になります。
それはfunc()の一回の時間が桁違いだから誤差に埋もれるか埋もれないかが変わっただけだろ

233:185
16/12/01 13:04:50.94 SFr2s2fw.net
>>227
コンパイラの最適化のことですよね。
コンパイラの最適化を無効にして、やってみました。
A
timeGetTime()による時間:7msec
カーネルモード時間:499usec
ユーザモード時間:14882usec
B
timeGetTime()による時間:7msec
カーネルモード時間:31usec
ユーザモード時間:124usec
同じ傾向になりました。

234:デフォルトの名無しさん
16/12/01 13:30:33.53 O5qZU2qd.net
>>226
> >>216>>224
> AとBで何がそんなに変わるでしょうか。
スタックは初期化されてアプリに引き渡すだろ
スタックの中で使われずに解放されたページは論理アドレスでは解放状態でも
OSがリザーブしておけば新たなスレッド生成で使い回しできるじゃないかな
他にもスタック以外でページの最初に書き込み時点でページをコピーするとかあるよね

235:デフォルトの名無しさん
16/12/01 13:34:44.58 RgG4Eqmg.net
>>226
いろいろ のところでライブラリの初期化とかやってない?
1回目はデータ構築処理があるのでCPUタイムを食うが、2回目は不要なのでCPUタイムを食わないとか。
で、DBとかサーバーへの問い合わせがあるので、7msくらいはかかってしまうなんてことは無いのか。
あるいは、2回目はfuncの中で別スレッドを起動して計算しているので、元スレッドのCPUタイムは食わないとか。
A B だけでなく A B C D と4回くらいやっても同じ傾向か、平均でなくすべてのタイムを見て
極端にばらつく値がないか調べるとかも必要では?

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

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

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

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

240:185
16/12/02 10:43:58.72 H1x5ETqP.net
報告書は突っ返されたので、まだまだ続きそうです。
まず、大大大前提を確認したいのですが、
GetThreadTimes()で取得するCPU時間は
スレッドがCPUをとっている時間で、
一つのスレッドが同時に複数のコアを占有することはないので、
(精度云々ではなく定義上は)スレッドのCPU時間は実時間以下である(以下のペースで進む)。
これは、大前提としてあってますよね?

241:デフォルトの名無しさん
16/12/02 10:47:04.34 rEQGNTwO.net
なんだ学校の課題だったのか

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

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

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

245:185
16/12/02 11:58:27.27 H1x5ETqP.net
10回やってみました。
つまり、>>226のコードでAとBだけでなく、AからJまでやってみました。
A
timeGetTime()による時間:7msec
カーネルモード時間:1092usec
ユーザモード時間:14133usec
B
timeGetTime()による時間:7msec
カーネルモード時間:249usec
ユーザモード時間:343usec
C
timeGetTime()による時間:7msec
カーネルモード時間:936usec
ユーザモード時間:9141usec
D
timeGetTime()による時間:7msec
カーネルモード時間:1372usec
ユーザモード時間:4180usec
E
timeGetTime()による時間:7msec
カーネルモード時間:561usec
ユーザモード時間:6583usec
F
timeGetTime()による時間:7msec
カーネルモード時間:717usec
ユーザモード時間:7737usec
G
timeGetTime()による時間:7msec
カーネルモード時間:468usec
ユーザモード時間:4773usec

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

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

248:185
16/12/02 13:02:57.14 H1x5ETqP.net
本件、私としては以下の結論に至りました。
○timeGetTime()は信頼できる。
○GetThreadTime()は信用できない
 (ティック間切り上げ的な傾向あり。理由不明。)。
○timeGetTime()を基準に>>212のような方法をとるほかない。
もう一度GetThreadTime()はどうしても信用ならず、
他に有用な代替手段もないため、
>>212の方法が限界である旨を報告することにします。
何人かの真剣に助言して下さった方々、
本当にありがとうございました。

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

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

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

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

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

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

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

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

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

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

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

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

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

262:デフォルトの名無しさん
16/12/03 20:35:28.76 xp0AwakX.net
GO

263:デフォルトの名無しさん
16/12/03 20:36:25.77 xp0AwakX.net
the old new thing

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

265:デフォルトの名無しさん
16/12/04 11:37:47.55 NE4G8kum.net
com1~com256まで

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

267:デフォルトの名無しさん
16/12/04 12:22:02.41 SxgHpTya.net
select欲しい

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

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

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

271:片山博文MZ ◆T6xkBnTXz7B0
16/12/09 01:07:15.74 IirsZJ4E.net
訂正。
× AltはWM_NCKEYDOWNで確認できる。
○ AltはWM_SYSKEYDOWNで確認できる。

272:デフォルトの名無しさん
16/12/12 20:09:14.26 UWkfYPy/.net
プログラム実行中のログテキストをエディットコントロールに出力しようと思ったのですが、
32KB制限があり実用できないことが分かりました。
リッチエディットではそのような制限はないようなので、
特に問題なければこれでいこうかと考えているのですが、
他に良い方法があればご教示ください。

273:デフォルトの名無しさん
16/12/12 20:14:54.27 cpVlzpwx.net
>>269
つ AllocConsole

274:デフォルトの名無しさん
16/12/12 20:17:01.65 dREO/TsY.net
EM_SETLIMITTEXT

275:269
16/12/12 20:41:35.46 UWkfYPy/.net
>>270
ありがとうございます。
今回は検索機能とかも付けたいので、エディット系コントロールを利用することにします。
>>271
ありがとうございます。
これで通常のエディットコントロールで32KB以上を扱えます。
助かりました!

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

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

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

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

280:デフォルトの名無しさん
16/12/19 23:46:04.62 qsdLnaaR.net
>>276
ありがとう。
拡張スタイル使ってもやっぱり無理だ。
思い通りに動かない。
数年前からずっと謎なんだよなこれ。
動作上問題が少ないから我慢してたんだけども。
それっぽいウインドウは出るものの、paint.netのように全ウインドウがアクティブ状態にならない。
【参考画像】URLリンク(news.softpedia.com)
paint.netを実際に使ってるとよく分かるんだが、
参考画像のようにメインのウインドウもツール用のウインドウも常にアクティブな状態が維持される。
しかし、拡張スタイルでWS_EX_TOOLWINDOWを指定してもアクティブなウインドウは常に1つ。
メインのウインドウをクリックすればツール用ウインドウは非アクティブになり、
ツール用ウインドウをクリックすればメインウインドウは非アクティブになる。
非常に気持ちが悪い。
確かにWS_EX_TOOLWINDOWを利用すればメインウインドウより常に前面になり、
タスクバーにも表示されず、非常にpaint.netのツールウインドウと似たような挙動になるが、
このアクティブ/非アクティブに関しては挙動が全く違う。
ちなみにアクティブ/非アクティブの判断はタイトルバーの色で判断している。
さらに参考画像のツールウインドウのような右上の正方形の閉じるボタンの表示のさせかたも分からない。
・・・と思ったら出てきたわ。
URLリンク(www.catch22.net)
やっと出てきた。
WS_EX_TOOLWINDOWで検索してもノイズが多くてなかなか出てこなかった。
(ノイズ = MSDNのウインドウスタイルの一覧をコピペしただけのゴミサイト)
ノイズゴミサイトマジで迷惑。
嫌がらせでしかない。

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

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

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

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

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

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

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

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

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

290:デフォルトの名無しさん
16/12/20 17:44:58.45 F0IdvAwo.net
今はちがうだろ

291:デフォルトの名無しさん
16/12/20 18:45:47.25 lAXr92yw.net
新手のアフィか

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

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

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

295:デフォルトの名無しさん
16/12/21 01:09:18.76 GvkBvmPc.net
int Data = 123456;;
DWORD writeLen;
WriteFile(hFile,&Data,sizeof(Data),&writeLen,NULL);
こういうことだろ?

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

297:デフォルトの名無しさん
16/12/21 21:06:02.77 HCdO29Rc.net
>>292
>>293
ありがとうございます。引数としてアドレスを渡さないといけないのですね。試してみます!

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

299:デフォルトの名無しさん
16/12/22 12:50:31.88 y+mdv7YD.net
-jp もお忘れなく

300:デフォルトの名無しさん
16/12/22 13:04:48.47 hYDEOt1H.net
どうしてこういう訳そのままずっと放置してんだろうな
> 関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、 関数を使います。
> If the function fails, the return value is zero. To get extended error information, call GetLastError.

301:デフォルトの名無しさん
16/12/22 18:24:16.26 zHNnrJEM.net
>>296
なんで付けるの?
誤訳トラップにハマりたいの?
俺は誤訳トラップどころか英語版と日本語版で引数違うトラップにハマったことがあるけども。
日本語版を穴が空くほど見て確認したけど何日経ってもコンパイルが通らず、
何の気なしに英語版開いたら引数の数が違って、
英語版見ながら修正したら一発でコンパイル通ったわ。

302:デフォルトの名無しさん
16/12/22 18:39:46.34 hYDEOt1H.net
>>298
+jp じゃなくて -jp

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

304:デフォルトの名無しさん
16/12/22 18:55:29.30 zHNnrJEM.net
>>299
ごめんなさいwww
>>300
その当時はVector辺りで見つけてきた適当なテキストエディタとBCCだったよ。

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

306:デフォルトの名無しさん
16/12/22 22:46:25.55 +nnZ9oR0.net
レポートタイプのリストビューをクリックしたら、その行のデータに対応する内容を
別の窓に詳細表示するというような動作をしているのですが、クリック時は NM_CLICK
を処理してクリックされた行を nmLv->iItem メンバを参照して知ることができます。
オペレーションとしてはマウスだけではなくキーボード操作でリストビューの選択行を
次々と移動させることも多いので、LVN_KEYDOWN も処理して上記と同様の動作を
させたいのですが、LVN_KEYDOWN 処理時は nmLv->iItem の中身が不定です。
LVN_KEYDOWN 処理時に ListView_GetNextItem で LVNI_ALL | LVNI_SELECTED を
指定して選択行を調べると、キーボードを押して選択行を変更する前の選択行が
得られてしまいます。
この辺は、一旦メッセージループを回すなどしてから現在の選択行を得ること自体は
可能と言�


307:ヲば可能なのですが、ここまでしないとダメなのかという疑問があります。 LVN_KEYDOWN 処理時、もしくはキーボード操作で選択行を変更した際、簡潔に 現在の選択行を得る方法はありますでしょうか?



308:デフォルトの名無しさん
16/12/22 23:02:45.31 hYDEOt1H.net
LVN_ITEMCHANGED

309:デフォルトの名無しさん
16/12/23 14:54:42.80 qGVMhgWM.net
質問です。
win10 x64
windows がキャッシュしてる dns の名前解決結果の一部を書き換えることは可能ですか?
または、名前解決の最中に結果をいじるようなフックは出来ませんか?
例えば、example.com の ttl を長めに書き換える、とかです。
よろしくお願いします。

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

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

312:デフォルトの名無しさん
16/12/23 15:36:22.73 5J5pLbD7.net
以下の処理を実装したく、助言をお願いします。
ダブルクリックや右クリ開くなどで、ファイルを開く際に
関連付けの有無に関わらず、そのファイルのパスを取得したい。
ShellProcあたりのフックかと考えましたが、パスをどうやって
調べるのか分かりません。
どうぞ宜しくお願いします。

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

314:デフォルトの名無しさん
16/12/23 15:59:09.98 5tPECy1o.net
>>305
proxy arp

315:305
16/12/23 16:14:48.81 sqLqmtwC.net
>>305, 306
レスありがとうございます。
DLL注入やアタッチのよるDNS改ざんは確かにできそうですね。
検討してみます。
ちなみに、プロセスは基本的には chrome です。

>>307
できればフィルタードライバの設計を、おおざっぱでもいいので教えて頂けませんか?
(ドライバのコーディングは、ほぼ経験が無く、ネットワークそのものの知識はあるものの、windows内部での扱いやAPIはまったく知識が無いです)
ちなみに、VPNによる仮想アダプタと、複数のネットワークカード(アダプタ)があるのですが、それでも対応可能でしょうか?
(直感的には、特定アダプタに対するフィルターだと、アダプタの優先度に左右されそう。アダプタ依存にはしたくないです)

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

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

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

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

320:デフォルトの名無しさん
16/12/25 22:10:16.80 n7UGfNqJ.net
iniファイルから文字列を読み込むGetPrivateProfileString()なんですが、
セミコロン以下のコメント文まで読み込んでしまいます。
コメント文は読み込まないようにできないでしょうか?
それとも自分でコメント文を削除するしかないでしょうか?

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

322:316
16/12/26 01:06:56.36 CvSBnmkv.net
>>317
なるほど!
ありがとうございました!

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

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

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

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

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

328:デフォルトの名無しさん
16/12/30 13:34:08.58 qor2kyvR.net
winsockの関数フックしたいんですけどインポートアドレステーブル上の
ws2_32.dllの関数だけ取得できません。どうしたら?
URLリンク(up2.cache.kouploader.jp)
このコードは
自身のロードしたDLLの関数名を列挙するだけのシンプルなものですが、
やはりwinsockの関数名だけ取得できないです。
ImageDirectoryEntryToData()の第3引数を
IMAGE_DIRECTORY_ENTRY_IATや
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORTに変えても取得できませんでした(そもそも関数がnull返してくる

329:デフォルトの名無しさん
16/12/30 13:46:15.25 ymKNG2iV.net
WSAStartupは成功してんの?

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

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

332:324
16/12/30 14:41:23.26 qor2kyvR.net
>>325
成功しているようです
>>326
関数名が名無しということですか?
>>327
どのタイミングでですか?

if(IMAGE_SNAP_BY_ORDINAL(pThunkData->u1.Ordinal))
winsockの関数だけこのif文が真になります。
URLリンク(i.imgur.com)
デバッガでIAT覗くと、正しい関数名ではないが、2つの関数らしきもの?が表示されていて
これがWSAStartup()/WSACleanup()に対応するものだと思われます
他のDLLでは関数名が正しく表示されます。
これが、関数名が名無しということならどう対処するのかご教示頂きたいです。
海外のフォーラムの似たような質問では
ImageDirectoryEntryToData()の第3引数を
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORTに変えて成功したと書かれていたんですけどね、成功しませんでした。

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

334:デフォルトの名無しさん
16/12/30 15:39:26.81 Q3tvxZdg.net
マクロというオチ

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

336:デフォルトの名無しさん
16/12/30 19:08:50.21 qor2kyvR.net
>>331
ヒントありがとうございました。解決しました
PIMAGE_THUNK_DATA pThunkData = (PIMAGE_THUNK_DATA)((PBYTE)hmodCaller + pImportDesc->OriginalFirstThunk);
PIMAGE_THUNK_DATA pRealThunk = (PIMAGE_THUNK_DATA)((PBYTE)hmodCaller + pImportDesc->FirstThunk);
while(pThunkData->u1.Function){
FARPROC pfnImportedFunc = (FARPROC)(pRealThunk->u1.Function);
・・・
上記のIAT上の関数アドレスと、
LoadLibrary()&GetProcAddress()で取得したwinsock関数のアドレス
を比較し一致したものを書き換えたら成功しました。
URLリンク(blog.techlab-xe.net)
これそもそも
文字列比較より
アドレス比較を用いる方法のほうが正確なやりかたですよね?

337:デフォルトの名無しさん
17/01/21 17:55:42.90 0py1wTB0.net
CreateProcess関数の質問です。この関数で開いた外部プロセスを、操作しようとしたらハンドルされていない例外エラー発生したことある人いますか?
エラーメッセの
オブジェクト参照がオブジェクトインスタンスに設定されていませんの意味もいまいちわからずです。悩んでいます。
どなたかヒントをくれたら幸いですm(__)m

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

339:デフォルトの名無しさん
17/01/21 19:16:05.15 RjpRPNfA.net
前後のソース載せてみて

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

341:デフォルトの名無しさん
17/01/21 23:19:24.15 0py1wTB0.net
>>335
>>336
HWND hwnd;
STARTUPINFO si;
BOOL boRet = 0;
DWORD dwRet = 0;
ZeroMemory(&si, sizeof(si));
ZeroMemory(&piMplab, sizeof(piMplab));
si.cb=sizeof(si);
GetStartupInfo(&si);
boRet = CreateProcess(_T(""C:\Program Files (x86)\Microchip\PICkit 3 v3\"Pickit3.exe"),NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&piMplab);
CloseHandle(piMplab.hThread);
CloseHandle(piMplab.hProcess);
すみませんこんな感じですm(__)m↑

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

343:デフォルトの名無しさん
17/01/21 23:31:13.18 /qDbjX4N.net
アクセス権か

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

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

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

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

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

349:デフォルトの名無しさん
17/01/25 06:02:27.98 s4b0iZxC.net
プロセスを起動して、ユーザーの入力に応答しているか確認するにはどうしたらいいでしょうか。
Process::Responding プロパティ以外の方法でお願いします。
うちの開発環境にはないので。
プロセスのウインドウを取得して、メッセージを送るくらいしか思いつかないのですが、ウィンドウがない可能性もあるし
もっとスマートな方法があればいいなと。

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

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

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

353:デフォルトの名無しさん
17/01/25 10:51:21.94 SLV8VPLP.net
>ウィンドウがない可能性
プロセスId見て稼働率調べるかな

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

355:デフォルトの名無しさん
17/01/25 12:52:29.97 uJriqNlz.net
WaitForInputIdle

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

357:デフォルトの名無しさん
17/02/02 12:17:03.67 Nq0thOwX.net
Shell_NotifyIconでないならこれのことかな
URLリンク(msdn.microsoft.com)(v=vs.85).aspx

358:デフォルトの名無しさん
17/02/02 13:37:19.22 386srHJg.net
>>353
情報ありがとうございます。やりたい内容と、ちょっと違います。
windows8.1/10とかだと、タスクバーが上か下にあるとき、タスクトレイの右側か左側にTrayNotifyWndに
[IME]、[タッチパネル向けのキーボード]、[通知]などが表示されていますよね?
それらの場所に、自作のアプリアイコンを作りたいのです。
スパイでみると、
通知 ハンドル 001016E キャプション 通知センター クラス TrayButton
キーボード ハンドル 0010172 キャプション タッチキーボード クラス TIPBand
IME ハンドル 0010156 キャプション 無し クラス Button
となっています。
親ハンドルからたどってクラスを見るとTrayNotifyWndとなっています。
知りたいのは、SHAppBarMessageを使ったタスクバーみたいなウインドウではありません。

359:デフォルトの名無しさん
17/02/02 13:49:49.54 386srHJg.net
googleの画像検索で googleimeとかってやると下のような画面がでますよね?
URLリンク(www.google.co.jp)
TrayNotifyWndでにて、設定メニュをいじっているような画面のようなプログラムを作りたいのです。

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

361:デフォルトの名無しさん
17/02/02 14:17:43.87 386srHJg.net
>>356
一般的な、Shell_NotifyIconでタスクトレイの登録ではないです。
タスクトレイの横に登録する手続きが知りたいのです。
mozcのソースコードをgrepしたところShell_NotifyIconは使われていないようです。
comクラスとかでTrayNotifyWndに追加するような機能があるのかなぁ。。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

380:デフォルトの名無しさん
17/02/03 14:22:20.52 3xPmzf3n.net
>>372
タスクトレイの左側にある隠れたアイコンを表示するための ^ ボタンの上に作ったボタンが表示されてる
ウインドウ表示位置だけの問題で期待してる通りだと思うよ
URLリンク(i.imgur.com)
>>373
無限ループで処理してるかもしれないから、生き死にの定義による

381:デフォルトの名無しさん
17/02/03 14:39:36.19 Q4UhsfCm.net
>>375
IsHungAppWindow

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

383:デフォルトの名無しさん
17/02/03 17:34:15.41 Q4UhsfCm.net
>>378
PostMessageは相手の処理を待たないから当然。
GetWindowRectも相手のプロセスが情報を返すわけじゃないから当然。
その方法を試すならSendMessage。
>while(1)だとウィンドウの移動もできたので
コンパイラの最適化によって(無意味な)無限ループが消されているかも。

384:デフォルトの名無しさん
17/02/03 18:01:24.26 Q4UhsfCm.net
あと参考までに
SendMessageTimeout
URLリンク(msdn.microsoft.com)

385:デフォルトの名無しさん
17/02/03 18:07:05.86 mwiWK7Ca.net
>>379
失礼、PostMessageじゃなくてSendMessageでした。
while(1)はウィンドウは動かせますがフォーム自体は固まった状態でした(マウスカーソルがくるくるになります)
IsHungAppWindowで指定間隔で数回みて連続でTRUEなら落ちてると判断できそうな感じでした
しかしwhile(1)ではなく実際にどこかのDLL関数内で落ちてる場合とかにFindWindowでハンドルは取れるのでしょうか?

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

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

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

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

390:デフォルトの名無しさん
17/02/05 11:14:06.81 bZw/U4Ow.net
使い道が想像できない

391:デフォルトの名無しさん
17/02/05 19:54:32.92 ajRW1B46.net
GetWindowRectで得た値から計算して
MoveWindowに使うとズレるんですがこれは仕様なんですか?
例えばGetWindowRectで
left=100  right=200
top=100  bottom=200
だったとして、これだと幅と高さが
101になるので
MoveWindow(hwnd,100,100,101,101,TRUE)
としたら幅と高さが1ドットずつ膨らんでしまいます

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

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

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

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

396:デフォルトの名無しさん
17/02/05 20:08:48.13 DkYFBwwC.net
>>391
英語版みたらちゃんと書いてあったよ
ていうかこの関数に限らず
Rect構造体の定義としてbottomとrightは1ピクセル外側を示すことになってる

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

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

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

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

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

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

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

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

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

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

407:デフォルトの名無しさん
17/02/07 15:19:54.85 LuCsRke8.net
後方互換性のため

408:デフォルトの名無しさん
17/02/07 22:51:17.46 m2J0GXa0.net
DeferWindowPos

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

410:デフォルトの名無しさん
17/02/17 19:08:12.47 yGnzX63H.net
OSのバージョンにより異なる
URLリンク(msdn.microsoft.com)
URLリンク(www.taosoftware.co.jp)
URLリンク(nekojiru.blog.so-net.ne.jp)

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

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


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch