■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build51
1 名前:デフォルトの名無しさん :2007/03/21(水) 03:44:55
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

2 名前:デフォルトの名無しさん :2007/03/21(水) 03:46:45
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/

3 名前:デフォルトの名無しさん :2007/03/21(水) 03:47:45
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

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

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

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

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


5 名前:デフォルトの名無しさん :2007/03/21(水) 03:48:47
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

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


6 名前:デフォルトの名無しさん :2007/03/21(水) 09:06:21
>>5
windowssdk.microsoft.comは既にmsdn2へのリダイレクトになっている。
MSDNライブラリは2006年12月版が最新。
http://www.microsoft.com/downloads/details.aspx?FamilyID=94596af5-cc58-45af-a14b-df627a31e783&DisplayLang=ja

まあ何はともあれ1乙。

7 名前:デフォルトの名無しさん :2007/03/21(水) 09:35:35
見落とした。ごめんぽ

8 名前:デフォルトの名無しさん :2007/03/21(水) 10:46:54
般  羯 多 呪 多 得 想 掛 所 亦 無 耳 不 是 異 蘊 観  摩 
若  諦 呪 能 是 阿 究 礙 得 無 意 鼻 増 舎 色 皆 自  訶
心  羯 即 除 大 耨 竟 無 故 老 識 舌 不 利 色 空 在  般
経  諦 説 一 神 多 涅 掛 菩 死 界 身 減 子 即 度 菩  若
      呪 切 呪 羅 槃 礙 提 盡 無 意 是 是 是 一 薩  波
   波 曰 苦 是 三 三 故 薩 無 無 無 故 諸 空 切 行  羅
   羅   真 大 藐 世 無 陀 苦 明 色 空 法 空 苦 深  蜜
   羯   実 明 三 諸 有 依 集 亦 聲 中 空 即 厄 般  多
   提   不 呪 菩 佛 恐 般 滅 無 香 無 相 是 舎 若  心
        虚 是 提 依 怖 若 道 無 味 色 不 色 利 波  経
   波   故 無 故 般 遠 波 無 明 觸 無 生 受 子 羅
   羅   説 上 知 若 離 羅 智 盡 法 受 不 想 色 蜜
   僧   般 呪 般 波 一 蜜 亦 乃 無 想 滅 行 不 多
   羯   若 是 若 羅 切 多 無 至 眼 行 不 識 異 時
   諦   波 無 波 蜜 顛 故 得 無 界 識 垢 亦 空 照
        羅 等 羅 多 倒 心 以 老 乃 無 不 復 空 見
   菩   蜜 等 蜜 故 夢 無 無 死 至 眼 浄 如 不 五
   提
   薩

9 名前:デフォルトの名無しさん :2007/03/21(水) 12:21:09
>>8
簡単にコピペできる写経ですね

10 名前:デフォルトの名無しさん :2007/03/21(水) 12:29:03
ぎゃーてーぎゃーてー はら ぎゃーてー  が好きです

11 名前:デフォルトの名無しさん :2007/03/21(水) 13:33:14
萌える般若心経

12 名前:デフォルトの名無しさん :2007/03/21(水) 13:33:40
ツンデレ般若心経

13 名前:デフォルトの名無しさん :2007/03/21(水) 13:59:38
今からここは、ツンデレ般若心経に萌えるスレになりました。

14 名前:デフォルトの名無しさん :2007/03/21(水) 14:00:49
ちょっとまて
意味が分らんぞ

15 名前:デフォルトの名無しさん :2007/03/21(水) 15:51:02
わかったぞ!わかったぞ!わかっt(ry

16 名前:デフォルトの名無しさん :2007/03/21(水) 16:25:46
いきなりの狂信者フイタ

17 名前:は@c178.016.c3-net.ne.jp ◆cplnFO9T0I :2007/03/21(水) 18:40:26 ?2BP(1000)
VC++.net2003で勝手にベースを作らすとstdfx.h内で#define WIN32_LEAN_AND_MEANしていたせいでOPENFILENAME構造体を定義出来なかった。
これをコメントアウトしたら出来ましたよ。なんつーか、馬鹿らしい。


18 名前:11 :2007/03/21(水) 19:58:53
すまない

カオスなのは多分俺のせいだ

19 名前:前スレ994 :2007/03/21(水) 20:10:32
ちなみに一応言い訳しておきますと、ちょっと長目の文章だと
すぐ容量制限オーバーになるので
そのままページに作るのはちょっと無理だったのです。
そのままZIPとかでUPできればよかったんですが、
画像以外はUPできない所なので・・・
別に何か怪しくしたい訳ではないのです(^^;
せっかく誰かが作ってくれたので利用しようかな・・・と。
でも勝手にこういう事をしていいものかよくわからなかったので
ダメだったら消します。
どうもありがとうございましたm(_ _)m

20 名前:デフォルトの名無しさん :2007/03/21(水) 20:44:50
>>15-16
モグ乙

21 名前:デフォルトの名無しさん :2007/03/21(水) 20:45:44
>>19
つまり役立たずなページってことじゃないか?
消えていいよ^^;

22 名前:デフォルトの名無しさん :2007/03/21(水) 20:52:23
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ


23 名前:デフォルトの名無しさん :2007/03/21(水) 21:17:03
このスレを見てる愛しの姉へ
 
  彼の仕事はプログラマぁ♪
  そんな私もプログラマぁ♪
  ちなみ胸はAカップ♪
  ぃぇい!


自作の歌か知らんけど、もうすこし小声で唄ってくれ。
会社で思い出して、笑い死にそうになる。

あと、ぃぇい!の指差しポーズは止めた方がいい。

24 名前:デフォルトの名無しさん :2007/03/21(水) 21:39:04
グラマーときいてやってきました (;・∀・)ハァハァ

25 名前:デフォルトの名無しさん :2007/03/21(水) 22:20:19
チェックした四角ってどうやって出すんだったかな?

26 名前:デフォルトの名無しさん :2007/03/21(水) 22:26:58
☐ฺ



☑ฺ

27 名前:デフォルトの名無しさん :2007/03/21(水) 22:29:23
>>26

28 名前:デフォルトの名無しさん :2007/03/21(水) 22:37:57
☑派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
☑派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
☑自社で仕事なんてできるわけがない
☑派遣労働の問題点の話題が出ると感情剥き出しにして反論する
☑派遣労働の問題を指摘する人は嫌いだ
☑派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
☑奢ってくれる派遣先正社員を尊敬する
☑自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
☑派遣先正社員より自分の生涯収入が低いのは当然だ
☑派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ

これでOKか?

29 名前:デフォルトの名無しさん :2007/03/21(水) 23:12:41


30 名前:デフォルトの名無しさん :2007/03/21(水) 23:27:28
>>25 マジレスしとく
DrawFrameControl(hdc, lprc, DFC_BUTTON, DFCS_BUTTONCHECK|DFCS_CHECKED);

31 名前:デフォルトの名無しさん :2007/03/22(木) 00:45:14
>>23
女でここに来てる奴なんて多分いないだろうw

32 名前:デフォルトの名無しさん :2007/03/22(木) 00:45:57
やさしいお兄さんやお姉さんたちが答えてくれるかも。

33 名前:デフォルトの名無しさん :2007/03/22(木) 00:47:38
もし俺が次スレを立てる事があればそこを改変しよう。
約束する。

34 名前:デフォルトの名無しさん :2007/03/22(木) 01:28:57
やさしいキモオタやバーコード親父たちが答えてくれるかも。

こうですか? わかりません!><

35 名前:デフォルトの名無しさん :2007/03/22(木) 01:58:31
2001年のHALとか電人HALとか

36 名前:デフォルトの名無しさん :2007/03/22(木) 06:55:15
>>28
お前、プライドないのか?

37 名前:デフォルトの名無しさん :2007/03/22(木) 12:12:56
☑プライドは、ない

38 名前:デフォルトの名無しさん :2007/03/22(木) 12:23:25
☐ プライド

39 名前:デフォルトの名無しさん :2007/03/22(木) 12:24:28
プリンセスプライド

40 名前:デフォルトの名無しさん :2007/03/22(木) 12:47:33
☑ プライドや友達などといった定義が曖昧な物事は
  プログラムを生業とするすべての人間にとって考えるべき領分ではない

41 名前:デフォルトの名無しさん :2007/03/22(木) 14:23:09
ケンタッキープライドチキン

42 名前:デフォルトの名無しさん :2007/03/22(木) 14:53:27

す、すげぇ! こんな記号があったのが驚きだ。

43 名前:デフォルトの名無しさん :2007/03/22(木) 16:39:28
□す、すげぇ! こんな記号があったのが驚きだ。

44 名前:デフォルトの名無しさん :2007/03/22(木) 17:02:49
ちょっと質問させてください。

ソースの失われたアプリケーションがあります。(おそらくMFCで作られている)
このアプリケーションの特定の処理(関数になっている)を
新しく作る外部のアプリケーションから実行したいのです。

ここで分からないのが、既存のアプリケーションのユーザ関数を外部のプログラム
から実行することが、そもそも出来るのか。出来るのであればAPIのどの様な
関数を調べていけばいいのか教えていただければと思います。

仕様書は残っているようなので、関数名は何とか調べたいと思いますが、
関数名も分からなかったら、さすがに無理でしょうか。

OSはWindowsXPでC++かC#で実現したいと考えています。


45 名前:デフォルトの名無しさん :2007/03/22(木) 17:08:50
有料になります

46 名前:デフォルトの名無しさん :2007/03/22(木) 17:17:51
DLLのこと?

47 名前:デフォルトの名無しさん :2007/03/22(木) 17:27:39
>>44
まぁできない。
リリースビルドの.exeにシンボル情報は残らないから、関数のアドレスとかわからない。
逆コンパイルして出たもの使うとかしかない。(俺は逆コンパイル自体したことないけど)

DLLならもちろんできる。ライブラリってのは他から呼ぶためにある。

48 名前:デフォルトの名無しさん :2007/03/22(木) 17:29:54
>>44
結論から言うと、既存のアプリケーションのユーザ関数を外部のプログラム
から実行することはできます。

ですが、私の知っている方法では逆アセンブルを行う必要があります。
逆アセンブルを禁止されているのであれば、この方法は使えません。

ついでにいうと exe 内の関数については関数名が失われている可能性が高いです。
(build オプションによりますが・・・)

ユーザ関数部分が dll になっている事をお祈りしております。

ちなみに私の知っている方法は

既存アプリケーションを逆アセンブル

実行したい関数のアドレスを調査

既存アプリケーションを起動して DLL 注入

プロセス間通信で必要なときに注入した DLL が実行したいユーザ関数呼び出し

戻り値をプロセス間通信で受け渡す

ソフトウェアライセンスで逆アセンブルが禁止されていることが多いので
この方法は社会的に大変大きな危険性が伴います
よくライセンス条項を調べてから行ってください

49 名前:デフォルトの名無しさん :2007/03/22(木) 17:45:26
ライセンス条項っつーか、自分とこのバイナリのソースを無くしたんだべ

50 名前:デフォルトの名無しさん :2007/03/22(木) 17:54:52
エクスポートされてれば可能

51 名前:デフォルトの名無しさん :2007/03/22(木) 17:54:53
外注に委託していたアプリケーションで
その外注と取引中止したとかの理由かと思った

52 名前:デフォルトの名無しさん :2007/03/22(木) 18:44:45
あとはMicrosoft Officeの如く、徹底的にAcitveXオートメーション化されていれば、
中のプログラムを呼ぶというのもできるが、そんなこと期待できる訳が無い。

53 名前:デフォルトの名無しさん :2007/03/22(木) 20:29:01
便乗して・・・
Dependency Walkerってどうやってるの?

54 名前:53 :2007/03/22(木) 20:37:37
ごめん。
理解した。

55 名前:デフォルトの名無しさん :2007/03/22(木) 20:38:25
こうして こうして こうやるの

56 名前:デフォルトの名無しさん :2007/03/22(木) 20:39:46
最近寒いVIPPERみたいのが棲みついてるな

57 名前:デフォルトの名無しさん :2007/03/22(木) 20:58:32
バイパー

58 名前:デフォルトの名無しさん :2007/03/22(木) 21:16:32
Diamond Multimedia ?

59 名前:デフォルトの名無しさん :2007/03/22(木) 21:22:45
SetWindowsHookExでフック(複数)かけるのと、
SetWindowLong等でサブクラス化するのと、
ぶっちゃけパフォーマンスに違いでますか?

60 名前:デフォルトの名無しさん :2007/03/22(木) 21:24:17
>>59
やってみればいいんじゃないかと。

違いが出る場合もあるし、出ない場合もあるとしか答えられんね。

61 名前:デフォルトの名無しさん :2007/03/22(木) 21:30:33
知らない奴は無理して答えなくてもいいんだぜ

62 名前:44 :2007/03/22(木) 21:39:42
>>47,48

逆アセンブルしてどうにかというのは、関数のアドレスが分かったとしても、
関数の引数と戻り値のタイプも分からないと駄目ですよね。
おそらく私にはそこまで読めそうにないので、上司を説得する方法を考えます。

情報ありがとうございました。


63 名前:デフォルトの名無しさん :2007/03/22(木) 21:39:43
☑ フックするイベントや頻度によるので答えられませんが、SetWindowLong で済ませるのが良いと思います。

64 名前:デフォルトの名無しさん :2007/03/22(木) 21:51:44
>>62
ついでにいうと呼出規約?も必要です
__fastcall とか __cdecl とかそういう奴

65 名前:デフォルトの名無しさん :2007/03/22(木) 21:55:56


66 名前:デフォルトの名無しさん :2007/03/22(木) 22:53:46
☑逆汗すれば全部わかる

67 名前:デフォルトの名無しさん :2007/03/22(木) 23:43:46
特定のアプリケーションの使用メモリを制限する方法ありませんか?

制限対象のアプリケーションは修正できません。
なんかメモリリークするバグがあって、最悪でもメモリが一定使用量に
なったらそのアプリケーションを一度殺して再起動したいのです。

68 名前:デフォルトの名無しさん :2007/03/23(金) 00:04:44
>特定のアプリケーションの使用メモリを制限する方法ありませんか?

それは大変そうだが・・・

>なんかメモリリークするバグがあって、最悪でもメモリが一定使用量に
>なったらそのアプリケーションを一度殺して再起動したいのです。

これなら比較的簡単にできないか?
常駐監視プログラム作ってその対象のアプリのメモリ使用量を監視して
一定量に達したら TerminateProcess でサヨウナラとかでいんじゃね?

69 名前:デフォルトの名無しさん :2007/03/23(金) 00:15:06
SetProcessWorkingSetSizeとかかな?

70 名前:デフォルトの名無しさん :2007/03/23(金) 00:16:50
そうですね。
特定アプリのメモリ使用量を外部のプログラムから得る方法あるでしょうか?

71 名前:デフォルトの名無しさん :2007/03/23(金) 00:33:36
>>69
それは物理メモリの使用量を調整する為のAPIなんじゃないの?

72 名前:デフォルトの名無しさん :2007/03/23(金) 00:35:05
>>69
んー、そのAPIはメモリ不足時に仮想メモリに逃がすだけみたいですね。

GetProcessMemoryInfoというのを見つけました。
psapi.dll使うやつみたいですね。
これの引数の構造体メンバのWorkingSetSizeが
タスクマネージャで表示されるメモリ使用量と同じらしいです。
ううう…

73 名前:デフォルトの名無しさん :2007/03/23(金) 00:44:00
>>71-72
うえ、そうだったか ノイズスマソ

74 名前:デフォルトの名無しさん :2007/03/23(金) 00:48:54
>>72
WorkingSetSize +PagefileUsage あたりでいんじゃね?

75 名前:デフォルトの名無しさん :2007/03/23(金) 00:55:58
なんとかできそうです。
ありがとうございました。

76 名前:デフォルトの名無しさん :2007/03/23(金) 01:39:34
対象アプリケーションを作った奴に文句言うのが正しい解決法だろう。

77 名前:デフォルトの名無しさん :2007/03/23(金) 01:51:13
>>67
ジョブオブジェクト

78 名前:デフォルトの名無しさん :2007/03/23(金) 02:00:59
教えてください。とあるサイトで見たコードなんですが

DWORD WINAPI oreore(LPVOID p)
{
MSG msg;

/* メッセージキューを作る。*/
PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE);
SetEvent((HANDLE)p);

while (GetMessage(&msg, NULL,0,0) > 0) {
switch (msg.message) {
case WM_SURE_TEST1:
puts("WM_SURE_TEST1");
break;
case WM_SURE_TEST2:
puts("WM_SURE_TEST2");
break;
case WM_SURE_TEST3:
puts("WM_SURE_TEST3");
break;
default:
puts("理解できないメッセージです");
}
}
ExitThread(0);
}

このコードの最初のPeekMessageの必要性がよくわからないです。
そもそも必要なのでしょうか?

79 名前:78 :2007/03/23(金) 02:01:44
因みにこれはCreateThreadで作られたスレッドです。

80 名前:デフォルトの名無しさん :2007/03/23(金) 02:06:13
>>77
日本語でおk

81 名前:デフォルトの名無しさん :2007/03/23(金) 02:11:15
職業物体

82 名前:デフォルトの名無しさん :2007/03/23(金) 02:12:20
>>78
スレッドが作成された時点ではメッセージキューが作成されていない。
(メッセージキューはスレッド単位で存在するもの)
PeekMessage等のAPIが初めて呼ばれたときに作成される。

詳しくはPostThreadMessageでググってくれ。

83 名前:デフォルトの名無しさん :2007/03/23(金) 02:20:09
>>80
CreateJobObject & SetInformationJobObject
# 日本語でおkと言われたのに英語になったw

84 名前:デフォルトの名無しさん :2007/03/23(金) 02:22:26
>>83
肝心のパラメーターが判りません。
クラスに応じた構造体を渡すみたいですが
情報出てきません…

85 名前:デフォルトの名無しさん :2007/03/23(金) 02:35:37
>>84
http://msdn2.microsoft.com/en-us/library/ms686216.aspx
ぐぐったら一発で出てきたが。
こちらは日本語でおkとか言われてもリクエストには応えかねるのでよろしく
あと最後にAssignProcessToJob

86 名前:デフォルトの名無しさん :2007/03/23(金) 08:26:27
>>84
MSDN読めカス
ググれカス

87 名前:デフォルトの名無しさん :2007/03/23(金) 09:45:40
Richeditでキーワードに色を付けたいのです。

// 赤色に変更するためのCHARFORMAT
CHARFORMAT cf;
cf.cbSize = sizeof(cf);
cf.dwMask = CFM_COLOR;
cf.crTextColor = RGB(255, 0, 0);

// 選択範囲を反転表示しないように設定
SendMessage(hwndEdit, EM_HIDESELECTION, TRUE, 0);

for(/* begin〜end を Richedit 内のキーワードの位置に設定しながら繰り返す */){
  SendMessage(hwndEdit, EM_SETSEL, (WPARAM)begin, (LPARAM)end); // ← ※
  SendMessage(hwndEdit, EM_SETCHARFOTMAT, SCF_SELECTION, (LPARAM)&cf);
}

↑のように処理すると、※の場所で、スクロールバーが連動して動いてしまいます。

スクロールバーをシンクロさせない方法はありませんか?
もしくはキーワード部分を選択せずに色分けする方法はありませんか?


88 名前:デフォルトの名無しさん :2007/03/23(金) 10:36:42
すいません誘導できますた。
IsWindow(handle)みたいなプロセスIDかスレッドの生死を判断するものはあるんでしょうか?

89 名前:デフォルトの名無しさん :2007/03/23(金) 10:55:33
      ,、‐ " ̄:::゙:丶、
    ,r: ,' 3゙ :::::::/ハヽ:ヽ::::、:ヽ
    {::://:::::::// ヽ\ト、:::::::!
    ヾ l:::::::/ 丶   `ヾ ィ、:::|
     |;:r::|  O`  'O ゙ハ|   < ないない
      ヽハ :.:.    :.: レ
        ´\ r‐--‐、,ノ
 r、     r、/ヾ ̄下ヘ
 ヽヾ 三 |:l1、_ヽ/__ .ィヽ
  \>ヽ/ |` }    n_n| |
   ヘ lノ `'ソ     l゚ω゚| |
    /´  /      ̄|. |
    \. ィ   ___ |  |
        | ノ     l |  |
      | |      i:|  |

90 名前:デフォルトの名無しさん :2007/03/23(金) 10:59:10
HANDLEを引数にするAPIに無効なHANDLE渡すとAPIは失敗して、
そういう意味のエラーコードが設定されるからそれで判断するとか?

91 名前:デフォルトの名無しさん :2007/03/23(金) 11:13:43
GetProcessVersionとかOpenProcessなどが使えそうだけど
Session境界を超えた場合の挙動とかわからないな

92 名前:デフォルトの名無しさん :2007/03/23(金) 11:15:43
GetExitCodeProcess はどう?

93 名前:デフォルトの名無しさん :2007/03/23(金) 12:29:40
プロセスを全部列挙してみるとか

94 名前:88 :2007/03/23(金) 12:34:45
>>89-92 皆さんありがとうございました。
>>91氏のGetProcessVersion() = 0 で死亡確認できました。
ありがとうございました。

95 名前:デフォルトの名無しさん :2007/03/23(金) 14:06:22
ものすごい基本の質問なんですが
charとchar*やTCHARとTCHAR*のように
最後に*が付くのと付かないのではどう違うんですか?


96 名前:デフォルトの名無しさん :2007/03/23(金) 14:14:08
ぬるぽ

97 名前:デフォルトの名無しさん :2007/03/23(金) 14:18:29
一応マジレスすると、*がつくのはポインタ型。全然違うもの。
詳しくはC言語のスレ行ってくれ、そっちなら真面目に答える(かもしれない)。

98 名前:デフォルトの名無しさん :2007/03/23(金) 14:25:34
>>97
ありがとうございます。
ググってみて少し分かったような気がします。
スレ違い失礼しました。

99 名前:デフォルトの名無しさん :2007/03/23(金) 16:33:31
>>95 和んだw

100 名前:デフォルトの名無しさん :2007/03/23(金) 18:15:47
a*は黄門、aは体

101 名前:デフォルトの名無しさん :2007/03/23(金) 19:51:33
>>94
プロセスIDが再利用されると生きてると誤判定する可能性があるぞ。
OpenProcessでハンドルを持っておいた方がいい
(ハンドルが1つでもある限りプロセスIDは再利用されないことが保証される)
死亡確認はGetExitCodeProcessかWaitForSingleObject

102 名前:デフォルトの名無しさん :2007/03/23(金) 20:05:21
>>95
俺ならTCHAR *じゃなくてLPTSTRだぜwwwwwwwwww

103 名前:デフォルトの名無しさん :2007/03/23(金) 20:32:10
>>96
まだそうと決まってないのにw

104 名前:デフォルトの名無しさん :2007/03/24(土) 00:28:07
32APIはよく知らないんですが、24bitsのDIBって有効なんでしょうか?

#define WIDTH 100
#define HEIGHT 50
LPDWORD lpPixel;
BITMAPINFO bmpInfo;
:
:
lpPixel=(LPDWORD)HeapAlloc(
 GetProcessHeap(),
 HEAP_ZERO_MEMORY,
 WIDTH*HEIGHT*3 //Alpha保持しないから3でいいんだろうか
);
:
:
//3bytesだから24でいいよね?
bmpInfo.bmiHeader.biBitCount=24;

105 名前:デフォルトの名無しさん :2007/03/24(土) 00:30:05
1行辺りのバイト数を4の倍数に揃えないといけないとかなんとかあったはず。

106 名前:104 :2007/03/24(土) 00:31:22
>>105
それってファイルフォーマットじゃなくてDIBにもそういうルールがあるんですか?

107 名前:デフォルトの名無しさん :2007/03/24(土) 00:36:33
うん

108 名前:104 :2007/03/24(土) 00:38:28
ググったら自己解決しました

109 名前:デフォルトの名無しさん :2007/03/24(土) 00:39:03
BMPファイルはヘッダの後にDIBをそのまま並べただけなのだから、
ファイル上でそうなっているということはメモリ上でもそうなっているということ。

110 名前:デフォルトの名無しさん :2007/03/24(土) 03:31:24
質問です。ポップアップウィンドウを表示したいのですが

HWND hWnd;
hWnd = CreateWindow(TEXT("STATIC"),NULL,WS_POPUP | WS_BORDER,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInst,NULL);
ShowWindow(hWnd,SW_SHOW);

としても何も表示されません。原因が分からず困っています。
間違いがあれば指摘して下さい。コンパイラはBCCです。

111 名前:デフォルトの名無しさん :2007/03/24(土) 03:38:58
>>110
間違いを指摘してなんとかなるってレベルじゃねぇぞ!


・・・メッセージポンプ、メッセージループでググれ。

112 名前:デフォルトの名無しさん :2007/03/24(土) 03:45:28
グーグってもしーかたない 迷わーずにすすめよ 行けばわかるのさ♪

113 名前:110 :2007/03/24(土) 04:20:22
自己解決しました。
CW_USEDEFAULTを具体的な数値に置き換えると表示されました。(^_^;)

114 名前:デフォルトの名無しさん :2007/03/24(土) 04:25:42
解決してねぇぇぇぇぇぇ

115 名前:デフォルトの名無しさん :2007/03/24(土) 04:35:55
おう

116 名前:デフォルトの名無しさん :2007/03/24(土) 10:30:06
>>101 ありがとうございます。早速ハンドルを持ったままに変更しようと思います。

117 名前:デフォルトの名無しさん :2007/03/24(土) 11:24:30
>>111
それはここに書いていないだけに違いない

118 名前:デフォルトの名無しさん :2007/03/24(土) 12:55:13
24bitDIBに4の倍数の縛りはなかったと思うぞ。
ただ1ピクセルの転送にWord、Byteそれぞれ1回づつ必要だからDoubleWord1回ですむ32bitのほうが扱い易いのは確か。
4の倍数は24bitDIB扱うライブラリの制限じゃ?(高速化のために4バイトづつ処理する関係上4の整数倍ピクセルじゃないと問題が出る)

119 名前:デフォルトの名無しさん :2007/03/24(土) 13:06:41
要はアライメントの問題って事?

120 名前:デフォルトの名無しさん :2007/03/24(土) 13:09:24
Win32の非圧縮DIBでは、スキャンライン毎のDWORDアラインは必須。
あと、HeapAllocとか使うくらいならCreateDIBSectionの方が楽だな。

121 名前:デフォルトの名無しさん :2007/03/24(土) 15:59:24
>>118
「1行辺りの」バイト数に4バイトアラインの制限がある。1ピクセルあたりではない

122 名前:デフォルトの名無しさん :2007/03/25(日) 13:22:59
>>5
Update来ている
Microsoft® Windows® Software Development Kit Update for Windows Vista™
http://www.microsoft.com/downloads/details.aspx?familyid=ff6467e6-5bba-4bf5-b562-9199be864d29&displaylang=en

123 名前:デフォルトの名無しさん :2007/03/25(日) 14:32:52
>>122
今日寝る前に>>5をインストールしたばかりだというのに、
この仕打ちはあんまりだorz

124 名前:デフォルトの名無しさん :2007/03/26(月) 02:10:40
Win32APIのコモンコントロールにデータグリッド(Excelの表みたいなやつ)
ってないんでしょうか?

125 名前:デフォルトの名無しさん :2007/03/26(月) 02:14:21
つ[リストビュー]

126 名前:デフォルトの名無しさん :2007/03/26(月) 02:15:08
>>124
リストビューコントロール(エクスプローラの右側のペインのヤツ)ぐらいしかない。

127 名前:デフォルトの名無しさん :2007/03/26(月) 02:46:31
オーナードロー駆使しまくって無理やり似せたことがあるけど

なかなか死ねる

128 名前:デフォルトの名無しさん :2007/03/26(月) 03:11:17
>>127
それ、壱からコントロールをフルスクラッチしたほうがまだ楽なんじゃないのか?
描画位地の調整が半端じゃなく大変だったろうに。

129 名前:デフォルトの名無しさん :2007/03/26(月) 03:11:35
ActiveXコントロール

130 名前:デフォルトの名無しさん :2007/03/26(月) 03:17:04
>>128
五時間くらいhDCと格闘してからそうしたorz

131 名前:デフォルトの名無しさん :2007/03/26(月) 03:30:46
フルスクラッチでも挙動や見た目をコモンコントロールに似せようとするとどのみち大変なんじゃねえの

132 名前:デフォルトの名無しさん :2007/03/26(月) 03:48:26
>>131
それはそうなんだが、コモンコントロールってWindowsのバージョンによって
微妙に挙動が異なったりするし、描画位置の調整が恐ろしく大変だから
>>124 みたいなのはフルスクラッチしたほうが楽なんだよ。

133 名前:デフォルトの名無しさん :2007/03/26(月) 10:20:57
そういや、NT3.51以前にListBoxを基底にしてListView作ったっけな

134 名前:デフォルトの名無しさん :2007/03/26(月) 10:33:14
あるファイルを開いているプロセスの一覧を取得するアプリを
作りたいのですが、どのようなAPIを使えばよいでしょうか?
ヒントになるようなことだけでもよろしくお願いします。

135 名前:124 :2007/03/26(月) 10:49:37
データグリッドをフルスクラッチってどどどどんな感じで作るんでしょうか。

136 名前:デフォルトの名無しさん :2007/03/26(月) 10:51:27
どんなって、普通にウィンドウプロシージャ書いて、ウィンドウクラス登録して、ウィンドウ作るんだろ?

137 名前:デフォルトの名無しさん :2007/03/26(月) 10:52:48
まず縦横に線を引くことからはじめるんだ

138 名前:デフォルトの名無しさん :2007/03/26(月) 10:55:01
データ構造決めてからやればそんなに手間でもないけど
使う人が慣れてるやつとかけ離れてると使ってくれないかもな

139 名前:デフォルトの名無しさん :2007/03/26(月) 11:00:55
オブジェクトの動作の一部だけを上書きするのがサブクラス化、
構築からウィンドウクラスの登録から全部最初から
書くのがフルスクラッチという解釈でいいんすか?

140 名前:124 :2007/03/26(月) 11:39:08
自分で線引くってことは、もしかして、クリックされたセルの色反転させるのも
一々座標見て、「ここは上から2番目、左から3番目のセルだから、
座標x、y−s、tで描かれる長方形の色を今ある色と反転させる」とか
やる必要あるんですかねッ!?行列のソートも自前!?

141 名前:デフォルトの名無しさん :2007/03/26(月) 11:56:19 ?2BP(222)
>>140
内部でこっそりListBoxとかを持っておくとか。

142 名前:デフォルトの名無しさん :2007/03/26(月) 12:32:03
>>140
ListCtrlで足りない機能を列挙するところから始めたら?

143 名前:デフォルトの名無しさん :2007/03/26(月) 12:32:41
>>140
だから自前描画は普通やらないの。

144 名前:デフォルトの名無しさん :2007/03/26(月) 12:43:59
>>140
そうだよ、スクロールも考慮してな

145 名前:デフォルトの名無しさん :2007/03/26(月) 13:51:56
Cでスクリーンショット撮ってクリップボードや適当な画像ファイル形式に保存する
プログラムを作成したいんだけどどうしたらいい?

146 名前:デフォルトの名無しさん :2007/03/26(月) 13:54:37 ?2BP(222)
GetDC(NULL)

147 名前:デフォルトの名無しさん :2007/03/26(月) 13:55:43
CreateDC "DISPLAY", 0, 0, 0

148 名前:デフォルトの名無しさん :2007/03/26(月) 14:01:21
便乗質問なんですが
他のWindowで隠れてるWindowのキャプチャって可能ですか?

149 名前:デフォルトの名無しさん :2007/03/26(月) 14:07:55
hDC取得出来ればいけるんじゃね?

150 名前:145 :2007/03/26(月) 14:10:59
>>146
>>147
ありがとう。

151 名前:デフォルトの名無しさん :2007/03/26(月) 14:11:07 ?2BP(222)
FindWindow
GetDC(hWnd)

152 名前:デフォルトの名無しさん :2007/03/26(月) 14:22:19
隠れてるウィンドウは表に出てWM_PAINTメッセージがきて初めて描画される
だから裏にいるときにDC取得しても上に乗っかってるウィンドウの内容がとれる

153 名前:148 :2007/03/26(月) 14:26:23
>>149
>>151
GetDC + BitBlt で試してみましたがやはり上のWindowが写りこんでしまいました。

>>152
ああ、やっぱり普通には無理なんですね。

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

154 名前:デフォルトの名無しさん :2007/03/26(月) 14:37:49
vistaだと、その辺の様子変わるのかねぇ・・・

155 名前:デフォルトの名無しさん :2007/03/26(月) 15:32:21
ビットマップのDC作成して、レンダリングさせればいいじゃまいか。
でも対象プロセスの中で動作させないと色々リソース管理が面倒そうだ。DllInjectionでちょっと実行が楽かな。

156 名前:デフォルトの名無しさん :2007/03/26(月) 15:47:35
>>154
どっかのブログで見た。
DWMまわりをごにょごにょするんだったかな。


157 名前:デフォルトの名無しさん :2007/03/26(月) 16:15:04
あえろが効いていればできるって聞いたけどな
vistaいじってみてえ

158 名前:デフォルトの名無しさん :2007/03/26(月) 16:16:34
DirectX使ってるならレンダリングイメージを保持してるのはサーフェスだからなぁ

159 名前:デフォルトの名無しさん :2007/03/26(月) 16:29:33
>>158
ゲームの動画取るソフトで、パフォーマンスのために
APIフックとかしてサーフェイス取得してるのもあるな

160 名前:デフォルトの名無しさん :2007/03/26(月) 16:38:29
ReadFileの第3パラメータ「読込バイト数」を、MessageBox()で出力したいのですが、
下だとエラーが出ます、どうすればいいですか?

MessageBox(NULL ,GetFileSize(hFile, NULL) , TEXT("読込バイト数") , MB_OK);

エラー↓
error C2664: 'MessageBoxW' : 2 番目の引数を 'DWORD' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。

161 名前:デフォルトの名無しさん :2007/03/26(月) 16:48:51
>>160
C言語からやり直してきて

162 名前:デフォルトの名無しさん :2007/03/26(月) 16:52:55
char buff[256];
wsprintf(buff, "%d", GetFileSize(hFile, NULL));
MessageBox(NULL ,buff , TEXT("読込バイト数") , MB_OK);



163 名前:デフォルトの名無しさん :2007/03/26(月) 17:01:36
VB出身かなぁ

164 名前:デフォルトの名無しさん :2007/03/26(月) 17:07:53
まぁ誰もが一度は通る道だ。
最近の.NETとか触ってからWindowsAPIをやろうとすると
文字列→数値や数値→文字列変換を自前でやらないといけないめんどくささにびっくりするもんだ。

165 名前:デフォルトの名無しさん :2007/03/26(月) 17:10:31
>>162
charじゃなくてTCHARにしとけ

166 名前:デフォルトの名無しさん :2007/03/26(月) 17:22:40
うーすみません>>162をchar→TCHARにして実行したところまたエラーが・・

error C2664: 'wsprintfW' : 2 番目の引数を 'const char [3]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

一応環境です
Windows2000SP4
VC++2005ExpressEdition
PlatformSDK

167 名前:デフォルトの名無しさん :2007/03/26(月) 17:23:38
>>166
wsprintf(buff, "%d", GetFileSize(hFile, NULL));

wsprintf(buff, TEXT("%d"), GetFileSize(hFile, NULL));

168 名前:デフォルトの名無しさん :2007/03/26(月) 17:36:31
何のためにTEXT()マクロを使っているかを自分で調べた方がいいな

169 名前:デフォルトの名無しさん :2007/03/26(月) 17:40:00
できました!ありがとうございました!

170 名前:デフォルトの名無しさん :2007/03/26(月) 20:20:26
>>148
ふらっとC♯, C#(初心者用) Part13
http://pc11.2ch.net/test/read.cgi/tech/1170761729/893-894

893 名前: デフォルトの名無しさん [sage] 投稿日: 2007/03/06(火) 11:22:59
ほかのアプリケーションのスクリーンショットを撮りたいとき
Alt+PrintScreenを送ってクリップボードから取得する以外に
いい方法はありませんか?

Vistaでのウィンドウ一覧の3D表示をXPでも
できるようにするソフトを作りたいのですが。

894 名前: デフォルトの名無しさん [sage] 投稿日: 2007/03/06(火) 11:38:00
>>893
PrintWindow API使えばある程度できるよ。
ttp://www.microsoft.com/japan/msdn/windows/windowsxp/xpvisualstyles.aspx

でもVistaみたいに最小化しているウィンドウについては無理。
あとリアルタイムアニメーションも多分きつい。

Vistaはわざわざライブサムネイルのためにウィンドウマネージャ書き換えてAPIまで追加したわけで、
それが何の苦労もなくXPで実現できるならXPでいいじゃんということになる。

171 名前:デフォルトの名無しさん :2007/03/26(月) 20:29:34
MDIがこうなってるのはわかったのですが、
フレームウィンドウ
 ↓
クライアントウィンドウ
 ↓
子ウィンドウ1
子ウィンドウ2
子ウィンドウ3

フレームウィンドウはWinMainで作るとして、
クライアントウィンドウはWinMainの中でフレームウィンドウ作成後に作るのと、
CALLBACK FrameProc関数がWM_CREATE:を受け取ったときに作るのと
どちらがいいのでしょうか??

172 名前:171 :2007/03/26(月) 20:51:10
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win139.html

すみません補足です
このページではFrameProc関数がWM_CREATE:を受け取ったときに
クライアントウィンドウを作っているのですが、なぜWinMainで
作ってないのか疑問に思ったのです

173 名前:デフォルトの名無しさん :2007/03/26(月) 20:53:22
動けばいいんだから細かいところを
ゴチャゴチャゴチャゴチャ
ゴチャゴチャゴチャゴチャ
ゴチャゴチャゴチャゴチャ
ゴチャゴチャゴチャゴチャ
気にするな。

174 名前:デフォルトの名無しさん :2007/03/26(月) 20:56:43
>>173はVB出身

175 名前:デフォルトの名無しさん :2007/03/26(月) 21:04:06
>>172
WinMain が管理すべきものはフレームウインドウだけであって、
クライアントウインドウはフレームウインドウが管理すべきだから。

oo に従っておくと同時に考えなくてはいけないことが減ってうれしい。
というか不正なウインドウを操作しようとするようなバグが減る。

176 名前:デフォルトの名無しさん :2007/03/26(月) 21:04:59
>>148
XP以降限定でもいいならPrintWindow()でも使え。

http://www.microsoft.com/japan/msdn/windows/windowsxp/xpvisualstyles.aspx
// メモリ デバイス コンテキスト hdcMem に格納されている、
// ウィンドウ hwnd のスナップショットを受け取ります。
HDC hdc = GetWindowDC(hwnd);
if (hdc)
{
    HDC hdcMem = CreateCompatibleDC(hdc);
    if (hdcMem)
    {
        RECT rc;
        GetWindowRect(hwnd, &rc);

        HBITMAP hbitmap = CreateCompatibleBitmap(hdc, RECTWIDTH(rc), RECTHEIGHT(rc));
        if (hbitmap)
        {
            SelectObject(hdcMem, hbitmap);

            PrintWindow(hwnd, hdcMem, 0);

            DeleteObject(hbitmap);
        }
        DeleteObject(hdcMem);
    }
    ReleaseDC(hwnd, hdc);
}

177 名前:デフォルトの名無しさん :2007/03/26(月) 21:24:05
>>175
> WinMain が管理すべきものはフレームウインドウだけであって、
> クライアントウインドウはフレームウインドウが管理すべきだから。

なるほど目から鱗ですWinMainから除きます
そういう考え方ってどうやったら身に付くのでしょうか
本屋行ってもWin32APIのいい本になかなか出会えないです

> oo に従っておくと同時に考えなくてはいけないことが減ってうれしい。

ooはメッセージキューという意味ですよね??

178 名前:デフォルトの名無しさん :2007/03/26(月) 21:25:35
oo = オブジェクト指向 だ

179 名前:デフォルトの名無しさん :2007/03/26(月) 21:27:31
>>177
>ooはメッセージキューという意味ですよね??

たぶんオブジェクト指向( object oriented )のことだと思うよ。

180 名前:デフォルトの名無しさん :2007/03/26(月) 21:28:24
oo == おっぱいおっぱい

181 名前:デフォルトの名無しさん :2007/03/26(月) 21:31:55
oo == ∞

182 名前:148 :2007/03/26(月) 21:58:56
>>170
>>176
やった!できました。すげー!!

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

183 名前:176 :2007/03/26(月) 22:06:53
あ、>>170 で既出だったのか。ポイントしてるURLまで一緒だし。orz

184 名前:デフォルトの名無しさん :2007/03/26(月) 22:28:24
XPでVistaのサムネイルみたいなの実現してるフリーソフトがあるけどあれは
どうやってるんだろう
やっぱりPrintWindow?

185 名前:デフォルトの名無しさん :2007/03/26(月) 22:35:26
>>178
>>179
ありがとうございます無知なのが恥ずかしいです><
てっきり無限→ループ→キューかと・・

186 名前:デフォルトの名無しさん :2007/03/26(月) 22:35:36
>>184
それって Vista みたいにリアルタイムで表示が更新されてるってこと?
だとしたら PrintWindow() じゃないと思う。
そうじゃないなら多分、PrintWindow() だと思う。

187 名前:デフォルトの名無しさん :2007/03/26(月) 22:36:56
>>185 の想像力に脱帽。

188 名前:デフォルトの名無しさん :2007/03/26(月) 22:42:03
                                 〜 ∞
                          [ノ゚д]ノ <キュー待ってー
                           [_] 
■■■■◇_◇_□□□□_□      / >

189 名前:高橋尚子 :2007/03/26(月) 23:42:10
>>184
マジレスすると、
IExtractImageインターフェイス

190 名前:デフォルトの名無しさん :2007/03/26(月) 23:52:30
>>189
ウィンドウじゃなくてファイルの話だったのか?

191 名前:デフォルトの名無しさん :2007/03/27(火) 01:19:17
指定したフォルダに書き込み権限があるかどうかというのは、
どのAPIを使えばいいんでしょうか?
サンプルとか置いてあるサイトをご存知でしたら、教えてください。

192 名前:デフォルトの名無しさん :2007/03/27(火) 02:18:35
実際に書き込んでみる…という手がVistaまでは使えた

193 名前:デフォルトの名無しさん :2007/03/27(火) 05:43:39
>>192
サンクス! Vistaでもそれでいけるんだね!・・・という意味になるぞ。お前の日本語ちょっと変。

194 名前:デフォルトの名無しさん :2007/03/27(火) 06:41:40
じゃあXPまでは使えたに訂正

195 名前:デフォルトの名無しさん :2007/03/27(火) 06:53:12
に、2003は……?

196 名前:デフォルトの名無しさん :2007/03/27(火) 10:46:09
書き込めたと思ったら、仮想ナンチャラフォルダに書かれてた、ってことがあるから使えないんじゃね?

197 名前:デフォルトの名無しさん :2007/03/27(火) 10:46:37
ACLちゃんとたどる

198 名前:デフォルトの名無しさん :2007/03/27(火) 11:52:29
(Media Playerの様に、アプリケーション再利用を行いたい為)

多重起動を抑止のアプリケーションを作るのですが、
後起動のアプリケーション(多重起動を抑止破棄される予定)から
既に起動しているアプリケーションにデータを送るには、
WM_COPYDATAの他にどういう手法があるのでしょうか?

説明が不明瞭ですかね?



199 名前:デフォルトの名無しさん :2007/03/27(火) 12:18:07
>>198
ファイルを介してもいいしメッセージでもいいしイベントでもいいし、プロセス間通信の好きな手段が使える。

200 名前:198 :2007/03/27(火) 12:24:55
>>199
ご回答ありがとうございます。
数点質問させてください。

@ファイルというのは、FindFirstChangeNotification関数を利用する事でおk?
AメッセージはWM_COPYDATAの他なにかいいのがありますか?
 あれば、メッセージ名を教えていただきたいです。
 (メッセージ動作は調査しますんで)
B先も書いたとおり、メディアプレイヤーの様な動作を想定する場合、
 プロセス間通信ではパイプ?メールスロット?どっちがお勧めでしょうか?

以上です。

201 名前:デフォルトの名無しさん :2007/03/27(火) 12:28:53
多重起動禁止なんてぐぐればいくらでも

202 名前:デフォルトの名無しさん :2007/03/27(火) 12:46:49
>>201
この場合、意図は多重起動禁止というより、
プロセス間通信なんでしょうかね?



203 名前:デフォルトの名無しさん :2007/03/27(火) 12:56:19
WM_COPYDATAじゃいやなのは何で?
他のアプリから送ることが可能になるから?

204 名前:デフォルトの名無しさん :2007/03/27(火) 13:12:02
>>200
(1)通知は別にやった方が安全だから、情報量が多くないならファイルにする必要はないかと。
(2)通知するだけなら、ユーザ定義メッセージでもできる。そのとき32bitのデータは一緒に送ることができる。
(3)どれだけデータを送りたい? それによって手段は変わるわけだけど。

205 名前:デフォルトの名無しさん :2007/03/27(火) 13:24:06
俺はファイルを経由するくらいなら、VirtualAllocExを選ぶな。
送りたいのが255文字以下の文字列ならアトムを使うという手もあるよ。

206 名前:198 :2007/03/27(火) 13:38:23
>>201-205
WM_COPYDATAの場合、FindWindow→SendMessageの手順となります。
この時、FindWindowでキャプションをヒントにウィンドウを検索するのに抵抗があり、
もっとスマートでエレガントな方法があるんではないかと思って、
皆様に質問をだした次第です。
ちなみに、コマンドライン情報(ファイルパス)を渡そうと考えています。


207 名前:デフォルトの名無しさん :2007/03/27(火) 13:45:32
>>206
多重起動抑止はどうやってるの?

208 名前:デフォルトの名無しさん :2007/03/27(火) 13:57:58
FindWindowでタイトル検索するしか知らないならしょうがないな
名前付きパイプでもメールスロットでも好きなほう使えばいいじゃん

209 名前:デフォルトの名無しさん :2007/03/27(火) 14:01:24
セカンダリのディスプレイにアプリケーションを起動するにはどうすればよいのでしょうか?

GDIでデバイスコンテキストとかモニタハンドルとか探ればセカンダリのディスプレイは特定出来そうですけど,
それとCreateProcessのデスクトップ/ウィンドウステーションとどう結びつけるのか良く判りません.


210 名前:デフォルトの名無しさん :2007/03/27(火) 14:17:59
>>198
FMOにウィンドウハンドルつっこんどけば?
多重起動抑止かつプロセス間通信だとFMOが定石じゃね?

211 名前:198 :2007/03/27(火) 14:26:23
>>207
Mutexを利用して判定していますね。
んで、既にハンドルがあれば死にに行くみたいなことをしています。

>>208
パイプは考えていましたが、メールスロットは知りませんでした。
調査してみます。


一度ここで質問をクローズしますね。
レスを下さったみなさま、ありがとうございました。


212 名前:198 :2007/03/27(火) 14:27:48
>>210
申し訳ありませんが、
FMOってなんですか?

213 名前:デフォルトの名無しさん :2007/03/27(火) 14:28:01
FRONT MISSION ONLINE

214 名前:デフォルトの名無しさん :2007/03/27(火) 14:28:41
ファイル マッピング オブジェクト のことだと思う

215 名前:198 :2007/03/27(火) 15:38:44
>>214
ありがとうございます。
皆様、ご回答ありがとうございました。

216 名前:デフォルトの名無しさん :2007/03/27(火) 18:58:20
そういうのってDDEを使ったり
そうか、ROTに登録してGetObjectしたりとか

217 名前:デフォルトの名無しさん :2007/03/27(火) 21:58:14
DDE は Vista でほぼ廃止と聞いた(NetDDE が廃止なのは確実)

218 名前:デフォルトの名無しさん :2007/03/27(火) 23:53:45
VistaでDDEがごく一部しかまっとうに動かないって嘆いていた人がいたのはこのスレだっけ?

219 名前:デフォルトの名無しさん :2007/03/28(水) 05:08:10
>>197
それでもVistaでは仮想フォルダにファイルが作成済みだとうまくいかない場合がある。
それを何とか検出しようとすると泥沼になるから(つーか検出させないための互換性機能
なわけだし)素直にmanifest付けるのが良さそうだ

220 名前:デフォルトの名無しさん :2007/03/28(水) 07:49:29
こんにちは、質問させて下さい。
WindowsXPにて、MFCライブラリを使わずに、
バイナリデータを転送する方法ってありますか??

もしあるのでしたら、サンプルを下さい。御願いします。

221 名前:デフォルトの名無しさん :2007/03/28(水) 07:58:06
どこに転送するのさ

222 名前:デフォルトの名無しさん :2007/03/28(水) 08:39:23
int a = 1;

223 名前:デフォルトの名無しさん :2007/03/28(水) 08:40:09
これはエスパーの出番だな

224 名前:デフォルトの名無しさん :2007/03/28(水) 09:13:59
socket

225 名前:デフォルトの名無しさん :2007/03/28(水) 09:24:19
これだけ情報が抜けてるってことはhttpで転送とか?

226 名前:デフォルトの名無しさん :2007/03/28(水) 09:40:23
MDIのフレームウィンドウにステータスウィンドウを表示させたら
MDIの子ウィンドウが表示されなくなったんだけど、原因なんでしょう?
エスパーさん助けて

227 名前:デフォルトの名無しさん :2007/03/28(水) 09:41:18
ステータスウィンドウ→ステータスバーです

228 名前:デフォルトの名無しさん :2007/03/28(水) 09:49:05
呼んだ?

229 名前:デフォルトの名無しさん :2007/03/28(水) 09:51:18
>>228
ステータスバー表示させるだけで、他のウインドウが表示されなくなる
バグってあるんですか??

230 名前:デフォルトの名無しさん :2007/03/28(水) 10:01:05
LRESULT CALLBACK FrameProcの中の以下が追加されるとMID子ウィンドウが
表示されなくなるみたいです、、、助けて、、

// ウィンドウサイズが変更されたとき
case WM_SIZE:
 SendMessage(hStatusbar, WM_SIZE, wp, lp );
 return 0;

231 名前:デフォルトの名無しさん :2007/03/28(水) 10:04:12
returnの下に文が続いてるとか言わないよな?
とりあえず
return 0;

break;
にしてみ

232 名前:デフォルトの名無しさん :2007/03/28(水) 10:07:47
>>230
DefFrameProc呼んどけ

233 名前:デフォルトの名無しさん :2007/03/28(水) 10:08:01
>>231
すごい!!!!出てきました!!!ありがとうエスパー!
case WM_CREATE:とかだとreturn 0;でいいのに
なんでcase WM_SIZEはbreak;なんだろう!?

234 名前:デフォルトの名無しさん :2007/03/28(水) 10:14:44
ttp://www.geocities.jp/ky_webid/win32c/034.html
ttp://wisdom.sakura.ne.jp/system/winapi/common/common9.html
どっちもreturn 0;なのに・・・・・

235 名前:デフォルトの名無しさん :2007/03/28(水) 10:20:57
switchのdefaultにDefWindowProc入れて他はbreakしてreturn 0;にしてる。

236 名前:デフォルトの名無しさん :2007/03/28(水) 10:22:10
げ、俺が学習に使ったページまで・・
こういう場合ってreturn 0;が定石なのか?

デフォルトプロシージャに処理させたくないとき以外は
デフォルトプロシージャに処理がわかるようにするもんだと思ってた。

237 名前:デフォルトの名無しさん :2007/03/28(水) 10:30:45
DefWindowProcには自分が処理しないメッセージだけを渡せばよい。

しかしDefFrameProcはこんなメッセージを処理すると書いてあるのだから、それらのメッセージは渡してやるべき。
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/multipledocumentinterface/multipledocumentinterfacereference/multipledocumentinterfacefunctions/defframeproc.asp

238 名前:デフォルトの名無しさん :2007/03/28(水) 10:39:59
>>237
その4個だけでDefWindowProcに渡す必要があるのならこれが正解?

{
case ↓の4個以外のWM_
break;
case WM_COMMAND:
case WM_MENUCHAR:
case WM_SETFOCUS:
case WM_SIZE:
default DefWindowProc
break
}

239 名前:デフォルトの名無しさん :2007/03/28(水) 10:42:57
とりあえずC言語の勉強からがんばれ…

240 名前:デフォルトの名無しさん :2007/03/28(水) 10:46:39
>>238
DefWindowProcじゃなくて、DefFrameProcの話しだろ

241 名前:デフォルトの名無しさん :2007/03/28(水) 10:47:56
>>239
その前に日本語の勉強から頑張れと言うべき

242 名前:デフォルトの名無しさん :2007/03/28(水) 10:52:37
ごめん寝起きでボケてたんで書き直したw
DefFrameProcはDefWindowProcと異なり、WM_COMMAND,WM_MEMUCAHR,
WM_SETFOCUS,WM_SIZEの4つのメッセージに関しては、ユーザーで行いさせ
たい処理を記述した後に、DefFrameProcを呼ぶ必要がある
ってことね

{
 case WM_CREATE等 //WM_COMMAND,WM_MEMUCAHR,WM_SETFOCUS,WM_SIZE以外のメッセージ
  break;// breakしてDefFrameProcに処理を渡す必要なし
 case WM_COMMAND:
 case WM_MENUCHAR:
 case WM_SETFOCUS:
 case WM_SIZE:
 default:
  DefFrameProc();
  break;
}

243 名前:デフォルトの名無しさん :2007/03/28(水) 11:15:30
自分が処理しないメッセージだけを渡せばよい。 というのは

例えばWM_SIZEなら
「自分でサイズ変更の処理を書く」や「新しいサイズを調べて制限値に引っかかるならサイズ変更しない」というのが「自分で処理した」にあたる。
だから「フォームのどこかに新しいウィンドウサイズを表示する」といった処理は
「自分で処理した」内に入らないのでデフォルトプロシージャを呼び出す必要がある。

こんな風に理解していたんだが間違ってる?

244 名前:220 :2007/03/28(水) 12:26:34
どうもすみません、質問の仕方が悪かったです。

2台のPC間で、SOCKETを使い、
片方をサーバー、もう片方をクライアントにして通信しているのですが、
一方から一方にバイナリデータのファイル(拡張子が jpeg, exe 等)を送りたいのです。

テキストデータなら、send,recvで簡単に送受信できたのですが、
バイナリデータは同じ方法で転送できない事に気付きました。

ググってみたところ、MFCを使う方法しか探せなかったんです・・・。
もしかして、バイナリデータを送受信できるSocketAPIって、
提供されていないんでしょうか??

コンパイラはVC.NET 2003です。
エスパーの皆様、ヨロシクお願いいたします m(。−_−。)m

245 名前:デフォルトの名無しさん :2007/03/28(水) 12:29:47
バイナリデータをsend/recvで送受信できないわけが無い。
MFCのソケット関連だって所詮winsockのラッパに過ぎない。

246 名前:デフォルトの名無しさん :2007/03/28(水) 12:45:07
バイナリもsend/recvで送受信できるお

247 名前:デフォルトの名無しさん :2007/03/28(水) 12:56:58
ファイルをテキストモードでオープンして送ってんじゃないの?

248 名前:デフォルトの名無しさん :2007/03/28(水) 14:01:46
MDI子ウィンドウをステータスバーに重ねると、ステータスバーが消えてしまいます。
消えないようにするにはどうすればいいのですか?
WM_PAINTになにかすればいいのはわかるのですが、うまくいきません・・・。
(消えたステータスバーはMDIフレームウィンドウのサイズを変えるとまた表示されます)

(1)MDIフレームウィンドウ
(2)MDI子ウィンドウ
(3)ステータスバー

+---------------------+
|(1).  +---------+    |
|    |(2)..     |    |
|    +---------+    |
+---------------------+
|(3).              |
+---------------------+
  ↓ (2)を(3)に重ねてから、(2)を元の位置に移動するとこうなる

+---------------------+
|(1).  +---------+    |
|    |(2)..     |    |
|    +---------+    |
+-----+       +----+
|(3)..  |       |    |
+-----+---------+-----+
      ↑ステータスバー消える!!

249 名前:デフォルトの名無しさん :2007/03/28(水) 14:55:58
ステータスバーの親を MDIフレーム から MDIフレームの親にすれば?

250 名前:デフォルトの名無しさん :2007/03/28(水) 15:24:41
>>249
できました
だめだ親とか子とか全然理解してないみたい・・・Orz=3


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.