Win32API質問箱 Build50

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
22:2007/02/17(土) 23:13:16
自己解決しました。
>>1にカチンときたので教えません。
バーカ!
3デフォルトの名無しさん:2007/02/17(土) 23:13:49
4デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/17(土) 23:14:49
6デフォルトの名無しさん:2007/02/17(土) 23:15:19
MSDN日本語版は誤訳があったり、一部欠けていたりするなど不完全なため、英語版推奨。
http://msdn.microsoft.com/library/
http://msdn2.microsoft.com/en-us/library/

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

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


windowssdk.msdn.microsoft.comは、もうmsdn2へ転送されるようになっている。
7デフォルトの名無しさん:2007/02/17(土) 23:27:21
これも追加しようよ。

Microsoft® Windows® Software Development Kit for Windows Vista™ and .NET Framework 3.0 Runtime Components
http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en
8デフォルトの名無しさん:2007/02/18(日) 00:44:35
リストボックスにアイテム挿入してるんだけど
一番左のカラムにしか文字列が挿入されないんですが。

ちゃんとiSubItemの値を変えてるのに何でだろうと2時間ぐらい悩んでてもう限界です。
何か心当たりがある事があれば教えてください。
9デフォルトの名無しさん:2007/02/18(日) 00:50:22
妹「お兄ちゃんって落ち込んだ時どうする?」
俺「んー、別に何も。寝るかな」
妹「ふーん・・」
俺「どうした?何かあったか?」
俺「ううん、ちょっとね」
俺「何だよ水くさいな、言ってみろよ」
俺「う、うんとさ・・・」
俺「おう」
俺「お兄ちゃん、この間一緒に歩いてた人、彼女?」
俺「・・・は?」
俺「前学校の近くで話してたじゃん」
俺「ああ・・・あいつか。なわけないだろ、ただのクラスメートだよ」
俺「ほんと?」
俺「嘘言ってどうすんだよ」
俺「そっか」
俺「てかそんな話はいいんだよ。落ち込んでたんじゃなかったのか?」
俺「ううん、それならいいんだ!えへへ」
俺「おかしな奴だな」
俺「ふふ♪お兄ちゃんに彼女なんてできるわけないよね、よく考えたら。」
俺「こらこら、失礼だぞ」
10デフォルトの名無しさん:2007/02/18(日) 00:52:47
>>9
ちょ、途中から自作自演w
11デフォルトの名無しさん:2007/02/18(日) 00:55:25
ここまで点プレ
12デフォルトの名無しさん:2007/02/18(日) 01:26:12
俺「お・に・い・ちゃん!」
俺「なんだ勝手に部屋に入っちゃだめだろ」
俺「えへへ…」
俺「あたし…知ってるんだよ…おにいちゃんのベットの下に…」
妹「あんた何やってるん?」


138: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デフォルトの名無しさん:2007/02/18(日) 01:32:20
わっふるわっふる
15デフォルトの名無しさん:2007/02/18(日) 01:37:10
>>13
iSubItem=1 以降は ListView_SetItem()
16デフォルトの名無しさん:2007/02/18(日) 01:46:22
>>13
もしかして、LVCOLUMNってのか?

わっふるわっふる
178:2007/02/18(日) 01:54:09
>>15
ちょっと試してみます。

>>16
LVCOLUMNですが何か特別な問題でもあるんでしょうか?
188:2007/02/18(日) 01:59:46
できました。ありがとうございます
19デフォルトの名無しさん:2007/02/18(日) 04:32:54
仕事でもなく寝ずにSDK書いてる俺ってもうダメかな?
2019:2007/02/18(日) 04:33:49
もうすぐ日が昇ってくるぜ
2119:2007/02/18(日) 04:36:18
反応が無いからなのか何故だかわからないが目の前のディスプレイが歪んできた
2219:2007/02/18(日) 04:37:08
やっぱ誰もいないべな
2319:2007/02/18(日) 04:40:32
もう疲れたし、オ○ニーでもして寝るか
2419:2007/02/18(日) 04:45:52
仲間がいたぜwwwwwwww
25デフォルトの名無しさん:2007/02/18(日) 04:55:28
SDKで書いてるなら、がんがれ
SDKを書いてるなら、もっとがんがれ
2619:2007/02/18(日) 04:58:24
息抜きに続き考えたぜwwwwwww

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


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



















俺「・・・・・・アッー!!!」
2719:2007/02/18(日) 05:01:30
>>26
この人頭大丈夫? もう寝ろって。
2819:2007/02/18(日) 05:04:53
すんませんwwwwwwwww
もう寝れない時間まで起きてしまいました
今日仕事で今寝ると絶対遅刻しちゃってそりゃもう大変な事になってしまいます
2919:2007/02/18(日) 05:10:44
それじゃ、もう寝るです。おやすみなさい。
3019:2007/02/18(日) 06:05:37
おはようおまえら
31デフォルトの名無しさん:2007/02/18(日) 07:37:38
Win32API始めたばかりです。
下の三つのファイルにわけてメインのウインドウの
メニュー画面で選択したら時計画面が起動するように
したいのですがどうすればよいのでしょうか?


http://sa-wiki.com/upload/src/up0106.txt
32デフォルトの名無しさん:2007/02/18(日) 08:05:24
>>31日本語でおk
3319:2007/02/18(日) 08:30:22
あ、プリキュア見なきゃ
3419:2007/02/18(日) 08:33:42
おお、いかんいかん忘れるところだったdd
35デフォルトの名無しさん:2007/02/18(日) 09:58:00
裏切派遣って知ってる?
元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて、派遣やってるバカのことw

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

自分でも騙され裏切れられることは薄々わかったるから派遣問題の話が出るとウッキー!って逆ギレw
3619:2007/02/18(日) 10:09:54
何人いるんだよwwwwwwwwww
37デフォルトの名無しさん:2007/02/18(日) 14:13:27
CTRL+ALT+DELをプログラムからPCに送る方法ありませんか?
keybd_eventやVNCがやってる方法では期待する動作になりませんでした。
単にタスクマネージャーを出したいわけではなく、割り込みを発生させたいのです。
38デフォルトの名無しさん:2007/02/18(日) 14:16:37
その質問どこかで見た
39デフォルトの名無しさん:2007/02/18(日) 14:28:15
>>38
前スレの最期の方の質問。

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

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


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

メニュー選択時に作成するようにするとか、
アナログ時計画面のWM_CLOSEで、ShowWindowで隠すだけにして、DestoroyWindowしない。
4331:2007/02/18(日) 16:50:47
>>42
解決しました、どうもありがとう!!!
44デフォルトの名無しさん:2007/02/18(日) 20:15:10
>37
割り込みを発生させたい、の意味が分からん。
45デフォルトの名無しさん:2007/02/18(日) 21:26:24
システムがヒィヒィ言ってるときでも速やかに応答させたいんじゃないの
46デフォルトの名無しさん:2007/02/18(日) 21:29:41
今、彼女をヒィヒィ言わせてますが何か?
4746:2007/02/18(日) 21:38:10
昨日、仕事から帰ってきた姉に、オナニー見られて大爆笑された。
その後、部屋に真っ赤になって閉じこもってたら、 姉から携帯にメールがあって、
「あたしも毎日やってるんだから気にするな!ファイト!!」 って書いてあった。

48デフォルトの名無しさん:2007/02/18(日) 21:49:12
素朴な疑問なんだけどCTRL+ALT+DELとかALT+TABってシステムコールなん?
49デフォルトの名無しさん:2007/02/18(日) 21:56:59
SAS。winlogonが最優先で奪取するキーの組み合わせ。
50デフォルトの名無しさん:2007/02/18(日) 22:00:12
仮想空間アドレスがどの物理メモリに割り当てられているか知る術がありますか。
51デフォルトの名無しさん:2007/02/18(日) 22:05:49
>>47
ワッフルワッフル
52デフォルトの名無しさん:2007/02/18(日) 22:06:30
53デフォルトの名無しさん:2007/02/18(日) 22:16:46
Win32APIのレベルでは、「知ってどうするの?」だなー。
54デフォルトの名無しさん:2007/02/18(日) 22:25:44
>>49
サンクス
つまりwinlogonにTerminateProcessするとunknown hard errorになる代わりに
CTRL+ALT+DELを横取りされなくなるんですね
55デフォルトの名無しさん:2007/02/18(日) 22:54:36
確かに横取りは出来なくなると思うが、それはOSが落ちる事を意味するのでは?
一度試してみれ。
56デフォルトの名無しさん:2007/02/18(日) 22:58:06
マジレスされちゃったので答えとくと当然青画面になるよ
57デフォルトの名無しさん:2007/02/18(日) 23:38:08
BSODってドライバ以外から作り出せるのかね
58デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/19(月) 00:27:23
自分でペイントで作ったマウスカーソルを使いたいのですが
調べてもよく方法がわかりませんでした
よろしければ教えてください
6019:2007/02/19(月) 00:29:33
>>59
まずはリソースエディタについて調べろ。
61デフォルトの名無しさん:2007/02/19(月) 02:02:42
>58
フォントリンクがあるからねぇ。
62567:2007/02/19(月) 06:28:56
おまいら久しぶり
63デフォルトの名無しさん:2007/02/19(月) 09:17:51
>61

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

なんか単純な方法は、ないかなぁ・・・
64デフォルトの名無しさん:2007/02/19(月) 09:40:49
DrawText で DT_CALCRECT 矩形サイズなり LastError なりで判定できないもんかな?
65デフォルトの名無しさん:2007/02/19(月) 12:40:27
>>63
要点が見えないんだが・・・
もう少し詳しく説明してくれね?

何をしたいのか、命題はいかに?
66デフォルトの名無しさん:2007/02/19(月) 12:55:05
>>65

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

表示しようとしているunicode文字が現在フォントに
グリフが無ければ代替文字(×マークとか?記号とか)にして
存在すればそのまま表示したいのです。
67デフォルトの名無しさん:2007/02/19(月) 13:45:00
サービスの ServiceMain コールバック関数に、
ユーザー定義データを渡せないのは痛いね。
オブジェクト指向化しにくいね。みんなどうやってる?
68デフォルトの名無しさん:2007/02/19(月) 14:41:21
ドライブレターを割り当てていないパーティションがあって、
そのパーティションにアクセスしたい(そのパーティションの情報を取得したい)
どうすればできますか?

無理なら無理矢理空いているドライブレターを割り当ててそこから情報を取得
すればいいと思うけど、割り当てをプログラム上からできるのかしら・・・?
69デフォルトの名無しさん:2007/02/19(月) 14:58:57
FindFirstVolume、FindNextVolume でみつかる?
70デフォルトの名無しさん:2007/02/19(月) 16:04:49
>>69
ボリューム名は取得できました。
そこからはどうすればいいでしょうか?
QueryDosDeviceでデバイスを取得して、そのデバイスをCreateFileで開いてハンドルを
取得してDeviceIoControlで情報取得しょうか?
71デフォルトの名無しさん:2007/02/19(月) 16:35:47
TransparentBltやAlphaBlendはWindowsMeでは機能しないんですか?
72デフォルトの名無しさん:2007/02/19(月) 17:09:36
たしかにMSDNライブラリを見るとWindows 2000からと書いてあるね。
73デフォルトの名無しさん:2007/02/19(月) 18:17:27
Windows98/SEでTransparentBltを使うとすごい勢いでGDIハンドルが増加していくんだよな
Meでは使い物になるんだろうか
74デフォルトの名無しさん:2007/02/19(月) 18:33:25
>>70
それでいけると思う。
末尾の \ は消さないとCreateFile()で失敗するかも。
あとOSによって差が大きかった気がする。
75デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/19(月) 20:39:29
そのアドレス、って何アドレスだ? 物理か?セグメント相対か?
78デフォルトの名無しさん:2007/02/19(月) 21:13:26
質問です。
親ウインドウから子ウインドウを起動させて、子ウインドウを終了させると
親ウインドウがアクティブウインドウになってくれず他のウインドウの
下に隠れてしまいます。親ウインドウがアクティブになる方法を
教えてちょんまげ。
79デフォルトの名無しさん:2007/02/19(月) 21:19:27
ちょんまげにキレた。子ウィンドウ終了時にShowWindowじゃダメなのか。
80デフォルトの名無しさん:2007/02/19(月) 21:49:29
>>76
PEヘッダに書いてあるベースアドレス+セクションの仮想アドレスで求まる。
コードサイズも同じ場所の仮想サイズから特定できる。
exeが読めない状況でもPEヘッダ自身はベースアドレスにロードされてる。
ほとんどの場合は上記の方法で判るが、意地の悪いプログラムだと
デバッガを化かすコードが入ってたりするので、実際のコードの開始
アドレスはプログラム毎に任意と考えるべき。
信用して良いのはGetThreadContextで得たEip以降のコード。
81デフォルトの名無しさん:2007/02/19(月) 22:00:13
ウィンドウを終了、tぽいう表現に違和感を感じる今日この頃。
82デフォルトの名無しさん:2007/02/19(月) 22:01:03
書き忘れてたけどベースアドレスはGetModuleHandleで判るからね。
83デフォルトの名無しさん:2007/02/19(月) 22:19:06
>>78
Owned Windowは、WS_POPUPにすべし
84デフォルトの名無しさん:2007/02/19(月) 22:37:14
“普通”の、例えばMFCを中心に使っている初級Windowsプログラマが見て
「そこまでトリッキーなことはしていなさそう」と感じる程度の
アプリケーションを開発する上で、
>>80みたいな知識が必要になることってどれくらいあるんですか?
1.他プロセスにアタッチするようなアプリケーションはかなり特殊な
  存在であって、「普通の」アプリ開発者とは接点がない
2.普段は使わない知識だが、時々必要になることがあるので
  こうして質問する人がやって来る
3.実はWindowsでプログラムを書く上では割と基本的な知識
85デフォルトの名無しさん:2007/02/19(月) 22:39:44
他のアプリケーションに介入して弄り回したいときとかは、場合によっては
必要になることもあるかもしれない。詳しく知っててモノ書いてる連中は
だいたいMVP持ってたりするな。
86デフォルトの名無しさん:2007/02/19(月) 22:41:35
俺は1だと思うが、2だと言う意見の人がそれなりにいてもおかしくないとは思う。
それに実際必要かどうかはともかく80くらいは豆知識として知っていておいて損はない。
87デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/19(月) 22:49:34
1であり2である
89デフォルトの名無しさん:2007/02/19(月) 22:50:23
>>84
2かな。他プロセスに干渉するアプリは確かに特殊な部類ではあるけど
必要に迫られて使うことって結構あると思うし。
WindowsプログラミングするならAdvanced Windowsは持っといて損は無いと思うよ。
全部理解するのに余裕で2ヶ月とかかかるけど。学生ならそのうちにやっとくのも良し。
90デフォルトの名無しさん:2007/02/19(月) 22:52:39
>>85-86
他プロセスへのAPIフックぐらいなら出来るのですが、
それがどうしても必要になるといった状況にはなかなか出会ったことがなくて、
しかしこのスレにはかなりの頻度で他プロセスが絡む質問が出てくるので
疑問に思って質問させていただきました。
何にせよ、知っていて損はしないので、ぼちぼち覚えていこうと思います。
ありがとうございました。
91デフォルトの名無しさん:2007/02/19(月) 22:53:37
>>75
ただしWin98のAlphaBlendはバグ持ちなので実質的に使えない。
(WinMeでは修正されてる)
>>87
WOW32とかOS/2サブシステムとかで必要だったものをついでにWin32にも
開放してみたという感じかと
92デフォルトの名無しさん:2007/02/19(月) 22:54:05
自分以外の指定したウインドウが更新されたかどうかと、その更新された
領域を知りたいと思っています。SetWindowsHookEx()を使ってWM_PAINTを
フックしているのですが、監視対象の子ウインドウが更新されたかどうか
まではわからないようです。この場合、子ウインドウも全てフックして
やるしかないのでしょうか?
93デフォルトの名無しさん:2007/02/19(月) 22:55:03
つーかAlphaBlendなんて自前でやるもんだろ
フルスクラッチ(ryでも買って読めば誰でもできるし
94デフォルトの名無しさん:2007/02/19(月) 22:57:41
>>89
"Advanced Windows"、興味は前々から持っていたのですが
いかんせん自腹で買うのには少々高くて二の足を踏んでいました。
これを機に検討してみます。。
95デフォルトの名無しさん:2007/02/19(月) 22:59:36
昔VIPのプログラムやろうぜスレにSSE2使った
アルファブレンドのソースがあってたまげたの思い出した。
96デフォルトの名無しさん:2007/02/19(月) 23:07:24
>>93
kwsk
97デフォルトの名無しさん:2007/02/19(月) 23:12:39
>>91
そういう理屈なのかー
なんかPEB拾うとかいう用途はあるみたいだけどNtQueryでできるし
98デフォルトの名無しさん:2007/02/20(火) 00:24:30
俺「なー姉貴。ReadFileEx関数の、最後の引数なんだよ?」
姉「あぁそれね・・・完了ルーチンのポインタなんよ」
俺「へ?」
姉「読込処理が終わった時に呼ばれる、完了ルーチンのポ・・・・ぽ」
(急に小声)
俺「?」
姉「終わったときに呼ばれる関数のポインタ!!。変なこと聞かないデ!!」
(なぜかプリプリ怒ってる)
99デフォルトの名無しさん:2007/02/20(火) 00:37:06
やあ義弟
100デフォルトの名無しさん:2007/02/20(火) 00:43:05
くだらねーwww
101デフォルトの名無しさん:2007/02/20(火) 00:52:17
チンポイン
102デフォルトの名無しさん:2007/02/20(火) 01:33:00
日本にWin32について語れる姉弟が何組いるのか
103デフォルトの名無しさん:2007/02/20(火) 04:02:11
わっふるわっふる
104デフォルトの名無しさん:2007/02/20(火) 04:05:01
アルファブレンドって、何かうまそうじゃね?
秋葉でカフェオレとかをアルファブレンドコーヒーに名前変えたら売れね?
105デフォルトの名無しさん:2007/02/20(火) 04:55:37
ここにアルファー
10678:2007/02/20(火) 06:43:35
>>79 >>83
レスありがとお。試してみます!!
107デフォルトの名無しさん:2007/02/20(火) 07:26:33
>>96
フルスクラッチによるグラフィックスプログラミング入門
秀和システム発行
108デフォルトの名無しさん:2007/02/20(火) 07:35:39
>>107
thx
109デフォルトの名無しさん:2007/02/20(火) 09:23:18
3つのSTATICの子ウインドウを作ってサブクラス化し、ひとつのプロシージャで
処理をしたいと思っています。
どのウインドから飛んできたのかを知りたいのですが、どのパラメータを見たら
それがわかるのでしょうか?

質問の仕方がわかりづらければ申し訳ありません。
解ればお教えください。
110デフォルトの名無しさん:2007/02/20(火) 09:39:07
HWNDが違うんじゃないの?
111デフォルトの名無しさん:2007/02/20(火) 09:51:04
HWNDで判断するしかないのでしょうか?

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

今もGoogleで調べているのですが、ちょっと難しくてなかなか回答に
たどり着くことができていません。
112デフォルトの名無しさん:2007/02/20(火) 10:01:04
あなたの日本語がわかりません。
113デフォルトの名無しさん:2007/02/20(火) 10:05:09
>>111
質問読まず書き子
メニューのリソースIDで判別できるんじゃね?
114デフォルトの名無しさん:2007/02/20(火) 10:12:22
>>111
GetWindowLong(hWnd, GWL_ID)
115デフォルトの名無しさん:2007/02/20(火) 10:13:31
>>113
質問の仕方がわるくて本当に申し訳ありません。
それです。
それを取得する方法を探しています。
勉強をはじめたばかりで回答になかなかたどり着けなくて・・・。
116デフォルトの名無しさん:2007/02/20(火) 10:15:36
>>111
いまいち、何を言いたいのか見えてこないが

たぶん、GetWindowLongでGWL_ID
117デフォルトの名無しさん:2007/02/20(火) 10:16:38
>>114
ありがとうございました。
118デフォルトの名無しさん:2007/02/20(火) 10:22:39
>>116
サンプルを作って試してみました。
その方法を探していました。
回答ありがとうございました。
119デフォルトの名無しさん:2007/02/20(火) 12:37:31
ウインドウの上からマウスが外れたときに検地するにはどうしたら良いでしょうか?
120デフォルトの名無しさん:2007/02/20(火) 12:40:40
>>119
日本語が不自由だとなにかと不便だよね。
日本での生活は辛いかも知れないけど、母国のことを思い出してがんばってね。
121デフォルトの名無しさん:2007/02/20(火) 12:41:23
>>119
>検地
歴史書を紐解くといいと思います。
122デフォルトの名無しさん:2007/02/20(火) 12:58:46
TrackMouseEventが使いにくいからといってフックしたり常時監視したりするアホ
123デフォルトの名無しさん:2007/02/20(火) 13:34:22
ウィンドウに乗っているコントロールに対して
透過でフェードアウトを実装する事は可能でしょうか?

AnimateWindow
SetLayeredWindowAttributes

あたりで可能でしょうか?
見た感じでは、Window限定のような気がするのですが・・・。
124デフォルトの名無しさん:2007/02/20(火) 16:43:37
GDIで透過色付きで且つ半透明なものを描画しようと思うんですが、
ワーキングメモリとしてのビットマップは静的にある程度の大きさを持つものを予め用意しておくか、
描画用の、AlphaBlend等のAPIをラップした関数を呼び出すたびにその関数のスコープ内部で済ませるか迷っているんですが、
前者の場合は始終無視できない程度のメモリが占有される事が、
後者の場合は関数呼び出しのたびのオーバーヘッドの事が心配で一向に開発が進みません。
普通はどうするんでしょうか。
125デフォルトの名無しさん:2007/02/20(火) 16:56:01
まず以下のことを明確にせよ。
無視できない程度のメモリは何メガなのか?
無視できる程度のメモリは何メガなのか?
126デフォルトの名無しさん:2007/02/20(火) 17:05:02
>>124
普通はそれぞれどの程度の問題になるのか数値化して検討する。

いや、寧ろこんなところで聞かない。
127デフォルトの名無しさん:2007/02/20(火) 17:05:36
静的に確保するとすれば、512KB以上は無視できない。
関数のオーバーヘッドは、1KB以上であれば無視できない。
128デフォルトの名無しさん:2007/02/20(火) 17:14:47
ばーか
129デフォルトの名無しさん:2007/02/20(火) 17:28:33
そろそろカチンときそうです。
130デフォルトの名無しさん:2007/02/20(火) 17:34:52
>>124
その描画関数がどんなタイミングでどの程度呼ばれることになるのか?
とかも考えましょう。アプリケーション自体の寿命に対して局所的かつ連続して呼ばれる
なら初期化関数、描画関数、終了関数に分けて以下のようにするとか。
初期化関数()
 描画関数()
 ...
 描画関数()
終了関数()
131デフォルトの名無しさん:2007/02/20(火) 17:45:38
親ウインドウに子ウインドウは貼り付けて、子ウインドウだけを
半透明にさせることって出来ますか?
ウインドウ全体を半透明にするのは簡単に出来たのですが、
子ウインドウだけってのは無理でした。
自分のソースが間違っているのか、そもそも無理なのか
解らないので知っていたら教えてください。
132デフォルトの名無しさん:2007/02/20(火) 17:53:13
みんな!
あたしの為の、カチンとならないで!!
133デフォルトの名無しさん:2007/02/20(火) 18:14:10
VistaでCSIDL_PROFILE の仮想フォルダ のCSIDLってないですか?
134デフォルトの名無しさん:2007/02/20(火) 18:23:59
Win32APIの32とはなにですか?しりたいのです。
135デフォルトの名無しさん:2007/02/20(火) 18:26:47
16の倍で、64のちょうど半分です
136デフォルトの名無しさん:2007/02/20(火) 18:29:26
丁度指が足りなくなる数
137デフォルトの名無しさん:2007/02/20(火) 18:31:48
ゲイツ「えと、なんとなく…」
138デフォルトの名無しさん:2007/02/20(火) 18:33:30
√1024

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

x64やIteniumのはWin64かと思いきゃ、
Win32 for 64-bit Windowsという呼称が一部で見受けられる。
(無論WOW64のことではない)
140デフォルトの名無しさん:2007/02/20(火) 18:44:42
ゲイツ「そうだったんだー、へー」
141デフォルトの名無しさん:2007/02/20(火) 18:51:18
質問箱って書いてありますが、ここ、箱じゃないですよね。
なのに何で箱なんですか?
タイトル名からうそをついているようではとてもじゃないけどうその答えを
返されそうで質問できません。
142デフォルトの名無しさん:2007/02/20(火) 18:54:26
日本語でおk
143デフォルトの名無しさん:2007/02/20(火) 18:54:46
おまえさんは箱の定義を勘違いしてるんだろう。
144デフォルトの名無しさん:2007/02/20(火) 18:56:50
ネタにマジレスってカッコイイよね
145デフォルトの名無しさん:2007/02/20(火) 18:57:50
pc10 (banana313) も↓こんな感じでしょ。 箱詰めぎっちりだわさ
ttp://www.maido3.com/server/phototour/6.html
146デフォルトの名無しさん:2007/02/20(火) 19:31:48
質問できないといいつつ、質問してるのはお約束だな。
147デフォルトの名無しさん:2007/02/20(火) 20:11:50
>>141
君はこのスレは箱ではないと思っているから、ここは箱ではないんだ。
ここが箱でない以上それは尤もな考え方であって、つまりここは箱ではないんだ。
しかし、よくよく考え直してみてくれ。ここが箱であったっていいじゃないか。
そういうわけで、仮にこのスレが箱だとしてみると、君の考え方は間違っていることになる。
それは即ちここが箱であるということに他ならず、仮定は正しかったということになるんだ。
14878:2007/02/20(火) 20:31:23
何度もすんまそん。
子ウインドウのテキストエディタを終了させた後、親ウインドウが
アクティブにならず他のウインドウの下に隠れてしまって悩んでいます。
親ウインドウアクティブにて戻るにはどうすればよいのでしょうか。

http://sa-wiki.com/upload/src/up0110.txt
149133:2007/02/20(火) 20:59:20
自己解決しました。
FOLDERID_UsersFilesですね。

しかし糞スレだな
150デフォルトの名無しさん:2007/02/20(火) 21:05:37
はこ 【箱/▼函/▼筥/▼匣/▼筐】

(5)厠(かわや)に置いて大便を受けるもの。しのはこ。また、大便。
「―すべからず/宇治拾遺 5」
151デフォルトの名無しさん:2007/02/20(火) 21:59:57
>>141
そうか
152デフォルトの名無しさん:2007/02/20(火) 22:19:51
キャスト以外の方法で、
整数を受け取って席轍に変換されたvoid*を返すようなAPIってありますか?
153デフォルトの名無しさん:2007/02/20(火) 22:20:54
席轍→適切のミスです 
154デフォルトの名無しさん:2007/02/20(火) 22:22:39
意味不明
155デフォルトの名無しさん:2007/02/20(火) 22:24:46
そもそも整数はデータ表現の問題で、キャストはコンパイラと言語仕様の問題、
それがAPIと何の関係があるんだ?
15619:2007/02/20(火) 22:25:35
>>152
つ union
157デフォルトの名無しさん:2007/02/20(火) 22:29:07
うん、つっこまれて気づいた ごめんなさい
158デフォルトの名無しさん:2007/02/20(火) 22:43:05
>>152
つ TlsGetValue
159デフォルトの名無しさん:2007/02/20(火) 23:52:34
>>121
日本語が不自由な奴に秀吉見せたらファビョるぞ
160デフォルトの名無しさん:2007/02/21(水) 03:41:03
サウンド機能についてです。
色々なメディアプレイヤーを使っていると
勝手に音量の位置が変わってしまいます。
これを固定とかしようと思うのですが
どうすればいいですか?

既存ソフトだと細かい事ができないので
自分で何とかしたい訳ですが・・・
161デフォルトの名無しさん:2007/02/21(水) 03:53:33
>>160
mixerOpen
162デフォルトの名無しさん:2007/02/21(水) 07:41:42
ミキサー勝手に弄るアプリは死んで良いと思う今日この頃。
163デフォルトの名無しさん:2007/02/21(水) 08:14:42
>>162
RealOneとかどうにかしてよw
164デフォルトの名無しさん:2007/02/21(水) 08:40:10
>>160
VISTAに移行しるw
165デフォルトの名無しさん:2007/02/21(水) 13:16:58
サブクラス化したSTATICでTrackMouseEventでウインドウからマウスが外れたことを
知りたいと思うのですが、プロシージャのどの部分でTrackMouseEventを
設定すればよいのか、またメッセージのWM_MOUSELEAVEをどこで受け取ればよいのか
が解りません。

サブクラス化が良く理解できていないのは解りますが、理解の助けになる、
もしくはマウスが外れたことを知る方法の参考になるサイトなどがありましたら
教えてください。
166デフォルトの名無しさん:2007/02/21(水) 13:44:41
サブクラス化
http://wisdom.sakura.ne.jp/system/winapi/win32/win64.html

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

WM_MOUSEMOVEなどのメッセージを受け取りたいと考えていますが、
何から理解していけば良いのか途方にくれています。
ご助言をお願いします。
167デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/21(水) 21:22:09
>>168
アドレスの計算の仕方はそれで合ってる。
ただしそのサイズはアラインメントされたサイズなので、
仮想メモリにマップ後の実際のコードサイズの値は、
セクション毎のVirtualSizeを見ないとわからんよ。
普通のコードセクション(.text)なら
SizeOfCode == SizeOfRawData >= VirtualSizeだから、
大よそが判れば良いなら>>168の方法でもいいけど、
SizeOfRawData < VirtualSizeもありうる。

>以降も関数が配置されてる
これはどういう方法で確認してる?
実際の所コンパイルオプション見ないとわからんけど、
インポートアドレステーブルだったり他のセクションが
混ざってるとかじゃないかね。
OptionalHeaderだけじゃなくてその後のセクションの
情報も見て位置を把握しないと判りづらいと思うよ。
170168: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デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/21(水) 22:36:07
APIのは対応してないと明示されてるので、諦めてCRTのvswprintfを使う。
173デフォルトの名無しさん:2007/02/21(水) 22:37:20
>>171
っ stdarg.h
っ va_start
っ va_end
174デフォルトの名無しさん:2007/02/21(水) 22:37:39
すでにAPI関係ないな
175デフォルトの名無しさん:2007/02/22(木) 01:24:11
>>172

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

switch文で
%fの場合、
%sの場合、
とかめんどいことして対処してたorz
176デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/22(木) 12:45:27
メディアプレイヤーのフルスクリーンは DirectX のフルスクリーンモードではないかと…
178デフォルトの名無しさん:2007/02/22(木) 12:52:38
DirectXの切替だと結構もっさりするんですよね
デスクトップの解像度と同じで切り替えたとしてももっさり
調べてるわけじゃないけどメディアは瞬時に切り替えてるからDirectXじゃないんじゃないかな
179デフォルトの名無しさん:2007/02/22(木) 13:13:25
いや、Media Playerは少なくともDirectShowを使っている。
180デフォルトの名無しさん:2007/02/22(木) 13:30:01
論点が滅茶苦茶だな。

ハードウエアの解像度変更と、ソフトウエアでのスケーリングを混同するな。
181デフォルトの名無しさん:2007/02/22(木) 13:55:18
>>178は「モニターの解像度切り替えと似てもっさりしてる」と言ってるだけで
同列に扱ってるわけじゃないと思うんだけど、違うのかな
182デフォルトの名無しさん:2007/02/22(木) 14:14:35
>>181
デスクトップの解像度でD3Dフルスクリ-ン と
コンテンツの解像度でD3Dフルスクリ-ン とでは微妙に違う。
183デフォルトの名無しさん:2007/02/22(木) 14:30:13
>>179
あぁすまん、DirectShowは使ってると思う。
>>178はDirectGraphicsのCreateDevice()のフルスクリーン切替は使ってないんじゃない?
と言いたかった

>>180
誰あてのレス?

>>181
そう、その通り

>>182
IDirect3DDevice9::CreateDevice()を使った切替ではデスクトップ/コンテンツの解像度に
よる違いって殆ど感じられなかったけど。(両方もっさり)
184182:2007/02/22(木) 14:36:50
>>183
そっか。
profile 取って、どこが遅いか見たほうが良いかもしれないし、
>>176 コードをベースに悪あがきするのも良い
185178:2007/02/22(木) 14:42:01
ちょっと勘違い、再確認したら

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

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

186デフォルトの名無しさん:2007/02/22(木) 16:09:02
画面いっぱいに窓広げているだけだろ。アフォか?
187デフォルトの名無しさん:2007/02/22(木) 16:52:55
なら >>176 に回答してみろ、できなきゃオマエが真性アフォ
188デフォルトの名無しさん:2007/02/22(木) 17:20:05
馬鹿バッカー
189デフォルトの名無しさん:2007/02/22(木) 18:18:32
SetWindowPosの使い方が間違っている。HWND_TOPMOSTを指定しろ。というか全画面はこれが常識。
APIリファレンスも見ない馬鹿しかいないのか?
190デフォルトの名無しさん:2007/02/22(木) 18:34:32
>>177が無知なくせに頓珍漢なことを言うから変な流れになるんだよ。
191デフォルトの名無しさん:2007/02/22(木) 18:36:19
僕ハッカー
192176:2007/02/22(木) 18:37:49
>>189
うぉぅっ、CWnd::wndTopMostを指定してるもんだとばかり思ってた
これは恥かしい、ありがとう解決した

挙動も意図したものになったよ
193デフォルトの名無しさん:2007/02/22(木) 18:40:51
ウィンドウが全画面になった後、タスクバーがあった場所に
自分の描画をするのがもっさりしてるんじゃね?
194デフォルトの名無しさん:2007/02/22(木) 19:20:10
インターネット回線や電話回線が
使える状態かどうかわかるAPIを教えてください
19567:2007/02/22(木) 19:40:43
#シカトされたので再送
サービスの ServiceMain コールバック関数に、
ユーザー定義データを渡せないのは痛いね。
オブジェクト指向化しにくいね。みんなどうやってる?
196デフォルトの名無しさん:2007/02/22(木) 19:43:55
質問です。
なぜ、構造体に、それ自身のサイズを代入しないといけないのですか?
xxxinst.dwSize = sizeof(xxx);
みたいにするなら、必要ないと思うのですが…
197デフォルトの名無しさん:2007/02/22(木) 19:46:23
>>196
過去との互換性のため。
例えば、Rev1のときはサイズが100バイトだったのが、Rev2では120バイトになったりしたら、サイズがあれば便利。
198デフォルトの名無しさん:2007/02/22(木) 19:46:56
>>196

>>197さんが言うように、
それで、構造体のバージョンを判別することもある。
DEVMODE,OSVERSIONINFOとかね
199デフォルトの名無しさん:2007/02/22(木) 19:48:57
>>194
InternetAttemptConnect関数かな?
200デフォルトの名無しさん:2007/02/22(木) 19:59:35
>>197
>>198
なるほど。んじゃあ、これってプログラマのためにある変数なんですか。
OSがメモリ確保するときに必要なわけじゃないんですね。
201デフォルトの名無しさん:2007/02/22(木) 20:02:24
>>195
ドキュメント嫁
202デフォルトの名無しさん:2007/02/22(木) 20:02:41
>>200
OS側で、どこまでのメンバをコピーすべきかの有効判別の意味が大きいかもにゃん。
203デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/22(木) 20:24:11
>>203

ちょwwww
志村!
志村!

char Name[8];
20567:2007/02/22(木) 20:30:26
>>201
どこらへんを読んだらいいでしょうか。
206デフォルトの名無しさん:2007/02/22(木) 21:07:13
>>205
まず、どこがどう分からないかを具体的に記しなさい。
207デフォルトの名無しさん:2007/02/22(木) 21:12:21
サービスのインスタンスは1プログラム中に10も20もあったりしないと思うのだが。
208デフォルトの名無しさん:2007/02/22(木) 21:35:07
サービス関係のAPIを一通り目を通せば、目的の物が見つかるはず。
読んでないから、わからないんだろ。

あと今でも使われている古きテクニックとしてはマシン語生成ってのもある。
209デフォルトの名無しさん:2007/02/22(木) 21:35:55
svchost.exeみたいに、同一プロセスに複数のサービスがあるのならまだしも。
21067:2007/02/22(木) 21:54:48
> サービスのインスタンスは1プログラム中に10も20もあったりしないと思うのだが。
いや、あるんですけど。
211デフォルトの名無しさん:2007/02/22(木) 22:08:29
意味がわからんのだけど
ServiceMain内でインスタンス生成すればいいんじゃないの?
212デフォルトの名無しさん:2007/02/22(木) 22:42:10
知識がないわけじゃないのに工夫ができない子はいらない子
213デフォルトの名無しさん:2007/02/22(木) 22:48:27
何ができなくて困ってるのかよく解らん。
ユーザ定義データを渡せると仮定して、渡せないときに比べて何ができるようになる?
214デフォルトの名無しさん:2007/02/22(木) 23:49:03
マウスの動作を拡張するソフトって、どうやってるんですか?
自分で登録したクラスなら、メッセージ取れるけど、
ほかのウィンドウクラスに送信されたメッセージって
メッセージキュー以前の段階でとらないといけいないですよね。

ヒントだけでもください。
215デフォルトの名無しさん:2007/02/23(金) 00:14:34
Hook
216デフォルトの名無しさん:2007/02/23(金) 00:18:28
>>214
SetWindowsHookEx
使うとか
217デフォルトの名無しさん:2007/02/23(金) 01:10:03
どうも。
218デフォルトの名無しさん:2007/02/23(金) 02:00:53
「オーナー描画ボタン」を少し改造しています。
http://wisdom.sakura.ne.jp/system/winapi/win32/win61.html

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

自分の理解はSetWindowLongでSubBtnProcに飛んで、引数をそのままDefBtnProcに
代入されている WndProcに飛ぶのだと思っていました。
どこを勘違いしているのかわかりませんので、どなたかご指摘をお願いします。
219デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/23(金) 07:13:45
>>218
WM_DRAWITEMは親ウィンドウに送られてくるものなので、それでOK。
221194:2007/02/23(金) 10:34:57
>>199
そういう感じのAPIで
繋がってる回線の数等わかるものはないですか?
222デフォルトの名無しさん:2007/02/23(金) 11:36:46
>>221
WNetEnumResource関数も見たほうがいいかもね
223デフォルトの名無しさん:2007/02/23(金) 11:42:44
>>222
それは違う関数だと思う。

>>221
WMIにあるかもね
224デフォルトの名無しさん:2007/02/23(金) 11:54:36
繋がってる回線というのを具体的に定義すればわかるかもよ
225デフォルトの名無しさん:2007/02/23(金) 11:59:37
繋がってるTCPコネクションの事なのか
LAN回線の接続数の事なのか
226デフォルトの名無しさん:2007/02/23(金) 12:06:25
LANではなくて電話回線の数を数えたいのですが
WindowsのAPIで可能でしょうか?
227194:2007/02/23(金) 12:37:30
>>225
両方とも教えてください
228デフォルトの名無しさん:2007/02/23(金) 12:40:16
コンボボックスで今何番目の項目が選択されているか調べたいのですけど
どのようにすればいいでしょうか?
229デフォルトの名無しさん:2007/02/23(金) 12:40:31
>>226
WMIでWin32_POTSModemクラスかな?
230デフォルトの名無しさん:2007/02/23(金) 12:43:48
>>228
CB_GETCURSEL
メッセージ
231228:2007/02/23(金) 12:52:48
ShowMessage( SendMessage(In,CB_GETCURSEL,0,0) );
試しでこんな風に書いてみたのですが、
0しか返ってきません。
書き方は間違ってませんよね?
232デフォルトの名無しさん:2007/02/23(金) 14:30:36
In、て、なんだ、ハゲ。
233デフォルトの名無しさん:2007/02/23(金) 14:50:25
ShowMessageって何かと思ったらbc++か
234228:2007/02/23(金) 15:59:17
環境はC++Builder6
Inはただ適当につけたハンドルです。
235デフォルトの名無しさん:2007/02/23(金) 16:04:30
で、Inはそのコンボボックスのハンドルなの?
いちおー、0は有効値(見つからないと-1)だから
ハンドルが違ってる可能性高い
236デフォルトの名無しさん:2007/02/23(金) 16:29:13
EnterCriticalSection した後、
その中で CreateThread しても問題ない?
237デフォルトの名無しさん:2007/02/23(金) 16:48:10
>>236
問題ない
238デフォルトの名無しさん:2007/02/23(金) 17:29:06
根拠は?経験上?仕様上?
239デフォルトの名無しさん:2007/02/23(金) 17:38:41
そもそもクリティカルセクション中にCreateThreadしちゃいけないって
何で思ったの?
240デフォルトの名無しさん:2007/02/23(金) 17:40:50
なんとなく
241デフォルトの名無しさん:2007/02/23(金) 17:58:30
クリティカルセクションは他のスレッドへの切り替えを抑止するような役目を果たしてるから、
EnterCriticalSectionの後にスレッド作ってそこでもクリティカルセクションを使った場合に大丈夫かって思ったんじゃないの?
242デフォルトの名無しさん:2007/02/23(金) 17:58:51
>>234
実際に選択項目を変えてみたの?
243228:2007/02/23(金) 18:34:51
項目を変えたりしても、変わらないです。
244デフォルトの名無しさん:2007/02/23(金) 18:37:21
CB_GETCURSEL以外はうまくいくのか?
CB_GETCOUNT とか CB_RESETCONTENT とか
245228: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デフォルトの名無しさん:2007/02/23(金) 18:52:38
>>245
>SealIn
上の(SealInに項目を追加)が気になる
これってコンボボックスの名前か?
まさかだけど
ShowMessage( SendMessage(SealIn->Handle , CB_GETCURSEL , 0 , 0) );
ってことないよね?
247デフォルトの名無しさん:2007/02/23(金) 18:55:04
あと、SendMessage()直後にGetLastError()を
248228:2007/02/23(金) 19:07:48
SealInがコンボボックスの名前です
SealIn->Items->Add(text);
で、項目を追加してます。
それ以外の処理はまだないです。

GetLastErrorを追加しましたが、エラーコード返ってきませんでした
249デフォルトの名無しさん: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) );
250228:2007/02/23(金) 19:11:20
>>249
うまくいきました。
ありがとうございます
251デフォルトの名無しさん:2007/02/23(金) 19:27:18
TFormってことはVCLも使ってるだろうになんでわざわざそんなめんどくさいことを
SealIn->ItemIndexじゃいかんのか
252デフォルトの名無しさん:2007/02/23(金) 19:30:21
>>251
Win 32 SDK板ですからね
253デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/24(土) 00:55:05
マルチスレッドで描画と計算を分けるのは前提だよな。
257デフォルトの名無しさん:2007/02/24(土) 08:19:25
>>255

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

CreateThread関数、
WaitForSingleObject関数、WaitForMultipleObjects関数あたりを見てみ。
258デフォルトの名無しさん:2007/02/24(土) 09:16:35
>>254
コンソール入力を待てると書いてあるし、
http://msdn.microsoft.com/library/ja/jpdllpro/html/_win32_waitformultipleobjects.asp
読み取られていない入力があったときにシグナル状態になると書いてあるし、
http://msdn2.microsoft.com/en-us/library/ms686364.aspx
平気だろう。
259デフォルトの名無しさん:2007/02/24(土) 17:58:00
260デフォルトの名無しさん:2007/02/24(土) 20:36:30
どなたか助けてください。

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

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

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

なぜこんなことになるのでしょうか?
261デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/24(土) 21:07:19
>>260
ふしぎだね。

四角形になるRFGTでRFGを同時押しすると
Tも押したことになってしまうタイプのキーボードとか。
んなこたーねーか
264デフォルトの名無しさん:2007/02/24(土) 21:09:51
呪われておる
265デフォルトの名無しさん:2007/02/24(土) 21:42:40
>>260
必ず’T’なのか?
>コンソールで高速に
知らず押しちゃってるってことない?
266デフォルトの名無しさん: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デフォルトの名無しさん:2007/02/24(土) 21:51:14
それはそのプログラムだけで発生するわけ?
270デフォルトの名無しさん:2007/02/24(土) 21:52:21
キーボードってさ、
キーの数だけ配線が二本ずつあるのではなくて
一本は横一行で共有
もう一本は縦一列で共有
同時押しがあると見分けつかないから
昔のキーボードでは良く起きた。
271デフォルトの名無しさん:2007/02/24(土) 21:53:04
>>270
とおもう。
272260:2007/02/24(土) 21:53:48
VC 2005 + SP1 を使っています。

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

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

別の人のマシンでも再現したので、私のマシンの問題ではないと思う。
(両方のマシンとも Dell 製だが、機種は違う。)
273デフォルトの名無しさん:2007/02/24(土) 21:57:35
ソース見てみたい
274260:2007/02/24(土) 22:19:59
>>273
いや >>260 に書いたとおりなんですけど。。。
あのサイトのコードを使ってコンソールをセットアップして、
その後で fgets . fputs を繰り返すループを書くだけです。
275デフォルトの名無しさん:2007/02/24(土) 22:24:38
じゃあWindowsかVCの不具合なのかもな
276デフォルトの名無しさん:2007/02/24(土) 22:36:09
260を見て思ったんだが、FILE構造体同士の代入ってやっていいのか?
freopen("con", "w", stdout);とか
(またはconの代わりにCONOUT$など)では駄目か?
277デフォルトの名無しさん:2007/02/24(土) 22:45:56
>>276
もし俺がやるとしたら俺も>>276のほうだな
278260:2007/02/24(土) 22:50:59
直った!下記のコードでうまくいった!ありがとう!

freopen("con", "r", stdin);
freopen("con", "w", stdout);
freopen("con", "w", stderr);
279デフォルトの名無しさん:2007/02/24(土) 23:19:32
質問です

gethostnameとgethostbynameを利用してローカルIPは取得できたのですが、
グローバルIPはAPIで取得できるのでしょうか?
280デフォルトの名無しさん:2007/02/24(土) 23:21:38
[グローバルIP]がブロードバンドルータに付いているものを指すなら、
UPNPでとるとか、実際の通信相手からpeernameを戻してもらうしかない。
281デフォルトの名無しさん:2007/02/24(土) 23:33:46
>>280
やっぱりAPIで楽はできないですかorz
ご助言ありがとうございました。
282デフォルトの名無しさん:2007/02/24(土) 23:49:20
XPに限定してもいいならUPnPを操作するAPIがあったはず
283デフォルトの名無しさん:2007/02/24(土) 23:54:40
>>270
ダイオードあげる

つ ─━─
284デフォルトの名無しさん:2007/02/24(土) 23:58:24


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

らしい
287デフォルトの名無しさん:2007/02/25(日) 00:27:04
>>283 >>284
そうだね!
288デフォルトの名無しさん:2007/02/25(日) 08:15:54
プロテインだね!!
289デフォルトの名無しさん:2007/02/25(日) 10:18:14
VC では open_osfhandle を呼び出すことで OS のファイルハンドルから
ファイル記述子に変換することはできますが、
逆に、ファイル記述子から OS のファイルハンドルを取得するには
どうしたらよいでしょうか。
290デフォルトの名無しさん:2007/02/25(日) 10:20:39
_get_osfhandle
291デフォルトの名無しさん:2007/02/25(日) 11:47:14
フォルダやファイルを、どのアプリケーションが開いているか確認する方法はないですか。
292デフォルトの名無しさん:2007/02/25(日) 12:02:20
Process Explorerにそんな機能があったな。
293デフォルトの名無しさん:2007/02/25(日) 12:07:50
ProcessExplorerそんな機能ないだろ
単にモジュール列挙じゃない?
294デフォルトの名無しさん:2007/02/25(日) 12:18:26
Unlockerにはそういう機能がある。
295デフォルトの名無しさん:2007/02/25(日) 12:19:54
FindメニューのFindHanlde or Dll
ってそういうものだと思ていたが。
296デフォルトの名無しさん:2007/02/25(日) 13:02:30
FileMon じゃねーの?
297デフォルトの名無しさん:2007/02/25(日) 13:50:48
Handleは?
298デフォルトの名無しさん:2007/02/25(日) 14:00:11
c:\windows\system32\openfiles.exeは?
299デフォルトの名無しさん:2007/02/25(日) 14:01:36
OH.EXEは?
300デフォルトの名無しさん:2007/02/25(日) 14:23:48
301デフォルトの名無しさん:2007/02/25(日) 15:58:29
あれ、WindowsXPなのに、openfiles.exeがない!
302デフォルトの名無しさん:2007/02/25(日) 15:59:12
なんだプロだけかよ…
303デフォルトの名無しさん:2007/02/25(日) 18:28:59
うんにゃ、サーバにもありんす
304デフォルトの名無しさん:2007/02/25(日) 19:26:06
regmon.exe どっかにないの?
305デフォルトの名無しさん:2007/02/25(日) 20:51:13
Process Monitorでレジストリの監視もできるだろ
と言いたいところだがLog Bootの機能がなくなってる。
Vistaで起動時のレジストリアクセスを調べるにはどうしたらいいんだ
306デフォルトの名無しさん:2007/02/25(日) 21:27:17
バイナリデータ(AA00CCDD0Aとか)を文字に変換かけるAPIとかってありますか?
307デフォルトの名無しさん:2007/02/25(日) 21:41:56
wsprintf
308306:2007/02/25(日) 21:46:41
wsprintfでできるんだっけ?
補足するとバイナリファイルを16進表記で表示させるプログラムを作りたいんだが。

バイナリで読み込んだものをwsprintfA(..."%X"...);でやるとおかしくなった気がします。
何かの間違いかもしれないからもう一度試してきます。
309306:2007/02/25(日) 21:49:34
やはりAA00CCDD0Aというバイナリがあったとして
wsprintfでやるとAAまでしか取得できません。
0x00に反応してると思われ
310デフォルトの名無しさん:2007/02/25(日) 21:51:29
>>309
ソースを晒すべし
0x00 は多分関係無い 言語にもよるだろうけど
311デフォルトの名無しさん:2007/02/25(日) 21:52:54
いや、1byte毎ぐるぐる回しながら、%Xで変換、という話だと思うが
312306:2007/02/25(日) 21:54:16
>>311
あー、なるほどそういうことか。
試してみます。
313デフォルトの名無しさん:2007/02/25(日) 21:57:15
>>305
regmon.exe あったぁ〜
MSに買収されてたとは知らんかった
サンクスです
314306:2007/02/25(日) 23:14:59
できましたが
AA0001とかだとA01としかならないです
315デフォルトの名無しさん:2007/02/25(日) 23:17:27
>>314
%02X
316デフォルトの名無しさん:2007/02/25(日) 23:18:02
%02X
317306:2007/02/25(日) 23:24:15
>>315
それは既に試していて
もう一度やりましたがやっぱりダメでした。

A0000とかなっちゃいます
318デフォルトの名無しさん:2007/02/25(日) 23:24:58
>>306
ソースうp
319306:2007/02/25(日) 23:30:25
320デフォルトの名無しさん:2007/02/25(日) 23:35:12
>wsprintf(&PackData.lpPack[i], TEXT("%X"), buff[i]);
これが原因。buff[i]はいいけど、lpPack[i]は1ループで2進むことがあるから。
321デフォルトの名無しさん:2007/02/25(日) 23:36:22
buffへコピーする必要は無いだろ。
せいぜいBYTE* packet = lpPacket;で十分。
322デフォルトの名無しさん: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デフォルトの名無しさん: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]);
}
}
324306: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になっちまいます
325306:2007/02/25(日) 23:38:32
>>320
あー、UNICODEベースで組んでるのが原因かなぁ
326デフォルトの名無しさん:2007/02/25(日) 23:40:59
>>325
>>323 が正解
327デフォルトの名無しさん:2007/02/25(日) 23:44:20
wsprintf(&PackData.lpPack[i], TEXT("%X"), buff[i]);

wsprintf(&PackData.lpPack[i*2], TEXT("%02X"), buff[i]);
328306:2007/02/25(日) 23:45:04
>>327
それはむしろi * sizeof(TCHAR)でやるべきかと。

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

331306:2007/02/25(日) 23:48:45
>>330
あー、そういうことなのか

>>325についてはリストビューをUNICODE形式にしちまってるから
なんとかならないですかのう。Aに全てやり直すの酷だ・・
332デフォルトの名無しさん:2007/02/25(日) 23:56:02
320の件は323なり327なりの方法で解決できる。
Unicodeは関係ない。
333306:2007/02/25(日) 23:58:40
全然違うソースを改変してビルドしてたんでまったく結果が同じという
オナニーショーを演じていましたどうもすみません。

334306:2007/02/25(日) 23:59:17
(´・ω・`)
335デフォルトの名無しさん:2007/02/26(月) 00:02:31
よく頑張ったお前は神だよ
336デフォルトの名無しさん:2007/02/26(月) 02:31:42
もっとわかりやすいデータを食わせて何がおきてるのかさぐる、とか
そもそも%02Xはどういう意味なのか、くらい調べようぜ
337デフォルトの名無しさん:2007/02/26(月) 12:57:25
特定のアプリに対して
キーボードのBackword/Forwardキーとかの特殊キーで
WM_COMMANDが送られるのをブロックしたいのですが、
どうすればいいですか?
338デフォルトの名無しさん:2007/02/26(月) 15:21:58
キーボードフック
339337: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デフォルトの名無しさん:2007/02/26(月) 22:00:19
>>339
フックだけじゃダメだって。
ジャブやアッパーも織り交ぜないと。
341デフォルトの名無しさん:2007/02/26(月) 22:19:40
LVM_DELETEITEMとかでアイテムを削除した後
アイテムを追加するとInsertItemは追加できるのにSetItemのほうは
追加できなくなりました。原因に心当たりのある方がいたら教えていただきたいのですが。
342デフォルトの名無しさん:2007/02/26(月) 22:22:49
>>340
フックって意味分かってる?
あんなの出すんだったらジャブとかアッパーだしたら隙が出ちゃうよ?
343デフォルトの名無しさん:2007/02/26(月) 22:26:34
>>341
SetItemは追加じゃないんだけど、、、まあそれは置いておいて、

SetItemに指定してるアイテム番号が違うのでは?
例えばInsertItemの戻り値がアイテム番号なので、それをSetItemに指定するとか。
344デフォルトの名無しさん:2007/02/26(月) 22:27:31
CreateWindowで"BUTTON"をBS_OWNERDRAW指定して作った子ウインドウに
WM_PAINTでビットマップをコピーして表示することはできました。
このWM_PAINTをWM_LBUTTONDOWNに変えるとビットマップが表示されません。

すみませんが、どうしてなのか教えてください。
345デフォルトの名無しさん:2007/02/26(月) 22:29:19
>>343
それはないと思うんですが。
まず、LVM_DELTEITEMを送る前まではちゃんとSetItemできてて
LVM_DELTEITEMをSendした後から追加しようとするとできなくなってしまいます
346デフォルトの名無しさん:2007/02/26(月) 22:30:09
BeginPaint/EndPaintはWM_PAINTの中でしか使えない。
またそれを解決しても、後のWM_PAINTで上書きされるということが起きそう。
347デフォルトの名無しさん:2007/02/26(月) 22:31:02
>>344
BeginPaint の PAINTSTRUCT を見てみて
348デフォルトの名無しさん:2007/02/26(月) 22:35:33
>>344
よくわかんないけど、WM_DRAWITEMを使うのは?
349341:2007/02/26(月) 22:37:51
解決しました。
350デフォルトの名無しさん:2007/02/26(月) 22:42:04
後々の為に方法を書いておくんだ
351デフォルトの名無しさん:2007/02/26(月) 22:42:35
>>347-348
ご回答ありがとうございます。
手がかりにして調べてみます。
352341:2007/02/26(月) 23:16:12
>>350
単純に消去した時のカウントがそのままでというか
項目数取得使っとけば良かったのに何で俺staticな変数で
インクリメントしてたんだろう・・・。

という話です
353341:2007/02/26(月) 23:41:12
ふとした疑問。
ListView_GetItemCountで取得した項目数をそのまま
ListView_InsertItemを使って追加していった場合、
果たしてそれは正しいやり方なんだろうか・・・・。
354デフォルトの名無しさん:2007/02/27(火) 00:03:48
>>339
フックでメッセージを消したいときは、メッセージをWM_NULLに
書き換えればいいんだよ。
355デフォルトの名無しさん:2007/02/27(火) 00:04:44
>>353
意味が分からんが、ちょっと興味ある。
詳しく
356デフォルトの名無しさん:2007/02/27(火) 00:32:50
テンプレのWIn32API入門の第11章の終了処理のプログラムを実行すると
Proglam still running ? というエラーがでてビルドできません
これはどういうエラーなんでしょう?
環境はWin98でBorlandの5.5です
357339:2007/02/27(火) 00:43:42
>>354
メッセージの変更は
WH_GETMESSAGEではできるみたいですが
WH_CALLWNDPROCではできないようです。
WH_GETMESSAGEではキャッチできませんでした・・・orz
358デフォルトの名無しさん:2007/02/27(火) 00:46:27
>>356
コンパイル結果のと同じ名前のEXEが現在実行中。
359デフォルトの名無しさん:2007/02/27(火) 00:46:29
>>356
ビルドの対象のプログラムがまだ実行中
360デフォルトの名無しさん:2007/02/27(火) 02:23:23
win32apiの関数で画像の加算合成をするにはどうしたらいいですか?
361デフォルトの名無しさん:2007/02/27(火) 02:42:03
gl何とか
362デフォルトの名無しさん:2007/02/27(火) 02:53:04
>>360
DIBにすればピクセル単位で普通にCPUで読み書きできる。
363デフォルトの名無しさん:2007/02/27(火) 10:06:16
>>360
結局、演算部は自作ですよ。
364デフォルトの名無しさん:2007/02/27(火) 10:22:42
自作ルーチンで演算
これがほんとの自作自演ナンチャッテ
365デフォルトの名無しさん:2007/02/27(火) 11:06:58
【審議中】
    ∧,,∧  ∧,,∧
 ∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U (  ´・) (・`  ) と ノ
 u-u (l    ) (   ノu-u
     `u-u'. `u-u'
366デフォルトの名無しさん:2007/02/27(火) 11:09:53
( ´д)……(´д`)……(д` )
367デフォルトの名無しさん:2007/02/27(火) 12:09:26
そのまましばらくお待ちください
368デフォルトの名無しさん:2007/02/27(火) 12:11:43
  __        __       __
  |よし| ΛΛ  |よし| ΛΛ   |よし| ΛΛ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 〃 ̄∩ ゚Д゚) 〃 ̄∩ ゚Д゚)  〃 ̄∩ ゚Д゚) < >>364 全員一致で逝ってよし!
    ヾ.   )    ヾ.   )     ヾ.   )   \_____________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\
\                                                \
  | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |
  |          逝ってよし認定委員会                    |
  |                                           |
\|                                           |
369デフォルトの名無しさん:2007/02/27(火) 12:47:16
>>358 >>359
解決しました、ありがとう〜
370デフォルトの名無しさん:2007/02/27(火) 13:40:46
ウィンドウクラスとウィンドウスタイル定数が全部載ってるサイト教えれ
371デフォルトの名無しさん:2007/02/27(火) 13:55:38
マイクロソフトのサイト
372デフォルトの名無しさん:2007/02/27(火) 13:56:15 BE:139752498-2BP(222)
>>370
winuser.h
373デフォルトの名無しさん:2007/02/27(火) 14:12:01
BCCなんですが、GDI+のライブラリがないとjpgって表示できないんですか?
374デフォルトの名無しさん:2007/02/27(火) 14:30:57
>>373
jpg解凍ルーチンを自分で書けばいいと思うよ
375デフォルトの名無しさん:2007/02/27(火) 14:41:15
他の板ならともかく、ここで「解凍」って見るとすごくバカっぽいな。
376デフォルトの名無しさん:2007/02/27(火) 14:42:23
>>374
だめなのか。。。('A`)メンドクセ
dクス
377デフォルトの名無しさん:2007/02/27(火) 14:58:40
ライブラリ無いとどんな画像形式でも表示なんか無理だと思うんだが…
378デフォルトの名無しさん:2007/02/27(火) 15:00:54
GDI+じゃなくても、OleLoadPictureあたり使えばイインジャネ?
379デフォルトの名無しさん:2007/02/27(火) 15:10:46 BE:11646623-2BP(222)
IEコンポにやらせるとか。
380デフォルトの名無しさん:2007/02/27(火) 17:17:10
>>373
自分でこっそり使うツール程度で単に表示させたいだけなら、
Susieプラグインでも使えばいいんじゃない。
BMP(DIB)さえ扱えるなら、.spiは結局DLLなので
静的ロードしてやれば自分で書くコードはほとんど無くて済むだろうし。
# 昔読んだプラグイン仕様の記憶から書いてるのでどっか間違ってるかも。

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

もし商用利用する場合はライブラリのライセンスを要確認のうえで。
381デフォルトの名無しさん:2007/02/27(火) 17:21:09
むしろlibjpeg
382デフォルトの名無しさん:2007/02/27(火) 17:26:30
UpdateLayerdWindowでblend.SourceConstantAlphaに255をセットした場合は成功して表示されるんですが、それ以下の数字を入れた場合Functionがエラーとなりエラーコードが87=パラメータが違います。となってしまいます。
Functionを呼ぶ前のスタイルとか何かに問題があるんでしょうか?
383デフォルトの名無しさん:2007/02/27(火) 18:09:00
>>382
スレ違い...と言いたいが、
GDI+スレはないんかいw
384デフォルトの名無しさん:2007/02/27(火) 18:12:11
Platform/Windows SDKにヘッダとライブラリがあるんだし、扱うとしたらここだろ。
その違いが把握できるなら.NET系のスレもありだとは思うが。
385デフォルトの名無しさん:2007/02/27(火) 18:34:05
何ですれ違いなん?普通にUser32.dll のAPIじゃなかと?
386デフォルトの名無しさん:2007/02/27(火) 18:35:29
gdiplus.dllだろ
387デフォルトの名無しさん:2007/02/27(火) 18:56:35
GDI+スレとか無いからここでいいんじゃね?
APIじゃないけど
388デフォルトの名無しさん:2007/02/27(火) 19:00:56
http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_updatelayeredwindow.asp?frame=true

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

というわけで、gdiplus.dll の関数ではなく、単なる Win32API です。
389デフォルトの名無しさん:2007/02/27(火) 20:26:46
>>373
jpg表示したいだけなら、OleLoadPictureでいいんじゃね?
前処理が面倒だが、jpgだけじゃなくBMP/GIF他も一緒に扱えるし。

390デフォルトの名無しさん:2007/02/27(火) 21:39:34
やべー jpg なんて libjpeg 一択と思ってた
png に libpng 使ってるんですが、これもひょっとしてメジャーじゃなかったり?
391デフォルトの名無しさん:2007/02/27(火) 22:06:55
>>382
255 = 0xFF = 0b11111111で 、
実際はblend.SourceConstantAlphaをリングシフトして、
OS(ドライバ?)は最下位ビットをAND判定してるとか?

nパーセントの透過率 = ((0xFF * n) / 100)
392デフォルトの名無しさん:2007/02/27(火) 22:34:01
>>382
::GetDeviceCaps(hDC, SHADEBLENDCAPS)の結果は?
393389:2007/02/28(水) 00:13:00
>>390
表示だけでなく、生成や変換もやる場合は、libXXXでいいんじゃね?
Susieプラグインとかよりライセンス条件緩そうだし。
WindowsのAPI/DLLだけで済むならそのほうがいいと思うんでOleLoadPicture
を勧めた訳だが。
394デフォルトの名無しさん:2007/02/28(水) 07:57:46
子プロセスの出力をパイプで受け取り、それをistreamで読み出すには
どうしたら良いのでしょうか?
スレ違いなら誘導お願いします。
395デフォルトの名無しさん:2007/02/28(水) 08:01:00
パイプで受け取る方法はググればサンプルが見つかる。
istreamがC++のやつのことなら、Boost.Iostreamsを使うのが楽。
396394:2007/02/28(水) 08:18:45
>>395
ありがとうございます。おっしゃる通りistreamはC++のやつのことです。
これからググって調べてみる事にします。
397デフォルトの名無しさん:2007/02/28(水) 14:18:14
他のアプリが呼び出した DeviceIoControl()
の内容を横取り(もしくは覗き見)する方法はあるでしょうか?
398デフォルトの名無しさん:2007/02/28(水) 14:20:09
アル
399デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/01(木) 08:14:20
>>400
単純に回転ならCreateFont関数でnEscapementで角度指定だっけな?

垂直、水平はしらん
402デフォルトの名無しさん:2007/03/01(木) 08:15:36
CreateFont
403402:2007/03/01(木) 08:16:36
かぶったすまん
404デフォルトの名無しさん:2007/03/01(木) 11:56:14
>>400
g.TranslateTransformで反転表示させることも出来るよ(・∀・)イイ!!
そのほうが多分効率いいと思う。
405デフォルトの名無しさん:2007/03/01(木) 18:25:26
画像のビューワみたいなものが作りたいのですが、サムネイルを表示する部分は
そのようなコントロールがあるのでしょうか。それともウィンドウに直接(?)書いて
マウスの座標などでクリックされた画像を判定したりしているのでしょうか。

開発環境は Visual C++ 2005 Express Edition です。
406デフォルトの名無しさん:2007/03/01(木) 20:09:35
>>405
IExtractImageインターフェイスだっけな?
407デフォルトの名無しさん:2007/03/01(木) 21:07:05
リストビューでよくね?
408405:2007/03/02(金) 08:41:49
>>406
ありがとうございます。
調べてみたのですが、サムネイルを生成するのに非常に便利そうで助かります。
この取得した画像を表示するコントロールなどがあるものかと悩んでいました。

>>407
リストビューの大きいアイコン表示を使うということでしょうか。
それとも(あまり詳しくはないですが)オーナードローというもので、描画する
のでしょうか。とりあえず試してみたいと思います。
ありがとうございました。
409デフォルトの名無しさん:2007/03/02(金) 08:47:10
>>408
正しいかどうかは分からないが、俺はリストビューの大きいアイコンで画像サムネイルビューアを作ったことがある。

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

今はExtractIconEx()でshell32.dllからインデックス直値で取ってますが...
OSが変わるたびに変えないといけないし('A`)
411デフォルトの名無しさん:2007/03/02(金) 21:53:29
あ、SHGetSpecialFolderLocation()→SHGetFileInfo() でいけそうですが
他に簡単な方法があれば。
412デフォルトの名無しさん:2007/03/02(金) 23:19:36
画像編集ソフトなどのアンチエイリアスをかけたペンをつくるため
Ellipseの範囲内を(線も)1ピクセルずつ操作したいのですが、
何か良い方法はありませんか?
413デフォルトの名無しさん:2007/03/02(金) 23:41:34
具体的にどのレベルの話をしてるんだい?
「DIBでやるのが普通」って答えを求めてるのか、
それとも「普通にやったんじゃ遅いから高速化する
方策はないか」てな話なのか。
414デフォルトの名無しさん:2007/03/02(金) 23:55:06
>>413
一応読み込んだピクセルビットにXY軸指定すれば
ピクセルを修正できる関数は作ったんですよ。
それをSetDIBitsToDeviceで表示するという感じで。
だからリージョンかラスタオペレーションか何かで
いじればできないかな・・・って
415デフォルトの名無しさん:2007/03/03(土) 00:21:49
>>414
1.グラデーション分のペン作成(単色のペンで)
2.ペンのストロークをサンプリング
3.2のストロークに対し、1のペン描画を反映。グラデーション分のビットマップを作成。
4.グラデーション別に平均化処理し、ORる

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

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

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

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

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

2の場合やりかたがわかりません。
Windows XP HOMEなのですが・・・
417デフォルトの名無しさん:2007/03/03(土) 12:44:50
エクスプローラやIEのアドレスバーの様にReBarにコンボボックス、ボタンを順に配置したいです。
ツールバーにコンボボックス(セパレータの上に配置)を入れてをバンドに入れる方法を見つけたのですが、
このコンボボックスはリサイズできないのでしょうか?
厳密には、セパレータの幅変更になりますけど。
また、目的のアドレスバーをスパイしてみると、ひとつのバンドにコンボボックスとツールバーを入れているようでした。
それを行うメッセージなりAPIがあるんでしょうか。
418デフォルトの名無しさん:2007/03/03(土) 13:01:43
419デフォルトの名無しさん:2007/03/03(土) 13:05:33
1つのバンドは1つのウィンドウしか占有できないから、
適当な子ウィンドウをバンドに置いて、その子としてコンボボックスなりツールバーなり置けばいい。
420デフォルトの名無しさん:2007/03/03(土) 14:25:52
>>416
うちのPC音でないから起動音のタイミングはわからないけど
サービスにすればスタートアップよりはやい

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

vectorとかに行けば終了時の処理を登録できるものぐらいあると思うからそれ使うのも楽かもね
421デフォルトの名無しさん:2007/03/03(土) 14:57:22
>>416
1・HKLM\Software\Microsoft\Windows\CurrentVersion\Runはどうだい
2・Windowsはシャットダウンする手前に全トップレベルウィンドウに対して
 WM_QUERYENDSESSIONを投げるからそれを受け取って処理してみたらどうだい。
 ちなみにWM_QUERYENDSESSIONに対してTRUEを返せばシャットダウンを許容、
 FALSEを返せばシャットダウンを禁止(シャットダウン自体が中止される)する。
 一つでもウィンドウがFALSEを返せばシャットダウンは中断される。
422デフォルトの名無しさん:2007/03/03(土) 17:39:02
終了時に保存等の処理をしたいならWM_QUERYENDSESSIONよりも、
WM_ENDSESSIONだと思うけど。
423デフォルトの名無しさん:2007/03/03(土) 18:26:48
WNDCLASSとWNDCLASSEX
CreateWindowとCreateWidnowEx
どこがどう違うのか教えてください。
424デフォルトの名無しさん:2007/03/03(土) 18:29:02
指定できるのが増えてる
425デフォルトの名無しさん:2007/03/03(土) 19:19:06
なるほど、だからExですか。なんつってww
426デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/03(土) 20:25:23
>>427
1にああ書いてあるとおり、英語版を見てみろ。
http://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デフォルトの名無しさん:2007/03/03(土) 20:44:21
情報ありがとう。そうか、対応していないんだね。残念だなー。
430デフォルトの名無しさん:2007/03/03(土) 21:30:11
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄
431デフォルトの名無しさん:2007/03/03(土) 22:15:42
>>422
WM_ENDSESSIONだとタイムアウトで強制的に打ち切られるから
保存しようとしているデータの性質によっては怖くて使えない
432デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/03(土) 22:51:28
>>432
ピクチャコントロールの親でメッセージ受けようとしてないか?
434デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/03(土) 23:10:31
>>434
>LPSCROLLINFO
うわぁぁぁぁ

エラー返してましたorz ありがとうございます!
437デフォルトの名無しさん:2007/03/03(土) 23:16:08
>>435
SetNamedSecurityInfo()
438デフォルトの名無しさん:2007/03/04(日) 00:07:51
WindowsMobile向けの関数一覧って無いですかね。使えるのと使えないのとあってよくわからんです。
439デフォルトの名無しさん:2007/03/04(日) 09:15:54
Windowsサービスを登録するAPIってないですか
440デフォルトの名無しさん:2007/03/04(日) 09:20:17
CreateService
441デフォルトの名無しさん:2007/03/04(日) 11:46:18
Win64って特に意識しなくてもアドレス幅が64bitになるの?
intとかvoidとか64bitで、mallocで4GB以上の連続した
領域が確保されるの?

単なる興味本位な質問ですが、良かったら教えて。
442デフォルトの名無しさん:2007/03/04(日) 11:52:46
Win64はLLP64
443デフォルトの名無しさん:2007/03/04(日) 11:56:29
互換性を考えて int は 32bit だったはず
444デフォルトの名無しさん:2007/03/04(日) 12:25:44
Win32 longlong→64bit、long→32bit、int→32bit
だったのが
Win64 long→64bit、int→32bit

になったんじゃなかったっけ?
longlongはどうなったか覚えてないけど
445デフォルトの名無しさん:2007/03/04(日) 12:28:57
>442-444 ありがとう
LLP64でググったらよく分かった
64bit環境でも色々有るんだねUNIX系とクロス開発は大変そう

俺は関係ないけど。
446デフォルトの名無しさん:2007/03/04(日) 12:31:58
>>445
ほんとC言語って移植性ねーな
447デフォルトの名無しさん:2007/03/04(日) 12:32:48
どうして適当なこと言う奴が後を絶たないのか
448デフォルトの名無しさん:2007/03/04(日) 12:39:03
.NETとかjavaみたいに分厚いフレームワークじゃないからなぁ
うっとうしいっちゃ鬱陶しいな
449デフォルトの名無しさん:2007/03/04(日) 21:46:02
>>446
MISRA-C,SECとか見てるけど、
移植性ねーっていうけど、C言語自体はそれほど閉鎖的じゃない。

視野が狭いPGが多いだけであって・・・
450デフォルトの名無しさん:2007/03/04(日) 21:47:19
446のようなバカが多くて困る。
451446:2007/03/04(日) 21:50:43
そろそろカチンときそうです。
452デフォルトの名無しさん:2007/03/04(日) 22:07:37
まったくだ。
色んな環境を熟知していて
頭のいいやつが細かいことにも様々な工夫を凝らせば
C言語は移植性が高いんだよ。
453デフォルトの名無しさん:2007/03/04(日) 22:12:30
ifdefとtypedefの嵐で万事解決です
454デフォルトの名無しさん:2007/03/04(日) 22:16:25
ifndefってなんて読むの?
イフンデフ?
455デフォルトの名無しさん:2007/03/04(日) 22:31:59
タスクマネージャに表示されるような個々のプロセスのCPU使用率や
メモリ使用量を取得したいが、そんな関数あります?
456デフォルトの名無しさん:2007/03/04(日) 22:34:07
はい
457デフォルトの名無しさん:2007/03/04(日) 22:56:05
>449
C言語はそれほど閉鎖的じゃないけど
プログラマーはかなり閉鎖的だね
458デフォルトの名無しさん:2007/03/04(日) 23:25:38
ありがと。Pdh系API使ってやります。
459デフォルトの名無しさん:2007/03/04(日) 23:33:54
というかあらゆる処理系依存に精通していて
常に気を使うなんてやってられないだろ。
ガンガンに処理系やWin32APIに依存しちゃえよ。
460デフォルトの名無しさん:2007/03/05(月) 00:23:19
HANDLEにクラスとかのポインタを結び付けれるAPIはありますか?
HWNDに対してのSetPropみたいなAPIを探してます
461デフォルトの名無しさん:2007/03/05(月) 00:37:59
>>460
ハッシュテーブルにもっとけばいいだろ。
そんなのAPIに頼ることか?
462デフォルトの名無しさん:2007/03/05(月) 00:42:59
>>461
HWNDに対してのSetPropの存在意義を256文字以内で説明せよ
463デフォルトの名無しさん:2007/03/05(月) 00:45:24
>>461
SetProp の存在意義を否定してないか?w
464デフォルトの名無しさん:2007/03/05(月) 00:51:22
いずれにしても残念ながらHANDLEに対するSetPropのようなものは存在しない。
自前で連想配列でも持っておくしかない。

第一HANDLEと言ってもカーネルハンドルからそうでないものまでいろいろあるし。
465デフォルトの名無しさん:2007/03/05(月) 00:52:06
多分無い

どうせハンドルの類の整数値は一意なんだから適当に
mapみたいなデータ構造作っちゃえばいい
466デフォルトの名無しさん:2007/03/05(月) 01:26:41
>>460
ちょっと調べただけなのだがSetTokenInformationがそれっぽい引数の取り方をしてなくもないとおもわれ
467デフォルトの名無しさん:2007/03/05(月) 01:39:41
SetThreadTokenも要チェックや!!
468デフォルトの名無しさん:2007/03/05(月) 02:59:43
ウィンドウのサイズが変更されたとき、決まった縦横比で固定されるようにするには
どうすればよいでしょうか?
469デフォルトの名無しさん:2007/03/05(月) 03:23:18
計算する
470468:2007/03/05(月) 03:28:21
>>469
もちろんそうなんですが、WM_SIZEで変更後のサイズを受け取り、それを基に
SetWindowPosで設定すると、その設定によって再びWM_SIZEが呼び出され続けて
どんどん小さくなる、といった現象が起こります・・・。
471デフォルトの名無しさん:2007/03/05(月) 03:28:31
WM_POSCHANGING
472デフォルトの名無しさん:2007/03/05(月) 03:30:55
>>470
想像して笑ってしまった。面白いことをやってるな
473デフォルトの名無しさん:2007/03/05(月) 03:41:42
そもそも同じ比率になったのにルーチン呼び続けてる仕様が間違ってるんじゃ枚か
474デフォルトの名無しさん:2007/03/05(月) 05:39:32
>>470
朝からちょっとワロタ
475デフォルトの名無しさん:2007/03/05(月) 07:01:18
萌えるウィンドウだな
476デフォルトの名無しさん:2007/03/05(月) 07:02:31
恥ずかしくて段々小さくなるウィンドウ
477デフォルトの名無しさん:2007/03/05(月) 07:08:05
>>470
そっからは自分で頑張れ。
これを自力で解決できんようなら、プログラミングなんて他人にやらせとけ。
478デフォルトの名無しさん:2007/03/05(月) 07:19:26
>>470
クライアント領域のサイズとウィンドウサイズ混同してないか?
あと計算はWM_GETMINMAXINFOとかWM_SIZINGでやれ
479468:2007/03/05(月) 11:23:46
できました!
ありがとうございました!
480デフォルトの名無しさん:2007/03/05(月) 11:44:48
そういう微笑ましいバグってなんだか面白い。
481デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/05(月) 17:07:30
最小化したり画面の外へ追いやったりしたら、
ウィンドウの中を描画する必要が無いからWM_PAINTは呼ばれない。
483デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん: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)
にしたら
488486:2007/03/05(月) 19:53:36
>>487
4800くらいで失敗してしまいます。

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


489デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/05(月) 20:09:39
ExtractIconEx の宣言と DestroyIcon の宣言はどーなってるん?
# DestroyIconの引数が byRef になってて、iconハンドルへのポインタ渡してるんじゃねーの?
491デフォルトの名無しさん:2007/03/05(月) 20:14:23
それなら最初のDestoyIconでエラーになるんじゃね?
492デフォルトの名無しさん:2007/03/05(月) 20:16:48
シングルスレッドのGUIアプリでGetOpenFileName()を呼び出したところ、
ダイアログの処理用と思われるスレッドが幾つか生成されました。

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

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

しかし、ダイアログの処理用と思われるスレッドが残っています。
残ってしまう原因にお心当たりある方はいらっしゃいませんか。
493486: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デフォルトの名無しさん:2007/03/05(月) 21:24:59
>>492
複数回GetOpenFileNameを呼ぶと、
同じスレッドで処理されているのかな?
流用利用って事で
(前回開いたパス情報等の保持として・・)

・・・内部でCOMを呼んでたりして。
495デフォルトの名無しさん:2007/03/05(月) 21:45:56
>>492
たぶん正常な動作 ms謹製のnotepadでもスレッドが残る
496デフォルトの名無しさん:2007/03/05(月) 21:51:31
>>495
初めて知った。すごい仕様だな…
497デフォルトの名無しさん:2007/03/05(月) 21:58:40
>>494-496
ありがとうございました。
素敵すぎる仕様のようで、諦めて従います・・・・・・
498494:2007/03/05(月) 22:10:03
今、メモ帳アタッチしてみたけど、
スレッドは流用してないみたいだなぁ。
499デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/05(月) 22:46:27
>>486
失敗したとき、GetLastError()の値は?
501500: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は?
502499:2007/03/05(月) 22:54:42
>>501
VBにはヌルポ用に vbNull っつーのが存在してる記憶があるが、
そいつの呼び出し側が ByRef 用なのかどうか記憶あいまい。

As Any で 呼び出し時に byval 0 のような明示記法は初見
# っつーても俺は VB 素人に近いのでわからにゃいw
503デフォルトの名無しさん:2007/03/05(月) 23:00:39
>>495
APIの質問ではなくスレ違いで申し訳ないんですが、お教えください。
残っているスレッドをどのようにして知ることができるのでしょうか?

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

よろしくお願いいたします。
504デフォルトの名無しさん:2007/03/05(月) 23:04:26
>>499 の心配は>>489 で払拭されてると思われ

>>501
As AnyだとRefかValかを関数引渡し時にByValを指定すればポインタか値かを決められる。ByVal 0& でヌルポインタとなるはず
505デフォルトの名無しさん:2007/03/05(月) 23:10:31
>>503
API的な回答じゃなくていいのならProcessExplorerでさっくり見れる

>スレッド
vistaは判らないけど、それ以前のOSのことを考えれば
スレッドは所詮プロセスの枠の中の存在だから独立することはない
506500: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評価しねーかなー
507503:2007/03/05(月) 23:14:36
>>505
ありがとうございます。

>スレッドは所詮プロセスの枠の中の存在だから独立することはない
のはずですよね・・・・・・・
508デフォルトの名無しさん:2007/03/05(月) 23:20:13
>>507
UnLockerで、捕まえてるプロセス名を調べてみ?
http://ccollomb.free.fr/unlocker/
509デフォルトの名無しさん:2007/03/05(月) 23:23:07
>>503
OpenFileDialogでファイル名を取ってきたあと、
何もしない場合でもその症状?

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

切り離して考えてみ?
510486: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デフォルトの名無しさん:2007/03/05(月) 23:33:55
>>510
おめ
512503:2007/03/05(月) 23:37:33
>>508 >>509
コメントありがとうございます。
現在自宅のため、確認は明日以降になります。
513デフォルトの名無しさん:2007/03/06(火) 00:54:29
CNNのアンケートでチョンの反撃が始まって、日本謝罪すべしの票が増えてきてます。
投票まだの方はよろしくお願いします。

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

http://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デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/06(火) 01:42:17
32bitアプリとして動かすならたぶん問題ない
WoWとかいうのが全部面倒みてくれる
516デフォルトの名無しさん:2007/03/06(火) 01:58:53
>>515
ありがとうございます。WoWでうまくエミュレートしてくれるんですね。
逆に言うと、64bitアプリ(見ていたのはdllでした)として動いているのであれば、問題が発生しそうだといえますね。
517デフォルトの名無しさん:2007/03/06(火) 03:58:06
上のほうにMFCを利用したフルスクリーン描画方法がありますが、MFCは使わず、
Win32apiだけでフルスクリーン(クライアント領域をディスプレイ全体にする?)には
どうすればよいでしょうか?
518デフォルトの名無しさん: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);
}
519517:2007/03/06(火) 05:20:38
>>518
うおー!
ありがとうございます!
GetDesktopWindow() が肝ですね!
520デフォルトの名無しさん:2007/03/06(火) 07:42:09
個人的には、MonitorFromWindow->GetMonitorInfoを推奨したい。
521デフォルトの名無しさん:2007/03/06(火) 10:24:54
>>520
だね。メインディスプレイでしかフルスクリーンにできないアプリって嫌い。
522デフォルトの名無しさん:2007/03/06(火) 10:52:26
2台もモニター買う金も置くスペースもねーんだよバーカバーカ
523デフォルトの名無しさん:2007/03/06(火) 11:05:28
モニタ4台でマルモニしてますが何か?
524デフォルトの名無しさん:2007/03/06(火) 11:09:44
>>522
高望みしなけりゃどうにかなるもんだぞ。
525デフォルトの名無しさん:2007/03/06(火) 11:14:48
マルチモニターとか利点がわからない
526デフォルトの名無しさん:2007/03/06(火) 11:33:32
>>525
フルスクリーンアプリケーションのデバグには良いと思うけど、私には使い道がない。
527デフォルトの名無しさん:2007/03/06(火) 11:39:49
片側にアップスキャンコンバーターとビデオ繋いでテレビ見ながらいろいろ出来る
528デフォルトの名無しさん:2007/03/06(火) 12:05:34
>>525-526
作業机の面積が広いに越したことはないだろ?
マルチディスプレイもそんな感じ。
マルチディスプレイは便利になるっていうよりは快適になるって感じ。
529デフォルトの名無しさん:2007/03/06(火) 12:16:17
>>492
初期化時にCoInitialize()、終了時にCoUninitialize() 呼んでみたらどうかな?

どうもGetOpenFileName()がCOMを使っているらしいぞ。
530デフォルトの名無しさん:2007/03/06(火) 13:08:26
529
場所誤ると、ハングらないか?
531517:2007/03/06(火) 13:57:10
フルスクリーンにする前のウィンドウの位置と大きさを控えておき、フルスクリーンからその
サイズにSetWindowPosで直すと、クライアント領域だけのウィンドウになってしまい
にっちもさっちもいかなくなってしまいます・・・。
どうすれば通常のウィンドウに復帰できるでしょうか?

>>520
参考にします。
532デフォルトの名無しさん:2007/03/06(火) 14:00:33
>>531
>>518のコードが何やってるか考えればわかるだろ
533517:2007/03/06(火) 14:13:46
>>532
失礼しましたm(_ _)m
534デフォルトの名無しさん:2007/03/06(火) 15:24:50
Windows Media Player 10
を使っているのですが、
10用のSDKってもう無くなってるみたいなんですが、
9用のSDKでも大丈夫でしょうか?

11用は落とせるようにはなっていないみたいですが・・・
535デフォルトの名無しさん:2007/03/06(火) 15:31:00
COMはSTAのときCoInitializeで初期化したスレッドでメッセージをディスパッチしてやらないとハングするんだっけ
536デフォルトの名無しさん:2007/03/06(火) 15:51:11
とあるスレッドでGetMessageしたメッセージを、他のスレッドで Dispatch するのはCOMに限らずダメ。
537デフォルトの名無しさん:2007/03/06(火) 17:06:17
>>415
亀レスすみません。ありがとうございます。
贅沢言ってすみません。
538503: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デフォルトの名無しさん:2007/03/06(火) 17:42:11
>>538
私見だけど;
GUIアプリではカレントディレクトリを常に当たり障りのないトコに設定しとくべき。
OpenFileDialog 等、カレントディレクトリが移動されそうな処理の後には再設定も行う。

これを怠ると「なぜこのフォルダが消せない!」ということが頻発するから。
540503:2007/03/06(火) 18:01:19
>>539
コメントありがとうございます。
Prog2がコンソール(CUI)アプリといところが味噌でして・・・・

(これを書くと関係者が見てたら身元がバレそうだが)
実は上記のProg2は(組み込みマイコン用のクロス)コンパイラであり、処理するファイルは
ソースファイルなんです。
#include 等を適切に処理するために、カレントをそれなりの場所にして起動する必要があります。
541デフォルトの名無しさん:2007/03/06(火) 18:24:15
なるほど。
ダミーで cmd /c exitとか動かしておくしか手が無さそうですね。

KBの↓なんかもひどい解決方法・・・
http://support.microsoft.com/kb/903204/en-us
542503:2007/03/06(火) 18:33:45
543デフォルトの名無しさん:2007/03/06(火) 18:59:41
なんだかよくわからないけど
Prog2のカレントディレクトリをC:\とかにして起動して
起動後にカレントディレクトリ変えるんじゃだめなのか?
全然見当違いなこと言ってたらすまん
544デフォルトの名無しさん:2007/03/06(火) 19:03:00
なるほど。
バッチファイルを挟むという手はあるな。

・・・俺は馬鹿か
545デフォルトの名無しさん:2007/03/06(火) 19:20:27
試してないけど、conime.exeを先に起動しとくとかは?
546デフォルトの名無しさん:2007/03/06(火) 19:46:01
それが541の解決法
547デフォルトの名無しさん:2007/03/06(火) 19:51:42
>>540
CreateProcessって子プロセスのカレントディレクトリをパラメータで指定できたから
親のカレントディレクトリを移動する必要はないんじゃない?
>>545
それが>>541
548デフォルトの名無しさん:2007/03/06(火) 20:01:24 BE:124224588-2BP(222)
>>545
それが
>http://support.microsoft.com/kb/903204/en-us
だろ。

日本語版見たらもっとひでーw
http://support.microsoft.com/kb/899153/ja
549デフォルトの名無しさん:2007/03/06(火) 20:10:34
>>503
CreateProcessでProg2を起動しているんだったら
CREATE_NO_WINDOWフラグを入れるのは?

あとは、終了時にWM_CLOSEをconime.exeに投げたり
conime.exeをkillする手もある。
550503:2007/03/06(火) 20:45:07
>>543-549
コメントありがとうございます。
(直接APIの事でないのに、こんなに盛り上がっていいのか・・・・)

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

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

>>548
>http://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が全ての
コンソールアプリで使いまわされているようなので、この時に他のコンソールアプリが
動いている可能性を考えると、この手は使えません。
551503:2007/03/06(火) 21:44:28
>>549
>>CREATE_NO_WINDOWフラグを入れるのは?
>で、conime.exeが起動されなければ一番よさそうですね。試してみます。

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

このスレに最もふさわしい解決方法ですね。
(言い訳しとくと、このプログラムの初版は1998年。当時CREATE_NO_WINDOWなんて無かった・・・)
552503:2007/03/06(火) 22:27:06
余談だが、VisualStudio6のIDEでビルドを行った時もconime.exeが起動され、IDE終了後も残る。
VistaにVS6入れる人なんてほとんどいないと思うが、プロジェクトのディレクトリが
削除できなくなるんだろうなあ。
553デフォルトの名無しさん:2007/03/06(火) 22:32:35
DETACHED_PROCESSでもコンソールウィンドウは表示されなくなるが、
CREATE_NO_WINDOWとは何が違うのだろう。(conimeについては未確認。)
554デフォルトの名無しさん:2007/03/06(火) 23:15:11
Vista に 6.0 入れてるよ俺…
明日試してみるか orz
555デフォルトの名無しさん:2007/03/07(水) 04:58:35
デュアルブートしてるXPにインストールしたVC6のコンパイラだけ借りてる
556デフォルトの名無しさん:2007/03/07(水) 09:10:10
コンパイラを使っている方のOSは何
557503:2007/03/07(水) 13:36:06
Vista環境で、CREATE_NO_WINDOWによりconime.exeが起動されなくなり、ディレクトリが消せなく
なる問題が解決することを確認できました。
また、>>538の状況やCREATE_NO_WINDOWでの対策が有効なことは、Vista-x64のWOW64
環境下でも同じであることを確認しました。
万事解決。皆様に感謝。

>>552がデマだったらまずいんで自分でも確認してみたら、やはりVista環境でログイン後の最初に
VS6-IDEからビルドを行ったプロジェクトのディレクトリは削除できなくなりました。
558デフォルトの名無しさん:2007/03/07(水) 15:50:15
ポップアップメニューで、特定の項目についてのみ、クリックしてもポップアップが閉じない
(メッセージは送信する)ようにするにはどうすればよいでしょうか?
559デフォルトの名無しさん:2007/03/07(水) 17:22:36
>>558
よくある感じだと [OK] [APPLY] [CANCEL] の [APPLY] ってこと?
560558:2007/03/07(水) 17:27:10
>>559
そうです!
あの感じです!
561デフォルトの名無しさん:2007/03/07(水) 17:38:14
>>560
メインウインドウに PostMessage するのはダメ?
562558:2007/03/07(水) 17:58:15
>>561
それは具体的にはどういうことでしょうか??
563デフォルトの名無しさん:2007/03/07(水) 18:04:11
「MFS_CHECKED になりえるメニューアイテムがあって、開きっぱなしのままトグル動作したい」

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

すきなのえらべ
564558:2007/03/07(水) 18:17:16
>>563
やはりその二つですか〜。
ありがとうございました!
565デフォルトの名無しさん:2007/03/08(木) 00:13:13
CreateProcessのCREATE_NO_WINDOWフラグって
VC7でないと使えない?
MSDNの2000年版にすらそのフラグは存在してないんだが。
566デフォルトの名無しさん:2007/03/08(木) 00:14:42
自分で定義すりゃ何ででも使える
567デフォルトの名無しさん:2007/03/08(木) 00:15:18
以前は非公開だったってだけだな
568デフォルトの名無しさん:2007/03/08(木) 00:15:31
そっか
逆にOSは2000以上限定ですかね?
569デフォルトの名無しさん:2007/03/08(木) 00:29:18
9xだって動くんだい
570デフォルトの名無しさん:2007/03/08(木) 00:34:34
>>565
なるべく新しいPlatform SDKを入れてみろ
571デフォルトの名無しさん:2007/03/08(木) 00:41:56
VC6なら、ほどほどに新しいもの(2003febだったか)を
入手する必要があるぞ(w
572デフォルトの名無しさん:2007/03/08(木) 07:21:54
>>565
VC6 SP6でもちゃんとwinbase.hで定義されてるし、VC6用最終のMSDN Oct.2001には載ってる。
Win9xも対象にしたいならDETACHED_PROCESSでも使え。
(CREATE_NO_WINDOWと何が違うのかは知らんが。)
573デフォルトの名無しさん:2007/03/08(木) 08:11:37
リダイレクタ作った時、CREATE_NO_WINDOWを指定したら、
コンソール窓が開かなくなったが・・

憶測だけど。
574デフォルトの名無しさん:2007/03/08(木) 11:01:47
質問があります。

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

もしなければ、皆様はどのようにして判定しているのでしょうか?
(~を検索?)
575デフォルトの名無しさん:2007/03/08(木) 11:08:01
>>574
GetFullPathName
GetShortPathName
576574:2007/03/08(木) 11:58:35
>>575
この2種の組み合わせで検討してみます。
ありがとうございます。
577デフォルトの名無しさん:2007/03/08(木) 17:31:27
タイマーの調子が悪いんですが
SetTimerとKillTimerを繰り返していたら処理落ちするとかありますか?
578デフォルトの名無しさん:2007/03/08(木) 17:33:38
>>577
ソースあげ
579デフォルトの名無しさん:2007/03/08(木) 17:47:43
580デフォルトの名無しさん:2007/03/08(木) 18:15:54
Windowsは知らんのだけど、これってタイムアウト前に再度SetTimer()したらどうなるんだ?
なんとなく、一度目のタイムアウトで二度目のタイマーまでKillしてしまうような気がするのだが。
#つーか、毎回毎回KillTimer()しないといけないもんなのか?
581579:2007/03/08(木) 18:25:10
>>580
じゃあKillするに相応しいメッセージはなんなんだろう。
582デフォルトの名無しさん:2007/03/08(木) 18:29:49
そもそも何を持って処理落ちしてると判断したんだ
583デフォルトの名無しさん:2007/03/08(木) 18:32:25
あと、SetTimer時の戻り値を保存しておいてそれを使ってKillして
その変数をタイマーの有無に使えば2重に作ったり消したりは防げないか
584デフォルトの名無しさん:2007/03/08(木) 18:37:18
SetTimerとKillTimerでタイミングを制御していること自体が「処理落ち」の原因だと思うけど。
585579:2007/03/08(木) 18:40:03
根本から間違ってたわけですか。
タイマーってかなりメモリ使いそうだからいちいちKillしてた。
そこに原因があったのかもしれません。
ありがとうございます。
586デフォルトの名無しさん:2007/03/08(木) 18:40:40
Userメッセージ使ってもいいしな。
しかし、InvalidateRect使っててUpdateWindowしてないからな気もするな
587デフォルトの名無しさん:2007/03/08(木) 18:40:55
>>580
タイムアウトまでに再度SetTimerしたら
そのタイマが既存のタイマに取って代わる。
その場合既存のタイマのタイムアウトが経過してもメッセージは流れない。
588デフォルトの名無しさん:2007/03/08(木) 18:46:57
>>585
SetTimerは確かにユーザーオブジェクトとしてはかなりリソースを使う方だし
そもそもコールバック使わない場合、WM_TIMER自体のメッセージ優先度が低いから
精度もかなり酷い(スレッドのメッセージ処理が空いた時にしか投げられない)。
ソース見てないから適当な事言うけどウェイタブルタイマに置き換える事は出来ないの?
589579:2007/03/08(木) 19:07:05
MouseMoveに詰め込みすぎたかもしれません。
60行近くあったんだけど、
消したら割りとスムース。

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

>>588
ウェルタ・・・難しそうだ。
590デフォルトの名無しさん:2007/03/08(木) 19:12:42
>>588
SetTimerはコールバック使っても一緒だよ。

>>577
「調子が悪い」なんて抽象的に言われても分からん。
質問するときは、もっと詳しく書かないと駄目。
591579:2007/03/08(木) 19:18:17
>>590
サーセン。ありがとうございました。
592デフォルトの名無しさん:2007/03/08(木) 19:19:52
ちょっとソース見てみたけど、WM_MOUSEMOVEでInvalidateRectしてるのが
いけないんじゃない?
593デフォルトの名無しさん:2007/03/08(木) 19:55:01
Windows Mobile 5.0向けのアプリケーションを作っています。
HTTPサーバ上にあるXMLを読み込みたいのですが、
XMLHTTPあたりを使えばできますか?
594デフォルトの名無しさん:2007/03/08(木) 20:00:05
ソケット生成、データ受信、構文解析で出来る。
595デフォルトの名無しさん:2007/03/08(木) 20:00:34
>>577のソース見てみようと思ったら消してやがる・・・

>>593
これ使えばいいかなって思うのがあるならまずやってみれ
596579:2007/03/08(木) 20:09:11
>>592
それだ!THX!595悪いね。恥ずかしいから
597デフォルトの名無しさん:2007/03/08(木) 20:17:20
じゃ、代わりに上げておくか。
598579:2007/03/08(木) 20:42:02
その流れ秋田
599デフォルトの名無しさん:2007/03/08(木) 22:58:08
cmdから叩けばprintfでコンソールに値を出せて、
ダブルクリックで起動したらウインドウ無しで常駐できるアプリは作れますか?

WinMainで作るとコンソール出せなくてダメで、
コンソールアプリとして作るとどうしてもウインドウがでちゃうの
600デフォルトの名無しさん:2007/03/08(木) 23:40:09
AttachConsole?
601デフォルトの名無しさん:2007/03/08(木) 23:45:30
たしかwinアプリでコンソールに出力するなら、AllocConsoleのあと、
freopenでstdoutを"$COUT"で開き直すんだったはず

でも起動方法で分岐するとなると分からん
602デフォルトの名無しさん:2007/03/08(木) 23:49:52
STARTUPINFOとか臭いな と調べもせずにいってみる
あと親プロセスがコンソールか否かを調べるとか
603デフォルトの名無しさん:2007/03/08(木) 23:58:34
試しにぐぐってみたらこんな記事が
http://is3000nx.seesaa.net/article/24649854.html
604デフォルトの名無しさん:2007/03/09(金) 00:31:49
605デフォルトの名無しさん:2007/03/09(金) 06:11:21
ウィンドウクラスについて質問なのですが、
ローカルウィンドウクラスを登録する場合、
他のプロセスですでに登録されているウィンドウクラスの名前を使っても問題ないのですよね?
606デフォルトの名無しさん:2007/03/09(金) 06:26:44
問題ない
607デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/09(金) 13:31:59
>>599
winアプリで作って、コンソールからは、
winアプリ|more
で使うしか方法はないんちゃうか
GetStdHandleで判定
610デフォルトの名無しさん:2007/03/09(金) 13:40:29
そもそもダブルクリック起動かどうかなんて判定取れない
611デフォルトの名無しさん:2007/03/09(金) 14:31:49
>>608
標準のWindowsの設定ではメニューの縦幅は16pxのアイコンがきっちり入るから
12pxってのは設定いじった結果なのか、よくわからないけど、
オーナードローでメニューをイチから描画するのが、
一番自由度は高くて、メニューの高さも幅もアイコンも全部自由に管理できる
612デフォルトの名無しさん:2007/03/09(金) 14:33:47
なんか読点多くて 日本語でおk みたいな文になったな
とりあえずいいたいことは オーナードローメニュー でググレば目的は達せられると思う、と
613デフォルトの名無しさん:2007/03/09(金) 15:41:12
>>611-612
プログラマとしての適性なさそうです。
学生ならプログラマになるの止めましょう、もし、いまプログラマなら転職をすすめます。

614608:2007/03/09(金) 15:46:11
原因は別のような気がします。
SetMenuItemBitmaps のサンプルを幾つかダウンロードし(ソース付きのやつね)
実行してみたものの、3種類試しましたがいずれもアイコンが全て表示されません。
(13x13のアイコンなのに8x8サイズぐらいしか表示されない)

WinXP SP2、VB6 SP5、それ以外に思いつくのは・・・IE7をインストールしたことでも
関係するのかなあ?

VPC上での動作と比較してみます。
615デフォルトの名無しさん:2007/03/09(金) 15:51:40
プログラマになりたいんですけどどうすればいいですか?
616デフォルトの名無しさん:2007/03/09(金) 15:55:42
先ずは層化学会に入信しなさい、そうすれば道は開かれます。
617デフォルトの名無しさん:2007/03/09(金) 16:18:12
>>616
そうか?
618デフォルトの名無しさん:2007/03/09(金) 16:32:26
>>613
マジか? 俺も創価行ってくるわ

>>608には失礼した
SetMenuItemBitmapsはスモールアイコンじゃなくて
チェックマークイメージの代わりを指定するものだったみたいだな
619608:2007/03/09(金) 16:46:50
VPC上(Win2k)でも同じだった…何がまずいんだろう(´・ω・`)

http://homepage1.nifty.com/MADIA/vb/API/SetMenuItemBitmaps.htm

のサンプルをダウンロードしてそのまま実行、下のような表示になります。
(自分で作ったのも同じ結果)

http://ud.gs/3010x

「それって○○じゃね?」ってわかる人いらっしゃいますか〜?
620608:2007/03/09(金) 16:48:02
しまった ttp にするのを忘れてた・・・後の祭りですが、すみません。
621デフォルトの名無しさん:2007/03/09(金) 18:13:14
>>608
cx = GetSystemMetrics(SM_CXMENUCHECK)
cy = GetSystemMetrics(SM_CYMENUCHECK)
Debug.Print "cx = " & cx & vbTab & "cy = " & cy

上記コードを実行したらわかるけど、規定のサイズは11px。
622608:2007/03/09(金) 18:35:02
ガ━━━━━━(゚д゚;)━━━━━━ ン!!


>>621さんありがとうございます。
16x16で配布しているサイト多いし、アプリから吸い出しても16x16が多いので
これが基本だと思い込んでた・・・

ふむう、仕方がない。アイコン全部自作すっか・・


基礎知識提供感謝です。
623デフォルトの名無しさん:2007/03/09(金) 18:40:52
>>617
kwsk
624デフォルトの名無しさん:2007/03/09(金) 22:03:19
SetMenuItemBitmaps って
Vistaだと16x16の32bitアイコン表示してくれるんだよね
微妙にうれしい
625デフォルトの名無しさん:2007/03/10(土) 08:31:59
Windowsの右下に小さなアイコンが居ますよね?
幾つも居るんだけど使わない時は隠れていたり.
アレってなんて言うんでしょうか?
アレもアプリの一種だというのは判るのですがどうやって作るのでしょうか?
626デフォルトの名無しさん:2007/03/10(土) 08:46:59
627デフォルトの名無しさん:2007/03/10(土) 09:37:58
すまんAPIというか微妙なんだがブラシとかフォントとかリソースあるよね?
頻繁に使われるものをパフォーマンスのために一時的にキャッシュ(数秒使われなかったら削除など)してみようかと思うんだがこれは許されない行為なんでしょうか?
628デフォルトの名無しさん:2007/03/10(土) 09:46:09
いつ削除するかはプログラマの自由だべ。
とはいえ、削除しようとするハンドルが利用されていたらダメだけども。
629デフォルトの名無しさん:2007/03/10(土) 09:46:10
別にいいと思うよ。
俺もウィンドウを作ると同時にオブジェクトを作って、
ウィンドウを削除するまで保持しておくとかやるし。
630デフォルトの名無しさん:2007/03/10(土) 09:56:03
>>628-629
あり。
プログラミングウィンドウズ本とかですぐに開放しろといってるのは、たまるとほかのアプリのリソースを圧迫するからって話で、適切に管理するならやって大丈夫ということでいいのかな。
631デフォルトの名無しさん:2007/03/10(土) 11:56:45
>>630
> プログラミングウィンドウズ
Windows 3.1時代から改訂を繰り返してるから当時のリソース制限を前提に書いてる
632デフォルトの名無しさん:2007/03/10(土) 12:09:47
ロジックを複雑にしてリソースを可能なかぎり早く解放するより、多少無駄なリソースを持ってもロジックを単純にするほうが、
今日ではメリットが大きいと思われ。
633デフォルトの名無しさん:2007/03/10(土) 12:13:46
検討違いのレスがあるな
634デフォルトの名無しさん:2007/03/10(土) 12:34:39
漢字間違いのレスがあるな
635デフォルトの名無しさん:2007/03/10(土) 13:57:11
ぬるぽのレスが無いな
636デフォルトの名無しさん:2007/03/10(土) 14:12:21
ウインドウのDCをゲットして、スクリーンショットを撮るプログラムを書いてますが、
隠れてたり最小化してるウインドウは不可能ですよね?
637デフォルトの名無しさん:2007/03/10(土) 14:16:02
> ですよね?
やってみれ
638デフォルトの名無しさん:2007/03/10(土) 14:22:00
>>636
VistaでAero有効ならできる
639デフォルトの名無しさん:2007/03/10(土) 14:49:02
>>627
CreateFontでフォントを毎回作成するのと、最初に一度だけ作って使いまわすのを
比較したことがあるけど、毎回作ったときのオーバーヘッドはPentium3でも
0.1ms程度だったから、パフォーマンスのためにキャッシュってのは、
あまり効果がないよ。
640デフォルトの名無しさん:2007/03/10(土) 14:55:23
5とか10usみたいなミジンコみたいな小さい時間ならわかるけど、
100usって結構大きくね?
641デフォルトの名無しさん:2007/03/10(土) 15:09:49
わずかな時間でもそれを何回も呼ぶとかによって
トータルで速いとか遅いとか感じることが出来るかどうかだ。
微妙なら面倒なことやりたくないが
やってみないとわからないんだよな。
642デフォルトの名無しさん:2007/03/10(土) 15:30:06
おでの作ったアプリは起動時に全部読み込んで終了するまで放さないぜ
643デフォルトの名無しさん:2007/03/10(土) 17:14:12
そういうキャッシュに類する行為は実際に動作させてボトルネックに
なっていることがわかってから考慮すれば十分。
644デフォルトの名無しさん:2007/03/10(土) 17:27:17
HWND から実行ファイル名を調べる API があれば教えて下さい
645デフォルトの名無しさん:2007/03/10(土) 17:32:15
ありません
646デフォルトの名無しさん:2007/03/10(土) 17:38:41
TeraPad の外部ツールは HWND から実行ファイル名を特定してるぞ
647644:2007/03/10(土) 17:39:22
無いのですか…残念

同一のツールでバージョン違いがいくつかあり、
今起動中のものがどのバージョンのものかを調べる方法が知りたかったのです
(ツールにはバージョン表記がなく、見た目では判別できません)

GetWindowThreadProcessId
GetModuleFileName
とか試してみたのですが、どうにもうまくいかなかったのでここで質問させてもらいました
648デフォルトの名無しさん:2007/03/10(土) 17:42:24
もっとスマートな方法がありそうだけど

GetWindowThreadProcessId
+
OpenProcess
+
GetModuleFileNameEx
649デフォルトの名無しさん:2007/03/10(土) 17:48:26
GetModuleFileNameEx
Windows 95/98:対応していません。
650デフォルトの名無しさん:2007/03/10(土) 17:51:23
>>643 とりあえず今遅いんだよね。
キャッシュでやってみて結果報告するノシ
651デフォルトの名無しさん:2007/03/10(土) 17:54:47
>>647
GetModuleFileNameは自プロセスのモジュールの情報しか得られません。
>>649
CreateToolhelp32Snapshot
652644:2007/03/10(土) 18:01:33
>>651
ありがとうございます

CreateToolhelp32Snapshot プロセス 列挙 でググったら

CreateToolhelp32Snapshot
+
Process32First
+
Process32Next

でいけそうです
ありがとうございました
653デフォルトの名無しさん:2007/03/10(土) 20:41:28
NT系OSの場合はPSAPIに頼ることになるが、
9xならGetWindowModuleFileName()を使えば一発で取得可能。

http://support.microsoft.com/kb/228469/ja
654デフォルトの名無しさん:2007/03/10(土) 22:58:49
>>653
Win95ではMSAAは別途インストールする必要があるので
GetWindowModuleFileNameの存在を仮定できない。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnacc/htm/ms_active.asp
655625:2007/03/10(土) 23:04:31
626さんありがとう

ちなみにタスクトレイに並ぶアプリってスタートアップに入っていないのも居ますよね?
アレってどっかのレジストリに登録されているんだろうと思っているのですが,あってますでしょうか?
だとすると,それは何処になるのでしょうか?
656デフォルトの名無しさん:2007/03/10(土) 23:06:26
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
を見てみると幸せになれるかもしれない
あとたぶん他にもWindowsサービスで動いてるものもあるかと
657デフォルトの名無しさん:2007/03/10(土) 23:11:30
HKLMだけでなくHLCUにも同じのがあったはず
658デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/11(日) 00:34:53
>>659
ウィンドウを再描写させないようにリサイズすることは簡単なんじゃ?
661デフォルトの名無しさん:2007/03/11(日) 01:13:03
> WM_SIZEが送られるときはWM_PAINTも送られる
かどうかはクラススタイルに依存する。
ウィンドウ全体の再描画が必要かどうかは書こうとしているものに依存する
662デフォルトの名無しさん:2007/03/11(日) 01:41:24
VB6+WinInetを使ってHTTPSを扱うプログラムを書いています。
InternetErrorDlgを使ってユーザに選択させたクライアント証明書を使い続けたいのですが、
作成したコードだとHttpSendRequestを行う度に選択画面が表示されてしまいます。
(一度選択したクライアント証明書を次のHttpSendRequestで使用してくれない)

どなたか原因をご存じの方いませんか?
663デフォルトの名無しさん:2007/03/11(日) 06:13:41
WM_MOUSEMOVE と WM_NCMOUSEMOVE が逆転して送られてくるのですが
なぜだかわかりません(昨日まで正常だったのですが)。

理由がわかる方教えてください。
664デフォルトの名無しさん:2007/03/11(日) 06:24:01
クライアント座標とスクリーン座標の違いがあるのに適当に処理していため、窓の位置を変えたらおかしくなった。
とエスパーしてみる。
665デフォルトの名無しさん:2007/03/11(日) 06:33:17
WM_LBUTTONDOWN などはそのままクライアント座標なんですが。
666663:2007/03/11(日) 06:42:55
よくわかりませんが正常に戻りました。
m(__)m
667デフォルトの名無しさん:2007/03/11(日) 07:36:27
>>657
あるね
スタートメニューで言う、All Usersとカレントユーザーの分けみたいなもんだね
668デフォルトの名無しさん:2007/03/11(日) 11:45:16
類似曲検索プログラムを作ってくれーーーーーーーーーーーー
なぜかない......
音符か、波に変換して比較すればいいんだ
頼む
669644:2007/03/11(日) 11:47:29
>>668
そのような API は存じません
670デフォルトの名無しさん:2007/03/11(日) 11:48:48
短時間FFTでもどうぞ
671デフォルトの名無しさん:2007/03/11(日) 11:49:20
なんでもいいからMP3とWMAとwavを読み込めて
にた曲を抽出するやつをつくってくれ---------------------
672デフォルトの名無しさん:2007/03/11(日) 11:49:47
>>668
そにーがConnectPlayerで実装済みですが( ´Д`)なにか??
673デフォルトの名無しさん:2007/03/11(日) 11:50:24
マジで造ったら数千万円レベルだろ
674デフォルトの名無しさん:2007/03/11(日) 11:54:00
>>672
実装済みじゃなくて、ここにexeを貼り付けてクレーーーーーーーー
それ使って類似曲を抽出したい
675デフォルトの名無しさん:2007/03/11(日) 11:55:03
676デフォルトの名無しさん:2007/03/11(日) 11:55:15
そんぐらいぐぐれ
677デフォルトの名無しさん:2007/03/11(日) 11:55:59
もはやありきたりの技術じゃないか。
678デフォルトの名無しさん:2007/03/11(日) 11:58:58
ありきたりなら、ツールのリンクを貼り付けてクレーーーー
出てこないよ
679デフォルトの名無しさん:2007/03/11(日) 12:04:54
スレ違いに貼るリンクは無い
680デフォルトの名無しさん:2007/03/11(日) 12:21:01
スレ違いじゃない。
かといって板違いでもない。

そう、気違いだ。
681デフォルトの名無しさん:2007/03/11(日) 13:03:50
スレッドIDからプロセスIDをしるAPIはありますか?
682デフォルトの名無しさん:2007/03/11(日) 13:09:09
直接はない
環境が許すならOpenThread->GetProcessIdOfThreadが一番楽
683デフォルトの名無しさん:2007/03/11(日) 13:09:59
ハンドルからならGetProcessIdOfThreadってのがある
684681:2007/03/11(日) 13:45:56
最近できたAPIっぽいですね
ありがとうございます
685デフォルトの名無しさん:2007/03/11(日) 14:01:51
Requirements
Client Requires Windows Vista.
Server Requires Windows Server "Longhorn" or Windows Server 2003

嫌がらせ以外には使えねえな
686デフォルトの名無しさん:2007/03/11(日) 16:24:25
エクスプローラでマウスの真ん中ボタンを押したら
新しいウインドウで開く
って実現できますかね?
レジストリ登録だけで右クリック⇒新しいウインドウ
はできるんだけぢ
687デフォルトの名無しさん:2007/03/11(日) 16:28:28
>>686
出来るだろうけど、正攻法じゃなさそうだし俺は方法を知らない
688デフォルトの名無しさん:2007/03/11(日) 16:47:02
できたら便利なんだけどなぁ
DLLインジェクションでエクスプローラに寄生するとか
そういう難しいことしないとダメなのかな
689デフォルトの名無しさん:2007/03/11(日) 17:09:27
>>684
Vista以前でどうにかしたかったらToolhelp32かPSAPIで列挙して自分で探す
690デフォルトの名無しさん:2007/03/11(日) 18:33:33
msdn2またおもくなちゃってる
msdn2かわいいよmsdn2
691デフォルトの名無しさん:2007/03/11(日) 19:21:27
なんでwebブラウザに拘るんだろう>msdn online
バカバカしい
692デフォルトの名無しさん:2007/03/11(日) 19:25:09
webのmsdnってIEベース以外のブラウザだと表示がgdgdになるからイヤ
693デフォルトの名無しさん:2007/03/11(日) 19:32:48
そりゃ自社のサイトなんだから自社製品以外では見れないように嫌がらせするのが当然だろ
694デフォルトの名無しさん:2007/03/11(日) 19:45:05
深い階層に行くほど、左のフレームの表示にCPU食いまくって糞重い
695デフォルトの名無しさん:2007/03/11(日) 19:46:36
>>692
最近はわりと改善されてる。
一時のスタイルシート切らないと表示すらされないとかメニューがことごとく文字化けとか
まったく話にならないレベルと比べると
696デフォルトの名無しさん:2007/03/11(日) 19:49:14
>>694
a
697デフォルトの名無しさん:2007/03/11(日) 19:49:22
>>693
単純にコストの問題だ馬鹿。
ひとつ対応ブラウザ増やすだけで、どんだけ工数が増えると思ってんだよ。
698デフォルトの名無しさん:2007/03/11(日) 19:51:24
0.1%位
699デフォルトの名無しさん:2007/03/11(日) 20:00:41
逆だ馬鹿、わざわざ手間をかけてIE以外では全く読めないようにしてあるんだ
普通に書いたらせいぜいレイアウトが多少変わるくらいでとりあえず読めてしまうだろ
700デフォルトの名無しさん:2007/03/11(日) 20:03:14
>>697
それは何時もどこかで独禁法で争ってるMSですから^^; 

>>695
久々に行ってみたら確かに良くなってた
結局ローカルのほうが軽快なんだけどね
701デフォルトの名無しさん:2007/03/11(日) 20:16:39
>>699
そうじゃないんだよ、馬鹿。
HTMLってちょっとしたことで致命的に非互換なページができるんだよ。
運良くその「ちょっとしたこと」を踏まなきゃそこそこマシなページになるんだが、
あんなごちゃごちゃしたサイトにそれを望むのは酷だ。
てか、おまえ、Web系の仕事したことない素人だろ。
702デフォルトの名無しさん:2007/03/11(日) 20:18:39
そういう事を楽にする技術のひとつがASP.NETだった気がするんだが
703デフォルトの名無しさん:2007/03/11(日) 20:22:12
>>702
楽になる=コストがゼロになる・・・じゃないぞ。
704デフォルトの名無しさん:2007/03/11(日) 20:25:25
こんぐらい殺伐としたやりとりがあると
ああWin32APIスレだなぁって思う。
705デフォルトの名無しさん:2007/03/11(日) 20:43:00
>>701
たとえば致命的に非互換名ページをみせてみ?
706デフォルトの名無しさん:2007/03/11(日) 20:47:34
確かに、非標準の MSIE 独自機能のようなちょっとしたことを踏んでしまうかどうかは
運不運の問題であって、避けようがない災難だから仕方ないな
事実、世の中にあるほぼ全てのウェブページは IE 以外では全く読めないしな
Web系の仕事したことあるプロが言うんだから間違いない
707デフォルトの名無しさん:2007/03/11(日) 20:58:44
Web系の仕事した事ないけど俺のサイトは殆どのブラウザでみれるな
708デフォルトの名無しさん:2007/03/11(日) 21:06:50
>>705
致命的という言い過ぎかもしれんが、わんくまとか
Safariでみるとかなり酷いことになるぞ。
709デフォルトの名無しさん:2007/03/11(日) 21:27:08
>世の中にあるほぼ全てのウェブページは IE 以外では全く読めないしな
いったいいつの時代の話だ
710デフォルトの名無しさん:2007/03/11(日) 21:31:33
"全く"を除けば同意
711デフォルトの名無しさん:2007/03/11(日) 21:38:03
>>710
いったいいつの時代の話だ
712デフォルトの名無しさん:2007/03/11(日) 21:45:26
まぁ待てよ
マカーかもしらんぜ?
713デフォルトの名無しさん:2007/03/11(日) 22:02:57
マカーがWin32 API 質問スレッドとか読んでるのか
714デフォルトの名無しさん:2007/03/11(日) 22:07:12
>>713
マカーっていうか、WinとMacを両方持っているヤツなんて別に珍しくないだろ。
俺も、この書き込みはMacからしてるし。
715デフォルトの名無しさん:2007/03/11(日) 22:17:23
珍しいわw
716デフォルトの名無しさん:2007/03/11(日) 22:22:18
>>714
自分の感覚即ち世の大勢とかいうような思考は慎んだ方がいいぜ
企業の備品ならともかく、個人でWinとMac両方そろえてるなんてごく一部
717デフォルトの名無しさん:2007/03/11(日) 22:25:24
>>714じゃないけど……
どちらが事実に近いかは別として(多分君が正しい)、
全く同じ反論が成立することについては自覚してる?
718デフォルトの名無しさん:2007/03/11(日) 22:26:32
いや、Winユーザからしたらそりゃマイナーな存在に見えるかもしれんけど、
Winマシンも持ってるMacユーザは普通に居るだろ。
719デフォルトの名無しさん:2007/03/11(日) 22:30:27
Macユーザー限定の話ならそりゃそこまで珍しくは無いだろうなぁ
だがMacユーザー限定なんて言ってないしな
720デフォルトの名無しさん:2007/03/11(日) 22:31:07
マイナーでも確実にいる
721デフォルトの名無しさん:2007/03/11(日) 22:37:56
つまり井戸の蛙か
722デフォルトの名無しさん:2007/03/11(日) 22:41:10
使い所を間違ってるな
723デフォルトの名無しさん:2007/03/11(日) 22:55:11
今のMacはエミュ無しでWindowsが動くぞ。
724659:2007/03/11(日) 23:17:13
>>660-661
ウィンンドウ作成時、WM_CREATEに始まってそれからどんな順番でメッセージが送られるのか記憶が
曖昧だったので混乱しましたが、ありがとうございました。
725デフォルトの名無しさん:2007/03/12(月) 08:08:17
おいおい、スレ違いもry
726デフォルトの名無しさん:2007/03/12(月) 08:33:56
proxomitronみたいなのでMSDNのフィルタ作れ
727デフォルトの名無しさん:2007/03/12(月) 10:57:55
言い出しっぺ頑張れ
728デフォルトの名無しさん:2007/03/12(月) 11:23:49
どうしてもローカルに保存する必要がある場合は
わざわざそれ専用のDLプログラム作ったりするけど
MSDNはローカルに持ってるからな
サイトの構成わかってるんだし直リンページ作っとけば済むと思うけど
729デフォルトの名無しさん:2007/03/12(月) 14:46:37
そのうちMSDN3がしゃしゃり出てきて、また一つ一つURLを直さないといけない
730デフォルトの名無しさん:2007/03/12(月) 15:49:18
ちょっと質問。
プログラムの追加と削除に表示されるアイコンてどこに保存されてるの?
731デフォルトの名無しさん:2007/03/12(月) 16:04:05
HDD
732デフォルトの名無しさん:2007/03/12(月) 16:05:45
ここはやっぱりURNだろ
俺はしらんが
733デフォルトの名無しさん:2007/03/12(月) 16:11:54
表示用アイコンの項目で指定された場所にあるはず
734デフォルトの名無しさん:2007/03/12(月) 16:14:49
普通はインストールしてあるプログラム
735デフォルトの名無しさん:2007/03/13(火) 02:58:51
プログラムのアイコン書き換えたらどこなのか簡単に分かると思うけど。
736デフォルトの名無しさん:2007/03/13(火) 03:13:44
>>735
737デフォルトの名無しさん:2007/03/13(火) 05:13:50
LocalLockしたローカルメモリオブジェクトをLocalUnlockせずにLocalFreeしても大丈夫?
738デフォルトの名無しさん:2007/03/13(火) 05:26:09
今はLock、Unlockって機能してるの?
739デフォルトの名無しさん:2007/03/13(火) 05:35:47
してない。
LocalLockは二重ポインタ逆参照してるだけだしLocalUnlockは何もしない。
740デフォルトの名無しさん:2007/03/13(火) 09:07:39
派遣プログラマ、高卒、身長163cmです
この先どうしたらいいですか?
741デフォルトの名無しさん:2007/03/13(火) 09:15:58
>>740
激しくスレ違い。というか死んでくれ。
742デフォルトの名無しさん:2007/03/13(火) 11:15:20
なんかDVD-RAMドライブでエラーが起こると
勝手にドライバ設定がDMAからPIOになっちゃうみたいなんですけど、
これがいつもコソーリ起こるので
何か
「エラー出たのでPIOにしました」
みたいなメッセージとか出したいような気がするんですが、
何を監視すればいいですか?
743デフォルトの名無しさん:2007/03/13(火) 13:15:02
>>742
http://support.microsoft.com/kb/817472/ja
http://journal.mycom.co.jp/column/winxp/075/
http://blog.so-net.ne.jp/haruyuki-m/2005-09-05

恒久的に(再起動後も)影響するのはMasterDeviceTimingModeAllowedあたり。
744743:2007/03/13(火) 13:15:34
DVDだとSlaveDevice〜か。
745742:2007/03/13(火) 16:24:41
THX!
746デフォルトの名無しさん:2007/03/13(火) 18:58:43
GDIよりDIBの方が描画速度が速いですか
747デフォルトの名無しさん:2007/03/13(火) 18:59:49
それはアレだな。
車よりガソリンの方が走るのが速いですかと聞いてるようなもんだ。
まともな返事は返ってこないよ。
748デフォルトの名無しさん:2007/03/13(火) 19:05:21
>>747
ワロタ
分かりやすい例えだ

>>746 じゃないけど
749デフォルトの名無しさん:2007/03/13(火) 19:10:59
ウィンドウメッセージのメッセージIDを「WM_DESTROY」といった名称に変換するにはどうしたらいいですか?
750デフォルトの名無しさん:2007/03/13(火) 19:11:07
.NETよりGDI+の方が(ry
751デフォルトの名無しさん:2007/03/13(火) 19:13:36
>>749
っ #define

でも、複数人で開発する時にこれをしたら吊ってもらう
752749:2007/03/13(火) 19:17:50
>>751
そうじゃなくて、受け取ったメッセージを表示するプログラムなんですが
メッセージIDで表示しても、なんのメッセージかわからないんで文字列名称に変換したいんです。
753デフォルトの名無しさん:2007/03/13(火) 19:24:27
>>749
grep "#define WM_" winuser.h | awk 'printf "{%s, \"%s\"}\n", $2, $2'
後は検索できるように構造体およびリスト作成
754749:2007/03/13(火) 19:26:38
>>753
結局は手作業で変換するしかないってことでしょうか?
結構誰でも思いつきそうな機能なのでそんなAPIないかな〜と思ったんですが
755デフォルトの名無しさん:2007/03/13(火) 19:32:41
そういうAPIもあるけど教えない。言わない。書かない。
756デフォルトの名無しさん:2007/03/13(火) 19:41:24
どうやら態度が気に入らないと言ってるらしいぞ
757デフォルトの名無しさん:2007/03/13(火) 19:49:22
質問です。

タスクマネージャの様に各プロセスのメモリ使用量やGDIオブジェクトを知りたいのですが
どうやれば良いんですか?
758デフォルトの名無しさん:2007/03/13(火) 19:49:36
今から755のご機嫌をとるスレになります
759デフォルトの名無しさん:2007/03/13(火) 19:53:06
>755のご機嫌を取るAPI教えてください
760デフォルトの名無しさん:2007/03/13(火) 19:56:10
TerminateProcess
761749:2007/03/13(火) 20:01:37
自己解決しました。
>>755にカチンときたので教えません。
バーカ!
762デフォルトの名無しさん:2007/03/13(火) 20:02:50
>>758
流れ読むの面倒くさいから聞いちゃう。
>>755は何に対して発言しているのですか?
763デフォルトの名無しさん:2007/03/13(火) 20:11:25
>>753
文字列化演算子でいいんじゃね? スレ違いだけど
764デフォルトの名無しさん:2007/03/13(火) 21:16:06
ファイルパスとして妥当であるかを調べるAPIってありませんか?
765デフォルトの名無しさん:2007/03/13(火) 21:26:33
PathGetCharTypeでぐるぐる回す?
766デフォルトの名無しさん:2007/03/13(火) 21:45:59
Vista時代になったらDirect3Dとかも覚えないと
もうWindowsプログラマとして食べていけないんだろうか
GDIは全部エミュレーションになって激遅らしいじゃん
既存のGUI業務アプリの全Direct3D化なんて言われたら
自殺するしかない
767デフォルトの名無しさん:2007/03/13(火) 21:46:47
糞ビスタ
768デフォルトの名無しさん:2007/03/13(火) 21:48:20
きっと適当なラッパーが登場して万事おk
769デフォルトの名無しさん:2007/03/13(火) 21:50:26
CUIアプリしか作らない俺には縁のない話だぜ
770デフォルトの名無しさん:2007/03/13(火) 21:52:33
>>766
それほど深刻じゃないみたいよ。
ヒマみて.NET Framework 3.0にでも手をだすたら?
771デフォルトの名無しさん:2007/03/13(火) 21:54:49
772デフォルトの名無しさん:2007/03/13(火) 21:58:19
WPFとXNAの相性が悪すぎるのがなぁ・・・
773デフォルトの名無しさん:2007/03/13(火) 22:03:20
WinFXの話題があがったから、ここの住民に聞くけど。
Microsoft Expressionって、元はクリーチャハウスのアレなのか?

こいつが、Flashキラー?
どんな経緯なんだよ!!
774デフォルトの名無しさん:2007/03/13(火) 22:46:43
パフォーマンスチューニングなんて飾りです
顧客には#ifdef切り替えてるだけなのが判らんのですよ
775デフォルトの名無しさん:2007/03/13(火) 22:47:19
ごばく だぜ
776デフォルトの名無しさん:2007/03/14(水) 00:20:27
低レベルな質問で申し訳ありませんが・・・
CreateWindowEx でウィンドウ表示をするとき、HINSTANCEで本物を渡すのをズボラして
NULLを渡しても問題ないんでしょうか?

HINSTANCEは、関数が要求するときに渡すためだけにある数合わせ程度の引数でしかない、
とそういう認識をしているのですが(本当はアプリを区別するためみたいだけど)
試しにCreateWindowExでNULLを入れてみたらウィンドウ自体はちゃんと出てしまったものですから
デフォルト値としてゼロを与えるようなコードを書いちゃってもいいものかと悩んでしまいまして・・・
777デフォルトの名無しさん:2007/03/14(水) 00:26:24
>>776
問題ありです
悩む暇があったら
HANDLE GetCurrentProcess(VOID)
を使って下さい
778デフォルトの名無しさん:2007/03/14(水) 00:27:35
わかりました。ありがとうございます
779デフォルトの名無しさん:2007/03/14(水) 00:29:55
え?なんでGetCurrentProcessなわけ?
780デフォルトの名無しさん:2007/03/14(水) 00:36:16
hInstance
Windows 95/98:ウィンドウに関連付けられたモジュールのインスタンスハンドルを指定します。
Windows NT/2000:このパラメータは無視されます。

781デフォルトの名無しさん:2007/03/14(水) 00:41:16
>>779
楽だから
782デフォルトの名無しさん:2007/03/14(水) 00:48:06
俺はGetWindowLong派
783デフォルトの名無しさん:2007/03/14(水) 00:48:55
むしろstatic HINSTANCE hInstanceとLPCREATESTRUCTでだなwwwwww
784デフォルトの名無しさん:2007/03/14(水) 00:49:48
>>782
ニワトリが先か卵が先かってやつだなw
785デフォルトの名無しさん:2007/03/14(水) 00:52:26
オレの場合、どっかのサンプルコードにあった
GetModuleHandle
使ってるけど、これってまずい?
786デフォルトの名無しさん:2007/03/14(水) 00:52:42
楽だからってプロセスハンドル渡すのはどうなのか
787デフォルトの名無しさん:2007/03/14(水) 00:53:32
プロセスハンドルとインスタンスハンドルってまったく別アドレスに格納されてるんじゃ枚か?
788デフォルトの名無しさん:2007/03/14(水) 00:57:01
int main(){
printf("%x\n", GetCurrentProcess());
printf("%x\n", GetModuleHandle(NULL));
}

ffffffff
400000
789デフォルトの名無しさん:2007/03/14(水) 00:57:45
>>777 は間違ってるよね?
GetModuleHandle に NULL 渡すのがいいよね?
790デフォルトの名無しさん:2007/03/14(水) 01:58:18
LoadIcon で試してみた
GetCurrentProcess() 失敗
GetModuleHandle(NULL) 成功

引数が無視される場合は関係ないが
どっちにしても GetModuleHandle(NULL)
にしておけば問題ないと思った
791デフォルトの名無しさん:2007/03/14(水) 01:59:30
GetCurrentProcessとGetCurrentThreadが返すのは擬似ハンドルだよ。
792デフォルトの名無しさん:2007/03/14(水) 02:22:09
そもそもいまごろ9xまでサポートしなければならないのか?
793デフォルトの名無しさん:2007/03/14(水) 05:03:01
業務用アプリなら仕方がないのかもね
個人向けなら普通に切り捨てるけど、
そもそもサポートが打ち切られた9xが入ったPCを
ネットに繋げてるだけでもはや公害だし
794デフォルトの名無しさん:2007/03/14(水) 05:14:36
しばらく前に、中小企業のエンドユーザのとこに行ったら
9Xが現役で動いていて、自分がずーと前に携わったPGの
ショートカット(その会社とは無関係な製品)がデスクトップ
に張ってあって、涙が出そうになったことある。
795デフォルトの名無しさん:2007/03/14(水) 08:19:34
>>794
会社の導入コスト/教育費...etcの償却やいろいろあるからねー
手間ではあるし。
796デフォルトの名無しさん:2007/03/14(水) 08:27:51
>>785
それは問題ない。Win32のモジュールハンドルとインスタンスハンドルは等価。
普通はWinMainのあの引数にもGetModuleHandle(0)の戻り値が渡されている。
797デフォルトの名無しさん:2007/03/14(水) 08:44:16
>>796
素でしらんかった
798デフォルトの名無しさん:2007/03/14(水) 08:46:53
ってことは、わざわざグローバルとかに hInst って置かなくても
常に GetModuleHandle(NULL) 呼び出しとけばおk?
まさかそんなとこが、クリティカルにパフォーマンス落とすこともないだろうし
799デフォルトの名無しさん:2007/03/14(水) 08:51:23
DLLを作る場合に問題が出る。
800デフォルトの名無しさん:2007/03/14(水) 08:59:15
あー全くその通りでした
ありがとうございます
801デフォルトの名無しさん:2007/03/14(水) 09:11:56
>>794
今年に入って、Win3.1上で動いてるAccessアプリのメンテをする羽目になったぞ。
データを持ち帰ろうとして、ファイルのコピーのやりかたを思い出せず、お客さんに教えてもらったぞ。
802デフォルトの名無しさん:2007/03/14(水) 16:05:12
>>801
vm 上で動作してるんなら別だけど
Win3.1 のデータを持って帰るのって大変そう…

フロッピーだったりしてね
803デフォルトの名無しさん:2007/03/14(水) 18:53:36
>>802
用紙とかw
804デフォルトの名無しさん:2007/03/14(水) 18:55:58
ファイルのコピーって紙のファイルだったのかーーー!!!
805デフォルトの名無しさん:2007/03/14(水) 18:58:47
プログラムマネージャーはエクスプローラーみたいに見えて
ランチャーでしかないからな
ファイルマネージャーを起動しなくちゃw
806デフォルトの名無しさん:2007/03/14(水) 19:37:53
DOS窓叩いた方が早いな
807デフォルトの名無しさん:2007/03/14(水) 19:46:37
そしてlsと叩いてエラーが返ってくる
808デフォルトの名無しさん:2007/03/14(水) 20:09:49
お前らいくらなんでもバカにしすぎだwww
809デフォルトの名無しさん:2007/03/14(水) 20:58:37
Visual C++ 2005 Express Edition ダウソしたんですが、
templete.obj : error LNK2001: 外部シンボル "__imp__DefWindowProcW@16" は未解決です。
WinAPI使おうとするとエラーが出ます。何でですか?
810デフォルトの名無しさん:2007/03/14(水) 21:02:17
Platform SDKかWindows SDK入れろ。
その上でリンカにuser32.libを読み込ませろ。
811デフォルトの名無しさん:2007/03/14(水) 21:06:59
>>809がMSの手順どおりのセットアップしてないから
http://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デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/15(木) 02:19:29
>>814
その場合、LoadLibrary はそのDLLのリファレンスカウントをインクリメントする。
816デフォルトの名無しさん:2007/03/15(木) 02:22:17
>>814
>LoadLiblaryは何もせず、ハンドルだけ返し
Yes。但し気をつけなきゃいけないのは同一プロセスに既にマッピングされてるDLLをLoadLibrary()しても
参照カウントは増えるのでLoadLibrary()した回数分だけFreeLibrary()しないといけない

>GetProcAddressは おとなしく目的の関数のポインタ返してくれるだけで
>ロードのオーバヘッドはかからないように実装されてるんでしょうか?
こっちはNo。GetProcAddressは自プロセスにマッピングされてるDLLのハンドルから
関数名(あるいは序数)に相当する関数のアドレスをDLLのエクスポートセクションから走査する。
だから単純に関数を呼び出すのとLoadLibrary()+GetProcAddress()を使ったのでは
オーバーヘッドに差が出る。と思う(実際やった事ないので絶対とは言えない)。
817デフォルトの名無しさん:2007/03/15(木) 03:33:58
>>816
静的インポートしても
エクスポートセクションの走査がプロセスの起動時間に埋め込まれるだけでっしゃろ?
818デフォルトの名無しさん:2007/03/15(木) 04:09:47
>>817
静的にDLLをインポートして、EXEからDLLの関数を呼び出す場合は
もちろん内部でLoadLibraryとGetProcAddress呼んでるけど
>>814が聞きたいのはDLLから自身の関数をGetProcAddress経由で呼んだらって話だと思う。
GetProcAddress経由は>>816の通りだけどDLLから自身の関数を参照する時は
>>814みたいな特殊な事しない限り普通に参照できるものだと思ってる(EXEが自身の関数を参照するのと同じ話)。

あれ、もしかして俺ひどい勘違いしてる?もう寝たほうがいいな。
819デフォルトの名無しさん:2007/03/15(木) 04:15:34
> あるDLLが、同じDLL内にある関数(もちろんEXPORTED)を呼ぶ時
って確かに書いてるね
ごめん見逃してた
820デフォルトの名無しさん:2007/03/15(木) 08:43:04
814の場合もそうだが、既に読み込まれていることがわかっていて、
一時的にハンドルを使いたい(まだFreeLibraryされないことがわかっている)場合は、
GetModuleHandleが便利。

LoadLibraryだと参照カウントがインクリメントされるが、
GetModuleHandleなら参照カウントはインクリメントされない。

821デフォルトの名無しさん:2007/03/15(木) 10:26:02
どうしてオブジェクト指向なwin32apiのプログラムがないですか
822デフォルトの名無しさん:2007/03/15(木) 11:02:36
つ【.NET】
823デフォルトの名無しさん:2007/03/15(木) 11:27:15
>>815-820の皆さんどうも有難うございました。
824デフォルトの名無しさん:2007/03/15(木) 11:27:32
Win32API はオブジェクト指向だ。
オブジェクトはハンドルという形にはなっているけども
825デフォルトの名無しさん:2007/03/15(木) 11:48:57
あの長ったらしいハンガリアン記法は何とかなりませんか
826デフォルトの名無しさん:2007/03/15(木) 12:14:40
825を変化させるほうがよほど堅実的だな
827デフォルトの名無しさん:2007/03/15(木) 12:57:19
>>810-811
サンクスです。動きましたー
828デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/15(木) 18:37:22
EM_SETSEL
830デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/16(金) 03:15:09
下位16ビットにX座標、上位16ビットにY座標が入ってるから。

下位16ビットが1、それ以外が0をlParamとの論理積で下位16ビットのみを取り出し、
lParamを右に16ビットシフトすれば上位16ビットのみが取り出せる。
833デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/16(金) 07:30:25
HIWORD(x)
LOWORD(x)
でええやん
836デフォルトの名無しさん:2007/03/16(金) 07:35:08
GET_X_LPARAM()とGET_Y_LPARAM()を使わないと、
マイナスの値とか渡ってきたときが痛い目に遭う。
837デフォルトの名無しさん:2007/03/16(金) 07:49:14
EDITコントロールやRICHEDITコントロールにペーストできる限界値ってありますか?
OSはWindows XPです。
838837:2007/03/16(金) 07:53:56
メモ帳には長い文字列もペーストできるのに、
自前のダイアログのEDITやリッチエディットにはペーストできない・・・
839デフォルトの名無しさん:2007/03/16(金) 08:00:50
>>838
エディットは上限を指定出来るじゃん。
CEdit::SetLimitText
840デフォルトの名無しさん:2007/03/16(金) 08:04:29
>>839
それはWinAPIじゃない
841デフォルトの名無しさん:2007/03/16(金) 08:07:04
ありがとう。

やらないか?
842デフォルトの名無しさん:2007/03/16(金) 08:17:35
最大4MBまで
843デフォルトの名無しさん:2007/03/16(金) 08:19:03
>>836
いや、ちゃんと動作分かってたら痛い目見ないからw
その2つのマクロも結局LOWORD&HIWORDですよと
844デフォルトの名無しさん:2007/03/16(金) 08:38:54
メモ帳はエディットコントロールのメモリを直接いじってるから
コントロールの上限こえても大丈夫ぽい
845デフォルトの名無しさん:2007/03/16(金) 09:20:31
"c:\\test.txt"といった文字列を渡して
自前のアプリからExplorerと同じコンテキストメニュー(できれば1・2個メニューを追加して)を表示させる方法を教えてください。
846デフォルトの名無しさん:2007/03/16(金) 10:14:26
>>845
エスパーすぎるわ。
GetSystemMenuとかの話?
847デフォルトの名無しさん:2007/03/16(金) 10:23:36
IContextMenu2,3?
848デフォルトの名無しさん:2007/03/16(金) 11:55:42
ウィンドウ内で右クリックしたとき、[Aを編集する] とか [Bを編集する] とか
そういう項を含んだ右クリックメニューが出てくるようにしたいのではなかろうか。

俺、このエスパー検定準一級に受かったら結婚するんだ
849デフォルトの名無しさん:2007/03/16(金) 12:00:19
エスパーエスパーって
普通に理解できる質問だと思うんだが・・・?
回答はできないが(゚Д゚)
850デフォルトの名無しさん:2007/03/16(金) 12:10:05
ESPktkr
851デフォルトの名無しさん:2007/03/16(金) 12:22:07
一行目と2行目の関連というか動作がわからないところがエスパー加減なんだと思う
852デフォルトの名無しさん:2007/03/16(金) 12:33:11
cドライブルートの中のtest.txtのIShellFolderとITEMIDLISTからIContextMenuを取得
IContextMenu::QueryContextMenuでメニュー項目を新規に作成したメニューに追加
独自項目を追加後普通にメニュー表示
選ばれたのが独自項目ではなければIContextMenu::InvokeCommand
じゃないの?
超能力がいるか?
853デフォルトの名無しさん:2007/03/16(金) 12:37:22
>>852
それで何を説明した気になってるんだ?
てか誰もファイルの実体をどーのこーの何て書いてない
飽くまで"c:\\test,txt"という文字列だ
854デフォルトの名無しさん:2007/03/16(金) 12:57:40
>>853
マジで言ってるの?
それはエスパー云々以前に「対話能力がない」ってレベルだと思うぞw
855デフォルトの名無しさん:2007/03/16(金) 13:00:40
"c:\\test.txt"ではなく、"c:\\test,txt"であるところが重要。
856デフォルトの名無しさん:2007/03/16(金) 13:37:58
>>853はうんこ
857デフォルトの名無しさん:2007/03/16(金) 13:38:59
>>855
フォルダか拡張子付いてないファイルだろ。それは重要ではない
858デフォルトの名無しさん:2007/03/16(金) 14:26:22
質問者が、現時点でどのくらいできるのかわからない

説明メンドクセ
859デフォルトの名無しさん:2007/03/16(金) 17:14:47
> COMがわかりません
と読めた
860デフォルトの名無しさん:2007/03/16(金) 17:17:24
アンカー抜けてた
>>853
861デフォルトの名無しさん: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デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/16(金) 21:35:09
>>843
んなこと言い出したらLOWORD&HIWORDだって結局はキャストじゃん
864デフォルトの名無しさん:2007/03/16(金) 21:38:47
ウィンドウのサイズを変更するときに縦にしか変更できなくする方法ってどうやればいいですか?
865デフォルトの名無しさん:2007/03/16(金) 21:40:50
>>864
WM_GETMINMAXINFO
866デフォルトの名無しさん:2007/03/16(金) 21:51:03
>>865
ありがとうございます
867デフォルトの名無しさん:2007/03/16(金) 23:10:12
>>862
AllocConsoleで作ったコンソールは、別プロセスの別スレッドなんじゃないの?
サブクラス化も駄目なはず。
ReadConsoleInputはイベントは取れてもIDM_TESTまでは拾えないはず。
ってことで、あとはDLL作って潜り込ますしかないんじゃない?
868デフォルトの名無しさん:2007/03/16(金) 23:53:11
>>867
SetWinEventHookでイベント捕まえるしか手がないと思うんだがどうよ
869デフォルトの名無しさん:2007/03/17(土) 00:14:35
MSAAの関数か
870デフォルトの名無しさん:2007/03/17(土) 01:05:39
>>832-836
丁寧な回答をありがとうございます。
よく分かりました。
871デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/17(土) 01:56:31
>>871
idConsoleThread = GetWindowThreadProcessId(hwConsole, &idConsoleProcess),

最後の,は;だろうが、
どっちにしろAllocConsoleしたコンソールのスレッドIDは、この方法では取得できない
873デフォルトの名無しさん:2007/03/17(土) 01:57:14
コンソールウィンドウって仮想マシンだったよな
あれは結構別物だと思ってたんだけど、ただのウィンドウなの?
874872:2007/03/17(土) 02:04:36
>>871
さらに、コンソールの本当のスレッドは、idConsoleProcessの下にはない
だからSetWinEventHookでプロセスIDとしてidConsoleProcessを指定しても、
コンソールの本当のスレッドまでフックが届かない

コンソールの本当のスレッドIDを取得する方法は俺も知らん
Global HookしてプロセスIDでチェックするしかない気がするな
875デフォルトの名無しさん:2007/03/17(土) 02:34:23
>>874
ありがとうございます。あとはイベントを捕まえればいいのですが、
EVENT_OBJECT_INVOKEDってVistaオンリー・・・

EVENT_OBJECT_FOCUSとかで地道に捕まえるしかないっぽいですね。
そのうえ取得できるのは定義したメニューのIDM_TESTじゃなくて、上からの順番だけ・・・
もう泣きそうです。
876デフォルトの名無しさん:2007/03/17(土) 02:41:13
コンソールウィンドウってCSRP(csrss)の持ち物だったっけ?
877デフォルトの名無しさん:2007/03/17(土) 03:06:33
>>875
だめだ、簡易編集オンになってて範囲指定中だと、
発生したイベントがブロッキングされてしまいました・・・
もう泣いてもいいですか。
878デフォルトの名無しさん:2007/03/17(土) 03:13:28
>>876
だな、そのあたりからスレッドID探せるかもしれんな
879デフォルトの名無しさん:2007/03/17(土) 03:23:29
こういう時こそデバッガの出番じゃね?
追ってけばそのうちわかる気がしね?
じゃあ任せた。
880デフォルトの名無しさん:2007/03/17(土) 06:04:33
スレッドID分かっても、大して意味ないよ。複数のコンソールが同一のスレッドで動くから。
イベント処理プロシジャの中でHWNDとか見てどこから飛んで来たのか判断する必要は同じ。

しかしMSAAって日本語の資料少ないな。
881デフォルトの名無しさん:2007/03/17(土) 16:47:10
Jane Doe Styleのスレッド一覧を表示するようなウィンドウってどうやって作るんですか?
882デフォルトの名無しさん:2007/03/17(土) 16:50:20
ソース公開されてなかったか?
883yyy:2007/03/17(土) 16:58:39
はじめまして。
http://amaznode.fladdict.net/

のような、amazonのAPIを使ったものを
作りたいのですがFlashのみで開発できるものなのでしょうか?
初歩的な質問で申し訳ありません。
分かる方がいましたら、アドバイスを頂けると助かります。
884デフォルトの名無しさん:2007/03/17(土) 17:00:25
このクマクマに「スレタイを読め」と言って通じるだろうか
885デフォルトの名無しさん:2007/03/17(土) 17:02:45
>>883
激しく板違い
886デフォルトの名無しさん:2007/03/17(土) 17:21:55
887デフォルトの名無しさん:2007/03/17(土) 18:44:00
>>884
たぶん「API」という言葉にしか目が行っていないのだろう
888デフォルトの名無しさん:2007/03/17(土) 19:19:12
もしかするAPIという言葉が理解できてないのかも知れない
889デフォルトの名無しさん:2007/03/17(土) 19:29:04
和んだ
890デフォルトの名無しさん:2007/03/17(土) 19:44:41
わんだ?
891デフォルトの名無しさん:2007/03/17(土) 20:02:06
早大レイプ部の和んださんって今何やってるの?
892デフォルトの名無しさん:2007/03/17(土) 20:18:39
かずんだ?
893デフォルトの名無しさん:2007/03/17(土) 20:46:34
>>883
質問自体が論外だが、
このスレでの関連性を問うなら、これぐらい?

http://www.microsoft.com/japan/products/expression/default.mspx
894デフォルトの名無しさん:2007/03/17(土) 21:58:23
>>883
あれはな、よく聞けよ?
APIじゃなくてamazon web service。 わかったか?
amazon web serviceかAWSで検索してこい。
895デフォルトの名無しさん:2007/03/17(土) 21:58:25
>>881
リストビュー
896デフォルトの名無しさん:2007/03/17(土) 22:04:24
>>882
>>895
遅ればせながらありがとうございました
897デフォルトの名無しさん:2007/03/18(日) 00:51:53
WindowsSDKとMFCの違いを教えてください。
898897:2007/03/18(日) 00:56:29
VCで提供しているクラスライブラリを使わず開発するって事なのかな

以下それについての疑問

@MFCを使わず開発する上での利点
AMFCとSDKの開発効率はどちらが上か?
B同じ技量のプログラマがそれぞれMFC、SDKで組んだ場合の実行速度に違いはあるのか?

以上3つの疑問点があります。
899デフォルトの名無しさん:2007/03/18(日) 01:07:16
実際に自分でやってみて確認するのが一番。
900デフォルトの名無しさん:2007/03/18(日) 01:10:09
ケースバイケースとしか言いようがない気が・・・

MFCはSDKを使い慣れた人のためのもの、というのは覚えておいたほうがいいと思う
901デフォルトの名無しさん:2007/03/18(日) 01:15:29
場合によりけりだな。

軽く触る程度ならMFCで。今後使い回すつもりなら
いずれどっちも学ぶ必要があるからお好きな方から。
902デフォルトの名無しさん:2007/03/18(日) 01:16:45
俺は最近はSDKのが好きかもしれん。
心の迷いだろうから、WTLでも触ってフレームワークの奴隷に戻るつもりだが。
903デフォルトの名無しさん:2007/03/18(日) 01:24:52
@MFC側はXerox Perkが論じたフレームワークが主モデルであり、
Windows SDK群の一握りしかラッパー化されていない。
利点については割愛。

A一般的なGUI操作が前提ならば、MFCベースが優勢。
しかし、@で述べたとおりMFCのクラス群だけではカバーできない部分もあり、
所々でSDKの関数を利用する。

B何の実行速度?MFCにはオーバーヘッドが大きいクラスが多々あるが?
904897:2007/03/18(日) 01:29:53
>>899-903
なるほど。
要するに幅広く応用するのであればSDKに精通していた方が有利なわけですね
 
906デフォルトの名無しさん:2007/03/18(日) 01:31:33
>>904
もう一つ付け加えておくとSDKベースでの開発だとVC以外のコンパイラ(例えばBCC)
でも通るMFCはVCコンパイラじゃないと無理
907デフォルトの名無しさん:2007/03/18(日) 01:39:20
警告やクエッションといったシステムのアイコンを取得したいのですが、
LoadIconだと32x32しかとれないですよね。
16x16を取る方法はないのでしょうか。
908デフォルトの名無しさん:2007/03/18(日) 01:40:47
LoadImage
909デフォルトの名無しさん:2007/03/18(日) 02:06:47
>>908
LoadImageでOEMイメージを取得するということですか?
下記のようにしてみましたが、
「指定されたリソースの種類がイメージファイルに見つかりません。」と取得できませんでした。
どこか間違っています?

HANDLE h =
::LoadImage(NULL, MAKEINTRESOURCE(OIC_WARNING), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE);

910デフォルトの名無しさん:2007/03/18(日) 02:15:17
LR_SHARDを付けたらいけました、すみません。
けどアイコンは縮小されたような汚いのしか取れなかったです。。

HANDLE h =
::LoadImage(NULL, MAKEINTRESOURCE(OIC_WARNING), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARD);
911デフォルトの名無しさん:2007/03/18(日) 02:23:33
> 縮小されたような
LR_DEFAULTSIZEを指定したらそりゃ32x32に縮小されるだろ
> 汚いのしか
LR_CREATEDIBSECTION付けろ
つーかMSDN嫁
912デフォルトの名無しさん:2007/03/18(日) 02:33:17
>>911
IMAGE_ICONを指定した場合はLR_CREATEDIBSECTIONなんて関係ないが・・・。
お前さんもMSDN嫁。
913デフォルトの名無しさん:2007/03/18(日) 02:34:20
肝心のMSDNへのリンクがない件について
914デフォルトの名無しさん:2007/03/18(日) 02:45:11
915デフォルトの名無しさん:2007/03/18(日) 02:56:12
>>907-914
その流れはワロタwwwwwwwwwwwww
916デフォルトの名無しさん:2007/03/18(日) 03:00:13
ネタなら笑えるが社会人になってマジでやるやつがいる件
917デフォルトの名無しさん:2007/03/18(日) 03:01:08
まあ「ちゃんと読んでます」って応える人間が多いこと多いこと・・・
918デフォルトの名無しさん:2007/03/18(日) 03:04:29
MSDN読んでます。
910はサイズにGetSystemMetrics(SM_CXSMICON)を指定してLR_DEFAULTSIZEを付けていました。
LR_CREATEDIBSECTIONつけてLR_DEFAULTSIZE外しても、
サイズ0でLR_DEFAULTSIZEでも同じでした。

プログラムのアイコンとかだと綺麗に出るんですが、
警告とかはギザギザで縮小したような?感じになっています。
919デフォルトの名無しさん:2007/03/18(日) 03:07:28
警告のアイコンってそもそも16x16が存在しないんじゃね?
920デフォルトの名無しさん:2007/03/18(日) 03:19:42
いまどき作った人が他界したようなMFCを使うなんざきちがい沙汰ですが。
921デフォルトの名無しさん:2007/03/18(日) 03:23:18
922デフォルトの名無しさん:2007/03/18(日) 03:50:14
>>919
イベントビューアとかで使っているので聞いてみたのですが、ないのかもしれませんね。
諦めて適当なのを組み込んで済ませます。お世話になりました。
923デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/18(日) 15:55:41
>>924
そういうこと。
全てLoadLibaryで明示的リンクをする、
ドキュメントはオンラインのMSDNライブラリを見るにしても、
構造体や定数の定義なんかはSDKのヘッダが見れないと不便だろ。

Windows SDKはPlatform SDKの後継だから、
Platform SDKをインストールせず初めからWindows SDKを入れて構わなかったのに。
926デフォルトの名無しさん:2007/03/18(日) 16:00:27
Windowd SDKだと.NET Framework 3.0 SDKが統合されてる関係か
Windows 2000がサポートされなくなった罠
927デフォルトの名無しさん:2007/03/18(日) 17:32:24
> Windows 2000がサポートされなくなった

Win2kで動作しなくなるということ?
928デフォルトの名無しさん:2007/03/18(日) 17:52:26
今のPlatformSDKだって、前のバージョンのOSであるNT4では完全には動作しないような・・・
違ったっけ
929デフォルトの名無しさん:2007/03/18(日) 18:26:25
SDKが動くもなにもSDKは動く物じゃないだろうが
930デフォルトの名無しさん:2007/03/18(日) 18:44:16
インストールに弾かれるのか?
931デフォルトの名無しさん:2007/03/18(日) 19:42:02
なんで実行環境と開発環境が分けて考えられないんだ?
932デフォルトの名無しさん:2007/03/18(日) 20:29:21
ターゲットとしてWin2kがサポートされなくなったってこと。
実際にはWinXPあたりをターゲットに選んで注意深く組めば動くだろうけど
933デフォルトの名無しさん:2007/03/18(日) 20:52:42
うーんと・・・.NETクライアントが
.NETフレームワークのバージョン情報を取得する方法というのは
どのようなものなのでしょうか?

予想1: レジストリ
予想2: 特定のDLLのバージョン取得関数
予想3: Microsoft.NET\Framework内のフォルダの名前

スレ違いで怒られたら申し訳ございません。
934デフォルトの名無しさん:2007/03/18(日) 20:59:41
発想が逆
クライアントの側がバージョンを指定するんだよ
スレ違いだからこれ以上のコメントがあったら.NETのスレでよろしく
935933: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デフォルトの名無しさん:2007/03/19(月) 17:22:19
WritePrivateProfileStringWなどはマルチバイト文字列と変換して読み書きする仕様だったはず。
A版で書いてW版で読んだりなんてことができるようにと聞いた覚えがある。
939デフォルトの名無しさん:2007/03/19(月) 17:25:38
>>938
ということは、Unicode専用文字はINIファイルには記録できないということなのでしょうか?
エディットボックスで入力される文字をINIファイルで扱いたいのですが。
940デフォルトの名無しさん:2007/03/19(月) 17:30:05
Unicodeでないとダメな理由があるの?
941デフォルトの名無しさん:2007/03/19(月) 17:37:03
逆にWritePrivateProfileStringWでないとダメな理由があるの?
自分で読み書きすればいいだけ。
942デフォルトの名無しさん:2007/03/19(月) 17:45:20
ダイアログで入力された情報をINIファイルに記録しておきたいんですが、
Unicodeアプリである以上、Unicode文字が入力されることもあるので、
それらの入力をINIファイルに保存できないのは痛いなと思いまして。
アプリ内で参照するファイル名とかにUnicodeを使われていたら、
それらのファイル名情報もINIファイルでは保存できないということ…?
943デフォルトの名無しさん:2007/03/19(月) 17:47:52
WritePrivateProfileStructを使えばいいじゃないか。
944デフォルトの名無しさん:2007/03/19(月) 17:52:48
>>938のような動きをするということは.INIはデフォルトのANSIコードセットを使うというルールになってるんだろう。
どうしてもANSIコードセットに変換できないUNICODE文字を使いたいなら、
HEX文字列に変換して書き出すとか工夫がいりそうだね。

INIは古いレジストリ使えやゴラー
普通のアプリでレジストリ使うな、ApplicationSetting使えゴラー(いまここ)
ユーザーは振り回されて大変じゃのう。
945デフォルトの名無しさん:2007/03/19(月) 19:01:54
レジストリはまだ推奨事項だろ。レジストリに書けないような大きな連中を
どこに書くかって話でねーの。
946デフォルトの名無しさん:2007/03/19(月) 19:04:03
違います。
947デフォルトの名無しさん:2007/03/19(月) 19:06:11
デフォルトはwin.ini使う仕様だからそこにUnicode書かれたら困るし
iniそのものが過去の互換性のためにあるんだろ
948デフォルトの名無しさん:2007/03/19(月) 19:20:03
Application Settingsなんか.NETしか使えネーじゃん。
それとも何か、アンマネージだと「普通のアプリ」じゃネーとか言うのかこのスレで(w
949デフォルトの名無しさん:2007/03/19(月) 19:22:17
>Application Settingsなんか.NETしか使えネーじゃん。
( ゚Д゚)・・・
950デフォルトの名無しさん:2007/03/19(月) 19:29:20
>Application Settingsなんか.NETしか使えネーじゃん。
( ゚ω゚)・・・
951デフォルトの名無しさん:2007/03/19(月) 19:42:02
何?
RegOpenKeyEx
RegQueryValueEx
くらいのステップでApplication Settingsにさわれる
Win32APIがあるってーの?
まさかIXMLDOMを叩くなんて話じゃねーよな?
952デフォルトの名無しさん:2007/03/19(月) 20:08:50
UTF-7で書きなさい。
953デフォルトの名無しさん:2007/03/19(月) 20:44:41
アプリの設定なんてデータ交換に使うわけでもないんだから
好きなフォーマットにしる
954デフォルトの名無しさん:2007/03/19(月) 20:55:19
つまり、Unicode対応アプリケーションでは
INIファイルを使うなということになるんですかね。

でも、VC2005はデフォルトでUnicode設定になってるのに、
INIファイルにUnicode文字を書き込めないという書き込みが全然出てこないですね。
これらの組み合わせって、そこまで使われていないものなのでしょうか。
955デフォルトの名無しさん:2007/03/19(月) 21:06:51
エクスプローラやコモンダイアログ(ファイル開くなど)で現在参照してるディレクトリを
変更させることってできますか?
956デフォルトの名無しさん:2007/03/19(月) 21:15:36
>WritePrivateProfileString
>注意  この関数は、16 ビット Windows ベースのアプリケーションとの互換性を保つ目的でのみ提供されています。
>Win32 ベースのアプリケーションでは、初期化情報をレジストリに格納してください。

MSDNにこう記述があるにもかかわらず、これだけいつまでも使われ続けているAPIも珍しい。
アプリやフォーム間でのデータの受け渡しまでこれ使ってる糞プログラムのメンテをやらされてるから欝だ。
957デフォルトの名無しさん:2007/03/19(月) 21:15:49
まぁ実際のINIファイルの文字コードがどうなってるかは別として
GetPrivateProfile〜系APIにもちゃんとUNICODE版があるわけだが
958デフォルトの名無しさん:2007/03/19(月) 21:20:36
>>957
あるっちゃあるが >>938のとおり。
959デフォルトの名無しさん:2007/03/19(月) 21:22:39
>>954
出来ないとか駄目だとか言う前に工夫をしてみるのも大事だと思うが。

APIがUnicode版だろうと、INIファイルの文字コードはANSI(MS-Kanji)固定だぜ。
URLエンコードとかBASE64とかISHとか好きな符号化方式で変換して格納すれば済むと思うが。
960デフォルトの名無しさん:2007/03/19(月) 21:23:37
あ、ANSIの何が悪い!
961デフォルトの名無しさん:2007/03/19(月) 21:27:44
APIの問題ではなく、ファイル仕様の問題、みたいですネ
962デフォルトの名無しさん:2007/03/19(月) 21:40:53
Unicodeがらみの話で wprintfやwcoutを使ってコンソールに文字を出力すると、
結局ANSIコードに変換してしまうので、途中にUnicodeにしかない文字が入っていると、
その文字以降何も出力されなくなる。
WriteConsoleW以外にUnicode特有の文字をコンソールに出力する手段はないのかな?
963デフォルトの名無しさん:2007/03/19(月) 21:45:28
>wcout
localeは?ってWIN32APIじゃないな
964デフォルトの名無しさん:2007/03/19(月) 21:48:59
>>962
無い。
でもBoost.Iostreamsで、ReadConsoleWを呼ぶストリームバッファを作って
wcoutの代わりにするのはいけると思う。
965デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/19(月) 22:19:22
やっぱりシステムの根っこに書き込みを行うのは抵抗あるんだよなあ
ディレクトリごと削除するだけでアンインストールが完全に終わるINIの方が好き
967デフォルトの名無しさん:2007/03/19(月) 22:22:49
レジストリなんて設定ファイルに毛の生えたようなのが固まってるだけだよ。たぶん
968デフォルトの名無しさん:2007/03/19(月) 22:25:27
自分でXMLパーサ書いてそれに記録させてる。
その程度作るのは大した手間じゃないし。
969デフォルトの名無しさん:2007/03/19(月) 22:35:58
>>962
スレ違いだから詳しくはよそで聞いて欲しいが、VC8はロケール関連にバグがある。
970デフォルトの名無しさん:2007/03/19(月) 22:43:54
>>964
うむやはりWriteConsoleWしかないですか、iostreamを書くのは俺の力量じゃ無理そうで
WriteConsoleラップした自家製printfでやっときます。
>>963 >>969
ローケルやVC2005のバグの件は了解しています。
これにかかるとUNICODE特有の文字だけでなく2バイト文字が全然でなくなりますから。
971デフォルトの名無しさん:2007/03/19(月) 22:44:44
そろそろカチンときそうです。
972デフォルトの名無しさん:2007/03/19(月) 23:02:00
>>954
Using Unicode in INI files
http://www.codeproject.com/file/unicode_ini.asp

965も書いてるけど
既存のUTF-16LEのINIファイルがある場合はそのコードで
無い場合は実行環境(日本語winならCP932)に合わせて保存されるらしいんだよな。
実際やってみると〜W版、〜A版関係なくそうなる。
OSが9x系のときはどうなるか知らないが…
973デフォルトの名無しさん:2007/03/20(火) 01:07:20
ゲームプログラムで質問です。
StrechBltで2倍に拡大して描画するのと画像サイズを2倍にしてそのまま表示するのとではどちらのほうが描画が早いですか
974デフォルトの名無しさん:2007/03/20(火) 01:15:13
やってみれ
975デフォルトの名無しさん:2007/03/20(火) 01:15:43
>>973
こんなところでいつ着くともしれないレスを待つより、自分でやってみた方が
早いと思うよ。
976デフォルトの名無しさん:2007/03/20(火) 01:25:37
>>972
98SEで試してみた所、UnicodeのINIファイルにANSIで追記された。
NT系でしか働かないのだろうな、その機能は。
Meだけ対応とかだったら嫌だな。
977デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/20(火) 07:15:52
?どっちにしろSIGKILLはキャッチできないじゃん。
980デフォルトの名無しさん:2007/03/20(火) 07:34:09
>>979
そうなんですか。どうもです。
981954:2007/03/20(火) 09:31:36
>>972
なるほどたしかにあらかじめエディタでUnicode形式でファイルを作成し、
それに対してWriteProfileしてみたところ、Unicodeのまま書き込めました。

>>976のおっしゃる情報によると、NT系しか動かないようなので、
厳密にやろうとするとまた考えないといけないのでしょうけど、
今回のものは2000以降限定と言ってしまっても問題無いので、
そうなるとこれでも大丈夫ですよね。

みなさんありがとうございました。
982デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/20(火) 20:58:44
親ウィンドウをサブクラスかでは駄目なのか?
984982:2007/03/20(火) 21:10:27
>>983
サブクラス化も試してみました。

具体的にはWM_CLOSEを取得して確認ダイアログを出したいのですが、他のメッセージは取得できるのに
なぜかWM_CLOSEは取得できないまま終了してしまいました。

そこでフックを試してみたら上手く取得できたので、フックでやろうとしているのですが。。
985デフォルトの名無しさん:2007/03/20(火) 21:30:10
GetMessageフックはフックを受け取るスレッドのコンテキストで動くから
GetCurrentThreadId()でいいんじゃネーノ
986デフォルトの名無しさん:2007/03/20(火) 21:44:59
> フックを受け取る
もとい
メッセージを受け取る
987982:2007/03/20(火) 22:44:15
>>985,986
おー!できるようになりました。ちゃんといろんなAPIを知っておかないとダメですね。

ありがとうございました!!
988デフォルトの名無しさん:2007/03/20(火) 23:08:51
次すれまだぁぁあんあん
989デフォルトの名無しさん:2007/03/21(水) 03:52:22
990デフォルトの名無しさん:2007/03/21(水) 14:28:23
つか何度見ても2がおっかしー。
新しいのにはもうないけど。
991デフォルトの名無しさん:2007/03/21(水) 17:33:48
           /  ̄ ̄ '´ ̄ ̄ヽ、
            ノ/. /二二二ヽヽ  \
        <V/, '/ 人 |  ヽハ夊 、 |
         〃 {_{`ヽ  Vヽノリ| l >" i|
         ハ小l●    ● レ|、 | |
         |│ l⊃ rー- ⊂⊃|ノ |│
        /⌒ヽ.| .ヘ  ヽ ノ   jレ/⌒i !
      \ /:::レ l>,、 __, イァ/   /ノ
.        /:::::/ / ヘ:::|三/::{ヘ、__∧
       `ヽ<     ヾ:∨:::/ヾ:::彡
992デフォルトの名無しさん:2007/03/21(水) 18:27:52
   _
   /〜ヽ
  (。・-・)< うめてくだちゃい
   ゚し-J゚ 
993デフォルトの名無しさん:2007/03/21(水) 18:54:32
994デフォルトの名無しさん:2007/03/21(水) 19:02:46
コソーリ
ttp://wiki.livedoor.jp/program1/
最初に作った人とは違いますが・・・

このスレのファンです
時々質問したまま何も返さないのは私です
どうもすみません
995デフォルトの名無しさん:2007/03/21(水) 19:24:54
   _
   /〜ヽ
  (。・?・)
   ゚し-J゚ 

996996:2007/03/21(水) 19:45:04
自己解決しました。
>>996にカチンときたので教えません。
バーカ!
997デフォルトの名無しさん:2007/03/21(水) 19:53:14
どう見てもオナニープレイです 本当にお疲れ様でした
998994:2007/03/21(水) 19:56:26
ごめんなさい。
これぐらいしかできないのです・・・
999994:2007/03/21(水) 20:00:49
評判が悪ければ取り下げますです。
1000デフォルトの名無しさん:2007/03/21(水) 20:01:35
                / ⌒ヽ 
                /      \ 
              ,.-‐''⌒ヽ   ,.=、  ヽー、 
              ,〃/∠彡ニ\ (.fゃ)  |  j 
            /       ミ彡三ヘ`=´   | | 
         /       ミ彡三∧    j ./ 
           ト ャ''"    ミ彡三∧.   // 
        」i _;''_,    ミ彡'ニミヘ、 〃 
          リ ´ ̄     リ´ f'`ij }/「i| 
         ヽ-         '´/ソ'川|| 
         ヽ一       「彡'川ll.||| 
          T   _   / ´ j||.川|| 
           ` ̄了、     i! 川.川| 
              _」. \    | j| 川|ト、 
        _/ ̄  \  \   '_/./川 ` 
        ̄       `    ̄  ´ 
       ネゴトワ・ネティエ[Negtva Netie] 
       (ルーマニア.1935〜54)  
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。