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


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

Win32API質問箱 Build50



1 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 23:10:48 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-5くらい。

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

2 名前:2 mailto:sage [2007/02/17(土) 23:13:16 ]
自己解決しました。
>>1にカチンときたので教えません。
バーカ!

3 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 23:13:49 ]
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/

4 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 23:14:18 ]
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html

5 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 23:14:49 ]
- MSDN ホームページ
www.microsoft.com/japan/msdn/
- MSDN ライブラリ
msdn.microsoft.com/library/ja/
- MSDN 2 ライブラリ
msdn2.microsoft.com/ja-jp/library/
- 猫でもわかるプログラミング
www.kumei.ne.jp/c_lang/
- Google
www.google.com/
- MSDN ライブラリ 2006年6月版
www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=373930CB-A3D7-4EA5-B421-DD6818DC7C41
- Platform SDK Update
(WindowsR Server 2003 R2 Platform SDK Full Download)
www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

- Win32 API入門
wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
www7.plala.or.jp/keny01/

- Advanced Windows (書籍)
www.amazon.co.jp/exec/obidos/ASIN/4756138055

-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
www.2chsearch.info/index.php?b=tech
makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&view=table&D=tech

6 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 23:15:19 ]
MSDN日本語版は誤訳があったり、一部欠けていたりするなど不完全なため、英語版推奨。
msdn.microsoft.com/library/
msdn2.microsoft.com/en-us/library/

おまけ;Windows SDK for Windows Vista RC1の文書。
windowssdk.msdn.microsoft.com/en-us/library/

MSDN ライブラリ 2006年8月版
www.microsoft.com/downloads/details.aspx?FamilyID=6671F8DA-B0CB-41DE-AD93-798FC71D344D&displaylang=ja


windowssdk.msdn.microsoft.comは、もうmsdn2へ転送されるようになっている。

7 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 23:27:21 ]
これも追加しようよ。

Microsoft® Windows® Software Development Kit for Windows Vista™ and .NET Framework 3.0 Runtime Components
www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en

8 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 00:44:35 ]
リストボックスにアイテム挿入してるんだけど
一番左のカラムにしか文字列が挿入されないんですが。

ちゃんとiSubItemの値を変えてるのに何でだろうと2時間ぐらい悩んでてもう限界です。
何か心当たりがある事があれば教えてください。

9 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 00:50:22 ]
妹「お兄ちゃんって落ち込んだ時どうする?」
俺「んー、別に何も。寝るかな」
妹「ふーん・・」
俺「どうした?何かあったか?」
俺「ううん、ちょっとね」
俺「何だよ水くさいな、言ってみろよ」
俺「う、うんとさ・・・」
俺「おう」
俺「お兄ちゃん、この間一緒に歩いてた人、彼女?」
俺「・・・は?」
俺「前学校の近くで話してたじゃん」
俺「ああ・・・あいつか。なわけないだろ、ただのクラスメートだよ」
俺「ほんと?」
俺「嘘言ってどうすんだよ」
俺「そっか」
俺「てかそんな話はいいんだよ。落ち込んでたんじゃなかったのか?」
俺「ううん、それならいいんだ!えへへ」
俺「おかしな奴だな」
俺「ふふ♪お兄ちゃんに彼女なんてできるわけないよね、よく考えたら。」
俺「こらこら、失礼だぞ」


10 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 00:52:47 ]
>>9
ちょ、途中から自作自演w



11 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 00:55:25 ]
ここまで点プレ

12 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 01:26:12 ]
俺「お・に・い・ちゃん!」
俺「なんだ勝手に部屋に入っちゃだめだろ」
俺「えへへ…」
俺「あたし…知ってるんだよ…おにいちゃんのベットの下に…」
妹「あんた何やってるん?」




13 名前:8 mailto:sage [2007/02/18(日) 01:28:21 ]
item.mask = LVIF_TEXT;
item.pszText = TEXT("aa");
item.iItem = 0;
item.iSubItem = 0;
ListView_InsertItem(List, &item);
item.mask = LVIF_TEXT;
item.pszText = TEXT("bb");
item.iItem = 0;
item.iSubItem = 1;
ListView_InsertItem(List, &item);
item.mask = LVIF_TEXT;
item.pszText = TEXT("cc");
item.iItem = 0;
item.iSubItem = 2;
ListView_InsertItem(List, &item);
item.mask = LVIF_TEXT;
item.pszText = TEXT("dd");
item.iItem = 0;
item.iSubItem = 3;
ListView_InsertItem(List, &item);


これで何で一番最初のカラムにしか文字がはいらないんだsdlgkj;あfwぇk;うぇふぃじこあ;sdlふぁうぇ

14 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 01:32:20 ]
わっふるわっふる

15 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 01:37:10 ]
>>13
iSubItem=1 以降は ListView_SetItem()

16 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 01:46:22 ]
>>13
もしかして、LVCOLUMNってのか?

わっふるわっふる

17 名前:8 mailto:sage [2007/02/18(日) 01:54:09 ]
>>15
ちょっと試してみます。

>>16
LVCOLUMNですが何か特別な問題でもあるんでしょうか?

18 名前:8 mailto:sage [2007/02/18(日) 01:59:46 ]
できました。ありがとうございます

19 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 04:32:54 ]
仕事でもなく寝ずにSDK書いてる俺ってもうダメかな?

20 名前:19 mailto:sage [2007/02/18(日) 04:33:49 ]
もうすぐ日が昇ってくるぜ



21 名前:19 mailto:sage [2007/02/18(日) 04:36:18 ]
反応が無いからなのか何故だかわからないが目の前のディスプレイが歪んできた

22 名前:19 mailto:sage [2007/02/18(日) 04:37:08 ]
やっぱ誰もいないべな

23 名前:19 mailto:sage [2007/02/18(日) 04:40:32 ]
もう疲れたし、オ○ニーでもして寝るか

24 名前:19 mailto:sage [2007/02/18(日) 04:45:52 ]
仲間がいたぜwwwwwwww

25 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 04:55:28 ]
SDKで書いてるなら、がんがれ
SDKを書いてるなら、もっとがんがれ

26 名前:19 mailto:sage [2007/02/18(日) 04:58:24 ]
息抜きに続き考えたぜwwwwwww

俺「あっ・・・いや、学校での・・・・演劇の・・・練習をちょっと・・。」
妹「はっ?私もあんたと同じ学校だけどうちの学校に演劇部なんてないでしょ?」
俺「いやだかr」
妹「あんたさー。妄想するのは勝手だけど私をネタにするのはやめてくれる?(笑)」
妹「この・・・邪気眼が!!!!!!!!!!」
バタンッ・・・


俺「やれやれ、もう少しで俺の手が暴れだす所だったぜw」



















俺「・・・・・・アッー!!!」


27 名前:19 mailto:sage [2007/02/18(日) 05:01:30 ]
>>26
この人頭大丈夫? もう寝ろって。

28 名前:19 mailto:sage [2007/02/18(日) 05:04:53 ]
すんませんwwwwwwwww
もう寝れない時間まで起きてしまいました
今日仕事で今寝ると絶対遅刻しちゃってそりゃもう大変な事になってしまいます

29 名前:19 mailto:sage [2007/02/18(日) 05:10:44 ]
それじゃ、もう寝るです。おやすみなさい。

30 名前:19 mailto:sage [2007/02/18(日) 06:05:37 ]
おはようおまえら



31 名前:デフォルトの名無しさん [2007/02/18(日) 07:37:38 ]
Win32API始めたばかりです。
下の三つのファイルにわけてメインのウインドウの
メニュー画面で選択したら時計画面が起動するように
したいのですがどうすればよいのでしょうか?


sa-wiki.com/upload/src/up0106.txt

32 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 08:05:24 ]
>>31日本語でおk

33 名前:19 mailto:sage [2007/02/18(日) 08:30:22 ]
あ、プリキュア見なきゃ

34 名前:19 mailto:sage [2007/02/18(日) 08:33:42 ]
おお、いかんいかん忘れるところだったdd

35 名前:デフォルトの名無しさん [2007/02/18(日) 09:58:00 ]
裏切派遣って知ってる?
元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて、派遣やってるバカのことw

前の会社を裏切り、結局派遣先からも騙されてる。
そもそも信頼されてるなら直接契約するか正社員にするはずだが、派遣会社経由って舐められ杉

自分でも騙され裏切れられることは薄々わかったるから派遣問題の話が出るとウッキー!って逆ギレw


36 名前:19 mailto:sage [2007/02/18(日) 10:09:54 ]
何人いるんだよwwwwwwwwww

37 名前:デフォルトの名無しさん [2007/02/18(日) 14:13:27 ]
CTRL+ALT+DELをプログラムからPCに送る方法ありませんか?
keybd_eventやVNCがやってる方法では期待する動作になりませんでした。
単にタスクマネージャーを出したいわけではなく、割り込みを発生させたいのです。


38 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 14:16:37 ]
その質問どこかで見た

39 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 14:28:15 ]
>>38
前スレの最期の方の質問。

お  ま  え  ら  カ  チ  ン  と  来  る  な  よ  !

40 名前:31 [2007/02/18(日) 16:04:04 ]
たびたび申し訳ない。
WINXPでWIN32プログラムの質問です。
下のコードでメニュー画面からアナログ時計画面を
出した後、アナログ時計画面を閉じて再度メニュー画面から
アナログ時計画面を選択しても無反応です。
何回でも表示することができるようにしたいのですが
どなたかご教授いただけんだろうか。

sa-wiki.com/upload/src/up0107.txt






41 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 16:10:19 ]
sageろ低脳

42 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 16:18:02 ]
>>40
アナログ時計画面を閉じた時点で、アナログ時計画面が破棄されている。

メニュー選択時に作成するようにするとか、
アナログ時計画面のWM_CLOSEで、ShowWindowで隠すだけにして、DestoroyWindowしない。

43 名前:31 [2007/02/18(日) 16:50:47 ]
>>42
解決しました、どうもありがとう!!!


44 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 20:15:10 ]
>37
割り込みを発生させたい、の意味が分からん。

45 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 21:26:24 ]
システムがヒィヒィ言ってるときでも速やかに応答させたいんじゃないの

46 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 21:29:41 ]
今、彼女をヒィヒィ言わせてますが何か?

47 名前:46 mailto:sage [2007/02/18(日) 21:38:10 ]
昨日、仕事から帰ってきた姉に、オナニー見られて大爆笑された。
その後、部屋に真っ赤になって閉じこもってたら、 姉から携帯にメールがあって、
「あたしも毎日やってるんだから気にするな!ファイト!!」 って書いてあった。



48 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 21:49:12 ]
素朴な疑問なんだけどCTRL+ALT+DELとかALT+TABってシステムコールなん?

49 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 21:56:59 ]
SAS。winlogonが最優先で奪取するキーの組み合わせ。

50 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:00:12 ]
仮想空間アドレスがどの物理メモリに割り当てられているか知る術がありますか。



51 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:05:49 ]
>>47
ワッフルワッフル


52 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:06:30 ]
>>50
マルチ
pc10.2ch.net/test/read.cgi/tech/1063453024/444

53 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:16:46 ]
Win32APIのレベルでは、「知ってどうするの?」だなー。

54 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:25:44 ]
>>49
サンクス
つまりwinlogonにTerminateProcessするとunknown hard errorになる代わりに
CTRL+ALT+DELを横取りされなくなるんですね

55 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:54:36 ]
確かに横取りは出来なくなると思うが、それはOSが落ちる事を意味するのでは?
一度試してみれ。


56 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 22:58:06 ]
マジレスされちゃったので答えとくと当然青画面になるよ

57 名前:デフォルトの名無しさん [2007/02/18(日) 23:38:08 ]
BSODってドライバ以外から作り出せるのかね

58 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 00:13:44 ]

GetFontUnicodeRanges( dc , NULL )が返す値について教えて下さい

cRangesの値が4でWCRANGEの0〜3が下記のような値が得られました。

ranges[0].wcLow = 0x0000
ranges[0].cGlyphs = 0x0081
ranges[1].wcLow = 0xf8f0
ranges[1].cGlyphs = 0x0004
ranges[2].wcLow = 0xff61
ranges[2].cGlyphs = 0x003f
ranges[3].wcLow = 0xffff
ranges[3].cGlyphs = 0x0001

平仮名の'あ'(0x3042)は、得られたWCRANGEのいづれにも
含まれないのでTextOutでの表示はできないと思っていた
のですが、問題なく'あ'が表示できます。

現在選択中フォントのUNICODE文字有無は、GetFontUnicodeRanges()では
できないのでしょうか?

環境は、Windows2000+VC6+SP6です。

59 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 00:27:23 ]
自分でペイントで作ったマウスカーソルを使いたいのですが
調べてもよく方法がわかりませんでした
よろしければ教えてください

60 名前:19 mailto:sage [2007/02/19(月) 00:29:33 ]
>>59
まずはリソースエディタについて調べろ。



61 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 02:02:42 ]
>58
フォントリンクがあるからねぇ。

62 名前:567 [2007/02/19(月) 06:28:56 ]
おまいら久しぶり

63 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 09:17:51 ]
>61

そうなると任意のunicode文字が表示可能かを判断する方法は
フォントリンクまでたどらないと判別できないという事ですね?

なんか単純な方法は、ないかなぁ・・・


64 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 09:40:49 ]
DrawText で DT_CALCRECT 矩形サイズなり LastError なりで判定できないもんかな?

65 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 12:40:27 ]
>>63
要点が見えないんだが・・・
もう少し詳しく説明してくれね?

何をしたいのか、命題はいかに?

66 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 12:55:05 ]
>>65

やりたい事は、「表示しようとしているunicode文字が
現在のフォントで表示できるか判断したい」です。

表示しようとしているunicode文字が現在フォントに
グリフが無ければ代替文字(×マークとか?記号とか)にして
存在すればそのまま表示したいのです。

67 名前:デフォルトの名無しさん [2007/02/19(月) 13:45:00 ]
サービスの ServiceMain コールバック関数に、
ユーザー定義データを渡せないのは痛いね。
オブジェクト指向化しにくいね。みんなどうやってる?

68 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 14:41:21 ]
ドライブレターを割り当てていないパーティションがあって、
そのパーティションにアクセスしたい(そのパーティションの情報を取得したい)
どうすればできますか?

無理なら無理矢理空いているドライブレターを割り当ててそこから情報を取得
すればいいと思うけど、割り当てをプログラム上からできるのかしら・・・?


69 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 14:58:57 ]
FindFirstVolume、FindNextVolume でみつかる?

70 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 16:04:49 ]
>>69
ボリューム名は取得できました。
そこからはどうすればいいでしょうか?
QueryDosDeviceでデバイスを取得して、そのデバイスをCreateFileで開いてハンドルを
取得してDeviceIoControlで情報取得しょうか?




71 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 16:35:47 ]
TransparentBltやAlphaBlendはWindowsMeでは機能しないんですか?

72 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 17:09:36 ]
たしかにMSDNライブラリを見るとWindows 2000からと書いてあるね。

73 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 18:17:27 ]
Windows98/SEでTransparentBltを使うとすごい勢いでGDIハンドルが増加していくんだよな
Meでは使い物になるんだろうか

74 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 18:33:25 ]
>>70
それでいけると思う。
末尾の \ は消さないとCreateFile()で失敗するかも。
あとOSによって差が大きかった気がする。

75 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 19:36:37 ]
>>72
英語版を読むと、98/MEもいけそうだよね

76 名前:デフォルトの名無しさん [2007/02/19(月) 20:24:19 ]
コードが配置されてる先頭のアドレスが知りたいのですがうまくできせん

CONTEXT c = {0};
c.ContextFlags = CONTEXT_CONTROL;
GetThreadContext(hThread, &c);

LDT_ENTRY ldt = {0};
GetThreadSelectorEntry(hThread, c.SegCs, &ldt);

77 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 20:39:29 ]
そのアドレス、って何アドレスだ? 物理か?セグメント相対か?

78 名前:デフォルトの名無しさん [2007/02/19(月) 21:13:26 ]
質問です。
親ウインドウから子ウインドウを起動させて、子ウインドウを終了させると
親ウインドウがアクティブウインドウになってくれず他のウインドウの
下に隠れてしまいます。親ウインドウがアクティブになる方法を
教えてちょんまげ。

79 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 21:19:27 ]
ちょんまげにキレた。子ウィンドウ終了時にShowWindowじゃダメなのか。


80 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 21:49:29 ]
>>76
PEヘッダに書いてあるベースアドレス+セクションの仮想アドレスで求まる。
コードサイズも同じ場所の仮想サイズから特定できる。
exeが読めない状況でもPEヘッダ自身はベースアドレスにロードされてる。
ほとんどの場合は上記の方法で判るが、意地の悪いプログラムだと
デバッガを化かすコードが入ってたりするので、実際のコードの開始
アドレスはプログラム毎に任意と考えるべき。
信用して良いのはGetThreadContextで得たEip以降のコード。



81 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:00:13 ]
ウィンドウを終了、tぽいう表現に違和感を感じる今日この頃。

82 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:01:03 ]
書き忘れてたけどベースアドレスはGetModuleHandleで判るからね。

83 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:19:06 ]
>>78
Owned Windowは、WS_POPUPにすべし

84 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:37:14 ]
“普通”の、例えばMFCを中心に使っている初級Windowsプログラマが見て
「そこまでトリッキーなことはしていなさそう」と感じる程度の
アプリケーションを開発する上で、
>>80みたいな知識が必要になることってどれくらいあるんですか?
1.他プロセスにアタッチするようなアプリケーションはかなり特殊な
  存在であって、「普通の」アプリ開発者とは接点がない
2.普段は使わない知識だが、時々必要になることがあるので
  こうして質問する人がやって来る
3.実はWindowsでプログラムを書く上では割と基本的な知識

85 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:39:44 ]
他のアプリケーションに介入して弄り回したいときとかは、場合によっては
必要になることもあるかもしれない。詳しく知っててモノ書いてる連中は
だいたいMVP持ってたりするな。

86 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:41:35 ]
俺は1だと思うが、2だと言う意見の人がそれなりにいてもおかしくないとは思う。
それに実際必要かどうかはともかく80くらいは豆知識として知っていておいて損はない。

87 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:49:21 ]
勘違いでなければ多分こんなの?

DWORD dwDummy;
IMAGE_DOS_HEADER dos;
IMAGE_NT_HEADERS nt;
if ( ::ReadFile(hFile, &dos, sizeof(IMAGE_DOS_HEADER), &dwDummy, NULL) // DOSセクション分読む
  && dos.e_magic == IMAGE_DOS_SIGNATURE  // DOSですか?
  && ::SetFilePointer(hFile, dos.e_lfanew, NULL, FILE_BEGIN)          // dos.e_lfanew==エントリーポイント
  && ::ReadFile(hFile, &nt, sizeof(IMAGE_NT_HEADERS), &dwDummy, NULL) // PEセクション分読む
  && nt.Signature == IMAGE_NT_SIGNATURE )      // PEですか?
{
  entryPoint = nt.OptionalHeader.ImageBase + nt.OptionalHeader.AddressOfEntryPoint;
}

俺はそれよりGetThreadSelectorEntryの使い道が全く判らない

88 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:49:34 ]
1であり2である

89 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:50:23 ]
>>84
2かな。他プロセスに干渉するアプリは確かに特殊な部類ではあるけど
必要に迫られて使うことって結構あると思うし。
WindowsプログラミングするならAdvanced Windowsは持っといて損は無いと思うよ。
全部理解するのに余裕で2ヶ月とかかかるけど。学生ならそのうちにやっとくのも良し。


90 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:52:39 ]
>>85-86
他プロセスへのAPIフックぐらいなら出来るのですが、
それがどうしても必要になるといった状況にはなかなか出会ったことがなくて、
しかしこのスレにはかなりの頻度で他プロセスが絡む質問が出てくるので
疑問に思って質問させていただきました。
何にせよ、知っていて損はしないので、ぼちぼち覚えていこうと思います。
ありがとうございました。



91 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:53:37 ]
>>75
ただしWin98のAlphaBlendはバグ持ちなので実質的に使えない。
(WinMeでは修正されてる)
>>87
WOW32とかOS/2サブシステムとかで必要だったものをついでにWin32にも
開放してみたという感じかと

92 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:54:05 ]
自分以外の指定したウインドウが更新されたかどうかと、その更新された
領域を知りたいと思っています。SetWindowsHookEx()を使ってWM_PAINTを
フックしているのですが、監視対象の子ウインドウが更新されたかどうか
まではわからないようです。この場合、子ウインドウも全てフックして
やるしかないのでしょうか?

93 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:55:03 ]
つーかAlphaBlendなんて自前でやるもんだろ
フルスクラッチ(ryでも買って読めば誰でもできるし

94 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:57:41 ]
>>89
"Advanced Windows"、興味は前々から持っていたのですが
いかんせん自腹で買うのには少々高くて二の足を踏んでいました。
これを機に検討してみます。。

95 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:59:36 ]
昔VIPのプログラムやろうぜスレにSSE2使った
アルファブレンドのソースがあってたまげたの思い出した。

96 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 23:07:24 ]
>>93
kwsk

97 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 23:12:39 ]
>>91
そういう理屈なのかー
なんかPEB拾うとかいう用途はあるみたいだけどNtQueryでできるし

98 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 00:24:30 ]
俺「なー姉貴。ReadFileEx関数の、最後の引数なんだよ?」
姉「あぁそれね・・・完了ルーチンのポインタなんよ」
俺「へ?」
姉「読込処理が終わった時に呼ばれる、完了ルーチンのポ・・・・ぽ」
(急に小声)
俺「?」
姉「終わったときに呼ばれる関数のポインタ!!。変なこと聞かないデ!!」
(なぜかプリプリ怒ってる)

99 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 00:37:06 ]
やあ義弟

100 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 00:43:05 ]
くだらねーwww



101 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 00:52:17 ]
チンポイン

102 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:33:00 ]
日本にWin32について語れる姉弟が何組いるのか

103 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 04:02:11 ]
わっふるわっふる

104 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 04:05:01 ]
アルファブレンドって、何かうまそうじゃね?
秋葉でカフェオレとかをアルファブレンドコーヒーに名前変えたら売れね?

105 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 04:55:37 ]
ここにアルファー

106 名前:78 [2007/02/20(火) 06:43:35 ]
>>79 >>83
レスありがとお。試してみます!!

107 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 07:26:33 ]
>>96
フルスクラッチによるグラフィックスプログラミング入門
秀和システム発行

108 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 07:35:39 ]
>>107
thx

109 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 09:23:18 ]
3つのSTATICの子ウインドウを作ってサブクラス化し、ひとつのプロシージャで
処理をしたいと思っています。
どのウインドから飛んできたのかを知りたいのですが、どのパラメータを見たら
それがわかるのでしょうか?

質問の仕方がわかりづらければ申し訳ありません。
解ればお教えください。

110 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 09:39:07 ]
HWNDが違うんじゃないの?



111 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 09:51:04 ]
HWNDで判断するしかないのでしょうか?

CreateWindow時の子ウィンドウIDを取得する方法がないでしょうか?
という質問の仕方に気づかず余計な回答をさせてしまって申し訳ありません。

今もGoogleで調べているのですが、ちょっと難しくてなかなか回答に
たどり着くことができていません。

112 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 10:01:04 ]
あなたの日本語がわかりません。

113 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 10:05:09 ]
>>111
質問読まず書き子
メニューのリソースIDで判別できるんじゃね?

114 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 10:12:22 ]
>>111
GetWindowLong(hWnd, GWL_ID)

115 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 10:13:31 ]
>>113
質問の仕方がわるくて本当に申し訳ありません。
それです。
それを取得する方法を探しています。
勉強をはじめたばかりで回答になかなかたどり着けなくて・・・。

116 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 10:15:36 ]
>>111
いまいち、何を言いたいのか見えてこないが

たぶん、GetWindowLongでGWL_ID

117 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 10:16:38 ]
>>114
ありがとうございました。

118 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 10:22:39 ]
>>116
サンプルを作って試してみました。
その方法を探していました。
回答ありがとうございました。

119 名前:デフォルトの名無しさん [2007/02/20(火) 12:37:31 ]
ウインドウの上からマウスが外れたときに検地するにはどうしたら良いでしょうか?

120 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 12:40:40 ]
>>119
日本語が不自由だとなにかと不便だよね。
日本での生活は辛いかも知れないけど、母国のことを思い出してがんばってね。



121 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 12:41:23 ]
>>119
>検地
歴史書を紐解くといいと思います。

122 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 12:58:46 ]
TrackMouseEventが使いにくいからといってフックしたり常時監視したりするアホ

123 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 13:34:22 ]
ウィンドウに乗っているコントロールに対して
透過でフェードアウトを実装する事は可能でしょうか?

AnimateWindow
SetLayeredWindowAttributes

あたりで可能でしょうか?
見た感じでは、Window限定のような気がするのですが・・・。

124 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 16:43:37 ]
GDIで透過色付きで且つ半透明なものを描画しようと思うんですが、
ワーキングメモリとしてのビットマップは静的にある程度の大きさを持つものを予め用意しておくか、
描画用の、AlphaBlend等のAPIをラップした関数を呼び出すたびにその関数のスコープ内部で済ませるか迷っているんですが、
前者の場合は始終無視できない程度のメモリが占有される事が、
後者の場合は関数呼び出しのたびのオーバーヘッドの事が心配で一向に開発が進みません。
普通はどうするんでしょうか。

125 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 16:56:01 ]
まず以下のことを明確にせよ。
無視できない程度のメモリは何メガなのか?
無視できる程度のメモリは何メガなのか?


126 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 17:05:02 ]
>>124
普通はそれぞれどの程度の問題になるのか数値化して検討する。

いや、寧ろこんなところで聞かない。

127 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 17:05:36 ]
静的に確保するとすれば、512KB以上は無視できない。
関数のオーバーヘッドは、1KB以上であれば無視できない。

128 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 17:14:47 ]
ばーか

129 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 17:28:33 ]
そろそろカチンときそうです。

130 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 17:34:52 ]
>>124
その描画関数がどんなタイミングでどの程度呼ばれることになるのか?
とかも考えましょう。アプリケーション自体の寿命に対して局所的かつ連続して呼ばれる
なら初期化関数、描画関数、終了関数に分けて以下のようにするとか。
初期化関数()
 描画関数()
 ...
 描画関数()
終了関数()



131 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 17:45:38 ]
親ウインドウに子ウインドウは貼り付けて、子ウインドウだけを
半透明にさせることって出来ますか?
ウインドウ全体を半透明にするのは簡単に出来たのですが、
子ウインドウだけってのは無理でした。
自分のソースが間違っているのか、そもそも無理なのか
解らないので知っていたら教えてください。

132 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 17:53:13 ]
みんな!
あたしの為の、カチンとならないで!!

133 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:14:10 ]
VistaでCSIDL_PROFILE の仮想フォルダ のCSIDLってないですか?

134 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:23:59 ]
Win32APIの32とはなにですか?しりたいのです。

135 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:26:47 ]
16の倍で、64のちょうど半分です

136 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:29:26 ]
丁度指が足りなくなる数

137 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:31:48 ]
ゲイツ「えと、なんとなく…」

138 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:33:30 ]
√1024

美しいと思わないかね?

139 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:36:01 ]
Win32は32ビットCPUを対象として開発されたものだから32ビットの32。
当然Win16もあった。

x64やIteniumのはWin64かと思いきゃ、
Win32 for 64-bit Windowsという呼称が一部で見受けられる。
(無論WOW64のことではない)

140 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:44:42 ]
ゲイツ「そうだったんだー、へー」



141 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:51:18 ]
質問箱って書いてありますが、ここ、箱じゃないですよね。
なのに何で箱なんですか?
タイトル名からうそをついているようではとてもじゃないけどうその答えを
返されそうで質問できません。

142 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:54:26 ]
日本語でおk

143 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:54:46 ]
おまえさんは箱の定義を勘違いしてるんだろう。

144 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:56:50 ]
ネタにマジレスってカッコイイよね

145 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 18:57:50 ]
pc10 (banana313) も↓こんな感じでしょ。 箱詰めぎっちりだわさ
ttp://www.maido3.com/server/phototour/6.html

146 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 19:31:48 ]
質問できないといいつつ、質問してるのはお約束だな。

147 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 20:11:50 ]
>>141
君はこのスレは箱ではないと思っているから、ここは箱ではないんだ。
ここが箱でない以上それは尤もな考え方であって、つまりここは箱ではないんだ。
しかし、よくよく考え直してみてくれ。ここが箱であったっていいじゃないか。
そういうわけで、仮にこのスレが箱だとしてみると、君の考え方は間違っていることになる。
それは即ちここが箱であるということに他ならず、仮定は正しかったということになるんだ。

148 名前:78 [2007/02/20(火) 20:31:23 ]
何度もすんまそん。
子ウインドウのテキストエディタを終了させた後、親ウインドウが
アクティブにならず他のウインドウの下に隠れてしまって悩んでいます。
親ウインドウアクティブにて戻るにはどうすればよいのでしょうか。

sa-wiki.com/upload/src/up0110.txt

149 名前:133 mailto:sage [2007/02/20(火) 20:59:20 ]
自己解決しました。
FOLDERID_UsersFilesですね。

しかし糞スレだな

150 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 21:05:37 ]
はこ 【箱/▼函/▼筥/▼匣/▼筐】

(5)厠(かわや)に置いて大便を受けるもの。しのはこ。また、大便。
「―すべからず/宇治拾遺 5」



151 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 21:59:57 ]
>>141
そうか

152 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:19:51 ]
キャスト以外の方法で、
整数を受け取って席轍に変換されたvoid*を返すようなAPIってありますか?

153 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:20:54 ]
席轍→適切のミスです 

154 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:22:39 ]
意味不明

155 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:24:46 ]
そもそも整数はデータ表現の問題で、キャストはコンパイラと言語仕様の問題、
それがAPIと何の関係があるんだ?

156 名前:19 mailto:sage [2007/02/20(火) 22:25:35 ]
>>152
つ union

157 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:29:07 ]
うん、つっこまれて気づいた ごめんなさい

158 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 22:43:05 ]
>>152
つ TlsGetValue

159 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 23:52:34 ]
>>121
日本語が不自由な奴に秀吉見せたらファビョるぞ

160 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 03:41:03 ]
サウンド機能についてです。
色々なメディアプレイヤーを使っていると
勝手に音量の位置が変わってしまいます。
これを固定とかしようと思うのですが
どうすればいいですか?

既存ソフトだと細かい事ができないので
自分で何とかしたい訳ですが・・・




161 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 03:53:33 ]
>>160
mixerOpen

162 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 07:41:42 ]
ミキサー勝手に弄るアプリは死んで良いと思う今日この頃。

163 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 08:14:42 ]
>>162
RealOneとかどうにかしてよw

164 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 08:40:10 ]
>>160
VISTAに移行しるw

165 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 13:16:58 ]
サブクラス化したSTATICでTrackMouseEventでウインドウからマウスが外れたことを
知りたいと思うのですが、プロシージャのどの部分でTrackMouseEventを
設定すればよいのか、またメッセージのWM_MOUSELEAVEをどこで受け取ればよいのか
が解りません。

サブクラス化が良く理解できていないのは解りますが、理解の助けになる、
もしくはマウスが外れたことを知る方法の参考になるサイトなどがありましたら
教えてください。

166 名前:デフォルトの名無しさん [2007/02/21(水) 13:44:41 ]
サブクラス化
wisdom.sakura.ne.jp/system/winapi/win32/win64.html

ここを参考にSTATICのサブクラス化を学んでいます。
サブクラス化したプロシージャでマウスの左ボタンを押したことを
GetKeyState(VK_LBUTTON)にて検知していますが、switch (msg)で
case WM_LBUTTONDOWN:を使って検知することはできませんでした。
WM_LBUTTONDOWNなどのメッセージを受け取るにはどうするのでしょうか?

WM_MOUSEMOVEなどのメッセージを受け取りたいと考えていますが、
何から理解していけば良いのか途方にくれています。
ご助言をお願いします。

167 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 19:21:36 ]
たぶんSTATICでメッセージ受けるのはサブクラス化以前で説明済みなんだろうな

168 名前:デフォルトの名無しさん [2007/02/21(水) 20:02:19 ]
>>76とか>>80とかを見て実験してみようと思って
IMAGE_DOS_HEADER dos = {0};
ReadProcessMemory(proc, (LPCVOID)base, &dos, sizeof(dos), &bytes);
if(sizeof(dos) != bytes || dos.e_magic != IMAGE_DOS_SIGNATURE)
 return false;

bytes = 0;
IMAGE_NT_HEADERS pe = {0};
ReadProcessMemory(proc, (LPCVOID)(base + dos.e_lfanew), &pe, sizeof(pe), &bytes);
if(sizeof(pe) != bytes || pe.Signature != IMAGE_NT_SIGNATURE)
 return false;

ULONG64 start = pe.OptionalHeader.ImageBase+pe.OptionalHeader.BaseOfCode;
ULONG64 end = start+pe.OptionalHeader.SizeOfCode;
std::cout << (void*)start << " -> " << (void*)end << std::endl;
とコードを書いて実行したら0x00401000 -> 0x0048e000と表示されたのだが0x0048e000以降も関数が配置されてるorz. なにか勘違いしちゃってますか?
ちなみにターゲットはVC7.1で作った、いたって標準的なHelloWorldです

169 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 21:22:09 ]
>>168
アドレスの計算の仕方はそれで合ってる。
ただしそのサイズはアラインメントされたサイズなので、
仮想メモリにマップ後の実際のコードサイズの値は、
セクション毎のVirtualSizeを見ないとわからんよ。
普通のコードセクション(.text)なら
SizeOfCode == SizeOfRawData >= VirtualSizeだから、
大よそが判れば良いなら>>168の方法でもいいけど、
SizeOfRawData < VirtualSizeもありうる。

>以降も関数が配置されてる
これはどういう方法で確認してる?
実際の所コンパイルオプション見ないとわからんけど、
インポートアドレステーブルだったり他のセクションが
混ざってるとかじゃないかね。
OptionalHeaderだけじゃなくてその後のセクションの
情報も見て位置を把握しないと判りづらいと思うよ。

170 名前:168 mailto:sage [2007/02/21(水) 22:29:37 ]
>>169 ありがとうございます
IMAGE_SECTION_HEADERから得られた情報でいけそうです

IMAGE_SECTION_HEADER::Nameによると名前にtextが含まれるセクションが2つありました (.textbssと.text
startに.textbssのIMAGE_SECTION_HEADER::VirtualAddress+base
endに.textのIMAGE_SECTION_HEADER::VirtualAddress+IMAGE_SECTION_HEADER::.Misc.VirtualSize+base
としたところ列挙された関数をすべて含むことが確認できました
関数列挙にはSymNextを使いました

しかしSizeOfCodeは信用ならんとして関数が配置されてるアドレス範囲をしらべるには
IMAGE_SECTION_HEADER::Nameに"text"が含まれるかどうかみたいな判定をしてごにょごにょみたいな方法しかないのかな。。。



171 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:33:02 ]
printf風にデバッガに出力するコードを考えたんだが
これだと小数を出力できない。。。
小数もOKにしたいのだけどどうしたらいいですか?

void DebugPrintf(LPSTR lpszFormat, ...)
{
LPSTR *lplpParam;
static char szTextBuff[128];
lplpParam = ((LPSTR *)&lpszFormat) + 1;
wvsprintf(szTextBuff, lpszFormat, (LPSTR)lplpParam);

OutputDebugString(szTextBuff);
}

172 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:36:07 ]
APIのは対応してないと明示されてるので、諦めてCRTのvswprintfを使う。

173 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:37:20 ]
>>171
っ stdarg.h
っ va_start
っ va_end

174 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:37:39 ]
すでにAPI関係ないな

175 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 01:24:11 ]
>>172

vsprintfにするだけでよかったのか
アリガトン

switch文で
%fの場合、
%sの場合、
とかめんどいことして対処してたorz

176 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 11:45:38 ]
ウィンドウをTOPMOSTに変更し、サイズをデスクトップと同じにするとフルスクリーンの表示ができます
ですがフルスクリーンに切り替わった時、タスクバーの表示が消えるのが一拍遅れます

実際メディアプレイヤーなんかだとフルスクリーンは瞬時に切り替わりますし、ちょっと気になります
APIの呼び出し順とかに問題があるんでしょうか
切替は同一関数内で以下のような呼び出しで行っています

CRect rect;
GetDesktopWindow()->GetWindowRect(rect);
SetWindowLong(m_hWnd, GWL_STYLE, WS_POPUP|WS_VISIBLE);
SetWindowPos(&CWnd::wndTop, 0, 0, rect.Width(), rect.Height(), SWP_SHOWWINDOW);

ちなみにソースはMFCです


177 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 12:45:27 ]
メディアプレイヤーのフルスクリーンは DirectX のフルスクリーンモードではないかと…

178 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 12:52:38 ]
DirectXの切替だと結構もっさりするんですよね
デスクトップの解像度と同じで切り替えたとしてももっさり
調べてるわけじゃないけどメディアは瞬時に切り替えてるからDirectXじゃないんじゃないかな

179 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 13:13:25 ]
いや、Media Playerは少なくともDirectShowを使っている。

180 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 13:30:01 ]
論点が滅茶苦茶だな。

ハードウエアの解像度変更と、ソフトウエアでのスケーリングを混同するな。



181 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 13:55:18 ]
>>178は「モニターの解像度切り替えと似てもっさりしてる」と言ってるだけで
同列に扱ってるわけじゃないと思うんだけど、違うのかな

182 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 14:14:35 ]
>>181
デスクトップの解像度でD3Dフルスクリ-ン と
コンテンツの解像度でD3Dフルスクリ-ン とでは微妙に違う。

183 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 14:30:13 ]
>>179
あぁすまん、DirectShowは使ってると思う。
>>178はDirectGraphicsのCreateDevice()のフルスクリーン切替は使ってないんじゃない?
と言いたかった

>>180
誰あてのレス?

>>181
そう、その通り

>>182
IDirect3DDevice9::CreateDevice()を使った切替ではデスクトップ/コンテンツの解像度に
よる違いって殆ど感じられなかったけど。(両方もっさり)


184 名前:182 mailto:sage [2007/02/22(木) 14:36:50 ]
>>183
そっか。
profile 取って、どこが遅いか見たほうが良いかもしれないし、
>>176 コードをベースに悪あがきするのも良い

185 名前:178 mailto:sage [2007/02/22(木) 14:42:01 ]
ちょっと勘違い、再確認したら

IDirect3DDevice9::CreateDevice()でのフルスクリーン切り替えはもっさりしてない
というか一瞬ブラックアウトして、描画が復帰するまで一呼吸いるだけ
>>176 で単にTOPMOSTにするだけならブラックアウトしないってだけだった

メディアプレイヤーもフルスクリーン切替時に背景ブラックだしDirectGraphicsでフルにしてんのかな



186 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 16:09:02 ]
画面いっぱいに窓広げているだけだろ。アフォか?

187 名前:デフォルトの名無しさん [2007/02/22(木) 16:52:55 ]
なら >>176 に回答してみろ、できなきゃオマエが真性アフォ

188 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 17:20:05 ]
馬鹿バッカー

189 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 18:18:32 ]
SetWindowPosの使い方が間違っている。HWND_TOPMOSTを指定しろ。というか全画面はこれが常識。
APIリファレンスも見ない馬鹿しかいないのか?

190 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 18:34:32 ]
>>177が無知なくせに頓珍漢なことを言うから変な流れになるんだよ。



191 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 18:36:19 ]
僕ハッカー

192 名前:176 mailto:sage [2007/02/22(木) 18:37:49 ]
>>189
うぉぅっ、CWnd::wndTopMostを指定してるもんだとばかり思ってた
これは恥かしい、ありがとう解決した

挙動も意図したものになったよ

193 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 18:40:51 ]
ウィンドウが全画面になった後、タスクバーがあった場所に
自分の描画をするのがもっさりしてるんじゃね?

194 名前:デフォルトの名無しさん [2007/02/22(木) 19:20:10 ]
インターネット回線や電話回線が
使える状態かどうかわかるAPIを教えてください

195 名前:67 [2007/02/22(木) 19:40:43 ]
#シカトされたので再送
サービスの ServiceMain コールバック関数に、
ユーザー定義データを渡せないのは痛いね。
オブジェクト指向化しにくいね。みんなどうやってる?

196 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 19:43:55 ]
質問です。
なぜ、構造体に、それ自身のサイズを代入しないといけないのですか?
xxxinst.dwSize = sizeof(xxx);
みたいにするなら、必要ないと思うのですが…

197 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 19:46:23 ]
>>196
過去との互換性のため。
例えば、Rev1のときはサイズが100バイトだったのが、Rev2では120バイトになったりしたら、サイズがあれば便利。

198 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 19:46:56 ]
>>196

>>197さんが言うように、
それで、構造体のバージョンを判別することもある。
DEVMODE,OSVERSIONINFOとかね

199 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 19:48:57 ]
>>194
InternetAttemptConnect関数かな?

200 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 19:59:35 ]
>>197
>>198
なるほど。んじゃあ、これってプログラマのためにある変数なんですか。
OSがメモリ確保するときに必要なわけじゃないんですね。



201 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 20:02:24 ]
>>195
ドキュメント嫁

202 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 20:02:41 ]
>>200
OS側で、どこまでのメンバをコピーすべきかの有効判別の意味が大きいかもにゃん。

203 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 20:22:12 ]
>>196
例えば、OS側にお菓子レコードがあって、以下のデータがある場合・・・

|せ き は ら さ ゆ き 00|00 9E|00 50|00 3C|00 52|

SDK側のヘッダファイルは以下のように定義すれば楽珍なわけで。

typedef struct t_prf{
 WORD cSize;
 char Name[];
#if(WINVER >= 0x0400)
 WORD Height;
#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
 WORD Bust;
 WORD Waist;
 WORD Hip;
#endif
#endif
}PRF;



204 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 20:24:11 ]
>>203

ちょwwww
志村!
志村!

char Name[8];

205 名前:67 mailto:sage [2007/02/22(木) 20:30:26 ]
>>201
どこらへんを読んだらいいでしょうか。

206 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 21:07:13 ]
>>205
まず、どこがどう分からないかを具体的に記しなさい。

207 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 21:12:21 ]
サービスのインスタンスは1プログラム中に10も20もあったりしないと思うのだが。

208 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 21:35:07 ]
サービス関係のAPIを一通り目を通せば、目的の物が見つかるはず。
読んでないから、わからないんだろ。

あと今でも使われている古きテクニックとしてはマシン語生成ってのもある。

209 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 21:35:55 ]
svchost.exeみたいに、同一プロセスに複数のサービスがあるのならまだしも。

210 名前:67 mailto:sage [2007/02/22(木) 21:54:48 ]
> サービスのインスタンスは1プログラム中に10も20もあったりしないと思うのだが。
いや、あるんですけど。



211 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 22:08:29 ]
意味がわからんのだけど
ServiceMain内でインスタンス生成すればいいんじゃないの?

212 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 22:42:10 ]
知識がないわけじゃないのに工夫ができない子はいらない子

213 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 22:48:27 ]
何ができなくて困ってるのかよく解らん。
ユーザ定義データを渡せると仮定して、渡せないときに比べて何ができるようになる?

214 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 23:49:03 ]
マウスの動作を拡張するソフトって、どうやってるんですか?
自分で登録したクラスなら、メッセージ取れるけど、
ほかのウィンドウクラスに送信されたメッセージって
メッセージキュー以前の段階でとらないといけいないですよね。

ヒントだけでもください。

215 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 00:14:34 ]
Hook

216 名前:デフォルトの名無しさん [2007/02/23(金) 00:18:28 ]
>>214
SetWindowsHookEx
使うとか

217 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 01:10:03 ]
どうも。

218 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 02:00:53 ]
「オーナー描画ボタン」を少し改造しています。
wisdom.sakura.ne.jp/system/winapi/win32/win61.html

大雑把にですが>>219のようなにしています。
処理 1の部分は実行されず、処理 2の部分だけが実行されます。
SubBtnProcのWM_DRAWITEM:の部分を消しても結果は同じです。
処理 1も処理 2も実行されると思っていたのですが、何故でしょう?

自分の理解はSetWindowLongでSubBtnProcに飛んで、引数をそのままDefBtnProcに
代入されている WndProcに飛ぶのだと思っていました。
どこを勘違いしているのかわかりませんので、どなたかご指摘をお願いします。


219 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 02:04:18 ]
LRESULT CALLBACK SubBtnProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {

switch (msg) {
case WM_DRAWITEM:
〜何かの処理 1〜
return TRUE;
}
return CallWindowProc(DefBtnProc , hwnd , msg , wp , lp);
}

LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {

switch (msg) {
case WM_CREATE:
hBT = CreateWindow(
TEXT("BUTTON") , TEXT("") ,
WS_CHILD | WS_VISIBLE | BS_OWNERDRAW ,
0 , 0 , 400 , 100 , hwnd , (HMENU)1 ,
((LPCREATESTRUCT)(lp))->hInstance , NULL);

DefBtnProc = (WNDPROC)GetWindowLong(hBT, GWL_WNDPROC);
SetWindowLong(hBT, GWL_WNDPROC , (LONG)SubBtnProc);
return TRUE;
case WM_DRAWITEM:
〜何かの処理 2〜
return TRUE;
}
return DefWindowProc(hwnd , msg , wp , lp);

220 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 07:13:45 ]
>>218
WM_DRAWITEMは親ウィンドウに送られてくるものなので、それでOK。



221 名前:194 [2007/02/23(金) 10:34:57 ]
>>199
そういう感じのAPIで
繋がってる回線の数等わかるものはないですか?

222 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 11:36:46 ]
>>221
WNetEnumResource関数も見たほうがいいかもね

223 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 11:42:44 ]
>>222
それは違う関数だと思う。

>>221
WMIにあるかもね

224 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 11:54:36 ]
繋がってる回線というのを具体的に定義すればわかるかもよ

225 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 11:59:37 ]
繋がってるTCPコネクションの事なのか
LAN回線の接続数の事なのか

226 名前:デフォルトの名無しさん [2007/02/23(金) 12:06:25 ]
LANではなくて電話回線の数を数えたいのですが
WindowsのAPIで可能でしょうか?


227 名前:194 [2007/02/23(金) 12:37:30 ]
>>225
両方とも教えてください

228 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 12:40:16 ]
コンボボックスで今何番目の項目が選択されているか調べたいのですけど
どのようにすればいいでしょうか?

229 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 12:40:31 ]
>>226
WMIでWin32_POTSModemクラスかな?

230 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 12:43:48 ]
>>228
CB_GETCURSEL
メッセージ



231 名前:228 mailto:sage [2007/02/23(金) 12:52:48 ]
ShowMessage( SendMessage(In,CB_GETCURSEL,0,0) );
試しでこんな風に書いてみたのですが、
0しか返ってきません。
書き方は間違ってませんよね?

232 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 14:30:36 ]
In、て、なんだ、ハゲ。

233 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 14:50:25 ]
ShowMessageって何かと思ったらbc++か

234 名前:228 mailto:sage [2007/02/23(金) 15:59:17 ]
環境はC++Builder6
Inはただ適当につけたハンドルです。

235 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 16:04:30 ]
で、Inはそのコンボボックスのハンドルなの?
いちおー、0は有効値(見つからないと-1)だから
ハンドルが違ってる可能性高い

236 名前:デフォルトの名無しさん [2007/02/23(金) 16:29:13 ]
EnterCriticalSection した後、
その中で CreateThread しても問題ない?

237 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 16:48:10 ]
>>236
問題ない

238 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 17:29:06 ]
根拠は?経験上?仕様上?

239 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 17:38:41 ]
そもそもクリティカルセクション中にCreateThreadしちゃいけないって
何で思ったの?

240 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 17:40:50 ]
なんとなく



241 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 17:58:30 ]
クリティカルセクションは他のスレッドへの切り替えを抑止するような役目を果たしてるから、
EnterCriticalSectionの後にスレッド作ってそこでもクリティカルセクションを使った場合に大丈夫かって思ったんじゃないの?

242 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 17:58:51 ]
>>234
実際に選択項目を変えてみたの?

243 名前:228 mailto:sage [2007/02/23(金) 18:34:51 ]
項目を変えたりしても、変わらないです。

244 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 18:37:21 ]
CB_GETCURSEL以外はうまくいくのか?
CB_GETCOUNT とか CB_RESETCONTENT とか

245 名前:228 mailto:sage [2007/02/23(金) 18:46:25 ]
void __fastcall 〜〜〜(SealInに項目を追加)

void __fastcall TForm2::Button1Click(TObject *Sender)
{
ShowMessage( SendMessage(SealIn , CB_GETCURSEL , 0 , 0) );
}
てか、ほんとこれくらいのプログラムしか出来てない;;

>>244
試しでその二つや0以外が返ってきそうなものをやってみましたけど、
結果変わらずです

246 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 18:52:38 ]
>>245
>SealIn
上の(SealInに項目を追加)が気になる
これってコンボボックスの名前か?
まさかだけど
ShowMessage( SendMessage(SealIn->Handle , CB_GETCURSEL , 0 , 0) );
ってことないよね?


247 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 18:55:04 ]
あと、SendMessage()直後にGetLastError()を

248 名前:228 mailto:sage [2007/02/23(金) 19:07:48 ]
SealInがコンボボックスの名前です
SealIn->Items->Add(text);
で、項目を追加してます。
それ以外の処理はまだないです。

GetLastErrorを追加しましたが、エラーコード返ってきませんでした

249 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 19:09:02 ]
>>248
ならSealInはハンドルじゃない
ShowMessage( SendMessage(SealIn , CB_GETCURSEL , 0 , 0) );
SealInの部分を SealIn->Handle にする
ShowMessage( SendMessage(SealIn->Handle , CB_GETCURSEL , 0 , 0) );

250 名前:228 mailto:sage [2007/02/23(金) 19:11:20 ]
>>249
うまくいきました。
ありがとうございます



251 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 19:27:18 ]
TFormってことはVCLも使ってるだろうになんでわざわざそんなめんどくさいことを
SealIn->ItemIndexじゃいかんのか

252 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 19:30:21 ]
>>251
Win 32 SDK板ですからね

253 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 19:33:33 ]
>>251
私も思ったけど、たぶん練習じゃないかなと思った
メッセージってどんな感じ?みたいな
私も昔やったことある

254 名前:デフォルトの名無しさん [2007/02/23(金) 23:24:49 ]
必要な場合だけ AllocConsole を使って動的にコンソールを割り当てた。
そんで GetStdHandle で標準入力のハンドルをもらった。
このとき、標準入力に入力があったことを WaitForMultipleObjects で
通知してもらうことってできる?
標準入力とともに他のハンドルのシグナル状態も検出したいのです。


255 名前:デフォルトの名無しさん [2007/02/24(土) 00:41:46 ]
シミュレーション作ってるんですが
スクロールバーを動かしてる時に
処理が止まらないようにする方法はありますか?

256 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 00:55:05 ]
マルチスレッドで描画と計算を分けるのは前提だよな。

257 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 08:19:25 ]
>>255

>>256氏が言っている様に、
シミュレーション側とGUI周り側を切り分けて、
プログラムをマルチスレッド化するべきかもね。

CreateThread関数、
WaitForSingleObject関数、WaitForMultipleObjects関数あたりを見てみ。

258 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 09:16:35 ]
>>254
コンソール入力を待てると書いてあるし、
msdn.microsoft.com/library/ja/jpdllpro/html/_win32_waitformultipleobjects.asp
読み取られていない入力があったときにシグナル状態になると書いてあるし、
msdn2.microsoft.com/en-us/library/ms686364.aspx
平気だろう。

259 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 17:58:00 ]
扶桑社から12月号 
www.microsoft.com/downloads/details.aspx?FamilyID=94596af5-cc58-45af-a14b-df627a31e783&DisplayLang=ja


260 名前:デフォルトの名無しさん [2007/02/24(土) 20:36:30 ]
どなたか助けてください。

Windows アプリケーションを作成していて、
home.earthlink.net/~barnold2002/Acgnj/Csig0204.htm
ここの方法でコンソールを割り当てて、その上で、

    while (1) {
        char buf[256];
        fgets(buf, 200, stdin);
        fputs(buf, stdout);
    }

のようなコードを書いたんですが、
コンソールで高速にキーボード入力して Enter を押すと、
入力していない 'T' という文字が、コンソールの行の先頭に表示されるんです。

なぜこんなことになるのでしょうか?



261 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 20:52:49 ]
char buf[0x100];
while(1){
fgets(buf,200,stdin);
fputs(buf,stdout);
}

262 名前:デフォルトの名無しさん [2007/02/24(土) 20:57:14 ]
やってみたけど、変わらないですよ。

263 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 21:07:19 ]
>>260
ふしぎだね。

四角形になるRFGTでRFGを同時押しすると
Tも押したことになってしまうタイプのキーボードとか。
んなこたーねーか

264 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 21:09:51 ]
呪われておる

265 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 21:42:40 ]
>>260
必ず’T’なのか?
>コンソールで高速に
知らず押しちゃってるってことない?

266 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 21:48:10 ]
uhihigd(ここでEnter)
Tuhihigd
こんな感じになるってこと?

267 名前:デフォルトの名無しさん [2007/02/24(土) 21:48:55 ]
押してないよ。T がよく出るんだけど、さっきやったら ] も出てきた。
z x c v をがちゃがちゃとランダムに押しながら、
ときどき Enter を押すと、20回に1回ぐらいの割合で出てくる。

268 名前:デフォルトの名無しさん [2007/02/24(土) 21:50:01 ]
>>266
そう!そんな感じ!

269 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 21:51:14 ]
それはそのプログラムだけで発生するわけ?

270 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 21:52:21 ]
キーボードってさ、
キーの数だけ配線が二本ずつあるのではなくて
一本は横一行で共有
もう一本は縦一列で共有
同時押しがあると見分けつかないから
昔のキーボードでは良く起きた。



271 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 21:53:04 ]
>>270
とおもう。

272 名前:260 [2007/02/24(土) 21:53:48 ]
VC 2005 + SP1 を使っています。

ウィザードから普通のコンソール アプリケーションを作成して
同じようなプログラムを作成しても、このようなことは起きないんです。

Windows アプリケーションを作成して、動的にコンソールを作成すると
このような現象が出てくるんです。

別の人のマシンでも再現したので、私のマシンの問題ではないと思う。
(両方のマシンとも Dell 製だが、機種は違う。)


273 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 21:57:35 ]
ソース見てみたい

274 名前:260 [2007/02/24(土) 22:19:59 ]
>>273
いや >>260 に書いたとおりなんですけど。。。
あのサイトのコードを使ってコンソールをセットアップして、
その後で fgets . fputs を繰り返すループを書くだけです。


275 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 22:24:38 ]
じゃあWindowsかVCの不具合なのかもな

276 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 22:36:09 ]
260を見て思ったんだが、FILE構造体同士の代入ってやっていいのか?
freopen("con", "w", stdout);とか
(またはconの代わりにCONOUT$など)では駄目か?

277 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 22:45:56 ]
>>276
もし俺がやるとしたら俺も>>276のほうだな

278 名前:260 mailto:sage [2007/02/24(土) 22:50:59 ]
直った!下記のコードでうまくいった!ありがとう!

freopen("con", "r", stdin);
freopen("con", "w", stdout);
freopen("con", "w", stderr);


279 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 23:19:32 ]
質問です

gethostnameとgethostbynameを利用してローカルIPは取得できたのですが、
グローバルIPはAPIで取得できるのでしょうか?

280 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 23:21:38 ]
[グローバルIP]がブロードバンドルータに付いているものを指すなら、
UPNPでとるとか、実際の通信相手からpeernameを戻してもらうしかない。



281 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 23:33:46 ]
>>280
やっぱりAPIで楽はできないですかorz
ご助言ありがとうございました。

282 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 23:49:20 ]
XPに限定してもいいならUPnPを操作するAPIがあったはず

283 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 23:54:40 ]
>>270
ダイオードあげる

つ ─━─

284 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 23:58:24 ]




285 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 00:17:51 ]
Win32_PingStatusじゃ無理か?

286 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 00:20:36 ]
>>270
実際には横一列、縦一列じゃなくてばらばらに設定されてる
1本回路が死んだら横1列、もしくは縦1列全滅だからな
それ防ぐため

らしい

287 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 00:27:04 ]
>>283 >>284
そうだね!

288 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 08:15:54 ]
プロテインだね!!

289 名前:デフォルトの名無しさん [2007/02/25(日) 10:18:14 ]
VC では open_osfhandle を呼び出すことで OS のファイルハンドルから
ファイル記述子に変換することはできますが、
逆に、ファイル記述子から OS のファイルハンドルを取得するには
どうしたらよいでしょうか。

290 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 10:20:39 ]
_get_osfhandle




291 名前:デフォルトの名無しさん [2007/02/25(日) 11:47:14 ]
フォルダやファイルを、どのアプリケーションが開いているか確認する方法はないですか。

292 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 12:02:20 ]
Process Explorerにそんな機能があったな。

293 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 12:07:50 ]
ProcessExplorerそんな機能ないだろ
単にモジュール列挙じゃない?

294 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 12:18:26 ]
Unlockerにはそういう機能がある。

295 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 12:19:54 ]
FindメニューのFindHanlde or Dll
ってそういうものだと思ていたが。

296 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 13:02:30 ]
FileMon じゃねーの?

297 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 13:50:48 ]
Handleは?

298 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 14:00:11 ]
c:\windows\system32\openfiles.exeは?

299 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 14:01:36 ]
OH.EXEは?

300 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 14:23:48 ]
www.atmarkit.co.jp/fwin2k/win2ktips/306openfiles/openfiles.html
これか



301 名前:デフォルトの名無しさん [2007/02/25(日) 15:58:29 ]
あれ、WindowsXPなのに、openfiles.exeがない!

302 名前:デフォルトの名無しさん [2007/02/25(日) 15:59:12 ]
なんだプロだけかよ…

303 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 18:28:59 ]
うんにゃ、サーバにもありんす

304 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 19:26:06 ]
regmon.exe どっかにないの?

305 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 20:51:13 ]
Process Monitorでレジストリの監視もできるだろ
と言いたいところだがLog Bootの機能がなくなってる。
Vistaで起動時のレジストリアクセスを調べるにはどうしたらいいんだ

306 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 21:27:17 ]
バイナリデータ(AA00CCDD0Aとか)を文字に変換かけるAPIとかってありますか?

307 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 21:41:56 ]
wsprintf

308 名前:306 mailto:sage [2007/02/25(日) 21:46:41 ]
wsprintfでできるんだっけ?
補足するとバイナリファイルを16進表記で表示させるプログラムを作りたいんだが。

バイナリで読み込んだものをwsprintfA(..."%X"...);でやるとおかしくなった気がします。
何かの間違いかもしれないからもう一度試してきます。

309 名前:306 mailto:sage [2007/02/25(日) 21:49:34 ]
やはりAA00CCDD0Aというバイナリがあったとして
wsprintfでやるとAAまでしか取得できません。
0x00に反応してると思われ

310 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 21:51:29 ]
>>309
ソースを晒すべし
0x00 は多分関係無い 言語にもよるだろうけど



311 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 21:52:54 ]
いや、1byte毎ぐるぐる回しながら、%Xで変換、という話だと思うが

312 名前:306 mailto:sage [2007/02/25(日) 21:54:16 ]
>>311
あー、なるほどそういうことか。
試してみます。

313 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 21:57:15 ]
>>305
regmon.exe あったぁ〜
MSに買収されてたとは知らんかった
サンクスです


314 名前:306 mailto:sage [2007/02/25(日) 23:14:59 ]
できましたが
AA0001とかだとA01としかならないです

315 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:17:27 ]
>>314
%02X

316 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:18:02 ]
%02X

317 名前:306 mailto:sage [2007/02/25(日) 23:24:15 ]
>>315
それは既に試していて
もう一度やりましたがやっぱりダメでした。

A0000とかなっちゃいます

318 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:24:58 ]
>>306
ソースうp

319 名前:306 mailto:sage [2007/02/25(日) 23:30:25 ]
zetubou.mine.nu/itoshiki/nozomu/zetubou5456.c

320 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:35:12 ]
>wsprintf(&PackData.lpPack[i], TEXT("%X"), buff[i]);
これが原因。buff[i]はいいけど、lpPack[i]は1ループで2進むことがあるから。



321 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:36:22 ]
buffへコピーする必要は無いだろ。
せいぜいBYTE* packet = lpPacket;で十分。

322 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:36:26 ]
>>319
for(i = 0; i < Size; i++)
{
wsprintf(&PackData.lpPack[i], TEXT("%X"), buff[i]);
}

{
int j=0;
for(i = 0; i < Size; i++)
{
j+=wsprintf(&PackData.lpPack[j], TEXT("%X"), buff[i]);
}
}

323 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:37:03 ]
for(i = 0; i < Size; i++)
{
wsprintf(&PackData.lpPack[i], TEXT("%X"), buff[i]);
}

{
int j=0;
for(i = 0; i < Size; i++)
{
j+=wsprintf(&PackData.lpPack[j], TEXT("%02X"), buff[i]);
}
}

324 名前:306 mailto:sage [2007/02/25(日) 23:37:06 ]
for(i = 0; i < Size; i++)
{
wsprintf(&PackData.lpPack[i], TEXT("%X"), buff[i]);
}

Sizeはパケットのサイズ
buffにはパケットのデータをmemcpyしてます(デバッグ用)
上記の状態でやるとAA00020B00がA02B0になっちまいます

325 名前:306 mailto:sage [2007/02/25(日) 23:38:32 ]
>>320
あー、UNICODEベースで組んでるのが原因かなぁ

326 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:40:59 ]
>>325
>>323 が正解

327 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:44:20 ]
wsprintf(&PackData.lpPack[i], TEXT("%X"), buff[i]);

wsprintf(&PackData.lpPack[i*2], TEXT("%02X"), buff[i]);

328 名前:306 mailto:sage [2007/02/25(日) 23:45:04 ]
>>327
それはむしろi * sizeof(TCHAR)でやるべきかと。

後やはりA02B0になっちまいやすorz

329 名前:306 mailto:sage [2007/02/25(日) 23:46:08 ]
多分BYTEが1バイトだからなのかなーと思うんですが


330 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:46:23 ]
>324
VC++のウォッチ式ならコピーせずともどうにでもできる。
>325
PackData.lpPackの型がTCHARの配列やそれに類するものでなく、
charやunsigned charなどだったらwsprintfAかs(n)printfでも使いなさい。
>327
そこは2文字書き込むから2をかけてあるのであって、
sizeof (TCHAR)では全くお門違い。





331 名前:306 mailto:sage [2007/02/25(日) 23:48:45 ]
>>330
あー、そういうことなのか

>>325についてはリストビューをUNICODE形式にしちまってるから
なんとかならないですかのう。Aに全てやり直すの酷だ・・

332 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:56:02 ]
320の件は323なり327なりの方法で解決できる。
Unicodeは関係ない。

333 名前:306 mailto:sage [2007/02/25(日) 23:58:40 ]
全然違うソースを改変してビルドしてたんでまったく結果が同じという
オナニーショーを演じていましたどうもすみません。



334 名前:306 mailto:sage [2007/02/25(日) 23:59:17 ]
(´・ω・`)


335 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 00:02:31 ]
よく頑張ったお前は神だよ

336 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 02:31:42 ]
もっとわかりやすいデータを食わせて何がおきてるのかさぐる、とか
そもそも%02Xはどういう意味なのか、くらい調べようぜ

337 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 12:57:25 ]
特定のアプリに対して
キーボードのBackword/Forwardキーとかの特殊キーで
WM_COMMANDが送られるのをブロックしたいのですが、
どうすればいいですか?

338 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 15:21:58 ]
キーボードフック

339 名前:337 mailto:sage [2007/02/26(月) 21:36:43 ]
>WM_COMMAND
すみませんWM_APPCOMMANDでした・・・orz

SetWindowsHookExでフックをいろいろやってみましたができません・・・orz
最初、WH_KEYBOARDをやったらWM_KEYDOWNより前に送られてるのでダメ・・・
で、PostでなくSendされてるのでWH_GETMESSAGEではキャッチできず・・・
WH_CALLWNDPROCでは
>The hook procedure can examine the message; it cannot modify it.
となっていてブロックできず・・・

340 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:00:19 ]
>>339
フックだけじゃダメだって。
ジャブやアッパーも織り交ぜないと。



341 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:19:40 ]
LVM_DELETEITEMとかでアイテムを削除した後
アイテムを追加するとInsertItemは追加できるのにSetItemのほうは
追加できなくなりました。原因に心当たりのある方がいたら教えていただきたいのですが。

342 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:22:49 ]
>>340
フックって意味分かってる?
あんなの出すんだったらジャブとかアッパーだしたら隙が出ちゃうよ?

343 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:26:34 ]
>>341
SetItemは追加じゃないんだけど、、、まあそれは置いておいて、

SetItemに指定してるアイテム番号が違うのでは?
例えばInsertItemの戻り値がアイテム番号なので、それをSetItemに指定するとか。

344 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:27:31 ]
CreateWindowで"BUTTON"をBS_OWNERDRAW指定して作った子ウインドウに
WM_PAINTでビットマップをコピーして表示することはできました。
このWM_PAINTをWM_LBUTTONDOWNに変えるとビットマップが表示されません。

すみませんが、どうしてなのか教えてください。

345 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:29:19 ]
>>343
それはないと思うんですが。
まず、LVM_DELTEITEMを送る前まではちゃんとSetItemできてて
LVM_DELTEITEMをSendした後から追加しようとするとできなくなってしまいます

346 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:30:09 ]
BeginPaint/EndPaintはWM_PAINTの中でしか使えない。
またそれを解決しても、後のWM_PAINTで上書きされるということが起きそう。

347 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:31:02 ]
>>344
BeginPaint の PAINTSTRUCT を見てみて

348 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:35:33 ]
>>344
よくわかんないけど、WM_DRAWITEMを使うのは?

349 名前:341 mailto:sage [2007/02/26(月) 22:37:51 ]
解決しました。

350 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:42:04 ]
後々の為に方法を書いておくんだ



351 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 22:42:35 ]
>>347-348
ご回答ありがとうございます。
手がかりにして調べてみます。

352 名前:341 mailto:sage [2007/02/26(月) 23:16:12 ]
>>350
単純に消去した時のカウントがそのままでというか
項目数取得使っとけば良かったのに何で俺staticな変数で
インクリメントしてたんだろう・・・。

という話です

353 名前:341 mailto:sage [2007/02/26(月) 23:41:12 ]
ふとした疑問。
ListView_GetItemCountで取得した項目数をそのまま
ListView_InsertItemを使って追加していった場合、
果たしてそれは正しいやり方なんだろうか・・・・。

354 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 00:03:48 ]
>>339
フックでメッセージを消したいときは、メッセージをWM_NULLに
書き換えればいいんだよ。

355 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 00:04:44 ]
>>353
意味が分からんが、ちょっと興味ある。
詳しく

356 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 00:32:50 ]
テンプレのWIn32API入門の第11章の終了処理のプログラムを実行すると
Proglam still running ? というエラーがでてビルドできません
これはどういうエラーなんでしょう?
環境はWin98でBorlandの5.5です

357 名前:339 mailto:sage [2007/02/27(火) 00:43:42 ]
>>354
メッセージの変更は
WH_GETMESSAGEではできるみたいですが
WH_CALLWNDPROCではできないようです。
WH_GETMESSAGEではキャッチできませんでした・・・orz

358 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 00:46:27 ]
>>356
コンパイル結果のと同じ名前のEXEが現在実行中。

359 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 00:46:29 ]
>>356
ビルドの対象のプログラムがまだ実行中

360 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 02:23:23 ]
win32apiの関数で画像の加算合成をするにはどうしたらいいですか?



361 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 02:42:03 ]
gl何とか

362 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 02:53:04 ]
>>360
DIBにすればピクセル単位で普通にCPUで読み書きできる。

363 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 10:06:16 ]
>>360
結局、演算部は自作ですよ。

364 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 10:22:42 ]
自作ルーチンで演算
これがほんとの自作自演ナンチャッテ

365 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 11:06:58 ]
【審議中】
    ∧,,∧  ∧,,∧
 ∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U (  ´・) (・`  ) と ノ
 u-u (l    ) (   ノu-u
     `u-u'. `u-u'

366 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 11:09:53 ]
( ´д)……(´д`)……(д` )

367 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 12:09:26 ]
そのまましばらくお待ちください


368 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 12:11:43 ]
  __        __       __
  |よし| ΛΛ  |よし| ΛΛ   |よし| ΛΛ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 〃 ̄∩ ゚Д゚) 〃 ̄∩ ゚Д゚)  〃 ̄∩ ゚Д゚) < >>364 全員一致で逝ってよし!
    ヾ.   )    ヾ.   )     ヾ.   )   \_____________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
\                                                \
  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
  |          逝ってよし認定委員会                    |
  |                                           |
\|                                           |

369 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 12:47:16 ]
>>358 >>359
解決しました、ありがとう〜

370 名前:デフォルトの名無しさん [2007/02/27(火) 13:40:46 ]
ウィンドウクラスとウィンドウスタイル定数が全部載ってるサイト教えれ



371 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 13:55:38 ]
マイクロソフトのサイト

372 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 13:56:15 BE:139752498-2BP(222)]
>>370
winuser.h

373 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 14:12:01 ]
BCCなんですが、GDI+のライブラリがないとjpgって表示できないんですか?

374 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 14:30:57 ]
>>373
jpg解凍ルーチンを自分で書けばいいと思うよ

375 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 14:41:15 ]
他の板ならともかく、ここで「解凍」って見るとすごくバカっぽいな。


376 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 14:42:23 ]
>>374
だめなのか。。。('A`)メンドクセ
dクス

377 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 14:58:40 ]
ライブラリ無いとどんな画像形式でも表示なんか無理だと思うんだが…

378 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 15:00:54 ]
GDI+じゃなくても、OleLoadPictureあたり使えばイインジャネ?

379 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 15:10:46 BE:11646623-2BP(222)]
IEコンポにやらせるとか。

380 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:17:10 ]
>>373
自分でこっそり使うツール程度で単に表示させたいだけなら、
Susieプラグインでも使えばいいんじゃない。
BMP(DIB)さえ扱えるなら、.spiは結局DLLなので
静的ロードしてやれば自分で書くコードはほとんど無くて済むだろうし。
# 昔読んだプラグイン仕様の記憶から書いてるのでどっか間違ってるかも。

一例としてSusieプラグインを挙げたけど、
JPEGならフリーのライブラリがいくらでもあると思う。
# 思いついた確実に存在するJPEG読み込みのDLLがSusieプラグインだったので。

もし商用利用する場合はライブラリのライセンスを要確認のうえで。




381 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:21:09 ]
むしろlibjpeg

382 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:26:30 ]
UpdateLayerdWindowでblend.SourceConstantAlphaに255をセットした場合は成功して表示されるんですが、それ以下の数字を入れた場合Functionがエラーとなりエラーコードが87=パラメータが違います。となってしまいます。
Functionを呼ぶ前のスタイルとか何かに問題があるんでしょうか?

383 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:09:00 ]
>>382
スレ違い...と言いたいが、
GDI+スレはないんかいw

384 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:12:11 ]
Platform/Windows SDKにヘッダとライブラリがあるんだし、扱うとしたらここだろ。
その違いが把握できるなら.NET系のスレもありだとは思うが。

385 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:34:05 ]
何ですれ違いなん?普通にUser32.dll のAPIじゃなかと?

386 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:35:29 ]
gdiplus.dllだろ

387 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 18:56:35 ]
GDI+スレとか無いからここでいいんじゃね?
APIじゃないけど

388 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 19:00:56 ]
msdn.microsoft.com/library/ja/jpwinui/html/_win32_updatelayeredwindow.asp?frame=true

ヘッダー:winuser.h 内で宣言
インポートライブラリ:user32.lib を使用

というわけで、gdiplus.dll の関数ではなく、単なる Win32API です。

389 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 20:26:46 ]
>>373
jpg表示したいだけなら、OleLoadPictureでいいんじゃね?
前処理が面倒だが、jpgだけじゃなくBMP/GIF他も一緒に扱えるし。



390 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 21:39:34 ]
やべー jpg なんて libjpeg 一択と思ってた
png に libpng 使ってるんですが、これもひょっとしてメジャーじゃなかったり?



391 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 22:06:55 ]
>>382
255 = 0xFF = 0b11111111で 、
実際はblend.SourceConstantAlphaをリングシフトして、
OS(ドライバ?)は最下位ビットをAND判定してるとか?

nパーセントの透過率 = ((0xFF * n) / 100)

392 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 22:34:01 ]
>>382
::GetDeviceCaps(hDC, SHADEBLENDCAPS)の結果は?

393 名前:389 mailto:sage [2007/02/28(水) 00:13:00 ]
>>390
表示だけでなく、生成や変換もやる場合は、libXXXでいいんじゃね?
Susieプラグインとかよりライセンス条件緩そうだし。
WindowsのAPI/DLLだけで済むならそのほうがいいと思うんでOleLoadPicture
を勧めた訳だが。


394 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 07:57:46 ]
子プロセスの出力をパイプで受け取り、それをistreamで読み出すには
どうしたら良いのでしょうか?
スレ違いなら誘導お願いします。

395 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 08:01:00 ]
パイプで受け取る方法はググればサンプルが見つかる。
istreamがC++のやつのことなら、Boost.Iostreamsを使うのが楽。

396 名前:394 mailto:sage [2007/02/28(水) 08:18:45 ]
>>395
ありがとうございます。おっしゃる通りistreamはC++のやつのことです。
これからググって調べてみる事にします。

397 名前:デフォルトの名無しさん [2007/02/28(水) 14:18:14 ]
他のアプリが呼び出した DeviceIoControl()
の内容を横取り(もしくは覗き見)する方法はあるでしょうか?


398 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 14:20:09 ]
アル

399 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 14:27:15 ]
ラッパDLLは無理くさいからIAT書き換えればいいんじゃないのかな。
Advanced Windowsに物凄い詳しく書いてあるよ。

400 名前:デフォルトの名無しさん [2007/03/01(木) 07:37:23 ]
新規質問お願いします。

デバイスコンテキストに文字を書くAPIを探しています。

「A」と書いたときには「∀」と文字を上下反転させる事ができるAPIはないでしょうか?
TextOut、DrawTextにはしてい方法が見つかりませんでした。

APIの組み合わせでもフォント設定でもいいので知っていたらお願いします。

後、文字の背景は透過しているので、「TextOut」→「StretchBlt」で張り付けた絵を反転するのは無しでお願いします



401 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 08:14:20 ]
>>400
単純に回転ならCreateFont関数でnEscapementで角度指定だっけな?

垂直、水平はしらん

402 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 08:15:36 ]
CreateFont

403 名前:402 mailto:sage [2007/03/01(木) 08:16:36 ]
かぶったすまん

404 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 11:56:14 ]
>>400
g.TranslateTransformで反転表示させることも出来るよ(・∀・)イイ!!
そのほうが多分効率いいと思う。

405 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 18:25:26 ]
画像のビューワみたいなものが作りたいのですが、サムネイルを表示する部分は
そのようなコントロールがあるのでしょうか。それともウィンドウに直接(?)書いて
マウスの座標などでクリックされた画像を判定したりしているのでしょうか。

開発環境は Visual C++ 2005 Express Edition です。

406 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 20:09:35 ]
>>405
IExtractImageインターフェイスだっけな?

407 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 21:07:05 ]
リストビューでよくね?

408 名前:405 mailto:sage [2007/03/02(金) 08:41:49 ]
>>406
ありがとうございます。
調べてみたのですが、サムネイルを生成するのに非常に便利そうで助かります。
この取得した画像を表示するコントロールなどがあるものかと悩んでいました。

>>407
リストビューの大きいアイコン表示を使うということでしょうか。
それとも(あまり詳しくはないですが)オーナードローというもので、描画する
のでしょうか。とりあえず試してみたいと思います。
ありがとうございました。


409 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 08:47:10 ]
>>408
正しいかどうかは分からないが、俺はリストビューの大きいアイコンで画像サムネイルビューアを作ったことがある。

後は つ[イメージリスト]

410 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 21:29:09 ]
お気に入りとか、履歴とかのシステム標準(?)のアイコンを取得する汎用的な
やり方はありますか?

今はExtractIconEx()でshell32.dllからインデックス直値で取ってますが...
OSが変わるたびに変えないといけないし('A`)



411 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 21:53:29 ]
あ、SHGetSpecialFolderLocation()→SHGetFileInfo() でいけそうですが
他に簡単な方法があれば。

412 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 23:19:36 ]
画像編集ソフトなどのアンチエイリアスをかけたペンをつくるため
Ellipseの範囲内を(線も)1ピクセルずつ操作したいのですが、
何か良い方法はありませんか?

413 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 23:41:34 ]
具体的にどのレベルの話をしてるんだい?
「DIBでやるのが普通」って答えを求めてるのか、
それとも「普通にやったんじゃ遅いから高速化する
方策はないか」てな話なのか。

414 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 23:55:06 ]
>>413
一応読み込んだピクセルビットにXY軸指定すれば
ピクセルを修正できる関数は作ったんですよ。
それをSetDIBitsToDeviceで表示するという感じで。
だからリージョンかラスタオペレーションか何かで
いじればできないかな・・・って

415 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 00:21:49 ]
>>414
1.グラデーション分のペン作成(単色のペンで)
2.ペンのストロークをサンプリング
3.2のストロークに対し、1のペン描画を反映。グラデーション分のビットマップを作成。
4.グラデーション別に平均化処理し、ORる

だめか?

416 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 11:04:04 ]
サウンド音量固定の件で質問した者ですが、
おかげ様でできました!

でAPIの質問ではないのですが、
いきがかり上聞かせて頂きます。

まずければ他へ行きます。

ボリューム再設定アプリを実行するタイミングとして
1. Windows起動音が鳴るより前
2. Windows終了音が鳴る前
としたいのですが、うまくできません。
(ボリュームが上がっててビックリする事が多いので(^^;)

スタートアップに登録したら1の場合、
いつも鳴ってる途中で実行されます。

2の場合やりかたがわかりません。
Windows XP HOMEなのですが・・・

417 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 12:44:50 ]
エクスプローラやIEのアドレスバーの様にReBarにコンボボックス、ボタンを順に配置したいです。
ツールバーにコンボボックス(セパレータの上に配置)を入れてをバンドに入れる方法を見つけたのですが、
このコンボボックスはリサイズできないのでしょうか?
厳密には、セパレータの幅変更になりますけど。
また、目的のアドレスバーをスパイしてみると、ひとつのバンドにコンボボックスとツールバーを入れているようでした。
それを行うメッセージなりAPIがあるんでしょうか。

418 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 13:01:43 ]
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/rebar/rebar.asp

419 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 13:05:33 ]
1つのバンドは1つのウィンドウしか占有できないから、
適当な子ウィンドウをバンドに置いて、その子としてコンボボックスなりツールバーなり置けばいい。

420 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 14:25:52 ]
>>416
うちのPC音でないから起動音のタイミングはわからないけど
サービスにすればスタートアップよりはやい

2は一番安直なのが常駐させてWindows終了時のメッセージ(忘れた
を捕捉する方法かな
サービスにしても常駐になるし

vectorとかに行けば終了時の処理を登録できるものぐらいあると思うからそれ使うのも楽かもね



421 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 14:57:22 ]
>>416
1・HKLM\Software\Microsoft\Windows\CurrentVersion\Runはどうだい
2・Windowsはシャットダウンする手前に全トップレベルウィンドウに対して
 WM_QUERYENDSESSIONを投げるからそれを受け取って処理してみたらどうだい。
 ちなみにWM_QUERYENDSESSIONに対してTRUEを返せばシャットダウンを許容、
 FALSEを返せばシャットダウンを禁止(シャットダウン自体が中止される)する。
 一つでもウィンドウがFALSEを返せばシャットダウンは中断される。

422 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 17:39:02 ]
終了時に保存等の処理をしたいならWM_QUERYENDSESSIONよりも、
WM_ENDSESSIONだと思うけど。

423 名前:デフォルトの名無しさん [2007/03/03(土) 18:26:48 ]
WNDCLASSとWNDCLASSEX
CreateWindowとCreateWidnowEx
どこがどう違うのか教えてください。

424 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 18:29:02 ]
指定できるのが増えてる

425 名前:デフォルトの名無しさん [2007/03/03(土) 19:19:06 ]
なるほど、だからExですか。なんつってww


426 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 19:50:01 ]
>>423
WNDCLASSEXの方はcbSize,hIconSmメンバが追加されている。
cbSizeが追加されたことにより、
構造体の拡張も視野に入っているかもね。
>>196-198,200-204を参照
あと、hIconSmはスモールアイコンを指す。

メンバはWNDCLASS構造体に重複部分があるから、
RegisterClass関数は内部で、RegisterClassEx関数を呼んでいるかも。



427 名前:デフォルトの名無しさん [2007/03/03(土) 20:05:30 ]
GetWriteWatch って、SDK に
Windows NT/2000:対応していません
って書いてありますが、本当は使えるんですか?


428 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 20:25:23 ]
>>427
1にああ書いてあるとおり、英語版を見てみろ。
msdn2.microsoft.com/en-us/library/aa366573.aspx
Requirements
Client Requires Windows Vista, Windows XP, Windows Me, or Windows 98. 
Server Requires Windows Server "Longhorn" or Windows Server 2003. 


429 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 20:44:21 ]
情報ありがとう。そうか、対応していないんだね。残念だなー。

430 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 21:30:11 ]
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄




431 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 22:15:42 ]
>>422
WM_ENDSESSIONだとタイムアウトで強制的に打ち切られるから
保存しようとしているデータの性質によっては怖くて使えない

432 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 22:16:12 ]
質問です。XP、VS2005 で Win32 アプリを作成しています。
ピクチャコントロールにスクロールバーをつけたのですが、うまく動作しません。

LONG_PTR style;
style = GetWindowLongPtr(hWnd, GWL_STYLE);
SetWindowLongPtr(hWnd, GWL_STYLE, style | WS_VSCROLL | WS_HSCROLL);

SCROLLINFO info;
info.cbSize = sizeof(LPSCROLLINFO);
info.fMask = SIF_RANGE | SIF_PAGE;
info.nMin = 0;
info.nMax = 9;
info.nPage = 3;
SetScrollInfo(hWnd, SB_HORZ, &info, TRUE);

hWnd はピクチャコントロールのハンドルです。
SetScrollInfo は正常に動作し、期待通りのスクロールバーが表示されるのですが、それだけで、
まるで無効になっているかのようにマウスでつかむこともできず、WM_VSCROLL も WM_HSCROLL も来ません。
(Spy++ でも確認しました。)

原因が全くつかめません、何か手がかりはないでしょうか…。


433 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 22:51:28 ]
>>432
ピクチャコントロールの親でメッセージ受けようとしてないか?

434 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 22:54:12 ]
>>432
誤:info.cbSize = sizeof(LPSCROLLINFO);
正:info.cbSize = sizeof(SCROLLINFO);
>SetScrollInfo は正常に動作
エラー返してないかい?


435 名前:デフォルトの名無しさん [2007/03/03(土) 23:02:12 ]
XPって C:\Documents and Settings\"ユーザ名"
のフォルダ選択して、
右クリック → 共有とセキュリティ → 共有(タブ)
で表示させたウインドウで、
□このフォルダをプライベートにする
のON/OFFができますよね?
このON/OFF操作で行われる処理をコマンドラインで
自動的にやる方法知りませんか?(例えばWIM32APIとか)
cacls.exe だとできないみたいだし、
いろいろ他の方法当たったけど、見つからんです。。


436 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 23:10:31 ]
>>434
>LPSCROLLINFO
うわぁぁぁぁ

エラー返してましたorz ありがとうございます!

437 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 23:16:08 ]
>>435
SetNamedSecurityInfo()


438 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 00:07:51 ]
WindowsMobile向けの関数一覧って無いですかね。使えるのと使えないのとあってよくわからんです。

439 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 09:15:54 ]
Windowsサービスを登録するAPIってないですか

440 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 09:20:17 ]
CreateService



441 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 11:46:18 ]
Win64って特に意識しなくてもアドレス幅が64bitになるの?
intとかvoidとか64bitで、mallocで4GB以上の連続した
領域が確保されるの?

単なる興味本位な質問ですが、良かったら教えて。

442 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 11:52:46 ]
Win64はLLP64

443 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 11:56:29 ]
互換性を考えて int は 32bit だったはず

444 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 12:25:44 ]
Win32 longlong→64bit、long→32bit、int→32bit
だったのが
Win64 long→64bit、int→32bit

になったんじゃなかったっけ?
longlongはどうなったか覚えてないけど

445 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 12:28:57 ]
>442-444 ありがとう
LLP64でググったらよく分かった
64bit環境でも色々有るんだねUNIX系とクロス開発は大変そう

俺は関係ないけど。

446 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 12:31:58 ]
>>445
ほんとC言語って移植性ねーな

447 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 12:32:48 ]
どうして適当なこと言う奴が後を絶たないのか

448 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 12:39:03 ]
.NETとかjavaみたいに分厚いフレームワークじゃないからなぁ
うっとうしいっちゃ鬱陶しいな

449 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 21:46:02 ]
>>446
MISRA-C,SECとか見てるけど、
移植性ねーっていうけど、C言語自体はそれほど閉鎖的じゃない。

視野が狭いPGが多いだけであって・・・

450 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 21:47:19 ]
446のようなバカが多くて困る。



451 名前:446 mailto:sage [2007/03/04(日) 21:50:43 ]
そろそろカチンときそうです。

452 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:07:37 ]
まったくだ。
色んな環境を熟知していて
頭のいいやつが細かいことにも様々な工夫を凝らせば
C言語は移植性が高いんだよ。

453 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:12:30 ]
ifdefとtypedefの嵐で万事解決です

454 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:16:25 ]
ifndefってなんて読むの?
イフンデフ?

455 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:31:59 ]
タスクマネージャに表示されるような個々のプロセスのCPU使用率や
メモリ使用量を取得したいが、そんな関数あります?

456 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:34:07 ]
はい

457 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:56:05 ]
>449
C言語はそれほど閉鎖的じゃないけど
プログラマーはかなり閉鎖的だね

458 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 23:25:38 ]
ありがと。Pdh系API使ってやります。

459 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 23:33:54 ]
というかあらゆる処理系依存に精通していて
常に気を使うなんてやってられないだろ。
ガンガンに処理系やWin32APIに依存しちゃえよ。

460 名前:デフォルトの名無しさん [2007/03/05(月) 00:23:19 ]
HANDLEにクラスとかのポインタを結び付けれるAPIはありますか?
HWNDに対してのSetPropみたいなAPIを探してます



461 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 00:37:59 ]
>>460
ハッシュテーブルにもっとけばいいだろ。
そんなのAPIに頼ることか?

462 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 00:42:59 ]
>>461
HWNDに対してのSetPropの存在意義を256文字以内で説明せよ

463 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 00:45:24 ]
>>461
SetProp の存在意義を否定してないか?w

464 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 00:51:22 ]
いずれにしても残念ながらHANDLEに対するSetPropのようなものは存在しない。
自前で連想配列でも持っておくしかない。

第一HANDLEと言ってもカーネルハンドルからそうでないものまでいろいろあるし。

465 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 00:52:06 ]
多分無い

どうせハンドルの類の整数値は一意なんだから適当に
mapみたいなデータ構造作っちゃえばいい

466 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:26:41 ]
>>460
ちょっと調べただけなのだがSetTokenInformationがそれっぽい引数の取り方をしてなくもないとおもわれ

467 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:39:41 ]
SetThreadTokenも要チェックや!!

468 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 02:59:43 ]
ウィンドウのサイズが変更されたとき、決まった縦横比で固定されるようにするには
どうすればよいでしょうか?

469 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 03:23:18 ]
計算する

470 名前:468 mailto:sage [2007/03/05(月) 03:28:21 ]
>>469
もちろんそうなんですが、WM_SIZEで変更後のサイズを受け取り、それを基に
SetWindowPosで設定すると、その設定によって再びWM_SIZEが呼び出され続けて
どんどん小さくなる、といった現象が起こります・・・。



471 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 03:28:31 ]
WM_POSCHANGING

472 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 03:30:55 ]
>>470
想像して笑ってしまった。面白いことをやってるな

473 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 03:41:42 ]
そもそも同じ比率になったのにルーチン呼び続けてる仕様が間違ってるんじゃ枚か

474 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 05:39:32 ]
>>470
朝からちょっとワロタ

475 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 07:01:18 ]
萌えるウィンドウだな

476 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 07:02:31 ]
恥ずかしくて段々小さくなるウィンドウ

477 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 07:08:05 ]
>>470
そっからは自分で頑張れ。
これを自力で解決できんようなら、プログラミングなんて他人にやらせとけ。

478 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 07:19:26 ]
>>470
クライアント領域のサイズとウィンドウサイズ混同してないか?
あと計算はWM_GETMINMAXINFOとかWM_SIZINGでやれ

479 名前:468 mailto:sage [2007/03/05(月) 11:23:46 ]
できました!
ありがとうございました!

480 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 11:44:48 ]
そういう微笑ましいバグってなんだか面白い。




481 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 17:05:40 ]
タスクバー上で動く時計を作っていたのですが、
case WM_TIMER :
GetLocalTime(&st);
wsprintf(str,TEXT("%d時%d分%d秒"),st.wHour,st.wMinute,st.wSecond);
SetWindowText(hWnd,str);

これだとちゃんと動くのですが、

case WM_TIMER :
GetLocalTime(&st);
wsprintf(str,TEXT("%d時%d分%d秒"),st.wHour,st.wMinute,st.wSecond);
InvalidateRect(hWnd,NULL,TRUE);
return 0;

WM_PAINT :
・・・
SetWindowText(hWnd,str);

こうWM_PAINTの方で他の文字表示処理と一緒に出力しようと思ったら、
最小化した時、あるいはCreateWindowでウィンドウを画面外に作成した時
などにちゃんとタスクバー上で動作しないのですがなぜでしょうか?


482 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 17:07:30 ]
最小化したり画面の外へ追いやったりしたら、
ウィンドウの中を描画する必要が無いからWM_PAINTは呼ばれない。

483 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 17:11:36 ]
>>482
即レスありがとうございます!><
てっきり描画の必要が無くても自分でInvalidateRectで送れば呼ばれるのかと思ってましたorz

484 名前:デフォルトの名無しさん [2007/03/05(月) 17:15:10 ]
拡張スタイルの WS_EX_LEFTSCROLLBAR についての質問です
同スタイルが動作する環境かを知りたいのです。MSDNで同スタイルは
「ヘブライ語やアラビア語などの読みの方向をサポートしている言語をシェル言語としているシステムで有効です。他の言語では、このスタイルは無視されます。」
と書かれていました
私の環境では同スタイルを定義すると動作するので
GetSystemMetrics関数でSM_MIDEASTENABLEDの引数を指定し戻り値がTRUEになると思っていたのですがFALSEでした

このことからヘブライ語やアラビア語をサポートしているシステムかどうかが取得出来ないので動作する環境かが判断出来ません
又、「他の言語では、このスタイルは無視されます」と書かれているので
動作不可環境では拡張スタイルに定義されていても動作しないようになっているのでしょうか
それとも拡張スタイルから同スタイルが削除されるのでしょうか
後者ならば拡張スタイルの同スタイルの有無を確認したらいいだけなのでサポート云々の話ではなくて簡単なのですが
私の環境では同スタイルが動作しているので確認も取れません
誰か詳しい方宜しくお願いします

485 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 17:32:58 ]
メモ帳で、
ユダヤに対する冒涜かアラーに対する冒涜を記述して、
OSが再起動したら対応している。

486 名前:デフォルトの名無しさん [2007/03/05(月) 19:01:25 ]
ExtractIconExとDestroyIconについて教えてください。
以下のコードを実行し、大体4800回程アイコンハンドルの取得と解放を
繰り返すと、ExtractIconExが失敗するようになってしまいます。
解放の仕方を間違えているのでしょうか。

Dim lngCount As Long
Dim lngIconHandle(0) As Long
Dim lngRet As Long

Do While True
  lngRet = ExtractIconEx(App.Path & "\test.ico", 0, 0, lngIconHandle(0), 1)
  If lngRet <> 1 Then
    Stop
  End If
  lngRet = DestroyIcon(lngIconHandle(0))
  If lngRet = 0 Then
    Stop
  End If
  lngCount = lngCount + 1
Loop


487 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 19:35:01 ]
>>486
ngRet = ExtractIconEx(App.Path & "\test.ico", 0, 0, lngIconHandle(0), 1)

ngRet = ExtractIconEx(App.Path & "\test.ico", 0, 0, lngIconHandle(0), 0)
にしたら

488 名前:486 mailto:sage [2007/03/05(月) 19:53:36 ]
>>487
4800くらいで失敗してしまいます。

ちなみに、アイコンを一個取り出すから
最後の引数に1と書いていたのですが、
0にしてみても普通にアイコンハンドルが取得できました。
ここを0とするとどうなるのでしょうか?




489 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 20:07:19 ]
0でなく1で正しい。第三引数を0にしてるのが悪いんでないか

Dim lngCount As Long
Dim lngIconHandle(1) As Long
Dim lngRet As Long

Do While True
  lngRet = ExtractIconEx(App.Path & "\test.ico", 0, lngIconHandle(1), lngIconHandle(0), 1)
  If lngRet <> 1 Then
    Stop
  End If
  lngRet = DestroyIcon(lngIconHandle(0))
  If lngRet = 0 Then
    Stop
  End If
  lngRet = DestroyIcon(lngIconHandle(1))
  If lngRet = 0 Then
    Stop
  End If
  lngCount = lngCount + 1
Loop

490 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 20:09:39 ]
ExtractIconEx の宣言と DestroyIcon の宣言はどーなってるん?
# DestroyIconの引数が byRef になってて、iconハンドルへのポインタ渡してるんじゃねーの?



491 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 20:14:23 ]
それなら最初のDestoyIconでエラーになるんじゃね?

492 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 20:16:48 ]
シングルスレッドのGUIアプリでGetOpenFileName()を呼び出したところ、
ダイアログの処理用と思われるスレッドが幾つか生成されました。

OpenFileのダイアログを閉じてメインウィンドウに戻ったあと、
メインウィンドウの×を押してWM_DESTROYを発生させ、
WindowProcのWM_DESTROYでPostQuitMessage(0)を呼びました。

メッセージループは正常に終了し、
自動的にExitThreadが呼ばれてスレッドが終了したところまではデバッガで確認できました。

しかし、ダイアログの処理用と思われるスレッドが残っています。
残ってしまう原因にお心当たりある方はいらっしゃいませんか。

493 名前:486 mailto:sage [2007/03/05(月) 20:17:03 ]
>>489
失敗します。
ExtractIconExの戻り値が0になってしまいます。
GetLastErrorの結果も0でした。

>>490
↓の様になっております。
アイコンハンドルの部分は、ExtractIconExの方はByRef、
DestroyIconの方はByValです。

' アイコンハンドルを取得
Private Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" _
(ByVal lpszFile As String, _
ByVal nIconIndex As Long, _
ByRef phiconLarge As Long, _
ByRef phiconSmall As Long, _
ByVal nIcons As Long) As Long

' アイコンハンドルを破棄
Private Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long


ちなみにCで書いてみたら問題なく動いているのでマシンのせいではなさそうです。

494 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 21:24:59 ]
>>492
複数回GetOpenFileNameを呼ぶと、
同じスレッドで処理されているのかな?
流用利用って事で
(前回開いたパス情報等の保持として・・)

・・・内部でCOMを呼んでたりして。

495 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 21:45:56 ]
>>492
たぶん正常な動作 ms謹製のnotepadでもスレッドが残る

496 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 21:51:31 ]
>>495
初めて知った。すごい仕様だな…

497 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 21:58:40 ]
>>494-496
ありがとうございました。
素敵すぎる仕様のようで、諦めて従います・・・・・・

498 名前:494 mailto:sage [2007/03/05(月) 22:10:03 ]
今、メモ帳アタッチしてみたけど、
スレッドは流用してないみたいだなぁ。

499 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 22:29:32 ]
>>493
>ByRef phiconLarge As Long, _
なのに
>lngRet = ExtractIconEx(App.Path & "\test.ico", 0, 0, lngIconHandle(0), 1)
と呼び出してるが、
(BASIC? の仕様次第だけど)リテラルに対する参照渡しはどうなんだろ?
→参照されてる
→一時オブジェクトを作り値代入し、その一時オブジェクトへのポインタを渡す
という動作なら、ラージicon のハンドルが漏れてる


500 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 22:46:27 ]
>>486
失敗したとき、GetLastError()の値は?



501 名前:500 mailto:sage [2007/03/05(月) 22:49:14 ]
>>499
ByRef phiconLarge As Long

phiconLarge As Any

んで、ExtractIconEx(App.Path & "\test.ico", 0, byval 0, lngIconHandle(0), 1)
だっけ?VBは?

502 名前:499 mailto:sage [2007/03/05(月) 22:54:42 ]
>>501
VBにはヌルポ用に vbNull っつーのが存在してる記憶があるが、
そいつの呼び出し側が ByRef 用なのかどうか記憶あいまい。

As Any で 呼び出し時に byval 0 のような明示記法は初見
# っつーても俺は VB 素人に近いのでわからにゃいw

503 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 23:00:39 ]
>>495
APIの質問ではなくスレ違いで申し訳ないんですが、お教えください。
残っているスレッドをどのようにして知ることができるのでしょうか?

現在、以下のようなトラブルで悩んでおります。
発生条件がまだ絞り込めてないのですが、Vistaでexplorerからディレクトリを削除するときに
「他のプロセスで使用中のため削除できません」(みたいな意味の)エラーで削除できない場合が
あります。そのディレクトリは自分のプログラムでOpenFileDialogでファイルを開いたディレクトリ
なのですが、タスクマネージャのプロセスタブで見る限りプログラムは終了しています。
スレッドだけが(問題のディレクトリをカレントにして)いつまでも残っているなんてことがあるのか
疑問なんですが、残っているスレッドが確認できればこれが確認できるかと。

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


504 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 23:04:26 ]
>>499 の心配は>>489 で払拭されてると思われ

>>501
As AnyだとRefかValかを関数引渡し時にByValを指定すればポインタか値かを決められる。ByVal 0& でヌルポインタとなるはず

505 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 23:10:31 ]
>>503
API的な回答じゃなくていいのならProcessExplorerでさっくり見れる

>スレッド
vistaは判らないけど、それ以前のOSのことを考えれば
スレッドは所詮プロセスの枠の中の存在だから独立することはない

506 名前:500 mailto:sage [2007/03/05(月) 23:14:34 ]
>>502
vbNullはVT_NULLで、tagVARIANT型メンバのVARTYPE値ですな。
(vbNullをキャストすると1になる)
SQL等で対応するキャラみたい。
んで、VB側でByRef書いてると、VARTYPE値のVT_BYTEREFが
ORでたっちゃうんかと。

>>As Any で 呼び出し時に byval 0 のような明示記法は初見
CopyMemoryでそれしてるサンプル見たことがあったので・・・


CでDLL作って、Declare評価しねーかなー

507 名前:503 mailto:sage [2007/03/05(月) 23:14:36 ]
>>505
ありがとうございます。

>スレッドは所詮プロセスの枠の中の存在だから独立することはない
のはずですよね・・・・・・・


508 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 23:20:13 ]
>>507
UnLockerで、捕まえてるプロセス名を調べてみ?
ccollomb.free.fr/unlocker/

509 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 23:23:07 ]
>>503
OpenFileDialogでファイル名を取ってきたあと、
何もしない場合でもその症状?

それとも、特定の処理(ファイル読み込みなど)後で、
その症状?

切り離して考えてみ?

510 名前:486 mailto:sage [2007/03/05(月) 23:30:37 ]
>>499-501
解決しました。
どうもありがとうございました。

ラージアイコンの方は、MSDNに「必要ない場合、NULL を指定します。 」と
あったので単純に0としていましたが、仰るとおりだったようです。
VarPtr(0)は0ではないため、どこかに漏れてたようです。

>>501の方法でうまく動きました。また、
ByRef phiconLarge As Long

ByVal phiconLarge As Long
として
ExtractIconEx(App.Path & "\test.ico", 0, 0, lngIconHandle(0), 1)
でもうまく動きました。

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



511 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 23:33:55 ]
>>510
おめ

512 名前:503 mailto:sage [2007/03/05(月) 23:37:33 ]
>>508 >>509
コメントありがとうございます。
現在自宅のため、確認は明日以降になります。


513 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 00:54:29 ]
CNNのアンケートでチョンの反撃が始まって、日本謝罪すべしの票が増えてきてます。
投票まだの方はよろしくお願いします。

それと、このレスをそこらへんのスレにコピペして下さると助かります。
あわせてお願い申し上げます。

edition.cnn.com/2007/WORLD/asiapcf/03/04/japan.sexslaves.ap/index.html
QUICK VOTE
Should Japan apologize again for its World War II military brothels?
(日本は、第二次世界大戦時に軍が運営した売春宿の件で再び謝罪するべきですか。)
もちろん No

514 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 01:36:24 ]
すみません、HANDLEと64bit OSの関係で質問させてください。
HANDLEでCreateEvent()の返戻値を格納しているソースを見ていたのですが、関数の受け渡しの途中でHANDLE32に型が変わっていることに気付きました。
これ、Vista 64bit環境でも無事に動くんでしょうか?

・Vista 64bitでHANDLE32とHANDLEのサイズは同じかどうか
・64bit環境ではHANDLE→HANDLE32への受け渡しは32bitぶん消えてしまう?

という点、どなたかご存じないでしょうか?実際には動いているっぽいのですが、いまいち確証がないのです。
(XPとVistaの64bit環境で同じかどうかも不明です・・・)

515 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 01:42:17 ]
32bitアプリとして動かすならたぶん問題ない
WoWとかいうのが全部面倒みてくれる

516 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 01:58:53 ]
>>515
ありがとうございます。WoWでうまくエミュレートしてくれるんですね。
逆に言うと、64bitアプリ(見ていたのはdllでした)として動いているのであれば、問題が発生しそうだといえますね。

517 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 03:58:06 ]
上のほうにMFCを利用したフルスクリーン描画方法がありますが、MFCは使わず、
Win32apiだけでフルスクリーン(クライアント領域をディスプレイ全体にする?)には
どうすればよいでしょうか?

518 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 04:58:49 ]
>>517
>>176>>189を参考に見たまんまだけど

void ChangeFullscreen(HWND hWnd) {
RECT rect;
GetWindowRect(GetDesktopWindow(), &rect);
SetWindowLong(hWnd, GWL_STYLE, WS_POPUP|WS_VISIBLE);
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, rect.right-rect.left, rect.bottom-rect.top, SWP_SHOWWINDOW);
}

519 名前:517 mailto:sage [2007/03/06(火) 05:20:38 ]
>>518
うおー!
ありがとうございます!
GetDesktopWindow() が肝ですね!

520 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 07:42:09 ]
個人的には、MonitorFromWindow->GetMonitorInfoを推奨したい。



521 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 10:24:54 ]
>>520
だね。メインディスプレイでしかフルスクリーンにできないアプリって嫌い。

522 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 10:52:26 ]
2台もモニター買う金も置くスペースもねーんだよバーカバーカ

523 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 11:05:28 ]
モニタ4台でマルモニしてますが何か?

524 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 11:09:44 ]
>>522
高望みしなけりゃどうにかなるもんだぞ。

525 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 11:14:48 ]
マルチモニターとか利点がわからない

526 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 11:33:32 ]
>>525
フルスクリーンアプリケーションのデバグには良いと思うけど、私には使い道がない。

527 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 11:39:49 ]
片側にアップスキャンコンバーターとビデオ繋いでテレビ見ながらいろいろ出来る

528 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 12:05:34 ]
>>525-526
作業机の面積が広いに越したことはないだろ?
マルチディスプレイもそんな感じ。
マルチディスプレイは便利になるっていうよりは快適になるって感じ。

529 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 12:16:17 ]
>>492
初期化時にCoInitialize()、終了時にCoUninitialize() 呼んでみたらどうかな?

どうもGetOpenFileName()がCOMを使っているらしいぞ。


530 名前:デフォルトの名無しさん [2007/03/06(火) 13:08:26 ]
529
場所誤ると、ハングらないか?



531 名前:517 mailto:sage [2007/03/06(火) 13:57:10 ]
フルスクリーンにする前のウィンドウの位置と大きさを控えておき、フルスクリーンからその
サイズにSetWindowPosで直すと、クライアント領域だけのウィンドウになってしまい
にっちもさっちもいかなくなってしまいます・・・。
どうすれば通常のウィンドウに復帰できるでしょうか?

>>520
参考にします。

532 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 14:00:33 ]
>>531
>>518のコードが何やってるか考えればわかるだろ

533 名前:517 mailto:sage [2007/03/06(火) 14:13:46 ]
>>532
失礼しましたm(_ _)m

534 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 15:24:50 ]
Windows Media Player 10
を使っているのですが、
10用のSDKってもう無くなってるみたいなんですが、
9用のSDKでも大丈夫でしょうか?

11用は落とせるようにはなっていないみたいですが・・・

535 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 15:31:00 ]
COMはSTAのときCoInitializeで初期化したスレッドでメッセージをディスパッチしてやらないとハングするんだっけ

536 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 15:51:11 ]
とあるスレッドでGetMessageしたメッセージを、他のスレッドで Dispatch するのはCOMに限らずダメ。


537 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:06:17 ]
>>415
亀レスすみません。ありがとうございます。
贅沢言ってすみません。

538 名前:503 mailto:sage [2007/03/06(火) 17:24:28 ]
>>505 >>508 >>509
おかげさまで原因が特定できました。>>509の書かれたとおりOpenFileDialog
が原因ではなく、その後の処理に起因するものでした。

結論だけ書くと・・・
消せないディレクトリをカレントにしてconime.exeが動きっぱなしになっているようです。

詳細に書くと・・・・
今回問題となっているプログラム(Prog1.exeとする)は、OpenFileDialogでユ
ーザーが指定したファイルを処理するために、指定したファイルのあるディレ
クトリをカレントにしてProg2.exeをCreateProcessします。Prog2.exeはコン
ソールプログラム(SW_HIDEでDOS窓は表示されず、STARTF_USESTDHANDLESで出
力をパイプ経由でProg1が受け取るのでユーザーに目には触れない)のため、こ
れが起動されたとき、conime.exeが(まだ起動してなければ)起動されます。そ
して、Prog2.exe/Prog1.exe終了後もconime.exeは終了せずに残り、以降に起
動されたコンソールプログラムで使いまわされるようです。
つまり、
(1) ログイン後初めて実行されるコンソールプログラムを親としてconime.exeが起動する。
(2) (1)の親プログラム終了後もconime.exeは終了しない。
(3) 2つめ以降のコンソールプログラムはこのcomime.exeを使用する。
という動作をし、これはXPでもVistaでも同じようです。
Vistaだけで問題が起きたのは、
XP:conime.exeは親に関係なくC:\Windows\System32をカレントにして起動される
Vista:comime.exeは(1)の親のカレントをカレントとして起動され、その後移動しない
の違いがあるためです。
Vista環境でProg1->Prog2が最初のコンソールプログラムの場合、ユーザーの
指定したファイルのディレクトリにconimeが居座るためこのディレクトリが削
除できなくなっているわけです。

「Vistaの問題だ!」と言いたいところだが、さてどう対策したものか・・・・・・
Prog1起動時に、C:\でもカレントにしてダミーのコンソールプログラムを動かしとくかなあ(涙)


539 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 17:42:11 ]
>>538
私見だけど;
GUIアプリではカレントディレクトリを常に当たり障りのないトコに設定しとくべき。
OpenFileDialog 等、カレントディレクトリが移動されそうな処理の後には再設定も行う。

これを怠ると「なぜこのフォルダが消せない!」ということが頻発するから。

540 名前:503 mailto:sage [2007/03/06(火) 18:01:19 ]
>>539
コメントありがとうございます。
Prog2がコンソール(CUI)アプリといところが味噌でして・・・・

(これを書くと関係者が見てたら身元がバレそうだが)
実は上記のProg2は(組み込みマイコン用のクロス)コンパイラであり、処理するファイルは
ソースファイルなんです。
#include 等を適切に処理するために、カレントをそれなりの場所にして起動する必要があります。




541 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:24:15 ]
なるほど。
ダミーで cmd /c exitとか動かしておくしか手が無さそうですね。

KBの↓なんかもひどい解決方法・・・
support.microsoft.com/kb/903204/en-us


542 名前:503 mailto:sage [2007/03/06(火) 18:33:45 ]
>>541
>support.microsoft.com/kb/903204/en-us
思わず爆笑。


543 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 18:59:41 ]
なんだかよくわからないけど
Prog2のカレントディレクトリをC:\とかにして起動して
起動後にカレントディレクトリ変えるんじゃだめなのか?
全然見当違いなこと言ってたらすまん

544 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:03:00 ]
なるほど。
バッチファイルを挟むという手はあるな。

・・・俺は馬鹿か

545 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:20:27 ]
試してないけど、conime.exeを先に起動しとくとかは?

546 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:46:01 ]
それが541の解決法

547 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 19:51:42 ]
>>540
CreateProcessって子プロセスのカレントディレクトリをパラメータで指定できたから
親のカレントディレクトリを移動する必要はないんじゃない?
>>545
それが>>541

548 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 20:01:24 BE:124224588-2BP(222)]
>>545
それが
>support.microsoft.com/kb/903204/en-us
だろ。

日本語版見たらもっとひでーw
support.microsoft.com/kb/899153/ja

549 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 20:10:34 ]
>>503
CreateProcessでProg2を起動しているんだったら
CREATE_NO_WINDOWフラグを入れるのは?

あとは、終了時にWM_CLOSEをconime.exeに投げたり
conime.exeをkillする手もある。

550 名前:503 mailto:sage [2007/03/06(火) 20:45:07 ]
>>543-549
コメントありがとうございます。
(直接APIの事でないのに、こんなに盛り上がっていいのか・・・・)

Prog2は他社製のため手を入れられませんが、>>544の書かれているように
間にバッチなりコンソールアプリなりを挟んでそこでC:\→目的のディレクトリ
を行うのはいい方法ですね。
>>538の最後に書いたのも、>>541>>544もconime.exeを予め問題の無いディレクトリで
起動しとくという点では同じ考えで、あとはどれが一番美しいかですね。検討してみます。

>>547
CreateProcessでの子プロセスのカレント指定は既に使用しています。
(conime.exeが影響されるのは子プロセスのカレント)
親のカレントもファイルを選択した時点で同じディレクトリに移動させていますが、
逆に親が動いている間はそのディレクトリを消されたくないので、(消極的な方法ではあり
ますが)そのようにしています。

>>548
>support.microsoft.com/kb/899153/ja
もっと大爆笑!

>>549
>CREATE_NO_WINDOWフラグを入れるのは?
で、conime.exeが起動されなければ一番よさそうですね。試してみます。

>あとは、終了時にWM_CLOSEをconime.exeに投げたり
>conime.exeをkillする手もある。
実際にProcessExplorerからconime.exeをKillしてみると(当然のことながら)ディレクトリ
を削除できるようになりました。ただ前にも書いたように一つのconime.exeが全ての
コンソールアプリで使いまわされているようなので、この時に他のコンソールアプリが
動いている可能性を考えると、この手は使えません。




551 名前:503 mailto:sage [2007/03/06(火) 21:44:28 ]
>>549
>>CREATE_NO_WINDOWフラグを入れるのは?
>で、conime.exeが起動されなければ一番よさそうですね。試してみます。

とりあえずXP環境で確認したところ、CREATE_NO_WINDOWでconime.exeは起動されなくなるようです。
Vistaは明日確認。これでOKなら万事解決!感謝!

このスレに最もふさわしい解決方法ですね。
(言い訳しとくと、このプログラムの初版は1998年。当時CREATE_NO_WINDOWなんて無かった・・・)


552 名前:503 mailto:sage [2007/03/06(火) 22:27:06 ]
余談だが、VisualStudio6のIDEでビルドを行った時もconime.exeが起動され、IDE終了後も残る。
VistaにVS6入れる人なんてほとんどいないと思うが、プロジェクトのディレクトリが
削除できなくなるんだろうなあ。


553 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 22:32:35 ]
DETACHED_PROCESSでもコンソールウィンドウは表示されなくなるが、
CREATE_NO_WINDOWとは何が違うのだろう。(conimeについては未確認。)

554 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 23:15:11 ]
Vista に 6.0 入れてるよ俺…
明日試してみるか orz

555 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 04:58:35 ]
デュアルブートしてるXPにインストールしたVC6のコンパイラだけ借りてる

556 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 09:10:10 ]
コンパイラを使っている方のOSは何

557 名前:503 mailto:sage [2007/03/07(水) 13:36:06 ]
Vista環境で、CREATE_NO_WINDOWによりconime.exeが起動されなくなり、ディレクトリが消せなく
なる問題が解決することを確認できました。
また、>>538の状況やCREATE_NO_WINDOWでの対策が有効なことは、Vista-x64のWOW64
環境下でも同じであることを確認しました。
万事解決。皆様に感謝。

>>552がデマだったらまずいんで自分でも確認してみたら、やはりVista環境でログイン後の最初に
VS6-IDEからビルドを行ったプロジェクトのディレクトリは削除できなくなりました。


558 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 15:50:15 ]
ポップアップメニューで、特定の項目についてのみ、クリックしてもポップアップが閉じない
(メッセージは送信する)ようにするにはどうすればよいでしょうか?

559 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 17:22:36 ]
>>558
よくある感じだと [OK] [APPLY] [CANCEL] の [APPLY] ってこと?

560 名前:558 mailto:sage [2007/03/07(水) 17:27:10 ]
>>559
そうです!
あの感じです!



561 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 17:38:14 ]
>>560
メインウインドウに PostMessage するのはダメ?

562 名前:558 mailto:sage [2007/03/07(水) 17:58:15 ]
>>561
それは具体的にはどういうことでしょうか??

563 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 18:04:11 ]
「MFS_CHECKED になりえるメニューアイテムがあって、開きっぱなしのままトグル動作したい」

POPUP しなおす / POPUPメニューを止めて、ダイアログで実装

すきなのえらべ

564 名前:558 mailto:sage [2007/03/07(水) 18:17:16 ]
>>563
やはりその二つですか〜。
ありがとうございました!

565 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 00:13:13 ]
CreateProcessのCREATE_NO_WINDOWフラグって
VC7でないと使えない?
MSDNの2000年版にすらそのフラグは存在してないんだが。

566 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 00:14:42 ]
自分で定義すりゃ何ででも使える

567 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 00:15:18 ]
以前は非公開だったってだけだな

568 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 00:15:31 ]
そっか
逆にOSは2000以上限定ですかね?

569 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 00:29:18 ]
9xだって動くんだい

570 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 00:34:34 ]
>>565
なるべく新しいPlatform SDKを入れてみろ



571 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 00:41:56 ]
VC6なら、ほどほどに新しいもの(2003febだったか)を
入手する必要があるぞ(w

572 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 07:21:54 ]
>>565
VC6 SP6でもちゃんとwinbase.hで定義されてるし、VC6用最終のMSDN Oct.2001には載ってる。
Win9xも対象にしたいならDETACHED_PROCESSでも使え。
(CREATE_NO_WINDOWと何が違うのかは知らんが。)

573 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 08:11:37 ]
リダイレクタ作った時、CREATE_NO_WINDOWを指定したら、
コンソール窓が開かなくなったが・・

憶測だけど。

574 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 11:01:47 ]
質問があります。

とあるファイルパスが、
ショートファイルネーム形式か、
ロングファイルネーム形式かを判定する関数ってありますか?
あれば、関数名を教えていただきたいです。

もしなければ、皆様はどのようにして判定しているのでしょうか?
(~を検索?)

575 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 11:08:01 ]
>>574
GetFullPathName
GetShortPathName

576 名前:574 mailto:sage [2007/03/08(木) 11:58:35 ]
>>575
この2種の組み合わせで検討してみます。
ありがとうございます。

577 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 17:31:27 ]
タイマーの調子が悪いんですが
SetTimerとKillTimerを繰り返していたら処理落ちするとかありますか?

578 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 17:33:38 ]
>>577
ソースあげ

579 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 17:47:43 ]
>>578
pはsageです。
ttp://www.uploda.org/uporg721879.zip.html

580 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:15:54 ]
Windowsは知らんのだけど、これってタイムアウト前に再度SetTimer()したらどうなるんだ?
なんとなく、一度目のタイムアウトで二度目のタイマーまでKillしてしまうような気がするのだが。
#つーか、毎回毎回KillTimer()しないといけないもんなのか?



581 名前:579 mailto:sage [2007/03/08(木) 18:25:10 ]
>>580
じゃあKillするに相応しいメッセージはなんなんだろう。

582 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:29:49 ]
そもそも何を持って処理落ちしてると判断したんだ

583 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:32:25 ]
あと、SetTimer時の戻り値を保存しておいてそれを使ってKillして
その変数をタイマーの有無に使えば2重に作ったり消したりは防げないか

584 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:37:18 ]
SetTimerとKillTimerでタイミングを制御していること自体が「処理落ち」の原因だと思うけど。

585 名前:579 mailto:sage [2007/03/08(木) 18:40:03 ]
根本から間違ってたわけですか。
タイマーってかなりメモリ使いそうだからいちいちKillしてた。
そこに原因があったのかもしれません。
ありがとうございます。

586 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:40:40 ]
Userメッセージ使ってもいいしな。
しかし、InvalidateRect使っててUpdateWindowしてないからな気もするな

587 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:40:55 ]
>>580
タイムアウトまでに再度SetTimerしたら
そのタイマが既存のタイマに取って代わる。
その場合既存のタイマのタイムアウトが経過してもメッセージは流れない。

588 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:46:57 ]
>>585
SetTimerは確かにユーザーオブジェクトとしてはかなりリソースを使う方だし
そもそもコールバック使わない場合、WM_TIMER自体のメッセージ優先度が低いから
精度もかなり酷い(スレッドのメッセージ処理が空いた時にしか投げられない)。
ソース見てないから適当な事言うけどウェイタブルタイマに置き換える事は出来ないの?

589 名前:579 mailto:sage [2007/03/08(木) 19:07:05 ]
MouseMoveに詰め込みすぎたかもしれません。
60行近くあったんだけど、
消したら割りとスムース。

>>586
それも忘れてました

>>588
ウェルタ・・・難しそうだ。

590 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 19:12:42 ]
>>588
SetTimerはコールバック使っても一緒だよ。

>>577
「調子が悪い」なんて抽象的に言われても分からん。
質問するときは、もっと詳しく書かないと駄目。



591 名前:579 mailto:sage [2007/03/08(木) 19:18:17 ]
>>590
サーセン。ありがとうございました。

592 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 19:19:52 ]
ちょっとソース見てみたけど、WM_MOUSEMOVEでInvalidateRectしてるのが
いけないんじゃない?

593 名前:デフォルトの名無しさん [2007/03/08(木) 19:55:01 ]
Windows Mobile 5.0向けのアプリケーションを作っています。
HTTPサーバ上にあるXMLを読み込みたいのですが、
XMLHTTPあたりを使えばできますか?

594 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 20:00:05 ]
ソケット生成、データ受信、構文解析で出来る。

595 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 20:00:34 ]
>>577のソース見てみようと思ったら消してやがる・・・

>>593
これ使えばいいかなって思うのがあるならまずやってみれ

596 名前:579 mailto:sage [2007/03/08(木) 20:09:11 ]
>>592
それだ!THX!595悪いね。恥ずかしいから

597 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 20:17:20 ]
じゃ、代わりに上げておくか。

598 名前:579 mailto:sage [2007/03/08(木) 20:42:02 ]
その流れ秋田

599 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 22:58:08 ]
cmdから叩けばprintfでコンソールに値を出せて、
ダブルクリックで起動したらウインドウ無しで常駐できるアプリは作れますか?

WinMainで作るとコンソール出せなくてダメで、
コンソールアプリとして作るとどうしてもウインドウがでちゃうの

600 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:40:09 ]
AttachConsole?



601 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:45:30 ]
たしかwinアプリでコンソールに出力するなら、AllocConsoleのあと、
freopenでstdoutを"$COUT"で開き直すんだったはず

でも起動方法で分岐するとなると分からん

602 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:49:52 ]
STARTUPINFOとか臭いな と調べもせずにいってみる
あと親プロセスがコンソールか否かを調べるとか

603 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:58:34 ]
試しにぐぐってみたらこんな記事が
is3000nx.seesaa.net/article/24649854.html

604 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:31:49 ]
karinto.mine.nu/ulink/uploader/download/1173367827.zip
試しに作ってみた。

605 名前:デフォルトの名無しさん [2007/03/09(金) 06:11:21 ]
ウィンドウクラスについて質問なのですが、
ローカルウィンドウクラスを登録する場合、
他のプロセスですでに登録されているウィンドウクラスの名前を使っても問題ないのですよね?

606 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 06:26:44 ]
問題ない

607 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 08:14:55 ]
>>599
パイプ作って、STARTUPINFOについないで、
CreateProcess

608 名前:デフォルトの名無しさん [2007/03/09(金) 13:29:28 ]
色々と調べた(実行、検索)のですがわからないので、どなたかお教え願います。

プラットフォーム:VB6
質問に関係するAPI名:SetMenuItemBitmaps
作業内容:メニューにアイコンを表示する

アイコン表示そのものはうまくいっています。
しかし、アイコンのサイズが16x16のBitmapなのに対して
メニューの各項目の表示幅が12程度しかないため、
Bitmapが全て表示されない(左上を基点として、半分程しか表示されていない)と
いう状態に陥っています。
設定後、DrawMenuBarで更新してみましたがそのままでした。

質問は以下の通りです。
 ・メニューの各項目の縦幅を任意に変更できるか?(ChangeMenu、ModifyMenuでは無理のようですね…)
 ・Bitmapのサイズに合わせて、メニューをうまく表示させる方法は?

以上、どなたかお教え願います。引き続きあれこれやっていくつもりなので、もし自己解決しましたら
その時点ですぐにこちらに解決したことを報告いたします。

609 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 13:31:59 ]
>>599
winアプリで作って、コンソールからは、
winアプリ|more
で使うしか方法はないんちゃうか
GetStdHandleで判定

610 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 13:40:29 ]
そもそもダブルクリック起動かどうかなんて判定取れない



611 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 14:31:49 ]
>>608
標準のWindowsの設定ではメニューの縦幅は16pxのアイコンがきっちり入るから
12pxってのは設定いじった結果なのか、よくわからないけど、
オーナードローでメニューをイチから描画するのが、
一番自由度は高くて、メニューの高さも幅もアイコンも全部自由に管理できる

612 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 14:33:47 ]
なんか読点多くて 日本語でおk みたいな文になったな
とりあえずいいたいことは オーナードローメニュー でググレば目的は達せられると思う、と


613 名前:デフォルトの名無しさん [2007/03/09(金) 15:41:12 ]
>>611-612
プログラマとしての適性なさそうです。
学生ならプログラマになるの止めましょう、もし、いまプログラマなら転職をすすめます。



614 名前:608 mailto:sage [2007/03/09(金) 15:46:11 ]
原因は別のような気がします。
SetMenuItemBitmaps のサンプルを幾つかダウンロードし(ソース付きのやつね)
実行してみたものの、3種類試しましたがいずれもアイコンが全て表示されません。
(13x13のアイコンなのに8x8サイズぐらいしか表示されない)

WinXP SP2、VB6 SP5、それ以外に思いつくのは・・・IE7をインストールしたことでも
関係するのかなあ?

VPC上での動作と比較してみます。

615 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 15:51:40 ]
プログラマになりたいんですけどどうすればいいですか?

616 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 15:55:42 ]
先ずは層化学会に入信しなさい、そうすれば道は開かれます。

617 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 16:18:12 ]
>>616
そうか?

618 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 16:32:26 ]
>>613
マジか? 俺も創価行ってくるわ

>>608には失礼した
SetMenuItemBitmapsはスモールアイコンじゃなくて
チェックマークイメージの代わりを指定するものだったみたいだな

619 名前:608 mailto:sage [2007/03/09(金) 16:46:50 ]
VPC上(Win2k)でも同じだった…何がまずいんだろう(´・ω・`)

homepage1.nifty.com/MADIA/vb/API/SetMenuItemBitmaps.htm

のサンプルをダウンロードしてそのまま実行、下のような表示になります。
(自分で作ったのも同じ結果)

ud.gs/3010x

「それって○○じゃね?」ってわかる人いらっしゃいますか〜?


620 名前:608 mailto:sage [2007/03/09(金) 16:48:02 ]
しまった ttp にするのを忘れてた・・・後の祭りですが、すみません。



621 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 18:13:14 ]
>>608
cx = GetSystemMetrics(SM_CXMENUCHECK)
cy = GetSystemMetrics(SM_CYMENUCHECK)
Debug.Print "cx = " & cx & vbTab & "cy = " & cy

上記コードを実行したらわかるけど、規定のサイズは11px。

622 名前:608 mailto:sage [2007/03/09(金) 18:35:02 ]
ガ━━━━━━(゚д゚;)━━━━━━ ン!!


>>621さんありがとうございます。
16x16で配布しているサイト多いし、アプリから吸い出しても16x16が多いので
これが基本だと思い込んでた・・・

ふむう、仕方がない。アイコン全部自作すっか・・


基礎知識提供感謝です。


623 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 18:40:52 ]
>>617
kwsk

624 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 22:03:19 ]
SetMenuItemBitmaps って
Vistaだと16x16の32bitアイコン表示してくれるんだよね
微妙にうれしい


625 名前:デフォルトの名無しさん [2007/03/10(土) 08:31:59 ]
Windowsの右下に小さなアイコンが居ますよね?
幾つも居るんだけど使わない時は隠れていたり.
アレってなんて言うんでしょうか?
アレもアプリの一種だというのは判るのですがどうやって作るのでしょうか?

626 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 08:46:59 ]
>>625
タスクトレイ
www.google.co.jp/search?complete=1&hl=ja&q=shellnotifyicon&lr=&aq=t&oq=shellnoti

627 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 09:37:58 ]
すまんAPIというか微妙なんだがブラシとかフォントとかリソースあるよね?
頻繁に使われるものをパフォーマンスのために一時的にキャッシュ(数秒使われなかったら削除など)してみようかと思うんだがこれは許されない行為なんでしょうか?

628 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 09:46:09 ]
いつ削除するかはプログラマの自由だべ。
とはいえ、削除しようとするハンドルが利用されていたらダメだけども。

629 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 09:46:10 ]
別にいいと思うよ。
俺もウィンドウを作ると同時にオブジェクトを作って、
ウィンドウを削除するまで保持しておくとかやるし。

630 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 09:56:03 ]
>>628-629
あり。
プログラミングウィンドウズ本とかですぐに開放しろといってるのは、たまるとほかのアプリのリソースを圧迫するからって話で、適切に管理するならやって大丈夫ということでいいのかな。



631 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 11:56:45 ]
>>630
> プログラミングウィンドウズ
Windows 3.1時代から改訂を繰り返してるから当時のリソース制限を前提に書いてる

632 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 12:09:47 ]
ロジックを複雑にしてリソースを可能なかぎり早く解放するより、多少無駄なリソースを持ってもロジックを単純にするほうが、
今日ではメリットが大きいと思われ。

633 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 12:13:46 ]
検討違いのレスがあるな

634 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 12:34:39 ]
漢字間違いのレスがあるな


635 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 13:57:11 ]
ぬるぽのレスが無いな

636 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 14:12:21 ]
ウインドウのDCをゲットして、スクリーンショットを撮るプログラムを書いてますが、
隠れてたり最小化してるウインドウは不可能ですよね?

637 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 14:16:02 ]
> ですよね?
やってみれ

638 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 14:22:00 ]
>>636
VistaでAero有効ならできる

639 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 14:49:02 ]
>>627
CreateFontでフォントを毎回作成するのと、最初に一度だけ作って使いまわすのを
比較したことがあるけど、毎回作ったときのオーバーヘッドはPentium3でも
0.1ms程度だったから、パフォーマンスのためにキャッシュってのは、
あまり効果がないよ。

640 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 14:55:23 ]
5とか10usみたいなミジンコみたいな小さい時間ならわかるけど、
100usって結構大きくね?



641 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 15:09:49 ]
わずかな時間でもそれを何回も呼ぶとかによって
トータルで速いとか遅いとか感じることが出来るかどうかだ。
微妙なら面倒なことやりたくないが
やってみないとわからないんだよな。

642 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 15:30:06 ]
おでの作ったアプリは起動時に全部読み込んで終了するまで放さないぜ

643 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:14:12 ]
そういうキャッシュに類する行為は実際に動作させてボトルネックに
なっていることがわかってから考慮すれば十分。

644 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:27:17 ]
HWND から実行ファイル名を調べる API があれば教えて下さい

645 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:32:15 ]
ありません

646 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:38:41 ]
TeraPad の外部ツールは HWND から実行ファイル名を特定してるぞ

647 名前:644 mailto:sage [2007/03/10(土) 17:39:22 ]
無いのですか…残念

同一のツールでバージョン違いがいくつかあり、
今起動中のものがどのバージョンのものかを調べる方法が知りたかったのです
(ツールにはバージョン表記がなく、見た目では判別できません)

GetWindowThreadProcessId
GetModuleFileName
とか試してみたのですが、どうにもうまくいかなかったのでここで質問させてもらいました

648 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:42:24 ]
もっとスマートな方法がありそうだけど

GetWindowThreadProcessId
+
OpenProcess
+
GetModuleFileNameEx

649 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:48:26 ]
GetModuleFileNameEx
Windows 95/98:対応していません。

650 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:51:23 ]
>>643 とりあえず今遅いんだよね。
キャッシュでやってみて結果報告するノシ



651 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:54:47 ]
>>647
GetModuleFileNameは自プロセスのモジュールの情報しか得られません。
>>649
CreateToolhelp32Snapshot

652 名前:644 mailto:sage [2007/03/10(土) 18:01:33 ]
>>651
ありがとうございます

CreateToolhelp32Snapshot プロセス 列挙 でググったら

CreateToolhelp32Snapshot
+
Process32First
+
Process32Next

でいけそうです
ありがとうございました

653 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 20:41:28 ]
NT系OSの場合はPSAPIに頼ることになるが、
9xならGetWindowModuleFileName()を使えば一発で取得可能。

support.microsoft.com/kb/228469/ja

654 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 22:58:49 ]
>>653
Win95ではMSAAは別途インストールする必要があるので
GetWindowModuleFileNameの存在を仮定できない。
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnacc/htm/ms_active.asp

655 名前:625 [2007/03/10(土) 23:04:31 ]
626さんありがとう

ちなみにタスクトレイに並ぶアプリってスタートアップに入っていないのも居ますよね?
アレってどっかのレジストリに登録されているんだろうと思っているのですが,あってますでしょうか?
だとすると,それは何処になるのでしょうか?


656 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:06:26 ]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
を見てみると幸せになれるかもしれない
あとたぶん他にもWindowsサービスで動いてるものもあるかと

657 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:11:30 ]
HKLMだけでなくHLCUにも同じのがあったはず

658 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:23:13 ]
え?タスクトレイにアイコンを表示したいんじゃないの?
Shell_NotifyIcon ってことじゃないの。

659 名前:デフォルトの名無しさん [2007/03/11(日) 00:30:50 ]
ペゾルド上巻p.276のコードで意味の無さそうなコードに見える箇所があって
case WM_CREATE:
case WM_DISPLAYCHANGED:
・・・
cLinesMax = cyClientMax / cyChar ;
pmsg = (PMSG) malloc (cLinesMax * sizeof (MSG)) ;
cLines = 0 ;
return 0 ;

case WM_SIZE:
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;

// Calculate scrolling rectangle
rectScroll.left = 0 ;
rectScroll.right = cxClient ;
rectScroll.top = cyChar ;
rectScroll.bottom = cyChar * (cyClient / cyChar) - 1 ;
return 0 ;
のようにWM_SIZEが送られるときはWM_PAINTも送られるからInvalidateRectなどは要らないと思って書き直してみたのですが、
元のコードには何かの意図があったのですか?

660 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 00:34:53 ]
>>659
ウィンドウを再描写させないようにリサイズすることは簡単なんじゃ?



661 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 01:13:03 ]
> WM_SIZEが送られるときはWM_PAINTも送られる
かどうかはクラススタイルに依存する。
ウィンドウ全体の再描画が必要かどうかは書こうとしているものに依存する

662 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 01:41:24 ]
VB6+WinInetを使ってHTTPSを扱うプログラムを書いています。
InternetErrorDlgを使ってユーザに選択させたクライアント証明書を使い続けたいのですが、
作成したコードだとHttpSendRequestを行う度に選択画面が表示されてしまいます。
(一度選択したクライアント証明書を次のHttpSendRequestで使用してくれない)

どなたか原因をご存じの方いませんか?


663 名前:デフォルトの名無しさん [2007/03/11(日) 06:13:41 ]
WM_MOUSEMOVE と WM_NCMOUSEMOVE が逆転して送られてくるのですが
なぜだかわかりません(昨日まで正常だったのですが)。

理由がわかる方教えてください。


664 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 06:24:01 ]
クライアント座標とスクリーン座標の違いがあるのに適当に処理していため、窓の位置を変えたらおかしくなった。
とエスパーしてみる。

665 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 06:33:17 ]
WM_LBUTTONDOWN などはそのままクライアント座標なんですが。


666 名前:663 mailto:sage [2007/03/11(日) 06:42:55 ]
よくわかりませんが正常に戻りました。
m(__)m

667 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 07:36:27 ]
>>657
あるね
スタートメニューで言う、All Usersとカレントユーザーの分けみたいなもんだね


668 名前:デフォルトの名無しさん [2007/03/11(日) 11:45:16 ]
類似曲検索プログラムを作ってくれーーーーーーーーーーーー
なぜかない......
音符か、波に変換して比較すればいいんだ
頼む

669 名前:644 mailto:sage [2007/03/11(日) 11:47:29 ]
>>668
そのような API は存じません

670 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:48:48 ]
短時間FFTでもどうぞ



671 名前:デフォルトの名無しさん [2007/03/11(日) 11:49:20 ]
なんでもいいからMP3とWMAとwavを読み込めて
にた曲を抽出するやつをつくってくれ---------------------

672 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:49:47 ]
>>668
そにーがConnectPlayerで実装済みですが( ´Д`)なにか??

673 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:50:24 ]
マジで造ったら数千万円レベルだろ

674 名前:デフォルトの名無しさん [2007/03/11(日) 11:54:00 ]
>>672
実装済みじゃなくて、ここにexeを貼り付けてクレーーーーーーーー
それ使って類似曲を抽出したい

675 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:55:03 ]
>>668
ttp://www.microsoft.com/japan/msdn/vstudio/express/visualc/
とか
ttp://gcc.gnu.org/
とかどう?

676 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:55:15 ]
そんぐらいぐぐれ

677 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:55:59 ]
もはやありきたりの技術じゃないか。

678 名前:デフォルトの名無しさん [2007/03/11(日) 11:58:58 ]
ありきたりなら、ツールのリンクを貼り付けてクレーーーー
出てこないよ

679 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 12:04:54 ]
スレ違いに貼るリンクは無い

680 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 12:21:01 ]
スレ違いじゃない。
かといって板違いでもない。

そう、気違いだ。



681 名前:デフォルトの名無しさん [2007/03/11(日) 13:03:50 ]
スレッドIDからプロセスIDをしるAPIはありますか?

682 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 13:09:09 ]
直接はない
環境が許すならOpenThread->GetProcessIdOfThreadが一番楽

683 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 13:09:59 ]
ハンドルからならGetProcessIdOfThreadってのがある

684 名前:681 mailto:sage [2007/03/11(日) 13:45:56 ]
最近できたAPIっぽいですね
ありがとうございます


685 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 14:01:51 ]
Requirements
Client Requires Windows Vista.
Server Requires Windows Server "Longhorn" or Windows Server 2003

嫌がらせ以外には使えねえな

686 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:24:25 ]
エクスプローラでマウスの真ん中ボタンを押したら
新しいウインドウで開く
って実現できますかね?
レジストリ登録だけで右クリック⇒新しいウインドウ
はできるんだけぢ

687 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:28:28 ]
>>686
出来るだろうけど、正攻法じゃなさそうだし俺は方法を知らない

688 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:47:02 ]
できたら便利なんだけどなぁ
DLLインジェクションでエクスプローラに寄生するとか
そういう難しいことしないとダメなのかな

689 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 17:09:27 ]
>>684
Vista以前でどうにかしたかったらToolhelp32かPSAPIで列挙して自分で探す

690 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 18:33:33 ]
msdn2またおもくなちゃってる
msdn2かわいいよmsdn2



691 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 19:21:27 ]
なんでwebブラウザに拘るんだろう>msdn online
バカバカしい

692 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 19:25:09 ]
webのmsdnってIEベース以外のブラウザだと表示がgdgdになるからイヤ

693 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 19:32:48 ]
そりゃ自社のサイトなんだから自社製品以外では見れないように嫌がらせするのが当然だろ

694 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 19:45:05 ]
深い階層に行くほど、左のフレームの表示にCPU食いまくって糞重い

695 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 19:46:36 ]
>>692
最近はわりと改善されてる。
一時のスタイルシート切らないと表示すらされないとかメニューがことごとく文字化けとか
まったく話にならないレベルと比べると

696 名前:デフォルトの名無しさん [2007/03/11(日) 19:49:14 ]
>>694
a

697 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 19:49:22 ]
>>693
単純にコストの問題だ馬鹿。
ひとつ対応ブラウザ増やすだけで、どんだけ工数が増えると思ってんだよ。

698 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 19:51:24 ]
0.1%位

699 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:00:41 ]
逆だ馬鹿、わざわざ手間をかけてIE以外では全く読めないようにしてあるんだ
普通に書いたらせいぜいレイアウトが多少変わるくらいでとりあえず読めてしまうだろ

700 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:03:14 ]
>>697
それは何時もどこかで独禁法で争ってるMSですから^^; 

>>695
久々に行ってみたら確かに良くなってた
結局ローカルのほうが軽快なんだけどね



701 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:16:39 ]
>>699
そうじゃないんだよ、馬鹿。
HTMLってちょっとしたことで致命的に非互換なページができるんだよ。
運良くその「ちょっとしたこと」を踏まなきゃそこそこマシなページになるんだが、
あんなごちゃごちゃしたサイトにそれを望むのは酷だ。
てか、おまえ、Web系の仕事したことない素人だろ。

702 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:18:39 ]
そういう事を楽にする技術のひとつがASP.NETだった気がするんだが

703 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:22:12 ]
>>702
楽になる=コストがゼロになる・・・じゃないぞ。

704 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:25:25 ]
こんぐらい殺伐としたやりとりがあると
ああWin32APIスレだなぁって思う。

705 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:43:00 ]
>>701
たとえば致命的に非互換名ページをみせてみ?

706 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:47:34 ]
確かに、非標準の MSIE 独自機能のようなちょっとしたことを踏んでしまうかどうかは
運不運の問題であって、避けようがない災難だから仕方ないな
事実、世の中にあるほぼ全てのウェブページは IE 以外では全く読めないしな
Web系の仕事したことあるプロが言うんだから間違いない

707 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:58:44 ]
Web系の仕事した事ないけど俺のサイトは殆どのブラウザでみれるな

708 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 21:06:50 ]
>>705
致命的という言い過ぎかもしれんが、わんくまとか
Safariでみるとかなり酷いことになるぞ。

709 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 21:27:08 ]
>世の中にあるほぼ全てのウェブページは IE 以外では全く読めないしな
いったいいつの時代の話だ

710 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 21:31:33 ]
"全く"を除けば同意



711 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 21:38:03 ]
>>710
いったいいつの時代の話だ

712 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 21:45:26 ]
まぁ待てよ
マカーかもしらんぜ?

713 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 22:02:57 ]
マカーがWin32 API 質問スレッドとか読んでるのか

714 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 22:07:12 ]
>>713
マカーっていうか、WinとMacを両方持っているヤツなんて別に珍しくないだろ。
俺も、この書き込みはMacからしてるし。

715 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 22:17:23 ]
珍しいわw

716 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 22:22:18 ]
>>714
自分の感覚即ち世の大勢とかいうような思考は慎んだ方がいいぜ
企業の備品ならともかく、個人でWinとMac両方そろえてるなんてごく一部

717 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 22:25:24 ]
>>714じゃないけど……
どちらが事実に近いかは別として(多分君が正しい)、
全く同じ反論が成立することについては自覚してる?

718 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 22:26:32 ]
いや、Winユーザからしたらそりゃマイナーな存在に見えるかもしれんけど、
Winマシンも持ってるMacユーザは普通に居るだろ。

719 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 22:30:27 ]
Macユーザー限定の話ならそりゃそこまで珍しくは無いだろうなぁ
だがMacユーザー限定なんて言ってないしな

720 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 22:31:07 ]
マイナーでも確実にいる



721 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 22:37:56 ]
つまり井戸の蛙か

722 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 22:41:10 ]
使い所を間違ってるな

723 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 22:55:11 ]
今のMacはエミュ無しでWindowsが動くぞ。

724 名前:659 mailto:sage [2007/03/11(日) 23:17:13 ]
>>660-661
ウィンンドウ作成時、WM_CREATEに始まってそれからどんな順番でメッセージが送られるのか記憶が
曖昧だったので混乱しましたが、ありがとうございました。

725 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 08:08:17 ]
おいおい、スレ違いもry

726 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 08:33:56 ]
proxomitronみたいなのでMSDNのフィルタ作れ

727 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 10:57:55 ]
言い出しっぺ頑張れ

728 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 11:23:49 ]
どうしてもローカルに保存する必要がある場合は
わざわざそれ専用のDLプログラム作ったりするけど
MSDNはローカルに持ってるからな
サイトの構成わかってるんだし直リンページ作っとけば済むと思うけど

729 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 14:46:37 ]
そのうちMSDN3がしゃしゃり出てきて、また一つ一つURLを直さないといけない

730 名前:デフォルトの名無しさん [2007/03/12(月) 15:49:18 ]
ちょっと質問。
プログラムの追加と削除に表示されるアイコンてどこに保存されてるの?




731 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 16:04:05 ]
HDD

732 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 16:05:45 ]
ここはやっぱりURNだろ
俺はしらんが

733 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 16:11:54 ]
表示用アイコンの項目で指定された場所にあるはず

734 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 16:14:49 ]
普通はインストールしてあるプログラム

735 名前:デフォルトの名無しさん [2007/03/13(火) 02:58:51 ]
プログラムのアイコン書き換えたらどこなのか簡単に分かると思うけど。

736 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 03:13:44 ]
>>735


737 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 05:13:50 ]
LocalLockしたローカルメモリオブジェクトをLocalUnlockせずにLocalFreeしても大丈夫?

738 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 05:26:09 ]
今はLock、Unlockって機能してるの?

739 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 05:35:47 ]
してない。
LocalLockは二重ポインタ逆参照してるだけだしLocalUnlockは何もしない。

740 名前:デフォルトの名無しさん [2007/03/13(火) 09:07:39 ]
派遣プログラマ、高卒、身長163cmです
この先どうしたらいいですか?



741 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 09:15:58 ]
>>740
激しくスレ違い。というか死んでくれ。

742 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 11:15:20 ]
なんかDVD-RAMドライブでエラーが起こると
勝手にドライバ設定がDMAからPIOになっちゃうみたいなんですけど、
これがいつもコソーリ起こるので
何か
「エラー出たのでPIOにしました」
みたいなメッセージとか出したいような気がするんですが、
何を監視すればいいですか?

743 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 13:15:02 ]
>>742
support.microsoft.com/kb/817472/ja
journal.mycom.co.jp/column/winxp/075/
blog.so-net.ne.jp/haruyuki-m/2005-09-05

恒久的に(再起動後も)影響するのはMasterDeviceTimingModeAllowedあたり。

744 名前:743 mailto:sage [2007/03/13(火) 13:15:34 ]
DVDだとSlaveDevice〜か。

745 名前:742 mailto:sage [2007/03/13(火) 16:24:41 ]
THX!

746 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 18:58:43 ]
GDIよりDIBの方が描画速度が速いですか

747 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 18:59:49 ]
それはアレだな。
車よりガソリンの方が走るのが速いですかと聞いてるようなもんだ。
まともな返事は返ってこないよ。

748 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:05:21 ]
>>747
ワロタ
分かりやすい例えだ

>>746 じゃないけど

749 名前:デフォルトの名無しさん [2007/03/13(火) 19:10:59 ]
ウィンドウメッセージのメッセージIDを「WM_DESTROY」といった名称に変換するにはどうしたらいいですか?

750 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:11:07 ]
.NETよりGDI+の方が(ry



751 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:13:36 ]
>>749
っ #define

でも、複数人で開発する時にこれをしたら吊ってもらう

752 名前:749 mailto:sage [2007/03/13(火) 19:17:50 ]
>>751
そうじゃなくて、受け取ったメッセージを表示するプログラムなんですが
メッセージIDで表示しても、なんのメッセージかわからないんで文字列名称に変換したいんです。

753 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:24:27 ]
>>749
grep "#define WM_" winuser.h | awk 'printf "{%s, \"%s\"}\n", $2, $2'
後は検索できるように構造体およびリスト作成

754 名前:749 mailto:sage [2007/03/13(火) 19:26:38 ]
>>753
結局は手作業で変換するしかないってことでしょうか?
結構誰でも思いつきそうな機能なのでそんなAPIないかな〜と思ったんですが

755 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:32:41 ]
そういうAPIもあるけど教えない。言わない。書かない。

756 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:41:24 ]
どうやら態度が気に入らないと言ってるらしいぞ

757 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:49:22 ]
質問です。

タスクマネージャの様に各プロセスのメモリ使用量やGDIオブジェクトを知りたいのですが
どうやれば良いんですか?

758 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:49:36 ]
今から755のご機嫌をとるスレになります

759 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:53:06 ]
>755のご機嫌を取るAPI教えてください

760 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:56:10 ]
TerminateProcess



761 名前:749 mailto:sage [2007/03/13(火) 20:01:37 ]
自己解決しました。
>>755にカチンときたので教えません。
バーカ!

762 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 20:02:50 ]
>>758
流れ読むの面倒くさいから聞いちゃう。
>>755は何に対して発言しているのですか?

763 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 20:11:25 ]
>>753
文字列化演算子でいいんじゃね? スレ違いだけど

764 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:16:06 ]
ファイルパスとして妥当であるかを調べるAPIってありませんか?

765 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:26:33 ]
PathGetCharTypeでぐるぐる回す?

766 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:45:59 ]
Vista時代になったらDirect3Dとかも覚えないと
もうWindowsプログラマとして食べていけないんだろうか
GDIは全部エミュレーションになって激遅らしいじゃん
既存のGUI業務アプリの全Direct3D化なんて言われたら
自殺するしかない

767 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:46:47 ]
糞ビスタ

768 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:48:20 ]
きっと適当なラッパーが登場して万事おk

769 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:50:26 ]
CUIアプリしか作らない俺には縁のない話だぜ

770 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:52:33 ]
>>766
それほど深刻じゃないみたいよ。
ヒマみて.NET Framework 3.0にでも手をだすたら?



771 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:54:49 ]
>>766
www.microsoft.com/japan/msdn/windowsvista/top10/

こっからしらべていってみ

772 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 21:58:19 ]
WPFとXNAの相性が悪すぎるのがなぁ・・・

773 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 22:03:20 ]
WinFXの話題があがったから、ここの住民に聞くけど。
Microsoft Expressionって、元はクリーチャハウスのアレなのか?

こいつが、Flashキラー?
どんな経緯なんだよ!!

774 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 22:46:43 ]
パフォーマンスチューニングなんて飾りです
顧客には#ifdef切り替えてるだけなのが判らんのですよ

775 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 22:47:19 ]
ごばく だぜ

776 名前:デフォルトの名無しさん [2007/03/14(水) 00:20:27 ]
低レベルな質問で申し訳ありませんが・・・
CreateWindowEx でウィンドウ表示をするとき、HINSTANCEで本物を渡すのをズボラして
NULLを渡しても問題ないんでしょうか?

HINSTANCEは、関数が要求するときに渡すためだけにある数合わせ程度の引数でしかない、
とそういう認識をしているのですが(本当はアプリを区別するためみたいだけど)
試しにCreateWindowExでNULLを入れてみたらウィンドウ自体はちゃんと出てしまったものですから
デフォルト値としてゼロを与えるようなコードを書いちゃってもいいものかと悩んでしまいまして・・・

777 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:26:24 ]
>>776
問題ありです
悩む暇があったら
HANDLE GetCurrentProcess(VOID)
を使って下さい

778 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:27:35 ]
わかりました。ありがとうございます

779 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:29:55 ]
え?なんでGetCurrentProcessなわけ?

780 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:36:16 ]
hInstance
Windows 95/98:ウィンドウに関連付けられたモジュールのインスタンスハンドルを指定します。
Windows NT/2000:このパラメータは無視されます。





781 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:41:16 ]
>>779
楽だから

782 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:48:06 ]
俺はGetWindowLong派

783 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:48:55 ]
むしろstatic HINSTANCE hInstanceとLPCREATESTRUCTでだなwwwwww

784 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:49:48 ]
>>782
ニワトリが先か卵が先かってやつだなw

785 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:52:26 ]
オレの場合、どっかのサンプルコードにあった
GetModuleHandle
使ってるけど、これってまずい?

786 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:52:42 ]
楽だからってプロセスハンドル渡すのはどうなのか

787 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:53:32 ]
プロセスハンドルとインスタンスハンドルってまったく別アドレスに格納されてるんじゃ枚か?

788 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:57:01 ]
int main(){
printf("%x\n", GetCurrentProcess());
printf("%x\n", GetModuleHandle(NULL));
}

ffffffff
400000

789 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:57:45 ]
>>777 は間違ってるよね?
GetModuleHandle に NULL 渡すのがいいよね?

790 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 01:58:18 ]
LoadIcon で試してみた
GetCurrentProcess() 失敗
GetModuleHandle(NULL) 成功

引数が無視される場合は関係ないが
どっちにしても GetModuleHandle(NULL)
にしておけば問題ないと思った



791 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 01:59:30 ]
GetCurrentProcessとGetCurrentThreadが返すのは擬似ハンドルだよ。

792 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 02:22:09 ]
そもそもいまごろ9xまでサポートしなければならないのか?

793 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 05:03:01 ]
業務用アプリなら仕方がないのかもね
個人向けなら普通に切り捨てるけど、
そもそもサポートが打ち切られた9xが入ったPCを
ネットに繋げてるだけでもはや公害だし

794 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 05:14:36 ]
しばらく前に、中小企業のエンドユーザのとこに行ったら
9Xが現役で動いていて、自分がずーと前に携わったPGの
ショートカット(その会社とは無関係な製品)がデスクトップ
に張ってあって、涙が出そうになったことある。

795 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 08:19:34 ]
>>794
会社の導入コスト/教育費...etcの償却やいろいろあるからねー
手間ではあるし。

796 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 08:27:51 ]
>>785
それは問題ない。Win32のモジュールハンドルとインスタンスハンドルは等価。
普通はWinMainのあの引数にもGetModuleHandle(0)の戻り値が渡されている。

797 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 08:44:16 ]
>>796
素でしらんかった

798 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 08:46:53 ]
ってことは、わざわざグローバルとかに hInst って置かなくても
常に GetModuleHandle(NULL) 呼び出しとけばおk?
まさかそんなとこが、クリティカルにパフォーマンス落とすこともないだろうし

799 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 08:51:23 ]
DLLを作る場合に問題が出る。

800 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 08:59:15 ]
あー全くその通りでした
ありがとうございます



801 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 09:11:56 ]
>>794
今年に入って、Win3.1上で動いてるAccessアプリのメンテをする羽目になったぞ。
データを持ち帰ろうとして、ファイルのコピーのやりかたを思い出せず、お客さんに教えてもらったぞ。

802 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:05:12 ]
>>801
vm 上で動作してるんなら別だけど
Win3.1 のデータを持って帰るのって大変そう…

フロッピーだったりしてね

803 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:53:36 ]
>>802
用紙とかw

804 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:55:58 ]
ファイルのコピーって紙のファイルだったのかーーー!!!

805 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:58:47 ]
プログラムマネージャーはエクスプローラーみたいに見えて
ランチャーでしかないからな
ファイルマネージャーを起動しなくちゃw

806 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 19:37:53 ]
DOS窓叩いた方が早いな

807 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 19:46:37 ]
そしてlsと叩いてエラーが返ってくる

808 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 20:09:49 ]
お前らいくらなんでもバカにしすぎだwww

809 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 20:58:37 ]
Visual C++ 2005 Express Edition ダウソしたんですが、
templete.obj : error LNK2001: 外部シンボル "__imp__DefWindowProcW@16" は未解決です。
WinAPI使おうとするとエラーが出ます。何でですか?

810 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 21:02:17 ]
Platform SDKかWindows SDK入れろ。
その上でリンカにuser32.libを読み込ませろ。



811 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 21:06:59 ]
>>809がMSの手順どおりのセットアップしてないから
www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/

今回のみ当座の問題として解決するなら
#pragma comment(lib, "user32.libウンコ")
をソースに

812 名前:デフォルトの名無しさん [2007/03/15(木) 00:53:43 ]
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3750.txt
上の打ち込んだソース中で、WndProc中のWM_SETFOCUSの処理でSetFocus関数によってidFocusのIDを持つウィンドウにフォーカスが移るから
WM_SETFOCUSは二度と送られないと思ったのですが、MessageBoxのあるところにブレークポイントを置くと半永久的にメッセージが送られ続けるのですが、何故ですか?

813 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:21:51 ]
ブレークポイントでストップしたときにアクティブになるウィンドウは何かね。

814 名前: ◆ohD6m3l5jg [2007/03/15(木) 01:51:56 ]
すみませんWindows板から誘導されてきました。

動的リンクの実装について答えられる方に質問です。

バカみたいな疑問で恐縮ですが、あるDLLが、同じDLL内にある関数(もちろんEXPORTED)を呼ぶ時
LoadLiblary + GetProcAddress を使ったとします(そんな必然性はない事は承知)。

こういうバカコードを実行したら、Windowsは内部的な動作としては、
指定のDLLは(呼び側自身であるわけで)既にロード済みだから、LoadLiblaryは何もせず、
ハンドルだけ返し、GetProcAddressは おとなしく目的の関数のポインタ返してくれるだけで、
ロードのオーバヘッドはかからないように実装されてるんでしょうか?

実際動かしてみたのですが、エラーにはなりませんでした。


815 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 02:19:29 ]
>>814
その場合、LoadLibrary はそのDLLのリファレンスカウントをインクリメントする。

816 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 02:22:17 ]
>>814
>LoadLiblaryは何もせず、ハンドルだけ返し
Yes。但し気をつけなきゃいけないのは同一プロセスに既にマッピングされてるDLLをLoadLibrary()しても
参照カウントは増えるのでLoadLibrary()した回数分だけFreeLibrary()しないといけない

>GetProcAddressは おとなしく目的の関数のポインタ返してくれるだけで
>ロードのオーバヘッドはかからないように実装されてるんでしょうか?
こっちはNo。GetProcAddressは自プロセスにマッピングされてるDLLのハンドルから
関数名(あるいは序数)に相当する関数のアドレスをDLLのエクスポートセクションから走査する。
だから単純に関数を呼び出すのとLoadLibrary()+GetProcAddress()を使ったのでは
オーバーヘッドに差が出る。と思う(実際やった事ないので絶対とは言えない)。


817 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 03:33:58 ]
>>816
静的インポートしても
エクスポートセクションの走査がプロセスの起動時間に埋め込まれるだけでっしゃろ?

818 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 04:09:47 ]
>>817
静的にDLLをインポートして、EXEからDLLの関数を呼び出す場合は
もちろん内部でLoadLibraryとGetProcAddress呼んでるけど
>>814が聞きたいのはDLLから自身の関数をGetProcAddress経由で呼んだらって話だと思う。
GetProcAddress経由は>>816の通りだけどDLLから自身の関数を参照する時は
>>814みたいな特殊な事しない限り普通に参照できるものだと思ってる(EXEが自身の関数を参照するのと同じ話)。

あれ、もしかして俺ひどい勘違いしてる?もう寝たほうがいいな。

819 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 04:15:34 ]
> あるDLLが、同じDLL内にある関数(もちろんEXPORTED)を呼ぶ時
って確かに書いてるね
ごめん見逃してた

820 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 08:43:04 ]
814の場合もそうだが、既に読み込まれていることがわかっていて、
一時的にハンドルを使いたい(まだFreeLibraryされないことがわかっている)場合は、
GetModuleHandleが便利。

LoadLibraryだと参照カウントがインクリメントされるが、
GetModuleHandleなら参照カウントはインクリメントされない。





821 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 10:26:02 ]
どうしてオブジェクト指向なwin32apiのプログラムがないですか

822 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 11:02:36 ]
つ【.NET】

823 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 11:27:15 ]
>>815-820の皆さんどうも有難うございました。

824 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 11:27:32 ]
Win32API はオブジェクト指向だ。
オブジェクトはハンドルという形にはなっているけども

825 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 11:48:57 ]
あの長ったらしいハンガリアン記法は何とかなりませんか

826 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:14:40 ]
825を変化させるほうがよほど堅実的だな

827 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:57:19 ]
>>810-811
サンクスです。動きましたー

828 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 18:30:24 ]
環境:WinXP、VisualStudio.NET2005
スクロールバーについて質問です。

editControlHandle_ = CreateWindow(L"EDIT",L""
,WS_CHILD|WS_VSCROLL|WS_VISIBLE|ES_AUTOVSCROLL|ES_MULTILINE|ES_READONLY
,0,0,640,480,WindowHandle(),0,ApplicationInstance(),NULL);

こんな感じでエディットコントロールを作った後

SetWindowText(editControlHandle_, output.c_str());

でそこにテキストを転送しています。
新しいテキストほど下に下に追加されていく、という形にしているので
スクロールバーは常にマックスの状態に保ち、常に一番下の行を表示したいと思っています。

SCROLLINFO si;
ZeroMemory(&si,sizeof(SCROLLINFO));
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_ALL;
GetScrollInfo(editControlHandle_,SB_VERT,&si);
si.nPos = si.nMax;
SetScrollInfo(editControlHandle_,SB_VERT,&si,true);

試しにこのコードで実行してみたところ、スクロールバーは確かに一番下にいくんですが
肝心のエディットコントロールがそれに追随せず、ずっと一番上の行が表示されています。
どこを直せばいいでしょうか・・・

829 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 18:37:22 ]
EM_SETSEL

830 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 20:51:31 ]
ぐぐったり晩飯食べたりしながら悶々としてやっと終わりました

SendMessage(editControlHandle_, EM_SETSEL, MAKELONG(0xffff,0xffff)-1,MAKELONG(0xffff,0xffff));
SendMessage(editControlHandle_, EM_REPLACESEL, -1,(LPARAM)newLog.c_str());
SendMessage(editControlHandle_, EM_REPLACESEL, -1,(LPARAM)L"\r\n");

大半のコードを上の三行に書き換えてやっと解決。ヒントくれた>>829ありがとう



831 名前:デフォルトの名無しさん [2007/03/16(金) 03:10:25 ]
ウィンドウメッセージのパラメータについて質問です。
例えばWM_MOVEメッセージのLParamはシフト演算によってy座標が、
ビット演算によってx座標が取得できます。
なぜこのような演算でxやyの座標が取得できるのでしょうか。
シフト演算やビット演算そのものは分かるのですが、どうしてこのような演算でxやyの値が分かるのでしょうか。
とても初歩的な質問ですが、ご回答願えると幸いです。

832 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 03:15:09 ]
下位16ビットにX座標、上位16ビットにY座標が入ってるから。

下位16ビットが1、それ以外が0をlParamとの論理積で下位16ビットのみを取り出し、
lParamを右に16ビットシフトすれば上位16ビットのみが取り出せる。

833 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 03:21:57 ]
>>831
lparamは32ビットのデータ。
一つの変数に2つのデータ(xy座標)を入れる為に16ビットに区切ってデータを入れてる。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|                                ||                                       |
|←          y座標データ     .      →||←              x座標データ              →|
こんな感じ。

834 名前:デフォルトの名無しさん [2007/03/16(金) 05:11:07 ]
bit演算分かってたらその逆を考えるっていう自然な手順で結論できそうなものだが…
まぁあれだ、慣れみたいなものが必要かもね

835 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 07:30:25 ]
HIWORD(x)
LOWORD(x)
でええやん

836 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 07:35:08 ]
GET_X_LPARAM()とGET_Y_LPARAM()を使わないと、
マイナスの値とか渡ってきたときが痛い目に遭う。

837 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 07:49:14 ]
EDITコントロールやRICHEDITコントロールにペーストできる限界値ってありますか?
OSはWindows XPです。

838 名前:837 mailto:sage [2007/03/16(金) 07:53:56 ]
メモ帳には長い文字列もペーストできるのに、
自前のダイアログのEDITやリッチエディットにはペーストできない・・・

839 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 08:00:50 ]
>>838
エディットは上限を指定出来るじゃん。
CEdit::SetLimitText

840 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 08:04:29 ]
>>839
それはWinAPIじゃない



841 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 08:07:04 ]
ありがとう。

やらないか?

842 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 08:17:35 ]
最大4MBまで

843 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 08:19:03 ]
>>836
いや、ちゃんと動作分かってたら痛い目見ないからw
その2つのマクロも結局LOWORD&HIWORDですよと

844 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 08:38:54 ]
メモ帳はエディットコントロールのメモリを直接いじってるから
コントロールの上限こえても大丈夫ぽい

845 名前:デフォルトの名無しさん [2007/03/16(金) 09:20:31 ]
"c:\\test.txt"といった文字列を渡して
自前のアプリからExplorerと同じコンテキストメニュー(できれば1・2個メニューを追加して)を表示させる方法を教えてください。

846 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 10:14:26 ]
>>845
エスパーすぎるわ。
GetSystemMenuとかの話?

847 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 10:23:36 ]
IContextMenu2,3?

848 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 11:55:42 ]
ウィンドウ内で右クリックしたとき、[Aを編集する] とか [Bを編集する] とか
そういう項を含んだ右クリックメニューが出てくるようにしたいのではなかろうか。

俺、このエスパー検定準一級に受かったら結婚するんだ

849 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 12:00:19 ]
エスパーエスパーって
普通に理解できる質問だと思うんだが・・・?
回答はできないが(゚Д゚)

850 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 12:10:05 ]
ESPktkr



851 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 12:22:07 ]
一行目と2行目の関連というか動作がわからないところがエスパー加減なんだと思う

852 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 12:33:11 ]
cドライブルートの中のtest.txtのIShellFolderとITEMIDLISTからIContextMenuを取得
IContextMenu::QueryContextMenuでメニュー項目を新規に作成したメニューに追加
独自項目を追加後普通にメニュー表示
選ばれたのが独自項目ではなければIContextMenu::InvokeCommand
じゃないの?
超能力がいるか?

853 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 12:37:22 ]
>>852
それで何を説明した気になってるんだ?
てか誰もファイルの実体をどーのこーの何て書いてない
飽くまで"c:\\test,txt"という文字列だ

854 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 12:57:40 ]
>>853
マジで言ってるの?
それはエスパー云々以前に「対話能力がない」ってレベルだと思うぞw

855 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 13:00:40 ]
"c:\\test.txt"ではなく、"c:\\test,txt"であるところが重要。


856 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 13:37:58 ]
>>853はうんこ


857 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 13:38:59 ]
>>855
フォルダか拡張子付いてないファイルだろ。それは重要ではない

858 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 14:26:22 ]
質問者が、現時点でどのくらいできるのかわからない

説明メンドクセ

859 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 17:14:47 ]
> COMがわかりません
と読めた

860 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 17:17:24 ]
アンカー抜けてた
>>853



861 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 18:46:41 ]
>>830
OpenJane の一番下のログ(  (・∀・)カンリョウ!! )のように、
Client高さを1行に絞りきることがあるなら
前置で CRLF し、末尾にはCRLF置かないほうが良いよ。

 SendMessage(handle, EM_SETSEL, -1, -1);
 if (GetWindowTextLenght(handle)) {
  SendMessage(handle, EM_REPLACESEL, -1,(LPARAM)_T("\r\n"));
 }
 SendMessage(handle, EM_REPLACESEL, -1,(LPARAM)log-string);

862 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 20:44:29 ]
開いたコンソールにメニューを追加したく、

AllocConsole();
hwConsole = GetConsoleWindow();
HMENU hmConsole = GetSystemMenu(hwConsole, FALSE);
AppendMenu(hmConsole, MF_STRING, IDM_TEST, "Test");
hMsg = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC)GetMessageProc,
     NULL, GetWindowThreadProcessId(hwConsole, NULL));

みたいなコードを書いてみたのですが、メニューの Test を選んでも、
さっぱり GetMessageProc にメッセージが来ません。
どこが間違っているのでしょうか?

863 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 21:35:09 ]
>>843
んなこと言い出したらLOWORD&HIWORDだって結局はキャストじゃん

864 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 21:38:47 ]
ウィンドウのサイズを変更するときに縦にしか変更できなくする方法ってどうやればいいですか?

865 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 21:40:50 ]
>>864
WM_GETMINMAXINFO

866 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 21:51:03 ]
>>865
ありがとうございます

867 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 23:10:12 ]
>>862
AllocConsoleで作ったコンソールは、別プロセスの別スレッドなんじゃないの?
サブクラス化も駄目なはず。
ReadConsoleInputはイベントは取れてもIDM_TESTまでは拾えないはず。
ってことで、あとはDLL作って潜り込ますしかないんじゃない?

868 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 23:53:11 ]
>>867
SetWinEventHookでイベント捕まえるしか手がないと思うんだがどうよ

869 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 00:14:35 ]
MSAAの関数か

870 名前:デフォルトの名無しさん [2007/03/17(土) 01:05:39 ]
>>832-836
丁寧な回答をありがとうございます。
よく分かりました。



871 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 01:09:33 ]
>>868 やってみました。
AllocConsole();
hwConsole = GetConsoleWindow();
idConsoleThread = GetWindowThreadProcessId(hwConsole, &idConsoleProcess),
hEventHook = SetWinEventHook(EVENT_SYSTEM_MENUSTART, EVENT_OBJECT_FOCUS,
      NULL, WinEventProc, 0, idConsoleThread,
      WINEVENT_OUTOFCONTEXT);

これだと WinEventProc にイベントが飛びません。
thread id 指定のかわりに process id を指定しても駄目でした。
両方とも 0 にしてグルーバルフックにすると動きますが、さすがにそれはどうかと……。
うーん、なんで thread id を指定すると駄目なんだろう。

872 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 01:56:31 ]
>>871
idConsoleThread = GetWindowThreadProcessId(hwConsole, &idConsoleProcess),

最後の,は;だろうが、
どっちにしろAllocConsoleしたコンソールのスレッドIDは、この方法では取得できない

873 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 01:57:14 ]
コンソールウィンドウって仮想マシンだったよな
あれは結構別物だと思ってたんだけど、ただのウィンドウなの?

874 名前:872 mailto:sage [2007/03/17(土) 02:04:36 ]
>>871
さらに、コンソールの本当のスレッドは、idConsoleProcessの下にはない
だからSetWinEventHookでプロセスIDとしてidConsoleProcessを指定しても、
コンソールの本当のスレッドまでフックが届かない

コンソールの本当のスレッドIDを取得する方法は俺も知らん
Global HookしてプロセスIDでチェックするしかない気がするな

875 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 02:34:23 ]
>>874
ありがとうございます。あとはイベントを捕まえればいいのですが、
EVENT_OBJECT_INVOKEDってVistaオンリー・・・

EVENT_OBJECT_FOCUSとかで地道に捕まえるしかないっぽいですね。
そのうえ取得できるのは定義したメニューのIDM_TESTじゃなくて、上からの順番だけ・・・
もう泣きそうです。

876 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 02:41:13 ]
コンソールウィンドウってCSRP(csrss)の持ち物だったっけ?

877 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 03:06:33 ]
>>875
だめだ、簡易編集オンになってて範囲指定中だと、
発生したイベントがブロッキングされてしまいました・・・
もう泣いてもいいですか。

878 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 03:13:28 ]
>>876
だな、そのあたりからスレッドID探せるかもしれんな

879 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 03:23:29 ]
こういう時こそデバッガの出番じゃね?
追ってけばそのうちわかる気がしね?
じゃあ任せた。

880 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 06:04:33 ]
スレッドID分かっても、大して意味ないよ。複数のコンソールが同一のスレッドで動くから。
イベント処理プロシジャの中でHWNDとか見てどこから飛んで来たのか判断する必要は同じ。

しかしMSAAって日本語の資料少ないな。



881 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 16:47:10 ]
Jane Doe Styleのスレッド一覧を表示するようなウィンドウってどうやって作るんですか?

882 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 16:50:20 ]
ソース公開されてなかったか?

883 名前:yyy [2007/03/17(土) 16:58:39 ]
はじめまして。
amaznode.fladdict.net/

のような、amazonのAPIを使ったものを
作りたいのですがFlashのみで開発できるものなのでしょうか?
初歩的な質問で申し訳ありません。
分かる方がいましたら、アドバイスを頂けると助かります。

884 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:00:25 ]
このクマクマに「スレタイを読め」と言って通じるだろうか

885 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 17:02:45 ]
>>883
激しく板違い

886 名前:デフォルトの名無しさん [2007/03/17(土) 17:21:55 ]
>>883
しかもマルチかよ。
pc11.2ch.net/test/read.cgi/tech/1131627583/72

887 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 18:44:00 ]
>>884
たぶん「API」という言葉にしか目が行っていないのだろう

888 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 19:19:12 ]
もしかするAPIという言葉が理解できてないのかも知れない

889 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 19:29:04 ]
和んだ

890 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 19:44:41 ]
わんだ?



891 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 20:02:06 ]
早大レイプ部の和んださんって今何やってるの?

892 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 20:18:39 ]
かずんだ?

893 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 20:46:34 ]
>>883
質問自体が論外だが、
このスレでの関連性を問うなら、これぐらい?

www.microsoft.com/japan/products/expression/default.mspx

894 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 21:58:23 ]
>>883
あれはな、よく聞けよ?
APIじゃなくてamazon web service。 わかったか?
amazon web serviceかAWSで検索してこい。

895 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 21:58:25 ]
>>881
リストビュー

896 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 22:04:24 ]
>>882
>>895
遅ればせながらありがとうございました

897 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:51:53 ]
WindowsSDKとMFCの違いを教えてください。

898 名前:897 mailto:sage [2007/03/18(日) 00:56:29 ]
VCで提供しているクラスライブラリを使わず開発するって事なのかな

以下それについての疑問

@MFCを使わず開発する上での利点
AMFCとSDKの開発効率はどちらが上か?
B同じ技量のプログラマがそれぞれMFC、SDKで組んだ場合の実行速度に違いはあるのか?

以上3つの疑問点があります。

899 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:07:16 ]
実際に自分でやってみて確認するのが一番。

900 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:10:09 ]
ケースバイケースとしか言いようがない気が・・・

MFCはSDKを使い慣れた人のためのもの、というのは覚えておいたほうがいいと思う



901 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:15:29 ]
場合によりけりだな。

軽く触る程度ならMFCで。今後使い回すつもりなら
いずれどっちも学ぶ必要があるからお好きな方から。

902 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:16:45 ]
俺は最近はSDKのが好きかもしれん。
心の迷いだろうから、WTLでも触ってフレームワークの奴隷に戻るつもりだが。

903 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:24:52 ]
@MFC側はXerox Perkが論じたフレームワークが主モデルであり、
Windows SDK群の一握りしかラッパー化されていない。
利点については割愛。

A一般的なGUI操作が前提ならば、MFCベースが優勢。
しかし、@で述べたとおりMFCのクラス群だけではカバーできない部分もあり、
所々でSDKの関数を利用する。

B何の実行速度?MFCにはオーバーヘッドが大きいクラスが多々あるが?

904 名前:897 mailto:sage [2007/03/18(日) 01:29:53 ]
>>899-903
なるほど。
要するに幅広く応用するのであればSDKに精通していた方が有利なわけですね

905 名前:左を見ろ→&&rrlo;鹿馬、だ右はちっこ     &&rlro;」 mailto:sage [2007/03/18(日) 01:31:17 ]
 

906 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:31:33 ]
>>904
もう一つ付け加えておくとSDKベースでの開発だとVC以外のコンパイラ(例えばBCC)
でも通るMFCはVCコンパイラじゃないと無理

907 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:39:20 ]
警告やクエッションといったシステムのアイコンを取得したいのですが、
LoadIconだと32x32しかとれないですよね。
16x16を取る方法はないのでしょうか。

908 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:40:47 ]
LoadImage


909 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 02:06:47 ]
>>908
LoadImageでOEMイメージを取得するということですか?
下記のようにしてみましたが、
「指定されたリソースの種類がイメージファイルに見つかりません。」と取得できませんでした。
どこか間違っています?

HANDLE h =
::LoadImage(NULL, MAKEINTRESOURCE(OIC_WARNING), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);



910 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 02:15:17 ]
LR_SHARDを付けたらいけました、すみません。
けどアイコンは縮小されたような汚いのしか取れなかったです。。

HANDLE h =
::LoadImage(NULL, MAKEINTRESOURCE(OIC_WARNING), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARD);



911 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 02:23:33 ]
> 縮小されたような
LR_DEFAULTSIZEを指定したらそりゃ32x32に縮小されるだろ
> 汚いのしか
LR_CREATEDIBSECTION付けろ
つーかMSDN嫁

912 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 02:33:17 ]
>>911
IMAGE_ICONを指定した場合はLR_CREATEDIBSECTIONなんて関係ないが・・・。
お前さんもMSDN嫁。

913 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 02:34:20 ]
肝心のMSDNへのリンクがない件について

914 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 02:45:11 ]
>>913
MSDNくらい自分で検索できるだろ・・・。
msdn.microsoft.com/library/ja/jpwinui/html/_win32_loadimage.asp
msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/introductiontoresources/resourcereference/resourcefunctions/loadimage.asp

915 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 02:56:12 ]
>>907-914
その流れはワロタwwwwwwwwwwwww

916 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 03:00:13 ]
ネタなら笑えるが社会人になってマジでやるやつがいる件

917 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 03:01:08 ]
まあ「ちゃんと読んでます」って応える人間が多いこと多いこと・・・

918 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 03:04:29 ]
MSDN読んでます。
910はサイズにGetSystemMetrics(SM_CXSMICON)を指定してLR_DEFAULTSIZEを付けていました。
LR_CREATEDIBSECTIONつけてLR_DEFAULTSIZE外しても、
サイズ0でLR_DEFAULTSIZEでも同じでした。

プログラムのアイコンとかだと綺麗に出るんですが、
警告とかはギザギザで縮小したような?感じになっています。


919 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 03:07:28 ]
警告のアイコンってそもそも16x16が存在しないんじゃね?

920 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 03:19:42 ]
いまどき作った人が他界したようなMFCを使うなんざきちがい沙汰ですが。



921 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 03:23:18 ]
>>920

922 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 03:50:14 ]
>>919
イベントビューアとかで使っているので聞いてみたのですが、ないのかもしれませんね。
諦めて適当なのを組み込んで済ませます。お世話になりました。

923 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 11:34:15 ]
MFCのソースはapiの使い方のサンプル集として使える。
MFCをまったく使わない場合でも

924 名前:デフォルトの名無しさん [2007/03/18(日) 15:51:11 ]
みんな、Vistaの新APIどう使ってる?
vc2005eeとplatformSDKをダウンロードしたんだけど、
VistaのAPIとかヘッダーファイルに定義されてないやん・・・。
platformSDKはwindowsSDKに変わったとかどっかで聞いたんだけど、
こっちをインストールしないといけないわけ?


925 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 15:55:41 ]
>>924
そういうこと。
全てLoadLibaryで明示的リンクをする、
ドキュメントはオンラインのMSDNライブラリを見るにしても、
構造体や定数の定義なんかはSDKのヘッダが見れないと不便だろ。

Windows SDKはPlatform SDKの後継だから、
Platform SDKをインストールせず初めからWindows SDKを入れて構わなかったのに。

926 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 16:00:27 ]
Windowd SDKだと.NET Framework 3.0 SDKが統合されてる関係か
Windows 2000がサポートされなくなった罠

927 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 17:32:24 ]
> Windows 2000がサポートされなくなった

Win2kで動作しなくなるということ?

928 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 17:52:26 ]
今のPlatformSDKだって、前のバージョンのOSであるNT4では完全には動作しないような・・・
違ったっけ

929 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 18:26:25 ]
SDKが動くもなにもSDKは動く物じゃないだろうが

930 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 18:44:16 ]
インストールに弾かれるのか?



931 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 19:42:02 ]
なんで実行環境と開発環境が分けて考えられないんだ?

932 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 20:29:21 ]
ターゲットとしてWin2kがサポートされなくなったってこと。
実際にはWinXPあたりをターゲットに選んで注意深く組めば動くだろうけど

933 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 20:52:42 ]
うーんと・・・.NETクライアントが
.NETフレームワークのバージョン情報を取得する方法というのは
どのようなものなのでしょうか?

予想1: レジストリ
予想2: 特定のDLLのバージョン取得関数
予想3: Microsoft.NET\Framework内のフォルダの名前

スレ違いで怒られたら申し訳ございません。

934 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 20:59:41 ]
発想が逆
クライアントの側がバージョンを指定するんだよ
スレ違いだからこれ以上のコメントがあったら.NETのスレでよろしく

935 名前:933 mailto:sage [2007/03/18(日) 23:14:08 ]
申し訳ございませんでした。
.NETスレで何も無かったのでマルチしてしまいました。
どうもありがとうございました。

936 名前:デフォルトの名無しさん [2007/03/19(月) 04:04:37 ]
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ


937 名前:デフォルトの名無しさん [2007/03/19(月) 17:19:12 ]
VC2005,MFCでデフォルトのままUnicodeベースでビルドをしているのですが、
WritePrivateProfileString()で文字列を書き出すと、
INIファイルの中身がUnicodeになっていません。
Unicode専用の文字を入れると??になっています。
MSDNの記述ではWritePrivateProfileStringW()が呼ばれるはずなんですけど、
なにか設定が足りないのでしょうか?

938 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:22:19 ]
WritePrivateProfileStringWなどはマルチバイト文字列と変換して読み書きする仕様だったはず。
A版で書いてW版で読んだりなんてことができるようにと聞いた覚えがある。

939 名前:デフォルトの名無しさん [2007/03/19(月) 17:25:38 ]
>>938
ということは、Unicode専用文字はINIファイルには記録できないということなのでしょうか?
エディットボックスで入力される文字をINIファイルで扱いたいのですが。

940 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:30:05 ]
Unicodeでないとダメな理由があるの?



941 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:37:03 ]
逆にWritePrivateProfileStringWでないとダメな理由があるの?
自分で読み書きすればいいだけ。

942 名前:デフォルトの名無しさん [2007/03/19(月) 17:45:20 ]
ダイアログで入力された情報をINIファイルに記録しておきたいんですが、
Unicodeアプリである以上、Unicode文字が入力されることもあるので、
それらの入力をINIファイルに保存できないのは痛いなと思いまして。
アプリ内で参照するファイル名とかにUnicodeを使われていたら、
それらのファイル名情報もINIファイルでは保存できないということ…?

943 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:47:52 ]
WritePrivateProfileStructを使えばいいじゃないか。

944 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:52:48 ]
>>938のような動きをするということは.INIはデフォルトのANSIコードセットを使うというルールになってるんだろう。
どうしてもANSIコードセットに変換できないUNICODE文字を使いたいなら、
HEX文字列に変換して書き出すとか工夫がいりそうだね。

INIは古いレジストリ使えやゴラー
普通のアプリでレジストリ使うな、ApplicationSetting使えゴラー(いまここ)
ユーザーは振り回されて大変じゃのう。

945 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 19:01:54 ]
レジストリはまだ推奨事項だろ。レジストリに書けないような大きな連中を
どこに書くかって話でねーの。

946 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 19:04:03 ]
違います。

947 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 19:06:11 ]
デフォルトはwin.ini使う仕様だからそこにUnicode書かれたら困るし
iniそのものが過去の互換性のためにあるんだろ

948 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 19:20:03 ]
Application Settingsなんか.NETしか使えネーじゃん。
それとも何か、アンマネージだと「普通のアプリ」じゃネーとか言うのかこのスレで(w

949 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 19:22:17 ]
>Application Settingsなんか.NETしか使えネーじゃん。
( ゚Д゚)・・・

950 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 19:29:20 ]
>Application Settingsなんか.NETしか使えネーじゃん。
( ゚ω゚)・・・



951 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 19:42:02 ]
何?
RegOpenKeyEx
RegQueryValueEx
くらいのステップでApplication Settingsにさわれる
Win32APIがあるってーの?
まさかIXMLDOMを叩くなんて話じゃねーよな?

952 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 20:08:50 ]
UTF-7で書きなさい。

953 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 20:44:41 ]
アプリの設定なんてデータ交換に使うわけでもないんだから
好きなフォーマットにしる

954 名前:デフォルトの名無しさん [2007/03/19(月) 20:55:19 ]
つまり、Unicode対応アプリケーションでは
INIファイルを使うなということになるんですかね。

でも、VC2005はデフォルトでUnicode設定になってるのに、
INIファイルにUnicode文字を書き込めないという書き込みが全然出てこないですね。
これらの組み合わせって、そこまで使われていないものなのでしょうか。

955 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:06:51 ]
エクスプローラやコモンダイアログ(ファイル開くなど)で現在参照してるディレクトリを
変更させることってできますか?

956 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:15:36 ]
>WritePrivateProfileString
>注意  この関数は、16 ビット Windows ベースのアプリケーションとの互換性を保つ目的でのみ提供されています。
>Win32 ベースのアプリケーションでは、初期化情報をレジストリに格納してください。

MSDNにこう記述があるにもかかわらず、これだけいつまでも使われ続けているAPIも珍しい。
アプリやフォーム間でのデータの受け渡しまでこれ使ってる糞プログラムのメンテをやらされてるから欝だ。

957 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:15:49 ]
まぁ実際のINIファイルの文字コードがどうなってるかは別として
GetPrivateProfile〜系APIにもちゃんとUNICODE版があるわけだが

958 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:20:36 ]
>>957
あるっちゃあるが >>938のとおり。

959 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:22:39 ]
>>954
出来ないとか駄目だとか言う前に工夫をしてみるのも大事だと思うが。

APIがUnicode版だろうと、INIファイルの文字コードはANSI(MS-Kanji)固定だぜ。
URLエンコードとかBASE64とかISHとか好きな符号化方式で変換して格納すれば済むと思うが。

960 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:23:37 ]
あ、ANSIの何が悪い!



961 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:27:44 ]
APIの問題ではなく、ファイル仕様の問題、みたいですネ

962 名前:デフォルトの名無しさん [2007/03/19(月) 21:40:53 ]
Unicodeがらみの話で wprintfやwcoutを使ってコンソールに文字を出力すると、
結局ANSIコードに変換してしまうので、途中にUnicodeにしかない文字が入っていると、
その文字以降何も出力されなくなる。
WriteConsoleW以外にUnicode特有の文字をコンソールに出力する手段はないのかな?

963 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:45:28 ]
>wcout
localeは?ってWIN32APIじゃないな

964 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 21:48:59 ]
>>962
無い。
でもBoost.Iostreamsで、ReadConsoleWを呼ぶストリームバッファを作って
wcoutの代わりにするのはいけると思う。

965 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:11:24 ]
INIファイルをunicodeのBOM付きで予め作成しておくとよいかも?

そうか、↓みたいにUTF-7
[.ShellClassInfo]
IconFile=%USERPROFILE%\デスクトップ\FAQ\FAQ\faq.ico
IconIndex=0
[.ShellClassInfo.A]
IconFile=%USERPROFILE%\デスクトップ\FAQ\FAQ\faq.ico
[.ShellClassInfo.W]
IconFile=+ACU-USERPROFILE+ACUAXDDHMLkwrzDIMMMw1wBc-FAQ+AFw-FAQ+AFw-faq.ico

966 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:19:22 ]
やっぱりシステムの根っこに書き込みを行うのは抵抗あるんだよなあ
ディレクトリごと削除するだけでアンインストールが完全に終わるINIの方が好き

967 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:22:49 ]
レジストリなんて設定ファイルに毛の生えたようなのが固まってるだけだよ。たぶん

968 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:25:27 ]
自分でXMLパーサ書いてそれに記録させてる。
その程度作るのは大した手間じゃないし。

969 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:35:58 ]
>>962
スレ違いだから詳しくはよそで聞いて欲しいが、VC8はロケール関連にバグがある。

970 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:43:54 ]
>>964
うむやはりWriteConsoleWしかないですか、iostreamを書くのは俺の力量じゃ無理そうで
WriteConsoleラップした自家製printfでやっときます。
>>963 >>969
ローケルやVC2005のバグの件は了解しています。
これにかかるとUNICODE特有の文字だけでなく2バイト文字が全然でなくなりますから。




971 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:44:44 ]
そろそろカチンときそうです。

972 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 23:02:00 ]
>>954
Using Unicode in INI files
www.codeproject.com/file/unicode_ini.asp

965も書いてるけど
既存のUTF-16LEのINIファイルがある場合はそのコードで
無い場合は実行環境(日本語winならCP932)に合わせて保存されるらしいんだよな。
実際やってみると〜W版、〜A版関係なくそうなる。
OSが9x系のときはどうなるか知らないが…


973 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 01:07:20 ]
ゲームプログラムで質問です。
StrechBltで2倍に拡大して描画するのと画像サイズを2倍にしてそのまま表示するのとではどちらのほうが描画が早いですか

974 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 01:15:13 ]
やってみれ

975 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 01:15:43 ]
>>973
こんなところでいつ着くともしれないレスを待つより、自分でやってみた方が
早いと思うよ。

976 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 01:25:37 ]
>>972
98SEで試してみた所、UnicodeのINIファイルにANSIで追記された。
NT系でしか働かないのだろうな、その機能は。
Meだけ対応とかだったら嫌だな。

977 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 06:59:53 ]
>>956
INIほどじゃないがGetVersion()もよく使う。
9x/NT系の判別をする場合、戻り値の最上位ビットを見ればすむから。
GetVersionEx()はその目的にはちょっとめんどくさい。

978 名前:デフォルトの名無しさん [2007/03/20(火) 07:04:34 ]
VC++についてるsignal.hにはなんでSIGKILLがないの?
signalで9番に関数登録しようとしただけでエラーになるし。

979 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 07:15:52 ]
?どっちにしろSIGKILLはキャッチできないじゃん。

980 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 07:34:09 ]
>>979
そうなんですか。どうもです。



981 名前:954 [2007/03/20(火) 09:31:36 ]
>>972
なるほどたしかにあらかじめエディタでUnicode形式でファイルを作成し、
それに対してWriteProfileしてみたところ、Unicodeのまま書き込めました。

>>976のおっしゃる情報によると、NT系しか動かないようなので、
厳密にやろうとするとまた考えないといけないのでしょうけど、
今回のものは2000以降限定と言ってしまっても問題無いので、
そうなるとこれでも大丈夫ですよね。

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

982 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 20:44:56 ]
コントロールを作っていて困ったことがあったので質問させて下さい。

WH_GETMESSAGEフックを使って親ウィンドウのメッセージを盗みたいと思ってます。

コントロールはクラス化していて、GetMsgProcでインスタンスへのポインタを使うために、
グローバルなCAtlMapを使って、dwThreadIdとthisを関連づけて保持しています。
またSetWindowsHookExの戻り値もクラスのメンバとして保持してます。

そしてGetMsgProcでは、

MSG *msg = (MSG*)lParam;
CControl *pThis = g_hookMap[GetWindowThreadProcessId(msg->hwnd, NULL)];

このようにポインタを取得して、メッセージによって処理したり、CallNextHookExを呼び出したりしています。

ここで問題がありまして、msg->hwndにNULLが渡されることがあります。
(ちょっと調べた感じだとPostThreadMessageで渡されたメッセージでしょうか)

このときはpThisを使ってフックプロシージャのハンドルを取得できないため、
CallNextHookExを呼び出すことができないので、仕方なくreturn 0;で処理を中断しています。

msg->hwndがNULLでもちゃんとフックプロシージャのハンドルを取得できる
もっと上手いやり方がありましたらお教え下さい。

983 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 20:58:44 ]
親ウィンドウをサブクラスかでは駄目なのか?

984 名前:982 mailto:sage [2007/03/20(火) 21:10:27 ]
>>983
サブクラス化も試してみました。

具体的にはWM_CLOSEを取得して確認ダイアログを出したいのですが、他のメッセージは取得できるのに
なぜかWM_CLOSEは取得できないまま終了してしまいました。

そこでフックを試してみたら上手く取得できたので、フックでやろうとしているのですが。。

985 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 21:30:10 ]
GetMessageフックはフックを受け取るスレッドのコンテキストで動くから
GetCurrentThreadId()でいいんじゃネーノ

986 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 21:44:59 ]
> フックを受け取る
もとい
メッセージを受け取る

987 名前:982 mailto:sage [2007/03/20(火) 22:44:15 ]
>>985,986
おー!できるようになりました。ちゃんといろんなAPIを知っておかないとダメですね。

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

988 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 23:08:51 ]
次すれまだぁぁあんあん

989 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 03:52:22 ]

つ t[茶]

pc11.2ch.net/test/read.cgi/tech/1174416295/


990 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 14:28:23 ]
つか何度見ても2がおっかしー。
新しいのにはもうないけど。



991 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:33:48 ]
           /  ̄ ̄ '´ ̄ ̄ヽ、
            ノ/. /二二二ヽヽ  \
        <V/, '/ 人 |  ヽハ夊 、 |
         〃 {_{`ヽ  Vヽノリ| l >" i|
         ハ小l●    ● レ|、 | |
         |│ l⊃ rー- ⊂⊃|ノ |│
        /⌒ヽ.| .ヘ  ヽ ノ   jレ/⌒i !
      \ /:::レ l>,、 __, イァ/   /ノ
.        /:::::/ / ヘ:::|三/::{ヘ、__∧
       `ヽ<     ヾ:∨:::/ヾ:::彡

992 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:27:52 ]
   _
   /〜ヽ
  (。・-・)< うめてくだちゃい
   ゚し-J゚ 


993 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:54:32 ]


994 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 19:02:46 ]
コソーリ
ttp://wiki.livedoor.jp/program1/
最初に作った人とは違いますが・・・

このスレのファンです
時々質問したまま何も返さないのは私です
どうもすみません

995 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 19:24:54 ]
   _
   /〜ヽ
  (。・?・)
   ゚し-J゚ 



996 名前:996 mailto:sage [2007/03/21(水) 19:45:04 ]
自己解決しました。
>>996にカチンときたので教えません。
バーカ!

997 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 19:53:14 ]
どう見てもオナニープレイです 本当にお疲れ様でした

998 名前:994 mailto:sage [2007/03/21(水) 19:56:26 ]
ごめんなさい。
これぐらいしかできないのです・・・

999 名前:994 mailto:sage [2007/03/21(水) 20:00:49 ]
評判が悪ければ取り下げますです。

1000 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 20:01:35 ]
                / ⌒ヽ 
                /      \ 
              ,.-‐''⌒ヽ   ,.=、  ヽー、 
              ,〃/∠彡ニ\ (.fゃ)  |  j 
            /       ミ彡三ヘ`=´   | | 
         /       ミ彡三∧    j ./ 
           ト ャ''"    ミ彡三∧.   // 
        」i _;''_,    ミ彡'ニミヘ、 〃 
          リ ´ ̄     リ´ f'`ij }/「i| 
         ヽ-         '´/ソ'川|| 
         ヽ一       「彡'川ll.||| 
          T   _   / ´ j||.川|| 
           ` ̄了、     i! 川.川| 
              _」. \    | j| 川|ト、 
        _/ ̄  \  \   '_/./川 ` 
        ̄       `    ̄  ´ 
       ネゴトワ・ネティエ[Negtva Netie] 
       (ルーマニア.1935〜54)  




1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






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

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

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