Win32API質問箱 Build65 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
08/04/22 15:51:24
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

- Win32API質問箱 wiki
URLリンク(wiki.livedoor.jp)

Win32API質問箱 Build64
スレリンク(tech板)

2:デフォルトの名無しさん
08/04/22 15:51:41
- MSDN ホームページ
URLリンク(www.microsoft.com)
- MSDN ライブラリ
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
- MSDN2 ライブラリ
URLリンク(msdn2.microsoft.com)
URLリンク(msdn2.microsoft.com)
- MSDN ライブラリ (ローカル版)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
- Windows SDK & Platform SDK
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)

3:デフォルトの名無しさん
08/04/22 15:51:52
- Google
URLリンク(www.google.com)
- 猫でもわかるプログラミング
URLリンク(www.kumei.ne.jp)
- Win32 API入門
URLリンク(wisdom.sakura.ne.jp)
- Win32 プログラミング入門
URLリンク(www7.plala.or.jp)

- Advanced Windows (書籍)
URLリンク(www.amazon.co.jp)

-おまけ
Build19が見たい人で余裕のある人は●でも買ってくれ。


4:デフォルトの名無しさん
08/04/22 15:52:15
次スレまだか?

5:デフォルトの名無しさん
08/04/22 15:52:28
63 スレリンク(tech板)
62 スレリンク(tech板)
61 スレリンク(tech板)
60 スレリンク(tech板)
59 スレリンク(tech板)
58 スレリンク(tech板)
57 スレリンク(tech板)
56 スレリンク(tech板)
55 スレリンク(tech板)
54 スレリンク(tech板)
53 スレリンク(tech板)
52 スレリンク(tech板)
51 スレリンク(tech板)
50 スレリンク(tech板)
49 スレリンク(tech板)
48 スレリンク(tech板)
47 スレリンク(tech板)
46 スレリンク(tech板)
45 スレリンク(tech板)
44 スレリンク(tech板)
43 スレリンク(tech板)
42 スレリンク(tech板)


6:デフォルトの名無しさん
08/04/22 15:52:45
41 スレリンク(tech板)
40 スレリンク(tech板)
39 スレリンク(tech板)
38 スレリンク(tech板)
37 スレリンク(tech板)
36 スレリンク(tech板)
35 スレリンク(tech板)
34 スレリンク(tech板)
33 スレリンク(tech板)
32 スレリンク(tech板)
31 スレリンク(tech板)
30 スレリンク(tech板)
29 スレリンク(tech板)
28 スレリンク(tech板)
27 スレリンク(tech板)
26 スレリンク(tech板)
25 スレリンク(tech板)
24 スレリンク(tech板)
23 スレリンク(tech板)
22 スレリンク(tech板)

7:デフォルトの名無しさん
08/04/22 15:52:55
21 スレリンク(tech板)
20 スレリンク(tech板)
19 スレリンク(tech板)
18 スレリンク(tech板)
17 スレリンク(tech板)
16 スレリンク(tech板)
15 スレリンク(tech板)
14 URLリンク(pc5.2ch.net)
13 URLリンク(pc5.2ch.net)
12 URLリンク(pc5.2ch.net)
11 URLリンク(pc5.2ch.net)
10 URLリンク(pc5.2ch.net)
9 URLリンク(pc5.2ch.net)
8 URLリンク(pc5.2ch.net)
7 URLリンク(pc3.2ch.net)
6 URLリンク(pc3.2ch.net)
5 URLリンク(pc3.2ch.net)
4 URLリンク(pc3.2ch.net)
3 URLリンク(pc.2ch.net)
2 URLリンク(pc.2ch.net)
1 URLリンク(pc.2ch.net)

8:デフォルトの名無しさん
08/04/22 15:53:17
>>4
邪魔すんなハゲ

9:デフォルトの名無しさん
08/04/22 16:01:51
1乙

10:デフォルトの名無しさん
08/04/22 19:26:26
>>1


11:デフォルトの名無しさん
08/04/22 19:49:50
↓3行目に期待

12:デフォルトの名無しさん
08/04/22 20:59:08
Win32APIって、次のWindowsにも生きてるのかな。
なんかWindows7だっけか?
ケロちゃんLOVE!

13:デフォルトの名無しさん
08/04/22 21:00:12
ま、互換レイヤくらいあるだろう。

でも正直、Win32APIを今さら使いはじめるような人は、終わってると思います。

14:デフォルトの名無しさん
08/04/22 21:05:05
Win32APIを知らないでいいと思ってるやつも終わってると思うが

15:デフォルトの名無しさん
08/04/22 21:19:25
あえて言おう。

Win32 APIを直に使うな、と。
いまさら、俺様ライブラリを作るな、と。

先人の通ってきた道をそのまま辿るべきではない。
そんなことをしていたら、先人と同じ場所までしか行けない。

16:デフォルトの名無しさん
08/04/22 21:35:08
言わんとすることは理解できるんだけど、じゃあ現実の問題としてどうすりゃいいのさ?
よろしくご教示ください。

17:デフォルトの名無しさん
08/04/22 21:43:09
.Net を活用しつつ手の届かない場所でWin32APIを使用。
それでも届かないところはアセンブリ

18:デフォルトの名無しさん
08/04/22 21:52:40
.NETはないわ。つか結局Win23API使うんじゃ意味ないじゃん。
Win32APIなしで全部.NET上でできるようになれば考えてもいいけど、それは遥か先の話。

19:デフォルトの名無しさん
08/04/22 21:53:00
>>17
あれ・・・俺がいる・・・

20:デフォルトの名無しさん
08/04/22 21:56:00
>>16
すでにある社内ライブラリを使う。
すでにWin32 APIで経験豊富だが疲れてきてる先輩とうまく役割分担する。
既存のソースを丸パクリする。

21:デフォルトの名無しさん
08/04/22 21:57:39
>>18
それは.NETを使ったことない厨の戯言
・・・そんな俺もWin32API厨

22:デフォルトの名無しさん
08/04/22 22:14:11
ドトネトはあのキモイソースが嫌

23:デフォルトの名無しさん
08/04/22 22:17:47
そりゃ、MSIL直接読んでれば嫌にもなるわな。

24:デフォルトの名無しさん
08/04/22 22:24:36
アセンブラみたいなもんだろ>Win32API
知らなくても殆どは困らないし、たとえば新人に憶えろと強要するようなもんでもない。
ただ昔からやってる人は知らざるを得なかったし、知らないよりは知ってたほうがごくまれに得になる時もある。
そういうもんだ。

25:デフォルトの名無しさん
08/04/22 22:26:42
いまどきコンパイラの吐き出したアセンブラを見て独自に最適化するやつもいないしな

26:デフォルトの名無しさん
08/04/22 22:29:02
直は早いんだぜ〜API直叩きはよぉ〜
まぁ普段は.NETやらMFCやらのラッパー使ってても問題ない
だけど低水準レベルのところの動作いじりたくなるともうWIN32しかないわ
仕事じゃやらんけどね

27:デフォルトの名無しさん
08/04/22 22:31:53
こんな所で兄貴のネタを聞くとはおもわなんだ

28:デフォルトの名無しさん
08/04/22 22:32:17
人様がCPUのパイプラインとか考えて書いたアセンブラのコードよりも、
自分が適当に書いたC++のコードをコンパイラに最適化させたほうが、
速かったなぁ。

29:デフォルトの名無しさん
08/04/22 22:35:20
Win32 APIが、互換レイヤ経由になれば、かえって遅いなんてことになったりして。


30:デフォルトの名無しさん
08/04/22 22:38:01
API設計したやつって誰よ
あまりに腐ってて反吐がでる

31:デフォルトの名無しさん
08/04/22 22:38:41
>>30
よし、Win32、POSIX、OS/2に続く、4番目のサブシステムの作成を許可する。

32:デフォルトの名無しさん
08/04/22 22:39:19
WIN32ごときで低水準とか言われると、自分はさびしくなるな

33:デフォルトの名無しさん
08/04/22 22:40:30
ANSI/UNICODEだって互換レイヤみたいなもんだがな
WOW64も

34:デフォルトの名無しさん
08/04/22 22:41:53
>>30
歴史があるから仕方ねーよ
もともとDOSのフックであって、1Mbyte以降のメモリーに配置された常駐プログラムだし。

35:デフォルトの名無しさん
08/04/22 22:45:09
API作り直したら多分Macみたいなことになる希ガス

36:デフォルトの名無しさん
08/04/22 22:51:17
せめてAPI関数の命名くらいちっとは考えてつけてもらいたかった。

37:デフォルトの名無しさん
08/04/22 22:52:22
一番長いAPIの名前って何?

38:デフォルトの名無しさん
08/04/22 22:54:30
ConvertSecurityDescriptorToStringSecurityDescriptor

39:デフォルトの名無しさん
08/04/22 22:56:39
うへぇ
使い道あるのかこれ?

40:デフォルトの名無しさん
08/04/22 22:57:29
馬鹿じゃねえのかw本当にw

41:デフォルトの名無しさん
08/04/22 22:59:32
ハンガリアン記法の目的を理解できなかったのが、Win32 API開発チームですよ?

42:デフォルトの名無しさん
08/04/22 23:00:23
アイムハングリー

43:デフォルトの名無しさん
08/04/22 23:00:53
それでもX系のAPIより短いなw

44:デフォルトの名無しさん
08/04/22 23:03:46
まぁAPI作り直すならたぶん新しいOS作るだろうなw

45:デフォルトの名無しさん
08/04/22 23:05:28
新しい名前作って、旧 API はそのラッパにすればいいんだよ。

46:デフォルトの名無しさん
08/04/22 23:05:41
いまは文字数や長さなんて問題ないだろ。
長かろうと明確に機能を表現しているべき。

昔のコンパイラには識別子の長さに制限があって、N文字以上は無視しちゃうので、
N文字以内が重複しないようにするために、不格好な名前の付け方をせざるをえないことがあったが。

47:デフォルトの名無しさん
08/04/22 23:06:05
>>44
それがLonghornだったのだが・・・。

48:デフォルトの名無しさん
08/04/22 23:06:53
もう名前じゃなくて番号でいいです

49:デフォルトの名無しさん
08/04/22 23:07:29
>>48
っ 序数インポート

50:デフォルトの名無しさん
08/04/22 23:08:43
UUIDでOK

51:デフォルトの名無しさん
08/04/22 23:17:23
それ何て COM

52:デフォルトの名無しさん
08/04/22 23:40:05
またドトネト厨が布教活動するためにWin32スレを荒らしてるのか

53:デフォルトの名無しさん
08/04/22 23:40:47
んなの適材適所でいいだろ

54:デフォルトの名無しさん
08/04/22 23:41:40
Win32 APIには、どこからどこまでが含まれるの?

55:デフォルトの名無しさん
08/04/23 00:28:52
Win30からWin39まで

56:デフォルトの名無しさん
08/04/23 00:32:39
>>54
正直DirectXやネイティブAPIはスレチだと思うがどうよ

>>55
つまんね

57:デフォルトの名無しさん
08/04/23 00:34:29
ネイティブAPI?

58:デフォルトの名無しさん
08/04/23 00:37:55
ntCreateFileとか

59:デフォルトの名無しさん
08/04/23 00:52:01
質問なかったら、雑談スレになっちゃうのがたまにキズだよなぁ・・・

60:デフォルトの名無しさん
08/04/23 01:52:34
DirectX → 専用スレ行け
ネイティブAPI → Win32の土台だしぃ

インデックス・サービス関連は?
ターミナル・サービス関連は?
クラスタリング関連は?
WMIは?
MTSは?
MDACは?
SAXとかXSLTは?
Windows Media ほげほげ は?
Video for Windowsは?
CDO、Exchange、MAPI、NetMeetingは?
Active Directoryは?
MSMQは?
TAPIは?
MMCは?
Windows Installerは?
WMIは?
IISは?


61:デフォルトの名無しさん
08/04/23 02:18:10
専用スレがあるかないかの単純な話だろ

62:デフォルトの名無しさん
08/04/23 02:18:34
ほかに適切なスレがあればそこで聞くべき。
なければここで聞いてもいいと俺は思うが、
回答が返ってこない可能性が高いはず。

63:デフォルトの名無しさん
08/04/23 02:33:27
>>60
きもいよ

64:デフォルトの名無しさん
08/04/23 02:34:53
>>60
こういうかわいそうな奴たまにいるよなぁ

65:デフォルトの名無しさん
08/04/23 02:40:54
>>60
分類してる暇あったら質問に答える努力しろよ

66:デフォルトの名無しさん
08/04/23 03:04:41
>>60
基地外は帰れ

67:デフォルトの名無しさん
08/04/23 04:03:25
四連投か。醜いな。

68:デフォルトの名無しさん
08/04/23 04:36:54
叩かれると同一人物に見えるのか。醜いな。

69:デフォルトの名無しさん
08/04/23 04:59:48
まあぶっちゃけグレーゾーンのネタはこのスレの奴がカバーできる範囲まででしょ

70:デフォルトの名無しさん
08/04/23 05:06:33
>>69
意味不明

71:デフォルトの名無しさん
08/04/23 05:13:03
それは君の理解力が足りないんだよ。

72:デフォルトの名無しさん
08/04/23 05:15:16
どこからグレーゾーンな話題が出てきたんだ?
話が飛躍しすぎだろうが

73:デフォルトの名無しさん
08/04/23 05:19:43
Win32APIはグレーゾーンです(笑)

74:デフォルトの名無しさん
08/04/23 06:05:23
なんか頭の悪い奴が沸いてるな

75:デフォルトの名無しさん
08/04/23 06:10:18
伸びてると思ったらまたこんなかよ
VIPやニコ動じゃあるまいし糞レス自重しろ

76:デフォルトの名無しさん
08/04/23 07:28:27
>>60
こいつがそもそもの原因

77:デフォルトの名無しさん
08/04/23 07:38:35
DLLで線引きしたらいいんだ
---------------Win32APIホワイトゾーン
kernel32.dll
user32.dll
gdi32.dll
advapi32.dll
winmm.dll
---------------Win32APIグレーゾーン
msvcrt.dll
ntdll.dll
shell32.dll
shfolder.dll
comctl32.dll
comdlg32.dll
---------------管轄外


78:デフォルトの名無しさん
08/04/23 07:43:22
ぶっちゃけWin32API自体がグレーゾーンだろう
簡単に他プロセスを落としたりコード注入できるし、実際マルウェアがそれらの技術を悪用している

こんなインセキュアなAPIが滅びるのは時間の問題だから今のうちに.NETに移行しておけば後々苦労しないよ

79:デフォルトの名無しさん
08/04/23 07:49:33
おまえ日本語読めるのか?:
いまはこのスレで語るべきWin32 APIについて議論しているんだぞ。
Win32 APIの危険な挙動じゃねぇぞ。
しかも論点が沸け分からんし。

.netだってファイルを削除したり置き換えたりできるじゃないか。
セキュリティ上問題あるだろ。
そもそもCPU時間という貴重なリソースを消費するものは邪悪だろ?


80:デフォルトの名無しさん
08/04/23 07:49:38
↑話を理解してない馬鹿

81:デフォルトの名無しさん
08/04/23 07:50:18
ごめん80は78に対してだった
死ね78


82:デフォルトの名無しさん
08/04/23 07:53:48
寝言は寝て言え

83:デフォルトの名無しさん
08/04/23 07:55:34
睡眠書き込みかもしれないだろ!
寝て言うより高度な技術

84:デフォルトの名無しさん
08/04/23 07:57:45
>>79
とりあえず落ち着けw
"読めるのか?:"とか"沸け分からん"とかお前のレスの方がわけ分からんぞw

> いまはこのスレで語るべきWin32 APIについて議論しているんだぞ。
ここはWin32APIについて議論するスレじゃなくてWin32APIについて質問or回答するスレじゃないのか?

85:デフォルトの名無しさん
08/04/23 08:01:33
↑話を理解してない馬鹿

86:デフォルトの名無しさん
08/04/23 08:02:54
>>61-62で結論出てるのに何が議論だよ・・・

87:デフォルトの名無しさん
08/04/23 08:04:00
↑話を理解してない馬鹿

88:デフォルトの名無しさん
08/04/23 08:04:48
↑話を理解してない馬鹿

89:デフォルトの名無しさん
08/04/23 08:08:06
流行語大賞
Build64:「知らないならレスしないでください」
Build65:「↑話を理解してない馬鹿」

90:デフォルトの名無しさん
08/04/23 10:21:53
よもまつ

91:デフォルトの名無しさん
08/04/23 12:35:35
なんかグレーゾーンという単語を読み間違えてないか?
犯罪臭い物をグレーゾーンと言ってるわけじゃなく、単に
「Win32APIかどうかの定義が曖昧」なのをグレーゾーンと表記してたように読めたが

92:デフォルトの名無しさん
08/04/23 12:39:55
↑知らないなら話を理解してないレスしないでください馬鹿

93:デフォルトの名無しさん
08/04/23 12:40:36
どう読んだらそうなるの

94:デフォルトの名無しさん
08/04/23 13:11:14
「↑」と「馬鹿」を使ってるのは無視したほうがいい。

このレスとか

95:デフォルトの名無しさん
08/04/23 14:06:54
他のスレだと問題の切り分けすらできない可能性が高い。
このスレだとだいたいの切り分けができる。

例えば回答が、レジストリのココをいじれ、とか、Wake on LANでググれとかだと、
このスレに流れつくのも仕方ないと思う。

96:デフォルトの名無しさん
08/04/23 14:34:08
俺は自分が答えられることならAPIの話と少しずれててもここで答えてやろうと思ってるがね

97:デフォルトの名無しさん
08/04/23 14:44:48
WindowsSDKの範疇は全部、ってことでいいか?

98:デフォルトの名無しさん
08/04/23 16:09:56
つまり.NET関連もここでいいという事か

99:デフォルトの名無しさん
08/04/23 16:58:29
マネージ系は除こうよ。
専用のスレのほうが分かる人が多いだろうから
聞くほうも答えるほうも幸せ。

100:デフォルトの名無しさん
08/04/23 17:38:51
結局>>61-62じゃない
わざわざ40レスも余分に消費してまで議論してるなんて
ホント、要領が悪いというか頭が悪いというか

101:デフォルトの名無しさん
08/04/23 19:54:09
↑話を理解してない馬鹿

102:デフォルトの名無しさん
08/04/23 19:57:24
>>101
スレの主旨を理解していない馬鹿

103:デフォルトの名無しさん
08/04/23 20:01:00
Win32AHO質問箱でつか?

104:デフォルトの名無しさん
08/04/23 20:03:00
USO800準拠

105:デフォルトの名無しさん
08/04/23 20:14:28
ANSI(Ahobakari No Sa Itama)企画

106:デフォルトの名無しさん
08/04/23 20:39:58
この辺でAPIフックがらみの質問がくると大胆予想

107:デフォルトの名無しさん
08/04/23 20:56:48
定番だね

108:デフォルトの名無しさん
08/04/23 21:06:42
.Netは重いしメモリ食うから嫌い
クルーソーの800MHzのCPU積んだノートで.Netで書かれたソフト起動したら1分待たされたしw

109:デフォルトの名無しさん
08/04/23 21:16:10
初回起動は最近のPCでも結構待たされるわな<.net
まあそれ故のSuperFetchなのだろう

110:Alfred Vaino Aho
08/04/23 21:16:53
>>103
呼んだ?

111:デフォルトの名無しさん
08/04/23 21:19:13
↑話を理解してない馬鹿

112:デフォルトの名無しさん
08/04/23 22:00:14
      _、_
    ヽ( ,_ノ`)ノ 残念、それは私のおいなりさんだ
   へノ   /
┌→  ω  へ




113:デフォルトの名無しさん
08/04/23 22:16:51
IEのオプションでスムーズスクロールをオフに出来るけど、
あれってプログラム単位でスムーズスクロールのオンオフを
切り替えできるってことなんでしょうか。

リモートデスクトップなんか使っていると、エクスプローラの
ツリービューのスクロールはローカルで使ってるのと同じくらい
早いんだけど、自作アプリのツリービューのスクロールがライン毎で
えらい遅いのでなんとかしたいのですが。。。。。

動作環境はXP SP2です。

114:デフォルトの名無しさん
08/04/23 22:18:25
↑話を理解してない馬鹿

115:デフォルトの名無しさん
08/04/23 22:26:48
>>108
Crusoeは詐欺CPU
ベンチマークのスコアは立派だが、実使用ではまるで性能が出ない。

116:デフォルトの名無しさん
08/04/23 22:28:44
>>113
オーナードローしてたり?

117:デフォルトの名無しさん
08/04/23 23:50:08
>>115
それは十分承知だが、ネイティブAPIのアプリだったらすぐ起動するからね。

118:デフォルトの名無しさん
08/04/23 23:53:07
コードのワーキングセットが、コードモーフィング結果のキャッシュをはみ出すと、途端に劇遅になるからな。

119:デフォルトの名無しさん
08/04/24 02:08:56
>>117
ネイティブAPIの意味が違う

120:デフォルトの名無しさん
08/04/24 02:15:10
NTnativeとは違うのは、文脈から明らかだろう。

121:デフォルトの名無しさん
08/04/24 02:36:06
質問があります。IMAGELIST型を読み込みたいと思っています。
ビルドは通るのですが、途中でエラーが出てしまい、原因が分かりません。
同じようなエラーで困った方、解決方法をご教示ください。よろしくお願いします
ImageList_LoadImage関数をコメント文にすると実行可能になるので、この部分でエラーが出ているようです。

HIMAGELIST h_img;
h_img = ImageList_LoadImage(hInst, (LPCTSTR)IDB_ICON, 15, 0, CLR_DEFAULT,
IMAGE_BITMAP, LR_LOADMAP3DCOLORS);
エラー内容
'System.TypeLoadException' のハンドルされていない例外が hoge.exe で発生しました。
追加情報 : アセンブリ 'hoge, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' から型 '_IMAGELIST' を読み込めません。

開発環境 VC SDK

122:デフォルトの名無しさん
08/04/24 04:13:49
Win32ネイティブをネイティブAPIなんて言う奴初めて見た

123:113
08/04/24 06:26:34
>>116
オーナードローしてます。そのせいだとすると、対策なしですね。。。。

124:デフォルトの名無しさん
08/04/24 08:31:46
状況を自分で判断して再描画スキップするぐらいしかないかな

125:デフォルトの名無しさん
08/04/24 08:42:29
>>121

hInstに入ってるのは何か?
IDB_ICONはなんとdefineされているか?

126:デフォルトの名無しさん
08/04/24 09:03:14
そもそもなぜ.NETでWin32のイメージリストを使う必要があるのかね?

127:デフォルトの名無しさん
08/04/24 09:08:40
MFCじゃないかぎり、アイコン表示でSDKなら普通使わない?

128:デフォルトの名無しさん
08/04/24 09:11:30
.netならSystem.Windows.Forms.ImageList辺り使えば

129:デフォルトの名無しさん
08/04/24 10:24:35
より高機能な物がクラスライブラリに付属してるのにわざわざWin32のImageListを使うなんて・・・
まあWin32版の方がリソース消費量は少なかった気はするが

130:デフォルトの名無しさん
08/04/24 10:33:19
↑話を理解してない馬鹿

131:デフォルトの名無しさん
08/04/24 11:47:18
クラスライブラリとか・・・SDKって書いてあるだろ。
質問の内容を理解せずにMFCなら!MFCなら!とかまんせーすんなよ。

132:デフォルトの名無しさん
08/04/24 11:57:51
うるせーデブ

133:デフォルトの名無しさん
08/04/24 11:59:40
.netなのにSDKかよ
アホだな

134:デフォルトの名無しさん
08/04/24 12:16:27
で?
Linuxならそんなもん使わなくてもすぐできるのに。

135:デフォルトの名無しさん
08/04/24 12:34:24
↑話を理解してない馬鹿

136:デフォルトの名無しさん
08/04/24 12:55:23
135には同意できるw

137:デフォルトの名無しさん
08/04/24 17:48:12
DrawFocusRectって単に反転色の点線を描くだけのAPIかと思ってたら、下の色によっては
反転じゃなく濃灰色の点線になったり、下地が青色系とかだと点線じゃなく実線になったりと
結構いろいろやってるAPIだったのね。

138:デフォルトの名無しさん
08/04/24 17:50:53
      r;ァ'N;:::::::::::::,ィ/      >::::::::::ヽ
.      〃  ヽル1'´        ∠:::::::::::::::::i
       i′  ___, - ,. = -一   ̄l:::::::::::::::l
.      ! , -==、´r'          l::::::/,ニ.ヽ
      l        _,, -‐''二ゝ  l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ
        レー-- 、ヽヾニ-ァ,ニ;=、_   !:::l ) } ト
       ヾ¨'7"ry、`   ー゙='ニ,,,`    }::ヽ(ノ  チラシの裏にでも書いてろ
:ーゝヽ、     !´ " ̄ 'l,;;;;,,,.、       ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{   __)`ニゝ、  ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,  な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /

139:デフォルトの名無しさん
08/04/24 18:09:14
ANSIしか対応してない関数でUNICODE文字を含むファイルを開くにはどうしたらいいでしょうか
MoveFileやCopyFileは利用しない方針でおながいします

とりあえず思いついたのが8.3形式のショートファイル名を利用する方法だったんですが
オプションで生成しないように切り替えられるんですよねえ、これ

140:デフォルトの名無しさん
08/04/24 18:11:06
> ANSIしか対応してない関数

具体的に

141:デフォルトの名無しさん
08/04/24 18:12:31
普通に開けばいいじゃないか
何がひっかかって開けないの?

142:デフォルトの名無しさん
08/04/24 18:13:25
ImageHelpAPIとか

具体的に言えばMapAndLoadかImageLoadが使いたい

143:デフォルトの名無しさん
08/04/24 18:24:40
Unicode文字を含むファイル名を、ANSIのAPIや、
あるいはUnicodeに対応してない古臭いライブラリとかで使いたいんだろうか。
Vistaのシンボリックリンクで別名を作るとかは?
MoveFileやCopyFileではないぞ。

144:デフォルトの名無しさん
08/04/24 18:26:44
NTFSならCreateHardLinkしちゃえ

145:デフォルトの名無しさん
08/04/24 18:28:32
>>143-144
なるほど、それは良さそうですね
リンク作成の方向で検討します( ´∀`)

146:デフォルトの名無しさん
08/04/24 18:29:38
>>142
EXEやDLLのファイル名にANSI以外の文字を使うこと自体が邪道。
かつては8.3を越える長いファイル名もご法度だったんだ。

147:デフォルトの名無しさん
08/04/24 18:31:26
>>146
いやまあそれ以外にも統合アーカイバライブラリのDLLもANSIしか無かったり、色々あるのですお
とりあえず、ありがとうございます

148:デフォルトの名無しさん
08/04/24 18:36:34
>>146
今のWindows自体にそんな制限など存在しない。
たんにヘタレなPGの言い訳にすぎん。

8.3の制限を持ち出すとなると、当然32bitコードも邪道だと思っているんだよな?
ポインタのサイズが今までの倍もあるんだぜ。もったいないじゃないか!

149:デフォルトの名無しさん
08/04/24 18:43:01
>>148
> 今のWindows自体にそんな制限など存在しない。

8.3形式の短いファイル名でレジストリや設定ファイルの類いにパスが記録される

何らかの原因で8.3形式の短いファイル名が一致しなくなる

どぼん

そういうのを避けるために8.3形式にしているのをヘタレと言うのなら、どうぞお好きに。

> 8.3の制限を持ち出すとなると、当然32bitコードも邪道だと思っているんだよな?

なわけない。

150:デフォルトの名無しさん
08/04/24 18:44:08
てかSJIS外の文字をファイル名に使うことってほとんど無いと思うけど
☀.txtとかそんな名前でも付けてるの?

>>148
PEヘッダに記録されるファイル名はANSIなんだが
それに俺の環境だけなのかは知らんがASCII文字以外を使ってるEXEがタスクマネージャで化ける

151:デフォルトの名無しさん
08/04/24 18:46:46
俺はBig5ならしょっちゅう扱ってる

152:デフォルトの名無しさん
08/04/24 19:05:57
>>148
知らないならレスしないでください

153:デフォルトの名無しさん
08/04/24 19:55:30
CreateProcess(NULL, "sample.exe", NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
hWnd = FindWindow("sample", NULL);

SendMessage(hWnd, WM_CLOSE, 0, 0);

この順番に処理させたいんだけどうまくいかない
hWndが0になってしまう

どうすればCreateProcess→SendMessageが上手くいくようになる?

*sample.exeはコンソールアプリ

154:デフォルトの名無しさん
08/04/24 19:59:44
>>153
本当にコンソールのタイトルに"sample"なんて表示されてるか?
"c:\windows\cmd.exe"とか出てるはずだが

155:デフォルトの名無しさん
08/04/24 20:01:56
言い方がマズイかな
コンソールのタイトルは

"カレントディレクトリパス+sample.exe"

になるはず

156:153
08/04/24 20:07:21
>>154,>>155
FindWindowの第1引数をsample.exeのフルpathにしてもだめ(hWnd=0)でした

157:デフォルトの名無しさん
08/04/24 20:11:24
パスって言うかコンソールのタイトルとFindWindowの引数が正確に一致してるのかって話なんだが
大文字小文字の差も含めて

少なくともSpyはタイトル拾えてるから引っかからないって事は無い筈

158:デフォルトの名無しさん
08/04/24 20:15:37
URLリンク(www.uploda.org)

ほれ

159:デフォルトの名無しさん
08/04/24 20:17:08
>>156
まずはSpy++とかで確認しる。

ちなみに、CreateProcessしてすぐにFindWindowしてる、なんていうオチじゃないだろうな?

160:153
08/04/24 20:24:56
CreateProcessの次にFindWindowしてます・・・

161:153
08/04/24 20:28:12
検索してたら見つけたんだけど、この使い方解説お願いできます?

URL:URLリンク(homepage2.nifty.com)
BOOL CALLBACK EnumProc(HWND hwnd, LPARAM lParam)
{
DWORD dwThreadId, dwProcessId;

dwThreadId = GetWindowThreadProcessId(hwnd, &dwProcessId);
if (dwProcessId == (DWORD)lParam) {
PostMessage(hwnd, WM_CLOSE, 0, 0);
}

return TRUE;
}


// pi は CreateProcess() したときの PROCESS_INFORMATION
EnumWindows(EnumProc, (LPARAM)pi.dwProcessId);

****ここまで引用



162:デフォルトの名無しさん
08/04/24 20:33:30
CreateProcessの直後にFindWindowしたら駄目にきまってるだろう。
プロセスが起動した瞬間にウインドウができるわけじゃない。

163:デフォルトの名無しさん
08/04/24 20:36:07
>>161
CreateProcessで作成したプロセスが所有するウィンドウにWM_CLOSEをポストしてる
当然CreateWindowで作ったウィンドウを持ってないプログラムにゃ無効

164:デフォルトの名無しさん
08/04/24 20:38:47
つかコンソールにWM_CLOSE送るなら
terminateprocessでも使っとけば良いんじゃねえのか

165:153
08/04/24 20:50:22
ありがとうございます

>>164
上のURL先に
>緊急遮断に使用するものであり,終了するが正常な終了方法ではない
とありますが大丈夫ですか?

正常終了するにはどうすればいいですか?

166:デフォルトの名無しさん
08/04/24 20:53:29
コンソールにWM_CLOSE送ったってムリヤリ終了してるから気にするな

コンソールプログラムならプログラムが自発的に終了しない限り正常終了しない

167:デフォルトの名無しさん
08/04/24 20:55:24
>>165
外部から無理に止めるのが正常な方法であるわけがない。
メッセージを投げてターゲットプロセスが自分で終了するようにするのがまっとうな方法。

168:デフォルトの名無しさん
08/04/24 20:55:48
WM_CLOSEをポストする。
キャンセルできるから確実性はないけどな。

169:デフォルトの名無しさん
08/04/24 20:57:33
そういう場合はパイプで繋げてシグナルを送信するんだよ

170:153
08/04/24 20:59:45
ありがとうございます
望みどおりの動作してくれました



171:153
08/04/24 21:04:09
>>167
自力終了 == 正常終了
なんですね覚えておきます

>>169
パイプ・シグナルの事も頭に入れておきます

172:デフォルトの名無しさん
08/04/24 21:24:57
Googleの弊害だよな。
適当に検索して、それっぽいコードを継ぎ接ぎする、本質を理解しようとしない人間が量産されるのは。

173:167
08/04/24 21:25:00
>>171
外部から何かを受け取ることでエラー終了するように作られたものもありうる。
少なくともあるプロセスがどういう状況にあるのかを無視して終わらせるのが正常とは言えない、
ということだ。拡大解釈やめれ。

174:デフォルトの名無しさん
08/04/24 21:29:47
そもそも、CreateProcessして即座に終了させるって、無意味だろ。

なぜ外部から終了させる必要があるのか、まずは、そこから話してみ。

175:デフォルトの名無しさん
08/04/24 21:52:39
試してるだけじゃないのか

176:153
08/04/24 21:58:44
>>173
わかりました

>>174
CreateProcessしたプログラムで処理してる時に
別のプログラムの処理も必要になった時のために
メインのプログラムから起動するようにしました

どうせやるなら終了もメインのプログラムからした方が
使いやすい(手間がかからない)と思ったからです

177:デフォルトの名無しさん
08/04/24 22:08:04
>>153
FindWindowの第一引数はクラス名だぼけ

178:デフォルトの名無しさん
08/04/24 22:10:04
HWND FindWindow(
  LPCTSTR lpClassName, // クラス名
  LPCTSTR lpWindowName // ウィンドウ名
);

ここまで誰も気付かなかったな
すげぇw

179:デフォルトの名無しさん
08/04/24 22:12:44
LPCTSTR型のクラス?

180:デフォルトの名無しさん
08/04/24 22:13:19
ごめん
なんでもない

181:デフォルトの名無しさん
08/04/24 22:13:54
ウィンドウクラスというのはだな・・・(ry

182:デフォルトの名無しさん
08/04/24 22:14:10
>>176
> どうせやるなら終了もメインのプログラムからした方が
> 使いやすい(手間がかからない)と思ったからです

なるほど。

その子プロセスは、どういったものなの?

また、

その子プロセスの正規の終了条件もしくは終了手順は、
どういったものなの?

183:デフォルトの名無しさん
08/04/24 22:18:49
なんという盲点

184:153
08/04/24 22:22:46
>>182
1、ある時刻になったらBEEP鳴らして終了
2、文字列をある規則で別の文字列へ変換して待機(別ファイルを読み込む可能性があるため)
3、文字列から特定の文字を削除(同上)
etc
2と3はexit入力で終了です

185:デフォルトの名無しさん
08/04/24 22:49:39
>>184
えーと、対話的に入力を受付けてるわけね。
で、exitとタイプしてリターンキーを押すと終了、と。

ならば、
WaitForInputIdle()
で入力待ち状態になるまで待ち、
コンソールに"exit\n"を送るのが、
正規の終了手段だと思う。

186:153
08/04/24 23:18:25
>>185
sampleがSleep中でもWaitForInputIdle()の次の行へ進んでしまいました

>プロセスがコンソールアプリケーションである場合〜中略〜WaitForInputIdle 関数は即座に制御を返します。
とmsdnに書いてありました

187:デフォルトの名無しさん
08/04/24 23:25:47
あーごめん、じゃぁ、ちょっと面倒だな。

そのsampleも自分で作っていて変更可能なら、
入力待ちするところで、イベントオブジェクトの状態をチェックして、シグナル状態なら終了するようにして、
親プロセスが子プロセスに終了してほしいときに、イベントをシグナル状態にしたらどうよ。

188:デフォルトの名無しさん
08/04/25 00:08:10
WaitForInputIdleって対象プロセスが最初にGetMessageを呼ぶまで待機するとかそんな感じだったような

>>186
STARTUPINFO::hStdInput/hStdOutputあたりにMailslotのハンドルを渡せばできた気がする

189:デフォルトの名無しさん
08/04/25 09:48:31
質問です


190:デフォルトの名無しさん
08/04/25 09:49:53
なんすかwwwwwwwwww

191:デフォルトの名無しさん
08/04/25 11:39:07
FileMonで"FASTIO_QUERY_OPEN"ってなるやつって、具体的にはどうやってファイルオープンしてるんでしょうか
NtCreateProcess()とNtOpenProcess()とNtCreateSection()の3つに
フックをかけて監視してるんだけどどれにも引っかからない

192:デフォルトの名無しさん
08/04/25 12:06:41
またネイティブAPIか

193:デフォルトの名無しさん
08/04/25 12:31:15
xmlとかYAMLとかをhttpで送受信するのに便利な通信モジュールないかな。
WININETとMFCは試したけど、通信の待ち時間とかを有効に使おうとするととても書きづらい。

194:デフォルトの名無しさん
08/04/25 13:05:12
本当に必要なのは通信の待ち時間とかを有効に使うための知識か

195:デフォルトの名無しさん
08/04/25 14:00:56
通信の待ち時間を使って本を読んでます!

196:デフォルトの名無しさん
08/04/25 14:52:13
ワロタ

COMでもいいのかな

197:デフォルトの名無しさん
08/04/25 14:57:53
>>172
検索して見つかったコードを自分なりに書き換えるのもまたイイ

198:デフォルトの名無しさん
08/04/25 15:43:03
boost::asio

199:デフォルトの名無しさん
08/04/25 20:14:40
マルチスレッド化して、その内のあるスレッドで同期系のものによって通信するのも1つの手ではある。

200:デフォルトの名無しさん
08/04/25 21:05:53
TCP通信ってさ、勝手に同期とって転送してくれるんじゃないの?
俺、TCPで同期とか考えたことないんだけど。。考えが間違ってたらご指摘plz

201:デフォルトの名無しさん
08/04/25 21:16:26
じっと待ってられないせっかちさんと、途中でキャンセルしたくなる優柔不断さんのため

202:デフォルトの名無しさん
08/04/25 21:26:36
WinInetには非同期モードあるぞ、一応。

203:デフォルトの名無しさん
08/04/25 21:33:35
DLLでエクスポートされたデータ変数について、
ちょっとお聞きしたいことがあります。

例えば、変数をエクスポートする際
 __declspec(dllexport) int *dll_val;
と宣言すれば、メイン側からこの変数は
 __declspec(dllimport) int **_imp__dll_val = &dll_val;
と同じように扱われると、最近msdnで知りました。
なので、メイン側からのこの変数への参照が、アセンブラレベルでは
 DWORD PTR [_imp__dll_val]
のようになると予想していました。

VC2005のデバッグモードでは、確かにそうなっていました。
しかし、リリースモードでは、なぜかそうなっていませんでした。
これに対応する個所が
 offset _imp__dll_val
のように書き換えられていたのです。

これを行うためには、_imp__dll_valのアドレスが事前に決まってなければならないと思うのですが、
ベースアドレスが固定のwindows dllで、このようなことは可能なのでしょうか?

204:デフォルトの名無しさん
08/04/25 21:51:41
リロケート情報あるんじゃないのかな

205:デフォルトの名無しさん
08/04/25 22:01:45
ベースアドレス固定ってntdllとkernel32ぐらいじゃね?(Vistaは知らん)

206:デフォルトの名無しさん
08/04/25 22:46:14
>>191
おそらくは各ドライバ(ntfs.sysとかかな)のFastI/Oディスパッチルーチンの呼び出し

_FAST_IO_DISPATCH構造体でぐぐれば情報はでる あくまで推測だけど


207:デフォルトの名無しさん
08/04/25 23:10:38
>>204
dllでリロケートする場合って、必要な全アドレスを書き換えますよね。
この場合、間接ポインタではなく'offset _imp__dll_val'で変数を使うことは可能なのでしょうか?

>>205
すいません。ベースアドレス固定ではなく、
「dllごとにベースアドレス固定」が正しい表現でした。

208:デフォルトの名無しさん
08/04/25 23:26:48
ねぇ、もうWinFXみたいなのって作らないの?

209:デフォルトの名無しさん
08/04/25 23:29:19
WinFXって.NET3.0だろ

210:デフォルトの名無しさん
08/04/25 23:34:25
既に完成したものをまた作ってどうすんだろうね

211:デフォルトの名無しさん
08/04/26 00:06:16
>>200
それ同期違う。
ここでの同期は、転送が完了してから制御を返すこと。
逆に、転送が完了するのを確認せずに制御を返す関数が非同期。

212:デフォルトの名無しさん
08/04/26 01:12:23
入力されたパスのフォルダに入っているファイルを
リストコントロールに表示させているのですが、
この時のパスを格納するための配列は256バイトあれば大丈夫ですか?

213:デフォルトの名無しさん
08/04/26 01:13:54
せめてMAX_PATH。

214:デフォルトの名無しさん
08/04/26 01:16:08
成る程260バイトですか、ありがとうございます。

215:デフォルトの名無しさん
08/04/26 01:23:25
>>214
そのレスだと平気で
p = (LPTSTR)malloc(260);
とか書きそうな雰囲気だな

まあ俺には関係ないからどうでもいいが

216:デフォルトの名無しさん
08/04/26 07:40:27
>>215
そのように書く事によって何か問題が起こるとは予想がつかないのですが、
相応しくない書き方、という事ですね、
すみませんが、理由を知りたいです。

217:デフォルトの名無しさん
08/04/26 07:58:57
261あったらどうするの?

218:デフォルトの名無しさん
08/04/26 08:30:11
必要なだけ確保する
それが動的メモリ
逆に無駄な分は確保しない

219:デフォルトの名無しさん
08/04/26 08:35:13
ちょっとまて、お前ら答えを教えてやれよw
まあ、自分で探すのも大切ではあるが。

220:デフォルトの名無しさん
08/04/26 09:13:07
知らないならレスしないでください

221:デフォルトの名無しさん
08/04/26 09:52:51
>>216
ヒント

#ifdef _UNICODE
 typedef wchat_t * LPTSTR;
#else
 typedef char * LPTSTR;
#endif

222:デフォルトの名無しさん
08/04/26 10:14:36
>>212
んな事ぁ手前で好きに決めるもんだ。

223:デフォルトの名無しさん
08/04/26 10:35:43
MAX_PATH * sizeof(TCHAR)

224:デフォルトの名無しさん
08/04/26 11:10:27
知ってるならレスしないでください

225:デフォルトの名無しさん
08/04/26 11:15:52
↑話を理解してない馬鹿

226:デフォルトの名無しさん
08/04/26 11:17:17
↑自演馬鹿

227:デフォルトの名無しさん
08/04/26 11:20:41
↑正解

228:デフォルトの名無しさん
08/04/26 11:39:27
      _、_
    ヽ( ,_ノ`)ノ チッ、乗り遅れたか・・・
   へノ   /
┌→  ω  へ





229:デフォルトの名無しさん
08/04/26 12:15:23
まだ誰も言っていないが、260じゃなくてMAX_PATHって定数使えよ。

230:デフォルトの名無しさん
08/04/26 12:24:36
>>229
>>223

231:デフォルトの名無しさん
08/04/26 12:36:15
MAX_PATHはかなり前に出てる
質問者が勝手に260に変換しただけ

232:デフォルトの名無しさん
08/04/26 13:06:42
この中に、「MAX_PATH を超えるパス名など存在しない」と思ってる人が!

233:デフォルトの名無しさん
08/04/26 13:11:35
そんなのexplorerだっていい加減だから気にしなくていい

234:デフォルトの名無しさん
08/04/26 13:15:23
URLリンク(www.google.co.jp)

嘘書いてるのも多いしなあ(FAT32の話をしてるのかも知れんが)


235:デフォルトの名無しさん
08/04/26 13:20:11
↑話を理解してない馬鹿

236:デフォルトの名無しさん
08/04/26 14:26:07
double型の数値を表示するのに、

double dbl=1.23;
char res[32];
wsprintf(res,"%f",dbl)
SetWindowText(hWnd, res);

とするとfと表示されるだけです。
どこがおかしいでしょうか?

237:デフォルトの名無しさん
08/04/26 14:47:49
>>236
L"%f"

238:デフォルトの名無しさん
08/04/26 14:49:19
wsprintfは実数使えないよ

239:デフォルトの名無しさん
08/04/26 15:05:48
せめてMSDNでAPIの説明を読んでから質問しろよ

240:デフォルトの名無しさん
08/04/26 15:06:22
StringCchPrintf

241:デフォルトの名無しさん
08/04/26 19:45:36
>>237-240
超亀ですが、ありがとうございました。
もっとちゃんと勉強しなおします。。

242:デフォルトの名無しさん
08/04/26 23:13:13
>>191
URLリンク(web.archive.org)


243:デフォルトの名無しさん
08/04/27 02:14:39
wsprintf の 'w' って "Windows" のことだよね?
lstrcpy の 'l' はさっぱり分からん

244:デフォルトの名無しさん
08/04/27 02:19:29
同じように95時代のソースみてると _lopen とかつかってて _l ってなによって思う


245:デフォルトの名無しさん
08/04/27 02:38:55
LPSTRと同じようにlong pointerじゃないの?

246:デフォルトの名無しさん
08/04/27 02:39:42
指定の他のソフトにきているメッセージを調べる方法ってありませんか?

247:デフォルトの名無しさん
08/04/27 02:48:22
グローバルフック


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

4978日前に更新/131 KB
担当:undef