5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Win32API質問箱 Build80

1 :デフォルトの名無しさん:2009/06/04(木) 04:25:40
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

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

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

- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build79
http://pc12.2ch.net/test/read.cgi/tech/1240411224/

2 :デフォルトの名無しさん:2009/06/04(木) 04:26:44
MSDN
- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/ja-jp/library/
http://msdn.microsoft.com/en-us/library/
- MSDN ライブラリ (ローカル版)
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373
- Windows SDK & Platform SDK
http://www.microsoft.com/downloads/details.aspx?FamilyID=74dd6e2d-89c6-4e1e-af00-fc7d70f15439&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=ff6467e6-5bba-4bf5-b562-9199be864d29&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=7614FE22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=ja
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

書籍
- Advanced Windows 第5版
http://www.amazon.co.jp/dp/4891005920

3 :デフォルトの名無しさん:2009/06/04(木) 04:27:27
79 ttp://pc12.2ch.net/test/read.cgi/tech/1240411224/
78 ttp://pc12.2ch.net/test/read.cgi/tech/1238289377/
77 ttp://pc12.2ch.net/test/read.cgi/tech/1235494464/
76 ttp://pc11.2ch.net/test/read.cgi/tech/1233622578/
75 ttp://pc11.2ch.net/test/read.cgi/tech/1231423602/
74 ttp://pc11.2ch.net/test/read.cgi/tech/1229239827/
73 ttp://pc11.2ch.net/test/read.cgi/tech/1227934931/
72 ttp://pc11.2ch.net/test/read.cgi/tech/1226575789/
71 ttp://pc11.2ch.net/test/read.cgi/tech/1224745158/
70 ttp://pc11.2ch.net/test/read.cgi/tech/1221446107/
69 ttp://pc11.2ch.net/test/read.cgi/tech/1217687038/
68 ttp://pc11.2ch.net/test/read.cgi/tech/1215348804/
67 ttp://pc11.2ch.net/test/read.cgi/tech/1212931246/
66 ttp://pc11.2ch.net/test/read.cgi/tech/1210775622/
65 ttp://pc11.2ch.net/test/read.cgi/tech/1208847084/
64 ttp://pc11.2ch.net/test/read.cgi/tech/1207099291/
63 ttp://pc11.2ch.net/test/read.cgi/tech/1204600558/
62 ttp://pc11.2ch.net/test/read.cgi/tech/1202060403/
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
60 ttp://pc11.2ch.net/test/read.cgi/tech/1196874830/
59 ttp://pc11.2ch.net/test/read.cgi/tech/1194701996/
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/

4 :デフォルトの名無しさん:2009/06/04(木) 04:27:49
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/
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/

5 :デフォルトの名無しさん:2009/06/04(木) 04:27:59
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

6 :デフォルトの名無しさん:2009/06/04(木) 04:28:10
- Google 聞く前に検索
http://www.google.com/

下記サイトは、違っている事もあるので参考程度にしよう!
流れを参考にしながら、APIの仕様を読めば使えるはず。

- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/
●Win32API(C言語)
http://www.geocities.jp/ky_webid/win32c/

7 :デフォルトの名無しさん:2009/06/04(木) 04:28:38
荒れてるのはいつものことなので
気にせず質問したらいいと思うよ

8 :デフォルトの名無しさん:2009/06/04(木) 05:31:49
>>1

いつも思うんだけど、Advanced Windowsのとこは注意書きか何か
あった方がいいんじゃないかな?
よく入門書と間違えて買う人いるし。

9 :デフォルトの名無しさん:2009/06/04(木) 07:38:33
入門書だろ

10 :デフォルトの名無しさん:2009/06/04(木) 07:46:20
むしろとりあえず読むべき入門書なのにタイトルで損してる本だよな

11 :デフォルトの名無しさん:2009/06/04(木) 08:16:45
つーか間違えて買ったら何か問題でもあるのか?

12 :デフォルトの名無しさん:2009/06/04(木) 11:23:55
COMBOBOXとCOMBOBOXEXはどう違うの?

13 :デフォルトの名無しさん:2009/06/04(木) 11:26:28
EX

14 :デフォルトの名無しさん:2009/06/04(木) 11:29:28
そのEXが分からないんだが。

15 :デフォルトの名無しさん:2009/06/04(木) 11:37:49
EXで増えたメッセージ(CBEM_)関係を読めば数分で理解できると思うが
大きい違いはアイコンとWindows9x+IEでのユニコード対応

16 :デフォルトの名無しさん:2009/06/04(木) 12:12:33
MSDNも読まんアホは永遠に分からなくていいよ。

17 :デフォルトの名無しさん:2009/06/05(金) 10:45:29
>>15
ありがとう

18 :デフォルトの名無しさん:2009/06/05(金) 12:13:51
UACで制限ユーザから管理者に昇格して実行されているプロセスから、
昇格前のユーザを知る方法ってありませんか?

19 :デフォルトの名無しさん:2009/06/05(金) 13:29:03
またウィルスか

20 :デフォルトの名無しさん:2009/06/05(金) 15:18:18
どういう状況なんだろう

21 :デフォルトの名無しさん:2009/06/05(金) 21:28:10
すまないがWin98、もしくはWinMeの環境ある人居ない?
ちょっとしたコードが、Win98、Meできちんと動作するか確認したいんですが
環境が無い為、自分では確認出来ません
確認したいソースだけupしますので、ビルドから確認まで協力してくれないでしょうか?
確認はファイルをD&Dするだけですので、一瞬で終わります

22 :デフォルトの名無しさん:2009/06/05(金) 21:34:27
VMWare でも使えよハゲ

23 :デフォルトの名無しさん:2009/06/05(金) 21:39:59
>>21
VirtualPCもたしか無料だったはずだよ

24 :デフォルトの名無しさん:2009/06/05(金) 21:48:54
>>22-23
レス有難うございます
肝心のDiskが無い為、仮想環境が作れないでいます
98、Meのisoは配布されてましたか?

25 :デフォルトの名無しさん:2009/06/05(金) 21:51:36
MSDN に入ればダウンロードできるだろ

26 :デフォルトの名無しさん:2009/06/05(金) 21:51:54
>>24
ないのね、明日で良ければやりましょうか?
98SEしか手持ちがなかったはずなんでご期待に沿えるかは分かりませんが・・・

あとできたらバイナリで欲しいなぁ、仮想環境構築からビルド環境までって時間かかりそうだし
ビルドからやらないと実験になりませんか?

27 :デフォルトの名無しさん:2009/06/05(金) 22:32:07
>>25
MSDNに加入とはお金が掛かるのでしょうか?

>>26
すみませんが、お願い出来ますか?
Win98SEでも十分です!
バイナリでも良いですが、バイナリでupすると不信に思われると思い
ソースでupを考えておりました
バイナリで宜しければ、バイナリでup致します。

28 :テスト要員@文教堂:2009/06/05(金) 22:35:42
>>27
MSDN購読はたしかお金かかりますよ

適当なうpろだにでも上げといてください、拾って実行します
あと、できたら他のスレ移動したいですね、ここ質問スレだし

29 :デフォルトの名無しさん:2009/06/05(金) 22:39:51
>>28
本当に有難うございます

下記スレで如何でしょうか?
プログラム板雑談スレッド Part 3
http://pc12.2ch.net/test/read.cgi/tech/1192485583/

upはバイナリ形式で、明日の午前中に行いたいと思います
確認して頂きたい点はtxtを同梱致します。

30 :テスト要員 ◆hMt.Bw/pUk :2009/06/05(金) 22:40:55
>>29
了解です、明日そちらのスレ見ておきます

31 :依頼人 ◆mDDU6VtRHw :2009/06/05(金) 23:30:56
>>30
テスト要員 ◆hMt.Bw/pUk様

プログラム板雑談スレッド Part 3
http://pc12.2ch.net/test/read.cgi/tech/1192485583/413

予定より早いですが、上記にてupを行いました
自己解凍形式で、同梱したtxtをご確認下さい。
また、質問スレにはこの件の書き込みは最後とします。
関係の無いレスで埋めてしまい本当に申し訳ありませんでした。

32 :デフォルトの名無しさん:2009/06/06(土) 06:19:01
hoge1すげーw

33 :デフォルトの名無しさん:2009/06/06(土) 15:38:03
MSDNではWinXP以降しか手に入らないよ。
MS-Java絡みの関係で、9x系に加え2000以前も全部駄目になっている。

34 :デフォルトの名無しさん:2009/06/06(土) 16:20:25
じゃあWindows9x系での動作確認をしたかったら中古で買うか
もしくは割れてるのを手に入れるかしかないのか・・・

35 :デフォルトの名無しさん:2009/06/06(土) 18:11:34
つーか9x系に対応したソフトを作る人ならOSぐらい持ってるだろ
なんで持ってないOSまでわざわざ対応する必要があるんだよw

36 :デフォルトの名無しさん:2009/06/06(土) 20:23:58
持ってないけど少しでも使ってくれる人増やしたいから対応するってのはあると思うよ
まぁMSが見捨てたもんに対応なんて今さらって気はするが・・・

37 :デフォルトの名無しさん:2009/06/06(土) 20:56:54
WM_CREATEで-1でなく1を返すコードを見たんだが
これは何か意味があるの?

38 :デフォルトの名無しさん:2009/06/06(土) 21:38:57
http://msdn.microsoft.com/en-us/library/ms632619.aspx

確かに1に見えなくも、つーか化けてね

39 :37:2009/06/06(土) 21:47:25
>>38
もちろん俺もそこ見たけど -1(たぶん)と 0 の場合しか書いてなかった
1の場合普通に成功するんだが
WM_CREATEの戻り値ってなんかに使用されるっけ?されないなら別に気にしないことにする

40 :デフォルトの名無しさん:2009/06/06(土) 22:11:48
ほかの可能性としては、0と非0を返すWM_NCCREATEと勘違いしたとか。

41 :37:2009/06/06(土) 22:35:18
>>40
うーん、俺の見たコードではWM_CREATEやWM_LBUTTONDOWNで1を返してた。
まぁいいや、気にしまい。スマン

42 :デフォルトの名無しさん:2009/06/07(日) 11:44:46
>>39
-1を返すとCreateWindowExが失敗してNULLを返す

って書いてあるだろ、しっかり読め

43 :デフォルトの名無しさん:2009/06/07(日) 13:03:59
>>42
おまえこそ、普通にレスを読め

44 :デフォルトの名無しさん:2009/06/07(日) 13:12:44
あれ?
MSDNオンラインとオフラインで書いてあることが違う?

45 :デフォルトの名無しさん:2009/06/07(日) 14:06:36
「ン」と「フ」が違うからな

46 :デフォルトの名無しさん:2009/06/07(日) 14:15:05
>>38
化けてるな。マイナス記号がU+002DじゃなくてU+2013という罠。

47 :デフォルトの名無しさん:2009/06/07(日) 15:12:24
http://msdn.microsoft.com/en-us/library/ms914118.aspx

CEの方は化けてないな

48 :デフォルトの名無しさん:2009/06/07(日) 15:16:08
マイナス記号が化けてるからMSDN読みませんってか

49 :デフォルトの名無しさん:2009/06/07(日) 15:19:35
U+2013 って – だろ?

化けるフォント使ってる奴が悪いんだろ

50 :デフォルトの名無しさん:2009/06/07(日) 17:50:03
ステータスバーを最下部に配置してるんだが
メインウィンドウとの境目に境界線って消せない?
それとも境界線自信メインウィンドウの物?

51 :デフォルトの名無しさん:2009/06/07(日) 17:50:58
ハァ?

52 :デフォルトの名無しさん:2009/06/07(日) 17:59:47
ステータスバーっぽいウィンドウ作って配置するとか

53 :デフォルトの名無しさん:2009/06/08(月) 01:56:52
スクロールユーティリティ作っていて、標準スクロールバーを持つコントロールの
スクロールバーのサムの位置をダイレクトに変えたい。

WM_VSCROLL/HSCROLLで SB_LINEUP/DOWN, SB_PAGEUP/DOWNは動くけど、
SB_THUMBPOSIION(またはSB_THUMBTRACK) 送っても反応しないものがある。

エディットやリッチエディットなどは問題ないけど、Janeのスレビューの部分の TMDITextViewなどは動かないんで、
SetScrollInfo(またはSetScrollPos)で無理やり位置を変えてから、SB_THUMBPOSITIONを送ると動いたりする。
(でもビジュアルスタイルを適応していると動かない)

独自コンポーネントの仕様だと言われればそれまでなんだろうけど、
Spy で調べたのと同じメッセージを送っても動かないのは何でだろ?

54 :デフォルトの名無しさん:2009/06/08(月) 07:07:41
独自コンポーネントの仕様です。

55 :デフォルトの名無しさん:2009/06/08(月) 17:00:03
システムメニューじゃなくてタイトルバーの下にあるメニューを列挙するAPIを教えてください

56 :デフォルトの名無しさん:2009/06/08(月) 17:06:07
ウィンドウに対してGetMenuしてうんぬんかんぬんする

57 :デフォルトの名無しさん:2009/06/08(月) 17:07:28
>>56
あ、ありがとう。
それだけわかれはうんこが漏れるほどわかりますた

58 :デフォルトの名無しさん:2009/06/08(月) 19:06:39
基本メインウィンドウ隠してる時にポップアップメニューを出すようにしたんだが
WM_HOTKEYでSetForegroundWindowー>TrackPopupMenu
の処理すると、ポップアップメニュー以外をクリックしても閉じるけど
WM_TIMERで同じ事やると、メニューが閉じない
一応メッセージフックして違いを見たけど、解決に至らなかった
良い方法はないだろうか?

59 :デフォルトの名無しさん:2009/06/08(月) 21:07:08
>>58
TrackPopupMenuのあとにWM_NULLをポストする。

60 :デフォルトの名無しさん:2009/06/08(月) 21:42:46
エクスプローラとかについてる進む・戻るボタンみたいな、
ボタンの脇に▼がついてるボタンのことなんていうの?
ナビゲーションボタンであってる?

61 :デフォルトの名無しさん:2009/06/09(火) 00:36:50
特に名前はないだろ

62 :デフォルトの名無しさん:2009/06/09(火) 00:38:06
ドロップダウンボタンだろ

63 :デフォルトの名無しさん:2009/06/09(火) 06:49:24
スプリットボタン

64 :デフォルトの名無しさん:2009/06/09(火) 08:07:48
TBSTYLE_EX_DRAWDDARROWS
BS_SPLITBUTTON
ツールバーだから、ドロップダウンボタンという事になるのかな。

65 :58:2009/06/09(火) 11:37:35
>>59
試して見ましたが駄目でした
WM_NULLはタスクトレイから操作された時に必要のようですね

66 :デフォルトの名無しさん:2009/06/10(水) 15:50:05
質問です。

WNDCLASSのlpszClassNameに設定するクラス名の文字列のポインタのことなんですが、
このポインタが指す文字列は、RegisterClass後も、
そのままメモリ上で同一の内容で存在し続ける必要があるのでしょうか?

例えばlpszClassNameに設定した文字列のポインタが、
mallocによって確保された領域を指している場合、RegisterClass後に
それをfreeしてしまっても問題が起きない保障があるのか、、が気になります。

67 :デフォルトの名無しさん:2009/06/10(水) 15:53:35
開放しても大丈夫

68 :デフォルトの名無しさん:2009/06/10(水) 15:58:50
分かりました。ご返答ありがとうございました。

69 :デフォルトの名無しさん:2009/06/10(水) 16:38:33
いやどうかな

70 :デフォルトの名無しさん:2009/06/10(水) 17:54:41
普段は単なる文字列リテラルを使っていたから考えもしなかったが、リテラル文字列は
メモリ上に永続していることが多いのか。

71 :デフォルトの名無しさん:2009/06/10(水) 18:01:06
というかまあ、常識的に考えれば、文字列へのポインタを引数にとる関数が、制御が帰った後も
その文字列が永続してなきゃいけないような変則的な作りだったら、ドキュメントにそう
書いてあるはずだ。

72 :デフォルトの名無しさん:2009/06/10(水) 18:02:12
strtokとかか

73 :デフォルトの名無しさん:2009/06/10(水) 18:13:35
RegionをSelectObjectした時の記述が無い?

74 :デフォルトの名無しさん:2009/06/10(水) 19:58:21
>>70
つーか文字列リテラルが永続しない場合ってどんな時だ?

75 :デフォルトの名無しさん:2009/06/10(水) 20:11:01
>>73
SelectClipRgnと等価。
ってMFCの方には書いてあるのだけどなあ。
http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.gdi/2005-08/msg00233.html
というVC++MVPな人の発言もあるし、それで合ってると思う。

76 :デフォルトの名無しさん:2009/06/10(水) 20:57:39
エディットコントロールに対して文字を追加する方法はありますか?
SetWindowTextだと全て描画しなおしになってしまうので。

77 :デフォルトの名無しさん:2009/06/10(水) 21:19:55
自己解決しました。EM_REPLACESELでいけました。

78 :デフォルトの名無しさん:2009/06/10(水) 21:21:07
>>76
うろ覚えですまんが、確かSendMessageとか使うんじゃなかったかな

79 :デフォルトの名無しさん:2009/06/10(水) 21:51:15
>>74
永続する保証がない以上、永続しないケースがあると考えておかないと。

80 :デフォルトの名無しさん:2009/06/11(木) 01:12:54
言語によってはガーベジコレクトされるかもね。

81 :デフォルトの名無しさん:2009/06/11(木) 01:28:26
DLL内の文字列とか、DLLをアンロードすれば読めなくなる。

82 :デフォルトの名無しさん:2009/06/12(金) 09:03:21
>>76
EM_SETSEL (-1, -1) → EM_REPLACESEL

83 :デフォルトの名無しさん:2009/06/12(金) 14:32:58
>>81
アンロードしてもすぐには消えないことがあるからタチ悪いよな。

84 :デフォルトの名無しさん:2009/06/12(金) 22:37:31
マルチスレッドで、
スレッドAの処理Bと、スレッドCの処理Dを排他的に処理したい
(同時進行で処理したくない)場合、一般的にはどうするの?
これ! っていうAPIがあったりする?

85 :デフォルトの名無しさん:2009/06/12(金) 22:41:58
>>84
同期オブジェクトを使って同期。

86 :デフォルトの名無しさん:2009/06/12(金) 22:43:08
Mutex とか CriticalSection とか

87 :デフォルトの名無しさん:2009/06/13(土) 01:16:35
InitializeCriticalSection(&cs);
EnterCriticalSection(&cs);
EnterCriticalSection(&cs);
EnterCriticalSection(&cs);
...

てやると、普通に最後まで実行できるんだけど、なぜ?
この場合って、二回目のEnterCriticalSectionで永久ループになるんじゃないの??


88 :デフォルトの名無しさん:2009/06/13(土) 01:31:37
csを獲得済みだから

http://msdn.microsoft.com/en-us/library/ms682608.aspx
After a thread has ownership of a critical section, it can make additional calls to EnterCriticalSection or TryEnterCriticalSection without blocking its execution.
This prevents a thread from deadlocking itself while waiting for a critical section that it already owns.
The thread enters the critical section each time EnterCriticalSection and TryEnterCriticalSection succeed.
A thread must call LeaveCriticalSection once for each time that it entered the critical section.

89 :デフォルトの名無しさん:2009/06/13(土) 01:54:29
unsigned charのSHIFT JIS文字列をcharのSHIFT JIS文字列に変換する、もしくはその逆は可能でしょうか?

90 :デフォルトの名無しさん:2009/06/13(土) 01:59:50
>>89
(char*)とか(unsigned char*)とかキャストするだけ。Win32APIの出番ではない。
C++ならreinterpret_castな。

91 :デフォルトの名無しさん:2009/06/13(土) 09:06:31
_com_ptr へのポインタなんだけど

IHogePtr phoge;

IHoきいせかす *pphoge = &phoge;

とすると&のオーバーロードで入れられないんです。
どうしますか?

92 :デフォルトの名無しさん:2009/06/13(土) 10:36:30
使い方がおかしい
というかスレ違い

93 :デフォルトの名無しさん:2009/06/13(土) 14:09:13
>>91
IHogePtrへの参照で我慢するか、boost::addressof

94 :デフォルトの名無しさん:2009/06/13(土) 22:21:15
DrawCaption(hWnd, hDC, &rcCaption, DC_ACTIVE | DC_GRADIENT | DC_TEXT | DC_ICON | DC_BUTTONS);

このようにしてDrawCaptionをDC_BUTTONSフラグを付けて呼び出してもボタンが描画されないのですが
なぜでしょうか?

95 :デフォルトの名無しさん:2009/06/13(土) 22:33:36
次にお前は「OSは2000」と言う!

96 :94:2009/06/13(土) 22:42:02
すみません、OSはXP SP3です。。。

97 :デフォルトの名無しさん:2009/06/13(土) 22:42:40
>>95
駄目じゃん

98 :デフォルトの名無しさん:2009/06/13(土) 22:48:26
EnterCriticalSection て、例えば
beginthread でスレッドAとBをつくったとして、そのAとBの間で
同期する場合にしか使えないの?
beginthread でスレッドを1つだけつくった場合に、
プログラム本体側と、スレッドの間で同期はできないの?

99 :デフォルトの名無しさん:2009/06/13(土) 22:54:48
>>98
何言ってんのか正直わからんが、おまえの言う「プログラム本体」も
スレッドなので「スレッドAとB」の場合と何もかわらんよ。

Advanced Windows読んで出直してこい

100 :デフォルトの名無しさん:2009/06/13(土) 23:14:05
つーか、beginthread なんて使わずに、ちゃんと CreateThread() 使え。

101 :デフォルトの名無しさん:2009/06/13(土) 23:15:20
俺はbeginthread派何だが、CreateThreadの方がやっぱりいい?

102 :デフォルトの名無しさん:2009/06/13(土) 23:18:38
俺はThread.Start()派

103 :デフォルトの名無しさん:2009/06/13(土) 23:19:16
CreateThreadのメモリリーク問題ってなんでマイクロソフトは10年経っても治さないの?

104 :デフォルトの名無しさん:2009/06/13(土) 23:23:50
いろいろ面倒だからじゃね?

俺は面倒だから_beginthreadex使うけど。

105 :デフォルトの名無しさん:2009/06/13(土) 23:29:15
>>103
もう直っている。
Windows Server 2003でFlsAllocと言う関数が導入された。もちろんVistaでも使える。
これには、スレッド終了時に呼ばれるコールバックを登録する機能が付いており、
CRTもこれを使ってのリソース解放ができるようになった。

XP以下放置かよ、と思うならDLL版CRT使えばいい。

106 :デフォルトの名無しさん:2009/06/13(土) 23:54:35
いつも_beginthreadexじゃなくて_beginthreadのほう使ってるけど
いいの?

107 :デフォルトの名無しさん:2009/06/14(日) 00:11:39
>>106
今話題になっている件については問題はない
ただし、他にも違いがあるので _beginthreadex にしておくのが無難、MSDNを読んでおけ

108 :デフォルトの名無しさん:2009/06/14(日) 18:24:17
      ______
      \|        (___    
    ♪   |\            `ヽ、 
         |  \             \
   ∧ ∧ |   \             〉
   (*`q´) | ♪   \          /
 ‖( つ| ̄ ̄ ̄ ̄ ̄ ̄! ̄ ̄ ̄ ̄ ̄ ̄ノ
 ‖( 匚______ζ--ー―ーrー´
  〓〓JJ .‖    ||       .||
 ‖       ‖            ||



109 :デフォルトの名無しさん:2009/06/14(日) 18:25:03
質問です。

フィルタドライバを作らずにリアルタイムでオーディオデバイスから出力されるサウンドを加工することは可能でしょうか?
もし可能ならやり方の概要を教えてください。

110 :109:2009/06/14(日) 18:25:58
オーディオデバイスから出力される直前のサウンドを加工してから出力したいのです。

111 :デフォルトの名無しさん:2009/06/14(日) 18:49:59
ASIOとVSTプラグインを使えば普通に可能だろ

112 :デフォルトの名無しさん:2009/06/15(月) 08:33:19
携帯電話は高いよ〜。
ピッチがオススメ!
俺はNTTパーソナルだけど、この前サービスが始まったASTELが気になる。

113 :デフォルトの名無しさん:2009/06/15(月) 16:52:55
非同期ソケット通信でWSAAsyncSelectでメッセージを受け取らずに
自分のスレッドで接続したかどうかを識別する方法を教えてください

114 :デフォルトの名無しさん:2009/06/15(月) 18:02:03
もひとつ質問ですが
WSAAsyncSelectのFD_CONNECTをしてからconnectしますが
サーバーから応答が無い時はだいたい30秒くらいで
メッセージが返ってくるのですがこれのタイムアウトはどうやって設定するのですか?
ちなみに、>>113もFD_CONNECTの話です。

115 :デフォルトの名無しさん:2009/06/17(水) 02:57:29
しつもんです。
Windowsが起動してからの
任意のドライブ(物理 or 論理)の

総書き込みバイト数
総読み込みバイト数

をいちばんシンプルに取得する方法はどんな方法でしょうか?

その手のデータを表示するソフトがあるのですが、
OSを起動させてかなり時間が経過してからアプリを起動しても、
OS起動からの正しい数値が表示されます。
常駐してカウントしてるわけではないんです。
これは、どこから取得しているんでしょうか?

116 :デフォルトの名無しさん:2009/06/17(水) 03:49:43
>その手のデータを表示するソフト

具体的に頼むわ

117 :デフォルトの名無しさん:2009/06/17(水) 04:01:59
>>116
HDDLed Indicator
インジケーターにカーソルを合わせると
OS起動時から起動しなくてもきちんと
任意の物理/論理ドライブのreadとwriteの累積バイト数が出ます
これ、どうやって取得してるんでしょう?

118 :デフォルトの名無しさん:2009/06/17(水) 06:01:47
パフォーマンスカウンタ

119 :デフォルトの名無しさん:2009/06/17(水) 06:22:06
>>118
パフォーマンスカウンタでは>>115の後半に書いたようなことは無理ですよね?

120 :デフォルトの名無しさん:2009/06/17(水) 07:35:49
fsutil fsinfo statistics
で見られるのだから、どこかに記録されているのは確か。
パフォーマンスカウンタかWMI辺りなんだろうけど。

121 :デフォルトの名無しさん:2009/06/17(水) 09:29:39
NtQueryVolumeInformationFile辺りだな

122 :デフォルトの名無しさん:2009/06/17(水) 09:40:23
間違えた
DeviceIoControlでFSCTL_FILESYSTEM_GET_STATISTICSだった

123 :デフォルトの名無しさん:2009/06/17(水) 14:00:04
クライアント領域が透明なウインドウをつくるとき、エディットコントロールみたいな子ウインドウではできない?

124 :デフォルトの名無しさん:2009/06/17(水) 15:09:43
何を言っているのかよくわからないが、リージョンを使う分には問題ないだろ

LayeredWindowは無理かもしれんが

125 :デフォルトの名無しさん:2009/06/17(水) 15:45:34
背景ブラシの色を0x00000000に

126 :デフォルトの名無しさん:2009/06/17(水) 16:22:34
>>118-122
Thanks!!!

127 :デフォルトの名無しさん:2009/06/18(木) 18:29:15
ReadDirectoryChangesWで、変更されたファイル名の終端にゴミ文字がある場合があるんだが
これは仕様?
バッファは呼ぶ直前に0クリアしてる

128 :デフォルトの名無しさん:2009/06/18(木) 19:07:33
有効なサイズは返しているのだから、
後はどんなゴミで埋められようがガタガタ抜かすな、ってスタンス?

129 :デフォルトの名無しさん:2009/06/18(木) 19:38:59
>>127
使用する領域はちゃんと確保した領域にしてる?
ポインタだけ宣言してどこ指してるか不明なまま使ってるとかじゃない?

130 :デフォルトの名無しさん:2009/06/18(木) 19:52:03
最前面表示のウィンドウよりも手前に表示されるウィンドウってどうやったら作れますか?
最前面表示ウィンドウ同士だと、通常のウィンドウのようにアクティブな方が手前に表示されてしまいます

131 :デフォルトの名無しさん:2009/06/18(木) 20:12:28
最前面表示のウィンドウよりも手前に表示されるウィンドウ
よりも手前に表示されるウィンドウってどうやったら作れますか?
って話になってしまうので、そういう事はできなくなっている。

132 :デフォルトの名無しさん:2009/06/18(木) 20:18:15
タイマーで監視して常にアクティブに・・・
っていう嫌らしいコードが頭に浮かんだぜ

133 :デフォルトの名無しさん:2009/06/18(木) 20:58:12
>>129
TCHAR buffer[1024];
ZeroMemory( buffer, sizeof(buffer) );
を渡しても問題が発生しています


134 :デフォルトの名無しさん:2009/06/18(木) 21:45:45
C++でCPU温度を取得したいんだけど、なんかいいAPIある??

XP
borland c++
なんだが。。。誰か教えてくれ

135 :デフォルトの名無しさん:2009/06/18(木) 21:45:59
>>133
FILE_NOTIFY_INFORMATIONの
FileNameがFileNameLengthの分だけ正しい内容になっていればOKだぞ。
0終端はなされないと書かれてあるしな。

136 :デフォルトの名無しさん:2009/06/18(木) 21:50:05
>>134
ググレカス

答えは出てないが↓
ttp://okwave.jp/qa3337870.html

core2だとレジスタ内に温度が格納されている?↓
ttp://pc-match.spaces.live.com/blog/cns!54C129738D4C3785!201.entry

137 :デフォルトの名無しさん:2009/06/18(木) 21:50:11
TOPMOSTのウインドウをオーナーウインドウにしたらできる気もする>最前面より手前

138 :デフォルトの名無しさん:2009/06/18(木) 22:04:25
>>135
有難うっ
>0終端はなされないと書かれてあるしな。
これは知らなかった。WideCharToMultiByteでANSI分の文字数取って変換ってやってた
何にせよ、おかげで解決しそうです。有難うございました。

139 :デフォルトの名無しさん:2009/06/18(木) 22:52:27
VBのリストビュー使ってるんだが、SubItemが編集状態にできないので
フォーカスが当たってる場所に擬似的にテキストボックスを表示させたい
んだが、フォーカスが当たっている座標が分からん。何か良いAPIはないものか。


140 :デフォルトの名無しさん:2009/06/18(木) 23:28:11
>>139
LVM_GETITEMRECT とかでいいんじゃねーの?

141 :デフォルトの名無しさん:2009/06/19(金) 00:37:16
初歩的な質問かもしれませんがエディットボックスを作ってもキーボードで文字を打ち込むことができません。なぜでしょうか?
マウスの右クリックから文字を貼り付けることはできます。

142 :デフォルトの名無しさん:2009/06/19(金) 00:50:39
ここは大穴狙いで。
メッセージループでTranslateMessageしていない、とか?

143 :デフォルトの名無しさん:2009/06/19(金) 01:30:01
>>142
すげー助かりましたw
分かってることなのになんでこんなの見落としてたんだろう・・・

144 :デフォルトの名無しさん:2009/06/19(金) 07:32:39
上でも挙がってるReaDirectoryChangesWを使って見たんだが
ファイルを複数移動すると取りこぼす時がある
何か改善案ないかな?

145 :デフォルトの名無しさん:2009/06/19(金) 11:10:38
1個につき1回じゃないぞ

146 :デフォルトの名無しさん:2009/06/19(金) 11:16:13
>>145
勿論承知してる
非同期のマルチスレッドで常に呼んでるけど
ファイルを多数移動すると通知されれず
結果取得の為の待機をしてしまう
このAPIは基本取りこぼしはしない?

147 :デフォルトの名無しさん:2009/06/19(金) 15:06:27
>同期操作が正しく完了した場合、lpBuffer パラメータはフォーマット済みのバッファを表し、
>lpBytesReturned パラメータにはバッファに書き込まれたバイト数が返ります。
>転送バイト数が 0 の場合、バッファが小さ過ぎて、ディレクトリやサブツリーで発生した
>すべての変更に関する詳細情報を格納できなかったことを表します。
>この場合、ディレクトリまたはサブツリーを列挙して、変更内容を計算する必要があります。

148 :デフォルトの名無しさん:2009/06/19(金) 15:23:12
とあるサイトで勉強していて、マウスクリックしたところにSetPixelVで点を打ってみましょう、という課題をやってみたのですが
まず
300*300の多次元配列を用意して
int pixel[1000][1000];
WM_LBUTTONDOWNのメッセージで
int w = LOWORD(lParam);
int h = HIWORD(lParam);
pixel[w][h] = 1;
UpdateWindow(hWnd);
return 0;
WM_PAINTのメッセージで
HDC hDC;
PAINTSTRUCT ps;
hDC = BeginPaint( hWnd, &ps );
for(int w=0; w<300; w++)
{
for(int h=0; h<300; h++)
{
if(pixel[w][h] == 1)
{
SetPixelV( hDC, w, h, RGB(255,0,0) );
}
}
}
EndPaint( hWnd, &ps );
return 0;
してみたのですが、windowサイズを変えるまで塗られません。
RedrawWindowも試してみましたが、WM_PAINTが発生しないようです。この方法は駄目でしょうか?
それともwindow生成を自分でクラス化してるのですが、そのクラスに問題があるのでしょうか?


149 :デフォルトの名無しさん:2009/06/19(金) 15:31:40
ちゃんとInvalidateしてる?

150 :デフォルトの名無しさん:2009/06/19(金) 15:39:25
>>147
デバッガで追ったけど、バッファが足りないっていうのは無かった
関数呼んでWaitで変更通知来るまで待機してるんだが
まだ通知されてるだろうに、そこで待機状態に入る

151 :148:2009/06/19(金) 15:47:47
>>149
ありがとうございます。出来ました。

InvalidateRgn(hWnd, NULL, true);
UpdateWindow(hWnd);

152 :148:2009/06/19(金) 16:50:15
というか
WM_LBUTTONDOWNのメッセージで
int w = LOWORD(lParam);
int h = HIWORD(lParam);
pixel[w][h] = 1;
InvalidateRect(hWnd, NULL, false);

これだけでOKなんですね

153 :デフォルトの名無しさん:2009/06/19(金) 17:24:23
下図のように自己交差しているリージョンを、
┏━┓
┃  ┃
┗━╋━┓
   ┃  ┃
   ┗━┛
交点で個別のリージョンに分けたいんですけど、
┏━┓
┃  ┃
┗━┛┏━┓
     ┃  ┃
     ┗━┛
簡便な方法ってないものでしょうか。
リージョンに関するWinAPIで対処可能でしょうか。

よろしくお願いします。

154 :デフォルトの名無しさん:2009/06/19(金) 17:33:49
早く教えて下さいよぉ

155 :153 ◆D9KRK95MhY :2009/06/19(金) 17:37:04
153です。いちおうトリップつけときます。

156 :デフォルトの名無しさん:2009/06/19(金) 17:40:56
この時間はやはりわかる人はいないんですね。。。

157 :デフォルトの名無しさん:2009/06/19(金) 17:46:22
1日平均10レスのスレにそんな速く回答が帰ってくると思うなっての…。

158 :デフォルトの名無しさん:2009/06/19(金) 17:51:32
>>153
できるよ

159 :デフォルトの名無しさん:2009/06/19(金) 17:52:26
>>153
できますね

160 :デフォルトの名無しさん:2009/06/19(金) 18:15:27
GetRegionDataで地道に作り直すしかないんじゃないか

161 :デフォルトの名無しさん:2009/06/19(金) 19:07:35
>>158-159
具体的にアドバイスした方が良いと思われる。

162 :デフォルトの名無しさん:2009/06/19(金) 19:13:29
┏━┓
┃  ┃
┗━┛┏━┓
     ┃  ┃
     ┗━┛
の上記二つのリージョンを作ったら
CombineRgnで混ぜればいいよ

163 :デフォルトの名無しさん:2009/06/19(金) 19:45:46
>>162
リージョンの合成じゃなくて、分離する方法を聞いていると思われる。

164 :デフォルトの名無しさん:2009/06/19(金) 21:21:38
>>163
あ、すまん勘違いしてた
リージョンから分離したいなら、GetRegionDataから作り直す
ビットマップとかから作るなら、CreateRectRgnとCombineRgn組み合わせればいいよ

165 :デフォルトの名無しさん:2009/06/19(金) 21:25:54
リージョンというより、自己交差しているパスを交点で切り離せれば、
そこからリージョンを作ればいいような気がするな。
ま、APIでそういうことが出来るのかどうかは分からないが。

166 :デフォルトの名無しさん:2009/06/19(金) 21:28:16
海外の身体改造は半端ねえからなあ

眼球くりぬいてLED埋め込んだ奴
http://vimeo.com/4500681

167 :デフォルトの名無しさん:2009/06/19(金) 21:30:49
>>166
何処の誤爆だ?
怖くて見れない

168 :デフォルトの名無しさん:2009/06/19(金) 21:33:02
ただ光らせるために片目捨てるとかアホだろw

169 :デフォルトの名無しさん:2009/06/19(金) 21:33:47
中盤グロかった・・・

170 :デフォルトの名無しさん:2009/06/19(金) 22:11:57
誤爆はほっとけ

171 :デフォルトの名無しさん:2009/06/19(金) 22:15:42
スレチを承知で聞かせて貰う
グロイ?

172 :デフォルトの名無しさん:2009/06/19(金) 22:17:47
義眼にLED仕込んだバカのビデオだよ

173 :デフォルトの名無しさん:2009/06/19(金) 22:20:47
術前→設計→術後だから血とかはないな

174 :デフォルトの名無しさん:2009/06/19(金) 22:23:56
>>172-173
サンクス。最初の画面で嫌悪感出て見るの辞めた
零見たいにサーモグラフィー埋め込めば良いのに

175 :デフォルトの名無しさん:2009/06/19(金) 23:31:53
話がそれたが、回答としては出尽くしたのか?
他にアイデアがあれば書いといてあげて。

176 :デフォルトの名無しさん:2009/06/19(金) 23:33:14
自演してんなよ

177 :デフォルトの名無しさん:2009/06/19(金) 23:36:28
おれは175=165だけど?

178 :デフォルトの名無しさん:2009/06/19(金) 23:57:57
れぎおん

179 :デフォルトの名無しさん:2009/06/20(土) 02:31:11
無理。

180 :153 ◆D9KRK95MhY :2009/06/20(土) 10:55:44
皆さん回答ありがとうございます。
164さんのビットマップから作る方法を検討してみます。

181 :デフォルトの名無しさん:2009/06/20(土) 13:46:04
IMEの制御について詳しい方いらっしゃいますか?
漢字仮名まじりの文をIMEを使って全部ひらがなに逆変換したいんですが、
漢字仮名まじりの文をIMEに設定する関数 ImmSetCompositionString(himc, SCS_SETSTR, str, length, NULL, 0)が
MSIME2002では成功するのにATOK2006では失敗します。
一応MSIMEでは動くものが作れたんですが、ぶっちゃけクソ変換なので、できればATOKを活用したいのです。

何か別の方法がないでしょうか?
ネットで調べても変換操作をしたあとの再変換の方法ならあるんですが、
漢字仮名まじりの文をIMEに設定して逆変換する方法で、ATOKで成功するものが見つけられないんです。

182 :デフォルトの名無しさん:2009/06/20(土) 13:51:17
大抵の企業でATOKなんてわざわざ入れてないのでおk

183 :デフォルトの名無しさん:2009/06/20(土) 13:59:03
世間一般の企業がどうとかは関係なくて、自分のところのデータ変換処理に必要なんです。
ATOKだと文脈を理解して適切な読み仮名に変換してくれるはずなので、それに期待してるのです。

184 :デフォルトの名無しさん:2009/06/20(土) 14:04:21
「詳細なテキストサービスのサポートをプログラムのすべてに拡張する」がONならOFFにしてみるとか?
これでうまくいっても、PGでの対応方法は知らないけど。

185 :デフォルトの名無しさん:2009/06/20(土) 15:39:29
>>184
それはOFFになってましたね。
試しにONにしてみると、MSIMEでも逆変換できなくなってしまいました。。。
「詳細なテキストサービスをオフにする」のチェックも変えましたが、こちらは変化なしでした。

Immで始まるIME制御APIは自分が試した大部分でATOKとMSIMEの間で互換性がありました。
しかしIMEとは無関係のところからもってきた文を逆変換することに関してだけは互換性が無いようなのです。
ATOK12ではできたという話がネット上にありましたが、ATOK2006はその方法ではダメでした。
難しいですね。

186 :デフォルトの名無しさん:2009/06/20(土) 16:34:41
コントロールの座標をクライアントから見たい座標で取得する方法でいいのないな?

今はコントロールとクライアントの二つをGetWindoxRectでスクリーン座標から強引に求めてるが
どうも違う

187 :デフォルトの名無しさん:2009/06/20(土) 16:43:25
>>186
MapWindowPoints関数を使え。

188 :デフォルトの名無しさん:2009/06/20(土) 16:59:52
ウェブのMSDNって「戻り値」の説明だけごそーり消えてるんだけどなんなんだあれ?
直す気ないのかな?

189 :デフォルトの名無しさん:2009/06/20(土) 17:00:31
関数とprintfとかとAPIはどっちが遅いの?

190 :デフォルトの名無しさん:2009/06/20(土) 17:01:21
>>181
ImmGetConversionList でいけるはず

191 :デフォルトの名無しさん:2009/06/20(土) 17:26:14
>>190
IME2003以降では使えないけどな

192 :デフォルトの名無しさん:2009/06/20(土) 17:47:12
>>189
自分で調べろ

193 :デフォルトの名無しさん:2009/06/20(土) 17:48:37
FF11 のいずれかを含むページは 10752 ページ中、 164 ページ見つかりました。

194 :デフォルトの名無しさん:2009/06/20(土) 17:48:59
誤爆した

195 :デフォルトの名無しさん:2009/06/20(土) 18:01:34
>>189
OSで応答する分APIが遅い

196 :デフォルトの名無しさん:2009/06/20(土) 18:52:31
>>187
有難うございます!!

197 :デフォルトの名無しさん:2009/06/20(土) 18:54:46
>>195
は?

198 :デフォルトの名無しさん:2009/06/20(土) 19:11:46
システムフックするソースとか見ると、DLL側で良く

#pragma data_seg(".ShareForHook")
HHOOK MouseHook = NULL;
#pragma data_seg()

を眼にするんだが、何でこれをする意味が良く分からない。
単純にHHOOK MouseHook = NULL;じゃ駄目なの?

199 :デフォルトの名無しさん:2009/06/20(土) 19:15:11
#pragma data_segってのはプロセス間での共用メモリスペースを作るオプションでな
その中で宣言された変数はどこのプロセスで変更しても全てのプロセスに伝わるわけだ

何で必要なのかはCallNextHookExの第一引数見れば分かる
2000以降は要らないんだっけかな

200 :デフォルトの名無しさん:2009/06/20(土) 19:15:12
理由もちゃんと書いてあるだろ

201 :デフォルトの名無しさん:2009/06/20(土) 19:26:23
>>197
ライブラリの関数は同じ実行ファイル内にリンクされるのでコストは自分と定義した関数と同じ
APIの場合は、IPCを通じてOS内部にある関数本体のアドレスに引数を渡して結果を受け取るためコスト増

202 :デフォルトの名無しさん:2009/06/20(土) 19:31:04
ああこいつ馬鹿か

203 :デフォルトの名無しさん:2009/06/20(土) 19:34:53
素直に頭が悪くて理解できないと言えよw

204 :デフォルトの名無しさん:2009/06/20(土) 19:36:31
printfもOSのAPI内部で呼ぶっつーの馬鹿

205 :デフォルトの名無しさん:2009/06/20(土) 19:37:02
自分で定義した関数で、想定されうるあらゆるデバイスに対して出力できる処理かいてるのか

206 :デフォルトの名無しさん:2009/06/20(土) 19:38:39
>>199
有難う!
MSDNでのSetWindowsHookEx関数では
>グローバルフックは共有リソースであり
と書いてあった
正直まだ解せない部分もあるけど、システムフックの最低限必要のマナーなのね

207 :199:2009/06/20(土) 19:43:48
ああ、理解力なさそうだね

208 :デフォルトの名無しさん:2009/06/20(土) 20:15:17
>>189=>>195=>>201=>>203

209 :デフォルトの名無しさん:2009/06/20(土) 21:39:29
>>190
ImmGetConversionListを使う方法を教えていただき、どうもありがとうございました。
結論からすると、やはり逆変換はMSIME2002ではできて、ATOK2006ではできなかったです。
ソースコードは下記をそのまま使いました。
http://athomejp.com/goldfish/api/yomichange.asp

ATOKの2006は鬼門バージョンなんですかねw

210 :デフォルトの名無しさん:2009/06/20(土) 21:54:53
まぁ、そんなもんじゃね?

あとは、実際の動作をエミュレートするかだな。

211 :デフォルトの名無しさん:2009/06/20(土) 21:56:13
プログラム書いていていつも思うのは
LeftとRightとかBeginとEndとか
長さが違うのが無性に腹立つんだが
欧米人には美的感覚ってものが無いのか?

212 :デフォルトの名無しさん:2009/06/20(土) 22:02:25
>>211
まずプログラミング言語ありきってか

213 :デフォルトの名無しさん:2009/06/20(土) 22:12:34
外人さんのデモ見てると、プロポーショナルフォントだったりするしな・・・

214 :190:2009/06/21(日) 00:06:52
>>209
2006ではだめですか。ATOK2005は確か出来たはずなんですが… 残念です。


215 :sage:2009/06/21(日) 01:02:46
自分は漢字の読み仮名の取得には
IFELanguageを使ってるが。


216 :デフォルトの名無しさん:2009/06/21(日) 13:30:24
DLして読めるWin32APIのドキュメントってどこにあるんですか?
MSDNだとインターネット接続していないと読めないので

217 :デフォルトの名無しさん:2009/06/21(日) 13:45:41
>>216
英語でよければ
http://ghirai.com/hutch/files/win32hlp_big.zip

218 :デフォルトの名無しさん:2009/06/21(日) 14:05:47
>>216
ローカル版のMSDNライブラリ
http://www.microsoft.com/downloads/details.aspx?familyid=7BBE5EDA-5062-4EBB-83C7-D3C5FF92A373&displaylang=ja

219 :デフォルトの名無しさん:2009/06/21(日) 14:11:22
>>218
2627.9 MBって大変だな。

220 :デフォルトの名無しさん:2009/06/21(日) 15:30:10
αRGBをunsigned longに入れた配列を画面に描画したいんですけど
一番高速な方法はどんなものでしょうか?

221 :デフォルトの名無しさん:2009/06/21(日) 15:42:17
透かしを入れないのであれば、素直にBitBltをすれば。
アルファブレンドをするのであれば
http://d.hatena.ne.jp/n7shi/20080323/1231278248

222 :デフォルトの名無しさん:2009/06/21(日) 16:39:09
このスレ的にはAlphaBlendだろ? しかも>>221のリンク先計算式間違いすぎ

223 :デフォルトの名無しさん:2009/06/21(日) 16:46:00
前に見たやり取り

224 :デフォルトの名無しさん:2009/06/21(日) 20:22:41
WZC API(KB918997)だがリファレンスが見つからない
どこにあるかご存知の方おられますか?

225 :デフォルトの名無しさん:2009/06/21(日) 20:43:27
>>224
site:microsoft.com wzcでググったらこれが見付かったんだけど違う?

Wireless Zero Configuration Reference
http://msdn.microsoft.com/en-us/library/ms706593.aspx

226 :デフォルトの名無しさん:2009/06/21(日) 20:54:18
>>225
ありがとう、MSDNは見たはずなんだが抜かってたか・・・

227 :デフォルトの名無しさん:2009/06/21(日) 21:42:41
ステータスバーをオーナードローしてるんだが
プログラム起動時に、メインウィンドウとステータスバーのスタイルを弄ると
WM_DRAWITEMの通知の際、CtrlTypeがODT_MENUになるんだが何故?
今まではswitchのdefaultでステータスバーを描画してたが
今はCtrlIDで分岐して描画してる。綺麗な方法じゃないけどね

228 :デフォルトの名無しさん:2009/06/21(日) 22:00:34
SDKのリファレンスだと、CtrlTypeは未定義だと書かれているな。
CtrlIDで分岐するのはむしろ正解っぽい。

229 :デフォルトの名無しさん:2009/06/21(日) 22:27:16
>>228
そうなのかっ
ODT_TABとか色々使ってるから、今更IDで判断なんて面倒すぎだぞ…
とりあえずステータスバーだけIDで判断する。有難うね。

230 :デフォルトの名無しさん:2009/06/21(日) 22:30:03
dllの暗黙のリンクの場合関数が存在するかどうかはアプリ起動時にチェックされる?
それとも関数を呼び出すところで初めてチェックされる?

231 :デフォルトの名無しさん:2009/06/21(日) 22:37:00
静的リンクだよね?起動時じゃないか?
Win2k以降のAPIを静的リンクしたEXEを98で実行したら速攻でエラー落ちした

232 :デフォルトの名無しさん:2009/06/21(日) 22:42:33
やはりそうかthx
自分も書き込んだ後実験して起動時に落ちたわ

233 :デフォルトの名無しさん:2009/06/21(日) 22:53:56
>>230
dllを遅延ロードにすると、初めて読んだところで例外が発生する。

234 :デフォルトの名無しさん:2009/06/22(月) 00:16:13
>>231
静的リンクと呼びたくなるのは分かるが、それは静的リンクじゃなくて暗黙(的)リンクが正しい。

235 :デフォルトの名無しさん:2009/06/22(月) 00:41:20
だからAPIが遅い

236 :デフォルトの名無しさん:2009/06/22(月) 01:26:00
API"も"遅い

237 :デフォルトの名無しさん:2009/06/22(月) 01:55:58
MSDN Express LibraryってExpressじゃないのとどう違うか分からんのだが
日本語の項目が少ないとかそういうのか?

238 :デフォルトの名無しさん:2009/06/22(月) 02:16:13
一部省略されている情報があるようだ。仔細に調べたわけじゃないが、俺が気づいた範囲では、
.NETのSocketクラスが載ってなかったりした。

239 :デフォルトの名無しさん:2009/06/22(月) 09:30:50
hDCBuffer = CreateCompatibleDC( hDC );
hBitmap = CreateCompatibleBitmap( hDC, 200, 200 );
SelectObject( hDCBuffer, hBitmap );


for( int i = 0 ; i < 3 ; i++ ) {
hDCBuffer[i] = CreateCompatibleDC( hDC );
hBitmap[i] = CreateComaptbileBitmap( hDC, 50, 50 );
SelectObject( hDCBuffer[i], hBitmap[i] );
}

では、最初の奴の方がメモリは少なく済むんだよね?

240 :デフォルトの名無しさん:2009/06/22(月) 10:04:07
メモリ1ギガもあれば誤差

241 :デフォルトの名無しさん:2009/06/22(月) 12:05:20
GetDC()を行った後にReleaseDC()をしなければいけないのは
分かっているんですが
GetDC()をnewした場合はReleaseDC()をした後に
deleteをしなければならないのでしょうか?
教えてください。

242 :デフォルトの名無しさん:2009/06/22(月) 12:23:47
お前は何を言っているんだ?

とりあえず、"GetDB()をnewする" のソースコードを書いてみろ

243 :デフォルトの名無しさん:2009/06/22(月) 12:24:27
GetDC()をnewするって言うのが何を指してるのかわからないが
HDC *phdc = new HDC;
*phdc = GetDC( ... );
ていうことならWin32 API以前にC++の問題。

244 :デフォルトの名無しさん:2009/06/22(月) 12:26:08
GetDC ⇔ ReleaseDC の対は Win32APIの要求
new ⇔ delete の対は (多分)C++ の要求

245 :241:2009/06/22(月) 13:20:12
よく理解しないまま質問してしまってすみません。
HDC *phdc = new HDC;
*phdc = GetDC( ... );
の後に、
ReleaseDC(phdc);
delete phdc;
としなければならないか?
と言う事です。
>>244さんの返答からして必要そうな感じはしていますが。。。



246 :デフォルトの名無しさん:2009/06/22(月) 13:29:00
ReleaseDC( *phdc ); が正解な
もっと基本的な部分から勉強しなおした方がいいと思う。

new/deleteはAPIの動作とまったく関係ない.し、newで確保したメモリがReleaseDCで解放されることはない。

247 :241:2009/06/22(月) 13:33:25
>>246さん
ありがとうございました。
馬鹿ですみません。

248 :109:2009/06/22(月) 18:44:40
>>111
マイク入力を使わずにできますか?
調べましたが、そういう方法はわかりませんでした。

249 :109:2009/06/22(月) 19:26:28
どういうソフトを作りたいかというと、たとえば
Windows上で任意のいろんなソフトが動いていて、それぞれのソフトが音を出したり出さなかったりするわけですけど、
それらすべての音をスピーカーに出力しながら音声認識して文字で表示するようなものを作りたいのです。
スピーカー出力をマイク入力に直結するようなやり方はしたくありません。

250 :デフォルトの名無しさん:2009/06/22(月) 19:34:33
無理

251 :デフォルトの名無しさん:2009/06/22(月) 19:47:18
実行状態のスレッドIDを取得できるWin32APIはありますか?

252 :デフォルトの名無しさん:2009/06/22(月) 20:29:08
>>249
ステレオミキサーで検索

253 :デフォルトの名無しさん:2009/06/22(月) 20:34:44
>>251
GetThreadId

254 :251:2009/06/22(月) 20:42:31
>>253
Thank you!

255 :デフォルトの名無しさん:2009/06/23(火) 03:59:15
自作の常駐ソフトを,管理者権限でOS起動時に実行することは可能でしょうか?
今はレジストリのRunに登録して自動実行していますが,これだと管理者権限で
起動できません.かといってrequireAdministratorを設定すればOS起動時にUAC
が出てきてしまいます.
OSはVista 32-bitを使用しています.

256 :デフォルトの名無しさん:2009/06/23(火) 04:02:32
サービス化とかでぐぐれ

257 :デフォルトの名無しさん:2009/06/23(火) 04:05:14
無理

258 :デフォルトの名無しさん:2009/06/23(火) 07:17:57
タスクに登録

259 :デフォルトの名無しさん:2009/06/23(火) 10:40:55
>>255
OS起動時ならサービスに、ログイン時ならタスクで

260 :デフォルトの名無しさん:2009/06/23(火) 10:45:15
ポップアップメニューにポップアップメニューを追加したら
追加されたポップアップメニューを破棄すれば追加したのも一緒に破棄される?

261 :デフォルトの名無しさん:2009/06/23(火) 10:45:28
ああでもログイン者がアドミン権限無いならタスクじゃ無理かな。
サービスが確実。

262 :デフォルトの名無しさん:2009/06/23(火) 15:47:10
SetThreadPriorityをスレッド休止中に行ったらエラーになりますか?

263 :255:2009/06/23(火) 17:15:02
ありがとうございます.

 1. 自作常駐ソフトをサービス化する
 2. 他のサービスプログラムを作り,そのサービスから自作常駐ソフトを起動するようにする

現在管理者権限で起動したい常駐ソフトが2個ほどあるので,1の方法より汎用性が高い2
の方法を検討しているのですが,サービスから起動するプロセスは管理者権限を得られる
のでしょうか?

264 :デフォルトの名無しさん:2009/06/23(火) 18:23:57
ツールバーのボタンの文字列を得るにはどうすればいいんでしょうか

265 :デフォルトの名無しさん:2009/06/23(火) 18:49:54
GetWindowText

266 :デフォルトの名無しさん:2009/06/23(火) 20:42:09
>>263
|| [最上位の特権で実行する] チェック ボックスをオンにすると、
|| タスク スケジューラは、最小限の特権 (UAC) トークンではなく
|| 管理者特権トークンを使用してタスクを実行します。

ってあるじゃん。わざわざ作るまでもなく、タスクスケジューラで OK

267 :デフォルトの名無しさん:2009/06/23(火) 20:47:51
スクリーンキーボード(ゲームパッド型)+コマンドコントローラーみたいなアプリって難しい?

268 :デフォルトの名無しさん:2009/06/23(火) 20:51:38
難しいかどうか判断が付かないレベルでは難しいね

269 :デフォルトの名無しさん:2009/06/23(火) 21:16:15
ドライブがフォーマットされてるかどうかを調べる関数があれば教えてください

270 :デフォルトの名無しさん:2009/06/23(火) 21:18:54
>>269
ファイルが読み書きできれば、フォーマットされてる。

271 :デフォルトの名無しさん:2009/06/23(火) 21:54:28
もっと真摯に回答しろよ・

272 :デフォルトの名無しさん:2009/06/23(火) 22:17:54
>>266
実行するユーザーが管理者権限無いと管理者にはならないよ、あたりまえだけど。

273 :デフォルトの名無しさん:2009/06/23(火) 22:43:38
dumpbinでdllのシンボルが見れるっていうんで試したんですけど、どこにも関数名が出てこないです

dll.cpp
extern "C" __declspec(dllexport) int __stdcall sq(int x);
int __stdcall sq(int x) {return x * x;};

コマンドプロンプトで
dumpbin /SYMBOLS dll.lib

274 :デフォルトの名無しさん:2009/06/23(火) 22:45:13
出力はこんな感じです
どこにもsqがでてきません・・・ちなみにコンパイラはVC++2008EEです

COFF SYMBOL TABLE
000 00937809 ABS notype Static | @comp.id
001 00000000 SECT2 notype External | __IMPORT_DESCRIPTOR_dll
002 C0000040 SECT2 notype Section | .idata$2
003 00000000 SECT3 notype Static | .idata$6
004 C0000040 UNDEF notype Section | .idata$4
005 C0000040 UNDEF notype Section | .idata$5
006 00000000 UNDEF notype External | __NULL_IMPORT_DESCRIPTOR
007 00000000 UNDEF notype External | dll_NULL_THUNK_DATA

String Table Size = 0x4A bytes

275 :デフォルトの名無しさん:2009/06/23(火) 22:46:00
COFF SYMBOL TABLE
000 00937809 ABS notype Static | @comp.id
001 00000000 SECT2 notype External | __NULL_IMPORT_DESCRIPTOR

String Table Size = 0x1D bytes

COFF SYMBOL TABLE
000 00937809 ABS notype Static | @comp.id
001 00000000 SECT2 notype External | dll_NULL_THUNK_DATA

String Table Size = 0x19 bytes

Summary

B7 .debug$S
14 .idata$2
14 .idata$3
4 .idata$4
4 .idata$5
8 .idata$6

276 :デフォルトの名無しさん:2009/06/23(火) 22:48:12
>>273
>dumpbin /EXPORTS dll.lib

277 :デフォルトの名無しさん:2009/06/23(火) 22:50:02
      _   、
    /.  \ |
       /⌒ヽ
⊂二二二( ^ω^)二⊃
     /|    /
    ./ ( ヽノ|
    《/ノ>ノ/
  三  レレ


278 :デフォルトの名無しさん:2009/06/23(火) 23:10:50
>>276
でてきました
ありがとう!

279 :デフォルトの名無しさん:2009/06/23(火) 23:28:31
const DWORD sessionId = WTSGetActiveConsoleSessionId();
HANDLE userToken = 0;

if (WTSQueryUserToken(sessionId, &userToken)) {
    HANDLE userTokenDup = 0;

    if (DuplicateTokenEx(userToken, MAXIMUM_ALLOWED, 0, SecurityIdentification, TokenPrimary, &userTokenDup)) {
        LPVOID env = 0;
        DWORD creation = CREATE_NEW_CONSOLE | NORMAL_PRIORITY_CLASS;

        if (CreateEnvironmentBlock(&env, userTokenDup, FALSE)) {
            creation |= CREATE_UNICODE_ENVIRONMENT;
        }
        else {
            env = 0;
        }

        STARTUPINFO si = { sizeof(STARTUPINFO), 0, L"winsta0\\default" };
        PROCESS_INFORMATION pi = { 0 };

        retval = CreateProcessAsUser(userTokenDup, L"C:\\Windows\\System32\\notepad.exe", 0, 0, 0, FALSE, creation, env, 0, &si, &pi);

        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);

        DestroyEnvironmentBlock(env);
        CloseHandle(userTokenDup);
    }

    CloseHandle(userToken);
}
上記コードをサービスから実行しプロセス(notepad)を起動できましたが,管理者権限しませんでした.どうすれば管理者権限で起動させられるのでしょうか?

280 :デフォルトの名無しさん:2009/06/24(水) 01:48:19
>>279
http://msdn.microsoft.com/ja-jp/magazine/cc163486.aspx
TokenLinkedTokenの辺りではないかと思っている。試したことはない。

281 :279:2009/06/24(水) 02:01:16
>>280
ありがとうございます
今回は
http://www.codeproject.com/KB/vista-security/VistaSessions.aspx
のコードを用いることで解決できました.

282 :デフォルトの名無しさん:2009/06/24(水) 02:09:45
MDIのフレームウィンドウのクライアント領域の中で
マウスクリックを検出するにはどうすればいいんでしょうか

283 :262:2009/06/24(水) 10:34:54
誰か回答お願いします。

284 :デフォルトの名無しさん:2009/06/24(水) 10:53:02
さっさと答えろやクズ共

285 :デフォルトの名無しさん:2009/06/24(水) 10:53:47
試せばいいじゃん

286 :デフォルトの名無しさん:2009/06/24(水) 11:14:28
OSのOEM番号?xxxxx-OEM-xxxxxxxx-xxxxxxって番号を取得するAPIを教えてください

287 :デフォルトの名無しさん:2009/06/24(水) 11:16:28
RegQueryValueEx

288 :デフォルトの名無しさん:2009/06/24(水) 11:30:49
>>282
サブクラス化してWM_LBUTTONUP

289 :デフォルトの名無しさん:2009/06/24(水) 11:35:12
レジストリかよ
APIねーのかよ
役にたたねー奴だなまったく

290 :デフォルトの名無しさん:2009/06/24(水) 11:38:37
>>286
TCHAR sz[24];
HKEY hk;
if (SUCCEEDED(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion"), 0,
KEY_READ, &hk)))
{
DWORD cb = 24 * sizeof(TCHAR);
if (SUCCEEDED(RegQueryValueEx(hk, TEXT("ProductId"), NULL, NULL,
sz, &cb)))
{
MessageBox(NULL, sz, NULL, 0);
}
}


291 :デフォルトの名無しさん:2009/06/24(水) 15:27:29
VC++とVB間のプロセス間通信について聞きたいんですが、ここであってますでしょうか?

自分なりに調べてみたんですが、いまいち詳しいことが載っているサイト、書籍が見つから
なかったので、何かお勧めのサイト、書籍ご存じないでしょうか?

今のところ、VCで画像認識、VBでマイコンの操作できるものがあり、この2つを連携させたいと
思っています。自分は、画像認識を主にやっているので、VC側である程度汎用性をもたせて、
他のプログラムとも連携させたいと考えています。

292 :デフォルトの名無しさん:2009/06/24(水) 15:34:48
>>291
ttp://usatoramax.s174.xrea.com/iga2.htm


293 :デフォルトの名無しさん:2009/06/24(水) 16:04:41
>>290
closeくらいしろよ

294 :デフォルトの名無しさん:2009/06/24(水) 17:38:46
>>288
ありがとうございました

295 :デフォルトの名無しさん:2009/06/24(水) 19:33:29
>>291
SendMessageでWM_COPYDATAを飛ばすのが一番楽。
それ以上は、WindowsSDKの「Interprocess Communications」から
好きなのを選べとしか。

296 :デフォルトの名無しさん:2009/06/24(水) 20:09:21
開発環境同士でIPCとかチャレンジャヴルね

297 :デフォルトの名無しさん:2009/06/24(水) 20:13:16
HMENUって破棄されてもいいようにコピー出来る?

298 :デフォルトの名無しさん:2009/06/24(水) 21:59:09
自分でコピー
サブメニューもあるなら再帰で

299 :デフォルトの名無しさん:2009/06/24(水) 22:09:00
NOTFYICONなどWindowsやIEのバージョンによって
サイズが異なる構造体を扱う場合、

実行時に環境を調べて対応する構造体のサイズを
メンバに代入しなきゃいけないですよね

結構面倒なんですが、楽な方法はないですか

300 :デフォルトの名無しさん:2009/06/24(水) 22:12:31
動作する環境制限すりゃいいじゃん

301 :デフォルトの名無しさん:2009/06/24(水) 22:17:16
CCSIZEOF_STRUCT使えよ

302 :デフォルトの名無しさん:2009/06/24(水) 22:23:28
>>299
XP と Vista で構造体サイズが異なる場合、
XP用の構造体使って、XP のサイズで指定しておけば、
Vista であっても XP の仕様範囲内で動作するでしょ

303 :デフォルトの名無しさん:2009/06/24(水) 22:32:26
>>299
何のために構造体に自分自身のサイズを代入するなんて、無駄なことしてると思ってるんだよ。
その手のAPIは、そのサイズを見てバージョンを判断してるんだ。

304 :デフォルトの名無しさん:2009/06/24(水) 22:38:21
>>301
それは調べてる最中にみつけました
便利ですよね

>>302 >>303
いやそれはわかってます

まぁ要するに過去バージョンに対応するのが面倒だというだけです

現実的には>>300さんの言うとおり
XP以降対応とかにしてお茶を濁しておくのが楽なんですかね

ありがとうございました

305 :デフォルトの名無しさん:2009/06/25(木) 03:08:41


WINVERを望みの値にして、xxx.cbSize = sizeof xxx; で済む話では?

306 :デフォルトの名無しさん:2009/06/25(木) 03:10:07
>>305
あほ

307 :デフォルトの名無しさん:2009/06/25(木) 05:25:22
HANDLE hThread[3];
Data data = { ... };
hThread[0] = (HANDLE)::_beginthread(func1, 0, &data);
hThread[1] = (HANDLE)::_beginthread(func2, 0, &data);
hThread[2] = (HANDLE)::_beginthread(func3, 0, &data);
::WaitForMultipleObjects(3, hThread, TRUE, INFINITE);
::CloseHandle(hThread[0]);
::CloseHandle(hThread[1]);
::CloseHandle(hThread[2]);

7行目のコードの実行で
hoge.exe の 0x7c94e4ff で初回の例外が発生しました: 0xC0000008: An invalid handle was specified
というエラーが出ます。
どうすればいいのでしょうか?

308 :デフォルトの名無しさん:2009/06/25(木) 06:23:27
>>307
スレ違い。ヘルプを読み直せ。

309 :デフォルトの名無しさん:2009/06/25(木) 07:35:16
戻り値がハンドルなのはEX版のみでは?

310 :デフォルトの名無しさん:2009/06/25(木) 09:20:02
>>308
WinAPIの範疇だと思ったんですが、どのスレが適切だったのでしょうか?

>>309
非ex版はスレッドが終わるのが速すぎると有効なハンドルを返さないんですね。
ex版にしたらエラーでなくなりました。

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

311 :デフォルトの名無しさん:2009/06/25(木) 12:14:33
_beginthreadのどこがAPIなんだ

312 :デフォルトの名無しさん:2009/06/25(木) 13:37:28
apiだろ

313 :デフォルトの名無しさん:2009/06/25(木) 16:10:33
ランタイムのスレッド依存部の初期化とか そういう周辺の面倒を見たあと
Win32API の CreateThread 呼んでるからな

VCの ほぼ生APIと同じ機能の独自ライブラリ って認識だわ
他の開発環境(例えば VB とか)からは呼び出せないので 厳密にはAPIとは呼べない代物じゃない?

314 :デフォルトの名無しさん:2009/06/25(木) 16:14:38
POSIXとかへも可搬性あってAPIよりも抽象レベルが上だからAPIという感じではないな

315 :デフォルトの名無しさん:2009/06/25(木) 23:55:41
APIAPIうるせぇよ

316 :デフォルトの名無しさん:2009/06/26(金) 00:01:38
OPIOPI

317 :デフォルトの名無しさん:2009/06/26(金) 01:59:57
OPPAIならみんな幸せ

318 :デフォルトの名無しさん:2009/06/26(金) 16:58:01
非同期ソケット通信でWSAAsyncSelectのFD_CONNECTの時にメッセージを受け取らずに
自分のスレッドで接続したかどうかを識別する方法を教えてください


319 :デフォルトの名無しさん:2009/06/26(金) 20:10:15
>>318
WSAAsyncSelectのSeeAlsoに、
WSAEventSelectとかselectとか書いてあるんだけどなあ。
.NETとかあるんだし、もう無理しないほうが良いよ?

320 :デフォルトの名無しさん:2009/06/27(土) 20:29:15
プロパティシートって閉じる時
貼付けたダイアログにWM_CLOSE通知しない?
DESTROYは来るけどCLOSEが欲しい

321 :デフォルトの名無しさん:2009/06/27(土) 22:08:06
SYSPROCはどこに書けばいいの?

322 :デフォルトの名無しさん:2009/06/28(日) 04:22:03
CString str ; //atlです

Readfile(hFile, str.GetBuffer(dwSize). .....)

みたいな感じでテキストファイルを読み込もうとしたんですけど
化け化けになってしまいました
こういうやり方では無理ですか?

323 :デフォルトの名無しさん:2009/06/28(日) 04:59:55
文字コード合ってんのかよ

324 :デフォルトの名無しさん:2009/06/28(日) 05:46:56
すみません
VCで新規作成保存したテキストは
UNICODEで保存されるものとばかり思ってました><

325 :デフォルトの名無しさん:2009/06/28(日) 12:39:05
ShellExecuteをフック?して開いたファイルを知る方法ないですか?

自前で最近使ったファイルを実装したり
関連フォルダを自動で開いたりという
ユーティリティが作れたら便利かなと思ったので。

326 :デフォルトの名無しさん:2009/06/28(日) 12:43:35
Vista では Deprecate らしいが、IShellExecuteHook というそのものがあるな。

327 :デフォルトの名無しさん:2009/06/28(日) 12:48:07
ありがとうございます。
そのままだったのか…

328 :デフォルトの名無しさん:2009/06/28(日) 14:23:17
                      ヘ(^o^)ヘ 場所は決めてるの
                         |∧  
                     /  /
                 (^o^)/ 告白するなら
                /(  )   
       (^o^) 三  / / >
 \     (\\ 三
 (/o^)  < \ 三 あの坂の上
 ( /
 / く  上り切るまでだよ!





329 :デフォルトの名無しさん:2009/06/28(日) 15:39:40

:::::::::::::::男 は こ            {::::::{
:::::::::::::::坂 て の      _ ,−v   、::::::、
::::::::::::::::を し       _/rァ  ̄ヽn  ヽ::::::ヽ
::::::::::::::::よ な     -こヽ__)ヽ へフ -‐':::::::::::}
::::::::::::::::::  く   /::::::://, 7′:::::::::::::::::::::/
::::_n_  遠   、:::::::::ー' //-‐  ば の よ オ
:::`ニl lニ  い   ヽ::::://\   か ぼ う  レ
::::`フ \:::::::::ヽ __ ノ:::ー':::::::::::::ヽ  り  り や は
/'´|_|`ニ_::::::::::::::::::::::::::::::::::::::::::::::l  だ は く
:::::::ノ'r三7/::::::::::::::::::::::::::::::::::::::::::::::} か じ
::::::::`フ, 匸/l::::::::::::::::::::::::::::::::::::::::::::/  ら め
:::::: ̄´::: ̄´:::::::::::::::::::::::::::::::::::::::/   な  た

330 :デフォルトの名無しさん:2009/06/28(日) 17:03:31
初めまして。一つ質問させてください。
今、ローカルのコンピュータ名を設定する為に
「SetComputerNameEx」を使用しようとしています。

準備として、以下の通り書いたのですが、見つからないと
言われてしまい、Windbase.hの中身を覗いてみたら
「SetComputerNameEx」の宣言がありませんでした。

#define _WIN32_WINNT 0x0500
#include <windows.h>

これは、どこかでヘッダとライブラリのアップデート版を
入手する必要があるのでしょうか?

環境は、winXP+SP3・VC6.0+SP6です。
すみません、宜しくお願い致します。


331 :デフォルトの名無しさん:2009/06/28(日) 17:07:09
ないならないで、GetProcAddress() すればいいじゃん。

332 :デフォルトの名無しさん:2009/06/28(日) 17:12:44
>>330
> これは、どこかでヘッダとライブラリのアップデート版を
> 入手する必要があるのでしょうか?

当然。
というかそんなこと知らずに今時VC6使うってどうなのよ。

333 :330:2009/06/28(日) 17:22:13
確かにその通りです。本当にすみません。

どこからダウンロードするべきなのか
教えて貰えますでしょうか。

宜しくお願い致します。

334 :デフォルトの名無しさん:2009/06/28(日) 17:26:01
君は大人しく最新のVSを買った方がいい。
時間も手間も金で買える。

335 :デフォルトの名無しさん:2009/06/28(日) 17:27:32
わからないからって、そんなレスつけるとは…

336 :330:2009/06/28(日) 17:30:04
すみません、本当に無知な物で。。。
申し訳ないです。

と言う事は、基本的には有償となるのでしょうか?


337 :デフォルトの名無しさん:2009/06/28(日) 17:32:42
プラットフォームSDKはダウンロードしてみた?
最新のコンパイラだってEEがあるんだから何でも試してみては

338 :デフォルトの名無しさん:2009/06/28(日) 17:33:37
platform sdkでググルといいよ
只、VC6に使えるかは分からないけど
俺もVC6使ってたけど、今はVC++2008にしてる。勿論無料の

339 :デフォルトの名無しさん:2009/06/28(日) 17:42:37
ググれば VC6 で使える Platform SDK ってのが見つかる。

340 :デフォルトの名無しさん:2009/06/28(日) 18:06:53
ググる前にまずこのスレのテンプレを見るべきじゃないかな?

341 :デフォルトの名無しさん:2009/06/28(日) 18:50:41
物じゃない、者だろ

342 :デフォルトの名無しさん:2009/06/28(日) 18:59:19
レスを書き込んでいるのが生物とは限らないぜ。

343 :デフォルトの名無しさん:2009/06/28(日) 19:16:52
SYSPROCはどこに書けばいいの?

344 :デフォルトの名無しさん:2009/06/28(日) 19:27:21
↑のように、な。

345 :デフォルトの名無しさん:2009/06/29(月) 00:11:44
>>342-344
ワロタw

346 :デフォルトの名無しさん:2009/06/29(月) 15:31:03
GetSaveFilenameを使ってファイルを保存する際に、
ファイルの種類のところが今何をさしているか取得する方法って
ありますでしょうか?
選択された情報を使ってファイルの保存内容を変更したいです。

347 :デフォルトの名無しさん:2009/06/29(月) 15:45:18
↑のように、な。

348 :デフォルトの名無しさん:2009/06/29(月) 15:46:00
>>342-344
ワロタw

349 :デフォルトの名無しさん:2009/06/29(月) 16:35:39
リッチテキストボックスに画像を貼り付けることは可能ですか?

350 :デフォルトの名無しさん:2009/06/29(月) 16:39:20
346自己解決
nFilterIndex使えばわかりました。
もっといろんな条件で探すように気をつけます

351 :デフォルトの名無しさん:2009/06/29(月) 17:35:51
非同期ソケット通信でWSAAsyncSelectのFD_CONNECTの時にメッセージを受け取らずに
自分のスレッドで接続したかどうかを識別する方法を教えてください


352 :デフォルトの名無しさん:2009/06/29(月) 17:49:30
イベントかブロッキングにしとけば?

353 :330:2009/06/29(月) 18:37:20
無事、PSDKを入れる事で対応できました。
調べて見たら、これを入れるのは当たり前の事だったみたいですね…。

本当に無知でした。ありがとうございました。
それでは。

354 :デフォルトの名無しさん:2009/06/29(月) 19:48:34
なんでその程度も知らん初心者がVC6なんて使ってるんだ?

オクかP2Pで入手したとしか思えん

355 :デフォルトの名無しさん:2009/06/29(月) 20:07:05
どうやって入手したかなんてどうでもいいじゃん

356 :デフォルトの名無しさん:2009/06/29(月) 20:07:49
倉庫の奥にあったVC6がジャンク値で売られていたのかもしれないし、
中古ソフト屋で手に入れたかもしれないだろ。

357 :デフォルトの名無しさん:2009/06/29(月) 20:10:05
それ以前に、もうみんな著作権だのライセンスだのという話にうんざりしてるんだよ。
ソフトが盗まれて大変という気持ちより、欲深く意地汚いという印象しか受けない。

358 :デフォルトの名無しさん:2009/06/29(月) 20:26:11
C++ win32apiでショートカットファイル(.lnk)のリンク先アドレスを取得したいと思います。
いろいろ調べてみましたが、見つけることはできませんでした。
ご存知の方が、いましたら教えていただけないでしょうか?


359 :デフォルトの名無しさん:2009/06/29(月) 20:44:16
ショートカット IShellLinkでググルといいよ
それと調べればすぐに引っかかる内容
検索があまいよ

360 :デフォルトの名無しさん:2009/06/29(月) 21:33:47
>>357
どこのみなさんか知らないが、
そんな事言われてもドザ板ソフ板あたりのキチガイ割れ厨の戯言と同じ印象しか受けないよ。

361 :デフォルトの名無しさん:2009/06/29(月) 21:36:09
>>360
反抗したいお年頃だという印象しか受けないよ。

362 :358:2009/06/29(月) 21:53:10
>>359
返信、ありがとうございます。
解決できそうです(^^

363 :デフォルトの名無しさん:2009/06/29(月) 21:54:38
とりあえず>>357>>361が割れ厨という事は分かった

364 :デフォルトの名無しさん:2009/06/29(月) 22:04:33
>>357みたいな思考の奴は絶対プログラマじゃないね。
どうせ何も作れない糞餓鬼でしょ。

365 :デフォルトの名無しさん:2009/06/29(月) 22:05:46
>>364
プログラミングを商売にしていないプログラマなんてわんさかいる。
楽しいことができればそれでいいって連中がな。

366 :デフォルトの名無しさん:2009/06/29(月) 22:10:26
いや、むしろプログラミングを商売にできない(=能力が無い)プログラマでしょ

367 :デフォルトの名無しさん:2009/06/29(月) 22:16:05
著作権云々なんて科学の本質でもなければプログラミングとも関係がない。
そんな議論に時間をつぶしている暇があったら一秒でもプログラミングなり研究なりやりたいわけなんだよ。
俺の仕事を他人の手柄にされるのは我慢ならないし、
割れ厨が金を払わないということはソフトやソフトを作った俺に敬意を払っていないということだから不愉快だから、
割れ厨の肩を持つわけではない。
ただ、著作権云々でゴネてる奴は金にしか興味がないプログラマの本当の敵なんじゃね?ってことだ。

それ以前に金儲けに興味があるならわざわざプログラマなんかになりたいと思うわけがないだろ。
プログラマを使う側にいる方がよっぽど儲かる。
金儲けに興味がある現役プログラマは、そうならざるを得なかった奴だけなんだよ。

368 :デフォルトの名無しさん:2009/06/29(月) 22:17:53
科学の本質てw

久々に厨房臭がプンプンする文章を見た

369 :デフォルトの名無しさん:2009/06/29(月) 22:19:14
>>368
要するにお前は、

> 金儲けに興味がある現役プログラマは、そうならざるを得なかった奴
↑これなんだろ。

370 :デフォルトの名無しさん:2009/06/29(月) 22:19:21
>>367がどんなプログラムを書いているのか興味がある。

371 :デフォルトの名無しさん:2009/06/29(月) 22:20:20
一秒でもプログラミングなり研究なりやりたい奴が2chでキモイ長文書いてるのかw

372 :デフォルトの名無しさん:2009/06/29(月) 22:22:23
とりあえず、科学の本質を追求したプログラムを見せて貰おうではないか。

373 :デフォルトの名無しさん:2009/06/29(月) 22:23:32
>>367
> 俺の仕事を他人の手柄にされるのは我慢ならないし、
> 割れ厨が金を払わないということはソフトやソフトを作った俺に敬意を払っていないということだから不愉快
それはプログラミング好きには共通ですね。
著作権やらライセンスの話になると殺気立つ人がいるのはどうもこの辺りが心配だからでしょうねぇ。

374 :デフォルトの名無しさん:2009/06/29(月) 22:26:33
お前ら「文章の意図をくむ」ってことを国語の時間に習わなかったのか?

375 :デフォルトの名無しさん:2009/06/29(月) 22:26:58
べつに著作権やライセンスの話になってないし、殺気立ってる人も居ないじゃん?


幻覚が見える人は大変ですね。

376 :デフォルトの名無しさん:2009/06/29(月) 22:29:20
>>374
「産む機械だ」発言みたいに言葉面だけをとらえて大騒ぎしちゃうDQNと同じだよなw

377 :デフォルトの名無しさん:2009/06/29(月) 22:30:50
>>374
電波文の意図を汲むことまでは習わなかったもんでね・・・

378 :デフォルトの名無しさん:2009/06/29(月) 22:34:46
糞餓鬼が必死に背伸びして書いた支離滅裂な文章からどんな意図をくむんだよw

379 :デフォルトの名無しさん:2009/06/29(月) 22:38:14
>>378
お前国語の成績1だっただろ?

380 :デフォルトの名無しさん:2009/06/29(月) 22:38:59
>>378
俺にはわかるぞ

381 :デフォルトの名無しさん:2009/06/29(月) 22:40:58
必死だな

382 :デフォルトの名無しさん:2009/06/29(月) 22:42:00
>>377=>>378
DQN乙w

まあ、著作権の話はスレ違いだ


383 :デフォルトの名無しさん:2009/06/29(月) 22:43:13
必死で書いた長文を馬鹿にされてよほど悔しいんだな

384 :デフォルトの名無しさん:2009/06/29(月) 22:44:20
VS6のWAREZでプツンときちゃう奴がいるとはなぁ
俺は金払ったのに金払わないで同じソフト使ってる奴がいるのは許せないって?w
これだからガキはw

385 :デフォルトの名無しさん:2009/06/29(月) 22:45:23
>>384
そんな奴いないよ?
まだ幻覚が見えてるの?

386 :デフォルトの名無しさん:2009/06/29(月) 22:46:17
自分と社会が対等で、何もかも平等でなくちゃ許せないんだよね、こういうガキは。
そのうち成長すれば学習するだろうよ。

387 :デフォルトの名無しさん:2009/06/29(月) 22:50:53
幻覚というか、単なる自意識過剰でしょ

パトカーのサイレンが聞こえるだけでビクビクしてるようなものか

388 :デフォルトの名無しさん:2009/06/29(月) 22:51:05
>>368

>>370 >>371 >>372
言葉面に反応しているあたり、どう見ても余裕ある発言に見えません。
きっとどこかの琴線に触れちゃったんだろうね。

389 :デフォルトの名無しさん:2009/06/29(月) 22:53:20
言葉面に反応するのが2ちゃんだろがw

390 :デフォルトの名無しさん:2009/06/29(月) 23:04:39
>>389
書き込み一文だけからは何が言いたいかわからないことが多い。
だからいろいろ遠回りに探りを入れて反応を見てみるということをするわけだ。
それがコミュニケーション能力と違うかな。

391 :デフォルトの名無しさん:2009/06/29(月) 23:16:18
>>390
お前は半年ロムってろ
2chを何も知らん厨房が


392 :デフォルトの名無しさん:2009/06/29(月) 23:19:37
>>391
いや、お前も一緒にROMってろw

393 :デフォルトの名無しさん:2009/06/29(月) 23:20:31
もうだめだこのスレ

394 :デフォルトの名無しさん:2009/06/29(月) 23:26:40
とりあえず、スレ違い

395 :デフォルトの名無しさん:2009/06/29(月) 23:58:29
>>366
>>384
言ってもいないことを決めつける場合って、自分が置かれている状況をそのまま相手に重ねて考える場合が多い気がするね。
人は自分が置かれている状況に一番興味を持っているわけだから。

396 :デフォルトの名無しさん:2009/06/29(月) 23:59:15
>>395
深い言葉ですな
感服しました

397 :デフォルトの名無しさん:2009/06/30(火) 05:40:32
買って堂々と使うか、割れて黙ってるかの、どちらかで頼む

398 :デフォルトの名無しさん:2009/06/30(火) 06:04:02
というか>>354の要らん邪推が原因なのになんでこんなに引っ張ってるんだ

399 :デフォルトの名無しさん:2009/06/30(火) 06:58:22
図星だから

400 :デフォルトの名無しさん:2009/06/30(火) 10:13:34
非同期ソケット通信でWSAAsyncSelectのFD_CONNECTの時にメッセージを受け取らずに
自分のスレッドで接続したかどうかを識別する方法を教えてください


401 :デフォルトの名無しさん:2009/06/30(火) 10:24:31
selectで書き込み可能か調べてみたら?

402 :デフォルトの名無しさん:2009/06/30(火) 10:44:31
selectで調べてみたのですが、connect後にサーバーがacceptしたかどうかの判定ができませんでしたが
どうやってselectで判定したらいいですか?

403 :デフォルトの名無しさん:2009/06/30(火) 11:31:37
accept自体はサーバの内部状態が変わるだけでクライアントには何も伝わらないから無理
サーバがacceptするよりも前に接続は確立しconnectは完了、データの送信が可能になってselectは書き込み可能を返す

http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-3.html#ss3.3
> 3.3 なぜ、サーバが accept() する前に connect() が成功するのですか?

404 :デフォルトの名無しさん:2009/06/30(火) 11:35:58
2週間同じ質問してるけどさあ
そろそろ答えられる奴がいないんだと悟ろうぜ

405 :デフォルトの名無しさん:2009/06/30(火) 12:42:11
HTTP/1.1 200 OK ACK

とか数文字送るのにいちいち関数呼ぶやつって…

406 :デフォルトの名無しさん:2009/06/30(火) 13:00:02
>>403
WSAAsyncSelectでFD_CONNECTをしとくとクライアントはacceptを認識してるから
何か知るすべがあるとおもったのですが・・・
フォームにメッセージを送らずにスレッド内で認識するにはやっぱ2を使わないとダメなんですかねこれ

407 :デフォルトの名無しさん:2009/06/30(火) 13:08:59
>>405
C言語ってそんなくだらないこと気にしないと速度維持できないんですね
うんこ言語ですね

408 :デフォルトの名無しさん:2009/06/30(火) 13:30:38
他は気にしてもしなくても維持できてない言語だらけ

409 :デフォルトの名無しさん:2009/06/30(火) 13:33:08
>>408
caml

410 :デフォルトの名無しさん:2009/06/30(火) 14:07:02
#define DLL_EXPORT extern "C" __declspec(dllexport)

DLL_EXPORT CALLBACK BOOL dllFunc( );

と定義して、GetProcAddressを用いてdllFuncを取得していますが
VC++2008だと、ビルドエラーが発生します
CALLBACKを外すと、問題なくビルドが行えますが
それだとGetProcAddressでは取得に失敗します
この場合、VC++2008ではdefファイルを使わないと行けないでしょうか?
bccでは問題なくビルド出来、GetProcAddressでも取得出来ています

411 :デフォルトの名無しさん:2009/06/30(火) 14:07:52
VCってうんこだからねえ

412 :デフォルトの名無しさん:2009/06/30(火) 14:11:20
>>410
CALLBACK の場所がまずくね?

DLL_EXPORT BOOL CALLBACK dllFunc( );

413 :デフォルトの名無しさん:2009/06/30(火) 14:26:16
>>412
有難うございます
CALLBACKの場所を仰る通りに変えてみたらビルドに成功しました!

只…出来上がったDLLからGetProcAddressしても取得に失敗し
LoadLibraryからDLLを読込んでもDllMainでのアタッチが来ません
VCからDLL作る場合何か必要な作法ってあるんでしょうか?
もしかして必ずdefが必要とか?
極力一つのIDEでアプリを完成させたいのですが、このままだとDLLだけBCC版になりそうです

414 :デフォルトの名無しさん:2009/06/30(火) 14:36:09
普通は、def定義したほうが面倒がなくて楽だけどな
それ以外だとマングルされた気がする。

415 :デフォルトの名無しさん:2009/06/30(火) 14:58:56
>>409
camlでは関数はただのjmpでしかないからな。
Cの関数はいろいろpushしたりpopしたりeaxにmovしたりするから手間がかかる。

416 :デフォルトの名無しさん:2009/06/30(火) 15:00:01
exe, dll, defと配置するのがちょっと嫌なんです
defで関数名見られたりとか…まあ、dllからdef取られちゃいますけど

417 :デフォルトの名無しさん:2009/06/30(火) 15:02:52
>>416
普通はexeの中にも関数名とかは残ったままだぞ。
そういう余計なデバッグ情報を消せるツールは存在するが。

418 :デフォルトの名無しさん:2009/06/30(火) 15:13:17
リリースビルドすりゃexeに関数名は残らないと思うんだが・・・

419 :デフォルトの名無しさん:2009/06/30(火) 15:26:38
defを置いても、やはりVC版のDLLをGetProcAddressから取れないです…
原因が不明…
それとアタッチされない問題ですが
DllMainではなくDllEntryPointと定義してた為アタッチされませんでした
DllMainに直したところアタッチはされています。しかし、どちらでもビルド出来るのが不思議です

420 :デフォルトの名無しさん:2009/06/30(火) 15:36:34
>>418
VCのリリースビルドでも関数名は残るぞ。
試しにVCでリリースビルドしたexeをollydbgとかで見てみろよ。

421 :デフォルトの名無しさん:2009/06/30(火) 15:40:36
Exeの中の関数名ってことなら、設定次第だと思うのだが

422 :デフォルトの名無しさん:2009/06/30(火) 15:48:02
>>420
普通の関数名と間違ってたわ、すまん
API呼んだ時は残るんだな

423 :デフォルトの名無しさん:2009/06/30(火) 16:02:25
>>416
>exe, dll, defと配置するのがちょっと嫌なんです
defファイルの役割をなんか勘違いしてないか
dllの作成時に必要なものであって、実行時には要らないよ

424 :デフォルトの名無しさん:2009/06/30(火) 16:04:26
黙れっ!

425 :デフォルトの名無しさん:2009/06/30(火) 16:19:38
とりあえず、Dependency Walkerでちゃんとエクスポートされているか確認するんだ。

426 :デフォルトの名無しさん:2009/06/30(火) 16:28:22
>>405

その手のライブラリは
ソケットから文字列読み書きするだけじゃなくて
エラー処理とかしてくれるだろ。

427 :デフォルトの名無しさん:2009/06/30(火) 17:11:18
>>423
>defファイルの役割をなんか勘違いしてないか
>dllの作成時に必要なものであって、実行時には要らないよ
有難うございます。
以前フックするアプリを落としたらdefが同梱されて居たため
実行時にも必要だと思っておりました
必要ないのですね;

>>425
有難うございます。確認してみます
もし、エクスポートされて居ない場合うまい対処法はありますか?
BCCでは問題ありませんが、VC++2008の場合defを用いても現状GetProcAddressに失敗します

428 :デフォルトの名無しさん:2009/06/30(火) 17:30:25
ビルドもちゃんとできねーやつは死ねよ

429 :デフォルトの名無しさん:2009/06/30(火) 17:32:47
お前がしねよゴミ

430 :デフォルトの名無しさん:2009/06/30(火) 17:35:51
>>427
dll内のシンボル名を抜き出せよ
bccで出来るならデフォルトの命名規則が違うだけだ
頭とか末尾になにかつくくらいだろ

431 :デフォルトの名無しさん:2009/06/30(火) 17:37:13
何で上からなんだよ

432 :デフォルトの名無しさん:2009/06/30(火) 17:37:35
Dependency Walker使えばそれもわかるべ。
まず使ってから質問しなおせ

433 :デフォルトの名無しさん:2009/06/30(火) 17:41:43
お前ごときに言われたくねー

434 :デフォルトの名無しさん:2009/06/30(火) 19:04:00
何度も申し訳ないです。dllの中身をdefで抜き出したところ
エクスポートはされていました
只、命名規則が違っていました

EXPORTS
dllFunc1 = _dllFunc1@0
dllFunc2 = _dllFunc2@0
bccでビルドしたのでは@1、@2と綺麗に並んでますが、今回の正直?です

435 :デフォルトの名無しさん:2009/06/30(火) 19:09:15
SYSPROCはどこに書けばいいの?

436 :デフォルトの名無しさん:2009/06/30(火) 19:30:59
>>434
@の後が引数のバイト数になったりする
@0 なら (void) で引数なし
@4 ならポインタとか int とかを一つだけ

437 :デフォルトの名無しさん:2009/06/30(火) 19:35:51
@の後ろって順序数じゃなかった?
@0が並んでたら、GetProcAddress( hins, (LPCSTR)0 )で取れなくない?

438 :デフォルトの名無しさん:2009/06/30(火) 19:41:50
>>437
それは関係ない
export されてない関数の命名規則なんて決まってない

439 :デフォルトの名無しさん:2009/06/30(火) 22:49:21
いい加減Dependency Walker使えよ

440 :デフォルトの名無しさん:2009/07/01(水) 01:44:50
わざとやってるとしか思えない

441 :デフォルトの名無しさん:2009/07/01(水) 09:42:38
コンソールみたいに
int型やdouble型の値を表示するのって
いちいち型を変換して
TextOutで出力するしかないのでしょうか?

442 :デフォルトの名無しさん:2009/07/01(水) 10:27:14
コンソールだっていちいち変換してるだろう
printfがやってくれてるなら、TextOutの前にsprintf呼んでそれ渡せばいいだけ

443 :デフォルトの名無しさん:2009/07/01(水) 10:36:35
どうしてwsprintfは浮動小数点を変換できないのだろうか

444 :デフォルトの名無しさん:2009/07/01(水) 10:43:51
仕様

445 :デフォルトの名無しさん:2009/07/01(水) 10:53:19
どうしてそのような仕様にしたのだろうか、っていう質問なんだけど

446 :デフォルトの名無しさん:2009/07/01(水) 10:56:22
wsprintfはAPI、なるべく軽くしたい、ランタイムのsprintfに任せたほうがようという設計思想だと思う

447 :デフォルトの名無しさん:2009/07/01(水) 11:02:23
それ以上はMS「に聞くしか

448 :デフォルトの名無しさん:2009/07/01(水) 11:35:34
まあ16bitの1.0のときからあるしなあ

449 :デフォルトの名無しさん:2009/07/01(水) 12:13:34
その昔16bit時代に一々CRT版のsprintfなんかリンクしたらメモリ足んねーよって頃に作られたものだからとしか。

450 :デフォルトの名無しさん:2009/07/01(水) 12:35:49
CRTを抜いて小さいWindows実行ファイル作成すると浮動小数点演算が使えない
みたいな記述を見たことあるけど、それと関係ある?
そもそもWindowsのカーネルとかその周りのものは一切浮動小数点処理しないって考えでいいのかな

451 :デフォルトの名無しさん:2009/07/01(水) 12:54:10
CRT無しでも問題なく浮動小数点演算は使える
とあるコンパイラがランタイムで定義される_fltusedや_ftol2_sseなどに依存するコードをはくだけの話

452 :デフォルトの名無しさん:2009/07/01(水) 12:56:36
double d = 1.23;
wsprintf(sz, "%d.%d", (int)d, (int)(d * 100) % 100);
MessageBox(NULL, sz, NULL, 0);

453 :450:2009/07/01(水) 12:59:29
>>451
なるほど

454 :デフォルトの名無しさん:2009/07/01(水) 14:53:27
_stprintf_s

455 :デフォルトの名無しさん:2009/07/01(水) 15:00:55
>>452
double d = 1.01;

456 :デフォルトの名無しさん:2009/07/01(水) 16:28:24
IEのオートコンプリート履歴を削除するプログラムを書きたいと思います。
win32apiで実現可能でしょうか?

457 :デフォルトの名無しさん:2009/07/01(水) 16:39:04
可能

458 :デフォルトの名無しさん:2009/07/01(水) 16:42:16
>>456
PStoreCreateInstanceで可能かも

459 :デフォルトの名無しさん:2009/07/01(水) 16:45:51
>>456


460 :456 :2009/07/01(水) 18:39:37
>>458
ありがとうございます。試してみます(><

461 :デフォルトの名無しさん:2009/07/01(水) 19:03:33
>>457>>459には挨拶無しかよ

462 :デフォルトの名無しさん:2009/07/01(水) 19:36:12
お礼してくれ厨かよw

463 :デフォルトの名無しさん:2009/07/01(水) 19:55:06
栗原いいぞ
あとは一発あれば文句ないぞ4番

464 :デフォルトの名無しさん:2009/07/01(水) 19:56:14
誤爆ですごめんなさい

465 :デフォルトの名無しさん:2009/07/01(水) 20:33:06
>>459
姉妹

466 :デフォルトの名無しさん:2009/07/01(水) 21:49:28
APIとprintfみたいなライブラリと
自分で作った関数ではどれが速い?

467 :デフォルトの名無しさん:2009/07/01(水) 21:53:47
>>450
MSKBにはFPUとかハードウェアが無くてもカーネルが全部エミュレートするから何も心配するなと書いている

468 :デフォルトの名無しさん:2009/07/01(水) 23:31:08
煮詰まってどうしようもなくなってきたので、質問させて下さい。

低レベルキーボードフックを使おうと、
_tWinMain(){
/* ウィンドウの初期化とか */
/* DirectXの初期化とか */

::SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, ::GetModuleHandle(NULL), 0);

/* メインループ */
}
という感じにしたら、なぜか、
ウィンドウが非アクティブの時にしか、コールバック関数が呼ばれません。

DirectXサンプルのSimpleSampleは、ちゃんと、
ウィンドウがアクティブ時でもコールバック関数が呼ばれてるから、
なんかくだらないヘマしてるだけだとは思うんですが、
他に何か気をつけないといけないことってありましたっけ?

環境:WinXP + VS2003 or VS2008

469 :デフォルトの名無しさん:2009/07/01(水) 23:41:21
全てをフックする場合、DLL化しないと駄目だよ

470 :デフォルトの名無しさん:2009/07/01(水) 23:57:04
>>469
アフォ

>>468
WH_KEYBOARD_LL のコールバックは特殊でSetWindowsHookExを呼び出したスレッドのメッセージループで発生する。
もちろんメインスレッドとは別スレッドでSetWindowsHookExは使えるけど、その場合そのスレッドでメッセージループを回す必要がある。
もしDirectXの描画をメインスレッドぶん回しでやっていれば、メッセージループが実行されない状態となりコールバックが呼ばれない状態に陥ることがある。
つーか、詳しくリファレンスに載っているだろ?

471 :468:2009/07/02(木) 02:05:59
>>469
>>470
早速の回答、ありがとうございます。

SetWindowsHookExの呼び出しと、メッセージループを同じスレッドに、
というのは、気をつけていたし、ちゃんとしていたつもりです。
(ていうか、全部メインスレッドでやってるはずです。

>DirectXの描画をメインスレッドぶん回しでやっていれば、メッセージループが実行されない状態
でも、これは気がつきませんでした。
たしかに、DirectXは関係ない普通のWinAPIでやったらちゃんといけました。

ttp://msdn.microsoft.com/ja-jp/library/bb219746(VS.85).aspx
これを見て、あまり深く考えずやってしまってました。
でも、DirectXの処理のループを別スレで回しても変わらなかった……。
むう、DXUTは、なんでちゃんといけてるんでしょ。
改めて、調べてきます(⊃Д⊂)

472 :デフォルトの名無しさん:2009/07/02(木) 10:56:43
double d = 1.01;
wsprintf(sz, "%d.%02d", (int)d, (int)(d * 100 + 0.5) % 100);
MessageBox(NULL, sz, NULL, 0);

473 :デフォルトの名無しさん:2009/07/02(木) 11:18:09
double d = -1.99;

474 :デフォルトの名無しさん:2009/07/02(木) 11:23:50
なかなか大変だね

475 :デフォルトの名無しさん:2009/07/02(木) 13:14:37
DrawStateでアイコンを描画する際、選択された時に若干青くなるアイコンを描画出来ますか?

476 :デフォルトの名無しさん:2009/07/02(木) 13:25:47
自前でアルファブレンドするしかないよ

477 :デフォルトの名無しさん:2009/07/02(木) 13:41:06
>>475
有難うございます
ListViewに貼り付けたりすれば勝手にやってくれますが
今回の場合は自前でやるしかないんですね

478 :デフォルトの名無しさん:2009/07/02(木) 13:41:48
間違えました
×>>475
>>476

479 :468:2009/07/02(木) 23:39:18
低レベルキーボードフックの件ですが、
とりあえずの原因が発覚したので報告まで。

DirectInputのキーボードオブジェクトの、
Acquire()が何かしらの邪魔をしていたようです。
これをコメントアウトして処理を止めたら、
低レベルキーボードフック関数が、ちゃんと呼ばれるようになりました。
ただ、なんでAcquireしたらダメなのかの理由まではまだわかっていません。
DirectInputも低レベル処理をしてるからなんでしょうか?
DirectInputとの併用って無理なんですかね?
そもそもGetKeyboardState使えってこと?

とりあえず、フルスクリーン時に窓キー無効化とかしたかっただけなので、
フルスクになる時だけDirectInputの協調レベルを変更して逃げてるところです。

480 :デフォルトの名無しさん:2009/07/03(金) 01:00:31
>>479
DirectInput使ってるなら、Windowsキーの無効化はDirectInputで出来るよ。

481 :デフォルトの名無しさん:2009/07/03(金) 02:56:33
ポップアップメニューを開いたとき、メニューを選ばないで別の場所のクリックしたときにある処理をしたいのですが
どのメッセージを見ればいいんですか?

482 :デフォルトの名無しさん:2009/07/03(金) 04:38:58
DirectInputでキーボード探るなと

483 :デフォルトの名無しさん:2009/07/03(金) 10:21:41
double d = 1.99;
wsprintf(sz, "%d.%02d", (int)d, abs(d * 100 + 0.5) % 100);
MessageBox(NULL, sz, NULL, 0);

484 :デフォルトの名無しさん:2009/07/03(金) 10:41:57
しつけー

485 :デフォルトの名無しさん:2009/07/03(金) 10:44:14
リージョンを複数作って、それぞれを指定した位置で改めてマージしたんだけど
どのようにすればいいでしょうか?
今は
htemp = CreateRectRgn( 100, 100, 0, 0, );
CombineRgn( htemp, htemp, hsrc, RGN_COPY );
とやってるんですが、RGN_COPYはx,y座標もコピーするんでしょうか?

486 :デフォルトの名無しさん:2009/07/03(金) 11:01:38
recvfromで第3引数の受信バイト数を実際に溜まってるデータ数より
小さい値にすると受信したデータ数じゃなくてSOCKET_ERRORが返ってきます。
これちゃんと受信したバイト数って返してくれないんですか?
受信バッファにはちゃんと受信した分のデータは入ってるのですが

487 :デフォルトの名無しさん:2009/07/03(金) 11:07:49
>>486
そのよーです

http://msdn.microsoft.com/en-us/library/ms740120(VS.85).aspx
> If the datagram or message is larger than the buffer specified,
> the buffer is filled with the first part of the datagram,
> and recvfrom generates the error WSAEMSGSIZE.

488 :デフォルトの名無しさん:2009/07/03(金) 11:16:04
>>487
ああありがとうございます・・
これエラーと区別つかないなあ
まあFD_READイベントの時にやってるからデータはあるはずなんだけど
絶対エラーじゃないって断言できないからなあ・・

489 :デフォルトの名無しさん:2009/07/03(金) 14:59:32
文字列"123\r\n456\r\n789\r\n"
とあったときにこれを\r\nで区切って
char buff[3][8];
buff[0]="123\r\n"
buff[1]="456\r\n"
buff[2]="789\r\n"
という具合にカッコよくコピーするAPIとかを教えてくださいな

490 :デフォルトの名無しさん:2009/07/03(金) 15:02:17
>>489
そりゃAPIじゃなく自分で書いた方が早いのでは・・・

491 :デフォルトの名無しさん:2009/07/03(金) 15:09:20
>>483
今更だけど、VarBstrFromR8でいいじゃない。

492 :デフォルトの名無しさん:2009/07/03(金) 15:09:44
>>490
とりあえず区切り文字で分割するみたいなのってないですかね?
phpのsplitみたいなのとか

493 :デフォルトの名無しさん:2009/07/03(金) 15:13:37
strtokとか?
しかしこれ非常に嫌われる関数

494 :デフォルトの名無しさん:2009/07/03(金) 15:16:03
環境ごとの文字列操作ライブラリでも利用すべきだと思うわ

495 :デフォルトの名無しさん:2009/07/03(金) 15:16:13
>>493
それ使おうと思ってやってみたけど使いづらいからやめた
先頭にいきなり区切りがあると次いっちゃったりするしそれ

496 :デフォルトの名無しさん:2009/07/03(金) 15:29:12
>>495
区切りがあったら次に行くのはあたりまえでしょ。
自分で書きなさいな。



497 :デフォルトの名無しさん:2009/07/03(金) 15:31:37
>>492
Win32APIにはそういうのないから、自分の使っているプログラミング言語のスレッドで何かないか聞いた方がいいと思う。

498 :デフォルトの名無しさん:2009/07/03(金) 15:37:48
>>496
全然わかってないのね。
区切りを発見したら区切りまでを返すでしょ。
先頭にある場合はNULLを返すのが普通。
strtokはNULLで終わるから使えないつってるの。
自分で見るならこんなの使う意味ないでしょ

>>497
自分の知る限りでは無かったからひょっとしたらあるかもしれないとおもって

499 :デフォルトの名無しさん:2009/07/03(金) 15:39:35
>>495
自分が昔、参考にした Dr. Dobb's の getargs() の code ↓
これの区切り文字を修正したらどうか。

h ttp://se.uwaterloo.ca/~dberry/COURSES/software.engr/goodies/getargs/GETARGS.C


500 :デフォルトの名無しさん:2009/07/03(金) 15:40:31
わかってないのはお前
でもまあこんな質問するくらいだからしょうがないか

501 :デフォルトの名無しさん:2009/07/03(金) 15:41:01
>>498
いや、先頭に区切りがあったら、区切りをNULに書き換えて、先頭へのポインタを返すべきだろ…

502 :デフォルトの名無しさん:2009/07/03(金) 15:41:56
NULLと'\0'を使いわけられないやつはバカ。

503 :デフォルトの名無しさん:2009/07/03(金) 15:42:52
前時代の言語は大変だなあ

504 :デフォルトの名無しさん:2009/07/03(金) 15:43:19
NULは文字 NULLはポインタ

505 :デフォルトの名無しさん:2009/07/03(金) 15:45:13
>>500
君はもうちょっと勉強したほうがいいよ
分からないことは恥じじゃないよ、わからないくせに知ったかするのが恥かしいことなんだから

506 :503:2009/07/03(金) 15:47:06
妙な知識に固まっちゃうのもアレだがねえ

507 :デフォルトの名無しさん:2009/07/03(金) 16:07:48
SYSPROCはどこに書けばいいの?


508 :デフォルトの名無しさん:2009/07/03(金) 16:31:11
>>501
そうじゃなかったのか
道理でバグが出たわけだ

509 :デフォルトの名無しさん:2009/07/03(金) 21:23:59
>>505
ひょっとしたらあるかもしれないと思って人に聞いてる程度で何言ってんだ

510 :デフォルトの名無しさん:2009/07/04(土) 00:05:25
はいはい終了終了

511 :デフォルトの名無しさん:2009/07/04(土) 02:41:29
>>505
君の方が恥ずかしいから黙ってね

512 :デフォルトの名無しさん:2009/07/04(土) 15:10:04
ツリービューを使ってるんだが
例えばWindowsXP付属のレジストリエディタなんかのツリーは
各ノードが開いたら開いたままで使いにくいと思う。
そこでスタイルにTVS_SINGLEEXPANDを指定してるんだが
+-を押すとんなもん関係ないとばかりに開いたままです。
これを統一する方法ないかな?

513 :デフォルトの名無しさん:2009/07/04(土) 18:41:47
むむ
RegexOptions^ Option = gcnew RegexOptions();
Option |= RegexOptions::CultureInvariant;
これでコンパイルエラーerror C2676が出てしまいました・・。




514 :デフォルトの名無しさん:2009/07/04(土) 18:44:51
ここはAPIスレでよお

515 :デフォルトの名無しさん:2009/07/04(土) 18:54:19
ULONG pixels[w][h]; // 色情報2次元配列

pixels[x][y]をx,y座標のピクセルの色として、配列全体を描画したいんですが、ループでSetPixelを回したら激遅でした
配列をそのままBitMapかなにかのように扱って画面に描画してくれるAPIはありませんか?

516 :デフォルトの名無しさん:2009/07/04(土) 18:58:45
DIBSection作って工夫すれ

517 :デフォルトの名無しさん:2009/07/04(土) 19:15:54
>>516
こういうのを探してました
サンクスです

518 :デフォルトの名無しさん:2009/07/05(日) 08:15:53
タブコントロールみたいに、選択されている状態によって表示される内容(ボタンやチェックボックスなど)が異なるダイアログを作りたいです。
タブコントロールだとダメなのは、一部のコントロールを共用したいからです。
ダイアログの半分ぐらいはどのタブが選択されていても不変な内容で、残りだけタブごとに変えたいということです。
こういう場合、どのようなプログラムを組んだらいいでしょうか。
なお、別にタブにこだわっているわけではなく、例えばプルダウンボックスで選択されたものによって表示内容が変わるものでもOKです。
よろしくお願いします。

519 :デフォルトの名無しさん:2009/07/05(日) 08:30:10
DIBすると描くのが遅い罠

520 :デフォルトの名無しさん:2009/07/05(日) 08:35:24
            />
            /rイ
          </'| |
          <\   | |        __ ピタ ゴラ スイッ チ♪
         ト、\ | |         || f|
         | ||\.>|_l        ||─┘ミ
         | || rー─────‐|L__on
         ̄   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄


521 :デフォルトの名無しさん:2009/07/05(日) 09:02:57
なんでヘクタールやねん

522 :デフォルトの名無しさん:2009/07/05(日) 10:21:14
>>518 共用したいものをタブコントロールの外に置け

523 :デフォルトの名無しさん:2009/07/05(日) 10:22:26
頭が固いよなあ

524 :518:2009/07/05(日) 11:28:18
すいません。
518でタブコントロールと書いていたのは、プロパティシートのことでした…
リソースエディタで書いたダイアログをウィンドウ内で切り替えながら表示したかったんです。
で、色々調べたらタブコントロールにダイアログを関連づけるサンプルが見つかったので、解決してしまいました。
お騒がせして申し訳ないです。

525 :デフォルトの名無しさん:2009/07/05(日) 17:32:16
ALTキーが押されたら、Winキーが押されたことにするプログラムを作りたくて、
--- DLL ------
SetWindowsHookEx(WH_KEYBOARD_LL, &LowLevelKeyboardProc, hInstance, 0);
...
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode == HC_ACTION) {
        KBDLLHOOKSTRUCT* kbd = reinterpret_cast<KBDLLHOOKSTRUCT*>(lParam);

        if (kbd->vkCode == VK_LMENU) {
            kbd->vkCode = VK_LWIN;
        }
    }

    return CallNextHookEx(hhk, nCode, wParam, lParam);
}
のようにしたのですが、まったく変換されません。
どうすれば目的の処理を達成できるのでしょうか?

526 :デフォルトの名無しさん:2009/07/05(日) 17:38:40
左右区別やめたら

527 :デフォルトの名無しさん:2009/07/05(日) 17:46:57
スタートメニューの表示を意図してるなら
Winキーは特殊だからそれだと無理かも

528 :デフォルトの名無しさん:2009/07/05(日) 17:57:41
>>525
そもそも書き換えってできるのか?

529 :デフォルトの名無しさん:2009/07/05(日) 18:01:11
WH_MOUSEHOOK_LLならキーコードに0代入で握り潰しは可能

530 :デフォルトの名無しさん:2009/07/05(日) 18:33:41
完璧に動作を実現したいならレジストリでマップ書き換えが一番

531 :デフォルトの名無しさん:2009/07/05(日) 18:45:10
>>528
できるだろ。Xkeymacs とかやってるし。

532 :528:2009/07/05(日) 18:54:01
>>525みたいに書き換えるんじゃなくて、SendInputとか使うんじゃないかと思ったお

533 :デフォルトの名無しさん:2009/07/05(日) 18:59:00
あ。そだな。握りつぶして SendInput/keydb_event だな。

534 :デフォルトの名無しさん:2009/07/05(日) 19:23:09
400x400、24bitのビットマップを読込んで
それを複数のDIBにコピーした場合に使用されるメモリは
ビットマップサイズとほぼ同じサイズですか?

535 :デフォルトの名無しさん:2009/07/05(日) 21:12:10
お前次第

536 :デフォルトの名無しさん:2009/07/06(月) 18:57:27
//INVERSEはビットの左右を反転する処理
c = INVERSE(a);
d = INVERSE(b);
e = c + d;
f = INVERSE(e);

このようにaとbからfを求める処理があるとき
INVERSEを無くしたり減らしたりはできるでしょうか

537 :デフォルトの名無しさん:2009/07/06(月) 19:05:31
APIと何の関係が?

538 :デフォルトの名無しさん:2009/07/06(月) 19:59:44
1バイトならテーブルが楽じゃね?
2バイト以上はソフトウェアでそのまま加算してしまっても速度変わらんかもな。
つーか、宿題レベルだなw

539 :デフォルトの名無しさん:2009/07/06(月) 20:00:16
http://pc12.2ch.net/test/read.cgi/tech/1226143920/123
のマルチ。
ほっておいてよし。

540 :デフォルトの名無しさん:2009/07/07(火) 01:42:02
すべてのサービスはログオンする前に実行されると思っていましたが、
自作のサービスがログオン後になってから実行されてしまうため、
ログオン時に来るメッセージSERVICE_CONTROL_SESSIONCHANGE
を捕まえることができず困っています。
どうすればユーザがログオンする以前、できればログオン画面から
サービスを実行させることが出来るのでしょうか?
現在のサービスはSERVICE_AUTO_STARTで自動実行するように
しています。

541 :デフォルトの名無しさん:2009/07/07(火) 01:52:25
>>540
サービスがアクティブになったとき、すでに有効なセッションを列挙して
ステータス調べて特別あつかいするとかじゃだめなの?

542 :デフォルトの名無しさん:2009/07/07(火) 07:56:52
システムアカウントでもそうなる?

543 :デフォルトの名無しさん:2009/07/07(火) 10:10:48
すべてのサービスはログオンする前に実行されると思っていました

まずこの時点で間違ってるから

544 :デフォルトの名無しさん:2009/07/07(火) 16:47:20
A 「ご老公様がこのような所に来られるはずがない」
B 「ご老公様の名を騙る不届き者だ」
C 「ご老公でも構わぬ」
D 「ご老公様、お手向かい致しますぞ」
E 「ご老公様、お命頂戴致します」
F 「ここで死ねばただのちりめん問屋」
G 「悪党らしく死に花を咲かせてくれるわ」
H 「飛んで火に入る夏の虫」
I 「我ら幕臣あってのご老公様ではないか」
J 「先の副将軍もこれで終わりぞ」
K 「もはやこれまで」
L 「笑止千万」       M その他

545 :デフォルトの名無しさん:2009/07/07(火) 17:43:14
「この紋所が目に入らなぬか」
「構わん、やっちまえ!」

546 :デフォルトの名無しさん:2009/07/07(火) 17:48:39
なぬかって言われてもな

547 :デフォルトの名無しさん:2009/07/07(火) 19:47:34
ココノカの森の魔女 ナノカ

548 :デフォルトの名無しさん:2009/07/07(火) 20:03:57
質問です
拡張子aviの動画ファイルを再生するために
『Win32API(C言語)編 第48章 動画を再生する』
http://www.geocities.jp/ky_webid/win32c/048.html
をほぼ模写する形でプログラムを組みました。

大抵のaviのコーディックは再生できることを確認したのですが
今回、再生したいデジカメなどで使用されるMotion JPEGについては
再生することができませんでした。

そこで、どなたかWin32APIとC++(Visual Studio)を用いてmotion jpegを再生するプログラムを
教えていただけないでしょうか?
よろしくお願いします。

549 :デフォルトの名無しさん:2009/07/07(火) 20:07:00
Codec 入れればいいと思うYo
とりあえずググって上位にあったページを貼っとくぜ
http://park2.wakwak.com/~kuma/picvideo.html

550 :デフォルトの名無しさん:2009/07/07(火) 20:27:03
>>549
すみません。質問が悪かったです。
Motion JPEGも含めすべてのAVIファイルはもうコーディックを入れていてWindows Media Playerなどで再生できます。
というより、他の拡張子はコーディックを入れることでWMPでもWIN32APIでも再生できるようになったのに対して
Motion JPEGはもともとWMPで再生可能だったのに、WIN32APIのプログラムからでは再生できません。
(VFWのコーディックにMotion JPEGは含まれています)

おそらくですが、『Win32API(C言語)編 第48章 動画を再生する』の
// AVIファイルをオープン
#ifdef USE_MCI_SEND_STRING
mciSendString( _T("open test.avi type avivideo alias test"), NULL, 0, NULL );

のmciSendStringでMotion JPEGが読み込めていないようなのです。
mciSendString以外を使ってMotion JPEGを読む込むか、mciSendStringになんとかMotion JPEGのライブラリを関連付けて
読み込めるようにするプログラムを作りたいのですが、上手くいきません。
モーションJPEGを拡張子変換するという手法はありますが、それはこちらの都合でNGとされてしまったので上記の方法
またはそれ以外でも良いので、Win32APIとC++(Visual Studio)を用いてmotion jpegを再生する方法をご教授ください。

551 :デフォルトの名無しさん:2009/07/07(火) 21:06:00
DirectShowでおk

552 :デフォルトの名無しさん:2009/07/08(水) 06:39:29
mixerGetDevCapsで所得したMIXERCAPSのszPnameは32byteしか確保して
なくてデバイス名をフルネームで所得する事が出来ないみたいなんですが
他にフルネームで所得出来る方法があるんでしょうか?

553 :デフォルトの名無しさん:2009/07/08(水) 19:01:10
一定時間後にシグナル状態になるイベントって作れないのでしょうか?
HANDLE a = CreateEvent(...)
WaitForSingleObject(a); // 一定時間経過後aがシグナル状態になり通過

554 :デフォルトの名無しさん:2009/07/08(水) 19:07:08
>>553
WaitableTimer

555 :デフォルトの名無しさん:2009/07/08(水) 19:16:01
>>554
ありがとうございますっ!!!!

556 :デフォルトの名無しさん:2009/07/08(水) 19:16:53
どういたしまして

557 :デフォルトの名無しさん:2009/07/08(水) 19:32:39
与えられたルートパスが、CD(DVD)ドライブなどのメディアドライブで、
そのドライブにメディアが存在するかを取得する方法を教えていただけないでしょうか?

GetDriveType()でドライブの種別はわかりますが、実際にメディアが挿入されているか
を識別することができません。


558 :デフォルトの名無しさん:2009/07/08(水) 19:37:58
GetFileAttributesで取れるが、ブランクメディアとかの識別は分からない

559 :デフォルトの名無しさん:2009/07/08(水) 20:16:54
子ウィンドウの描画なんですがDIBSection作って
子ウィンドウのウィンドウプロシージャのWM_PAINTの中で
BeginPaintした時のHDCでbitbltすると
子ウィンドウ作成時の最初描画されないのですがこれは普通ですか?
もちろんサイズ変えたりすれば描画されます

BeginPaintのHDCを使わずに
ウィンドウ作成時に取得したHDCを代わりに使うと問題ないです

560 :デフォルトの名無しさん:2009/07/08(水) 21:02:51
すみません>>559は勘違いでした
しかしDIBsectionって作った直後にすぐBitblitしたら駄目なんでしょうか?


561 :デフォルトの名無しさん:2009/07/08(水) 21:31:08
中身が設定されているなら別にかまわないよ。

子ウィンドウの CreateWindowして、ShowWindowしたあと、
全画面をInvalidateRectして、UpdateRectしてみるといいよ。
後、背景がNULLになってるかどうかも確認した方がいいよ。

562 :デフォルトの名無しさん:2009/07/08(水) 21:35:23
ウィンドウズ再起動の際、ENDSESSION送られてくるけど
ENDSESSIONを処理しきる前にウィンドウズが終了する場合ってあるよね?
たまにENDSESSIONの時にファイル保存しようとすると、真っ白なファイルが出来る

563 :デフォルトの名無しさん:2009/07/08(水) 22:08:02
>>561
あ、dibsection直後というよりはCreateWindow直後と言った方がよかったかもしれません
何かウィンドウが作られる前にbitbltしてる感じがしました
言われたこととか加えて色々ちょっと作り直してみます

564 :デフォルトの名無しさん:2009/07/08(水) 23:55:12
999 名前: ユキノシタ(青森県)[] 投稿日:2009/07/08(水) 22:19:03.34 ID:qqOQqhHw
1000なら嘘

565 :デフォルトの名無しさん:2009/07/09(木) 13:40:14
アクティブ(前面にない)WindowにたいしてPostMessageを使って
メッセージを送る事は出来ますか?

グローバルhookでdllがある特定のキーを所得した時に
最小化(通知トレイに格納)されているアプリにメッセージを
送りたいのですがアクティブでないと遅れないので困ってます

なにか方法があればよろしくです

566 :デフォルトの名無しさん:2009/07/09(木) 13:45:15
ハンドル取得できてんなら、ちゃんと届いている。
期待した通りに動かないのは別の問題だろ。

567 :デフォルトの名無しさん:2009/07/09(木) 16:15:52
SendMessage

568 :デフォルトの名無しさん:2009/07/09(木) 16:17:57
ハンドルを確認したところ
hWndのアドレスを最初にDLL側でコピーして保存してあるんですが
最小化した時だけNULLになってたみたいです
アクティブに戻すと元のアドレスに戻るんですが謎です・・・

569 :デフォルトの名無しさん:2009/07/09(木) 16:46:32
それはプロセスごとにアドレス空間が独立しているからでは?

570 :デフォルトの名無しさん:2009/07/09(木) 16:48:28
そのアドレス空間ってよくわからないんだけどいったい何者なの?

571 :デフォルトの名無しさん:2009/07/09(木) 17:01:41
プロセス内から見えるメモリ空間全体、つまりアドレス00000000〜FFFFFFFF全体のこと
例えば同じアドレス12345678でも、プロセスAのアドレス12345678とプロセスBのアドレス12345678は内容が異なる
これは、プロセスごとにOSがアドレス空間全体を切り替えているから
このため、異なるプロセス内のデータを触ることは(通常は)できない

572 :デフォルトの名無しさん:2009/07/09(木) 17:05:19
つまり名前空間のようなもんですね
プロセスってのはスレッドとかDLLのことですか?

573 :デフォルトの名無しさん:2009/07/09(木) 17:08:53
単に毎回ウィンドウ検索するだけで済むような話じゃないの

574 :デフォルトの名無しさん:2009/07/09(木) 17:11:46
API以前だわ。

575 :デフォルトの名無しさん:2009/07/09(木) 17:18:29
うんこしてきてもいいですか?

576 :デフォルトの名無しさん:2009/07/09(木) 17:34:46
がまんしろ

577 :デフォルトの名無しさん:2009/07/09(木) 17:40:03
そんな・・・も、漏れる・・・

578 :デフォルトの名無しさん:2009/07/09(木) 17:40:34
なれると気持ちいいよ

579 :デフォルトの名無しさん:2009/07/09(木) 18:30:32
>>572
プロセスはタスクマネージャで見れるよ

580 :デフォルトの名無しさん:2009/07/09(木) 19:36:49
>>578
わかるわかる

581 :デフォルトの名無しさん:2009/07/09(木) 20:13:24
             ゙'.     ,ト `i、  `i、    .、″
                |    .,.:/""  ゙‐,. `    /
             `  .,-''ヽ"`    ヽ,,,、   !
                、,、‐'゙l‐、      .丿 : ':、
               、/ヽヽ‐ヽ、;,,,,,,,,,-.ッ:''`  .,"-、
              ,r"ツぃ丶  ``````   ../  `i、
          ,.イ:、ヽ/ー`-、-ヽヽヽ、−´    .l゙`-、
         _,,l゙-:ヽ,;、、             、、丶  ゙i、,,、
        ,<_ l_ヽ冫`'`-、;,,,、、、、.............,,,,、.-`":    │ `i、
      、、::|、、、ヽ,、、.    ```: : : ```      、.、'`  .|丶、
     .l","ヽ、,"、,"'、ぃ、、,、、、、.、、、.、、、_、.,,.ヽ´    l゙  ゙).._
    ,、':゙l:、、`:ヽ、`:、  : `"```¬――'''"`゙^`     : ..、丶  .l゙ `ヽ
   ,i´.、ヽ".、".、"'ヽヽ;,:、........、           、、...,,,、−‘`   、‐   |゙゙:‐,
  ,.-l,i´.、".`ヽ,,,.".`   `゙゙'"`'-ー"``"``r-ー`'":      _.‐′  丿  ,!
 j".、'ヽ,".、".、"`''`ー、._、、、           、._,、..-‐:'''′   .、,:"  丿
 ゙l,"`"`''ヽヽ"`"`  ```゙'''"ヽ∠、、、、ぃ-`''''": `      、._./`  ._/`
  `'i`ヽヽヽ`''ーi、、、: :                   、.,-‐'`   、/`
   ``ヽン'`"`  : `~``―ヽ::,,,,,,,,,,.....................,,,,.ー'``^    ,、‐'"`
      `"'゙―-、,,,,..、、               : ..,、ー'"'`
           : `‘"`―---------‐ヽ``"''''''""

582 :デフォルトの名無しさん:2009/07/09(木) 21:03:59
なんというクソスレ

583 :デフォルトの名無しさん:2009/07/09(木) 23:45:33
win32APIで、チェックボックスとかのコントロールの背景を
変更する方法を教えて下さいorz


584 :デフォルトの名無しさん:2009/07/10(金) 00:24:42
オーナードロー

585 :デフォルトの名無しさん:2009/07/10(金) 06:27:17
結局どれで組むといいんですか
VC持ってるけど

586 :デフォルトの名無しさん:2009/07/10(金) 07:13:21
Wiiで組むのはさぞ難しかろう

587 :デフォルトの名無しさん:2009/07/10(金) 09:28:40
Windows Vistaにて、Win32APIで 指定のexeを既定のブラウザに設定する方法はありませんでしょうか?

どのようなシーンを想定しているかといいますと、
Firefox Portableにてオプションの「既定のブラウザ」にする設定だとfirefox本体が設定されてしまい、
Firefox Portableが起動していない場合、新規プロファイルで立ち上がってしまいます。
それを回避するために、proxy?となるexeファイル(FirefoxPortable.exe )がありまして、それを既定のブラウザに設定したいのです。

似たようなことを実現するソフトに、下記のソフトがあるのですが、こちらはAPIが違うせいか、Vistaに対応していません
[DefaultBrowser] Set the default browser for your user profile
http://windowsxp.mvps.org/defaultbrowser.htm

588 :デフォルトの名無しさん:2009/07/10(金) 14:21:12
プロパティシート見たいにタブでダイアログ内容を切り替えるってどうやるの?
何処かで画面に貼り付けてタブの切替の際に非表示にしてるってあったけど
やり方が良く分からない

589 :デフォルトの名無しさん:2009/07/10(金) 14:34:42
http://questionbox.jp.msn.com/qa3952931.html
http://bytes.com/topic/c/answers/678749-tab-control-win32-api


590 :デフォルトの名無しさん:2009/07/10(金) 16:57:07
定義済みクラスなんかの中にスクロールバー配置した場合に
スクロールのメッセージ取得するにはサブクラス化とかしてメッセージ捕まえないと駄目ですか?
他に方法ありますか?

591 :デフォルトの名無しさん:2009/07/10(金) 18:44:59
CreateWindowExで作ったツールバーにTB_ADDSTRINGで文字列を加えてるんだけど
この文字をボタンの中央に表示する方法あったら教えてください。

592 :デフォルトの名無しさん:2009/07/10(金) 19:02:33
>>590
yes

593 :デフォルトの名無しさん:2009/07/10(金) 19:03:36
>>591
"\x03hogehoge" だったかな

594 :591:2009/07/10(金) 19:25:41
>>593
それってTB_ADDSTRINGで指定する文字列って事ですよね?
試しにそれをコピペして実験しましたがダメでした。
もしかして文字の先頭に制御コードの何かが入るのでしょうか?

595 :デフォルトの名無しさん:2009/07/10(金) 19:39:07
lngStyle = GetWindowLong(hwnd, GWL_STYLE)
lngStyle = SetWindowLong(hwnd, GWL_STYLE, (lngStyle && ~BS_LEFT) || BS_CENTER)

596 :デフォルトの名無しさん:2009/07/10(金) 19:43:24
>>592
ありがとう

597 :デフォルトの名無しさん:2009/07/10(金) 19:50:39
>>589
ありがと

598 :594:2009/07/10(金) 19:51:51
>>595
ツールバー自体が表示されなくなりました。
無論hwndは適切な値に書き換えましたが...

599 :デフォルトの名無しさん:2009/07/10(金) 20:12:26
論理演算しちゃらめぇ〜!

600 :デフォルトの名無しさん:2009/07/10(金) 20:14:45
     lngStyle = GetWindowLong(hwnd, GWL_STYLE)
    lngStyle = SetWindowLong(hwnd, GWL_STYLE, (lngStyle && ~WS_LEFT) || WS_CENTER)

601 :デフォルトの名無しさん:2009/07/10(金) 20:57:35
論理演算(ry

602 :デフォルトの名無しさん:2009/07/10(金) 21:27:10
lngStyle = GetWindowLong(hwnd, GWL_STYLE)
lngStyle = SetWindowLong(hwnd, GWL_STYLE, (lngStyle & ~BS_LEFT) | BS_CENTER)

lngStyle = GetWindowLong(hwnd, GWL_STYLE)
lngStyle = SetWindowLong(hwnd, GWL_STYLE, (lngStyle & ~WS_LEFT) | WS_CENTER)

603 :デフォルトの名無しさん:2009/07/11(土) 14:03:13
現在、.NETアプリケーションでWebBrowserコントロールにおいて
フォルダのExplorer表示を出しています。そうすると必ずあの青色の
「タスクメニュー」が現れてきます。

通常のエクスプロ−ラだとそれをフォルダツリーに置き換えたり、
検索ツールに置き換えたりできました。

自分のアプリケーション上で、あのタスクメニューを消してしまうことは
できるでしょうか?できるようであればその方法を教えてほしく。

ちなみに、エクスプローラのオプションで「全般」タブ→「作業」のところ
で、「従来のWindowsフォルダを使う」を選ぶとタスクメニューはでなくは
なるのですが、そうすると、Xpでは「写真」表示ビューが使えなくなって
しまうので、「フォルダに共通の作業を表示する」の方で使いたいので
した。このオプションの状態で、プログラムから「タスクメニュー」を消す
方法がありましたら教えてください。

よろしくお願いします!


604 :デフォルトの名無しさん:2009/07/11(土) 14:22:39
最近はビット演算ってマイナーなのかな ビットフラグとか複数のフラグを1つの変数に格納できて便利なのに

605 :デフォルトの名無しさん:2009/07/11(土) 15:25:52
スレチだからな

606 :デフォルトの名無しさん:2009/07/11(土) 15:27:00
ビットフラグは使うよ。複数の値を一発で判定できて便利だし。

if (flag3==1 && flag2==0 && flag1==0 && flag0==1) {...}

とかより

if ((flag & 0x0F) == 0x09) {..}

のほうがわかりやすいじゃない。
…いや、もしかしてビット演算に不慣れだとわかりにくいのか??

607 :デフォルトの名無しさん:2009/07/11(土) 16:17:21
どっちにしても数字直接は使わんなあ

608 :デフォルトの名無しさん:2009/07/11(土) 16:49:45
漏れは、

if ((flag & 0x0F) == 0x09) {..}

とかより

if (flag3 && !flag2 && !flag && flag0) {...}

のほうがわかりやすい

609 :606:2009/07/11(土) 17:14:44
少なくとも8ビット以下の組み合わせは、16進数リテラルのほうが把握しやすいんだよ俺は!

まあ、異論は認めるw

610 :デフォルトの名無しさん:2009/07/11(土) 17:20:44
分かりやすかろうが分かりづらかろうがコード中にマジックナンバーを書く奴は死刑

611 :デフォルトの名無しさん:2009/07/11(土) 20:27:26
なんでビットフィールド使わんの?

612 :デフォルトの名無しさん:2009/07/11(土) 20:28:59
スレチだろうが

613 :デフォルトの名無しさん:2009/07/12(日) 00:56:00
ビットフィールドはどういう配置になるか想定できないのでAPIで使うのは好ましくないなぁ。
それを言ったら構造体も規格上はどう配置するか決まってるわけじゃないけど、
そこらへんは妥協ということで。


614 :デフォルトの名無しさん:2009/07/12(日) 01:16:02
bit fields 使うと結局 bit 演算がしにくくなるという罠

615 :デフォルトの名無しさん:2009/07/12(日) 11:37:38
グループボックス内にファイルドロップを受け付けるEDITを置いても
グループボックスのせいで、上手くDropを受け入れてくれないんだが
スマートな解決策無いかな?
今はグループボックスをサブクラス化して、グループボックスにD&D来たら
EDITに転送するようにしてるんだが、綺麗じゃない

616 :デフォルトの名無しさん:2009/07/12(日) 12:35:13
エディットコントロール内のカーソルの現在位置が何文字目か検出することはできますか?

617 :デフォルトの名無しさん:2009/07/12(日) 12:38:59
>>615
グループボックスとEDITの順番を入れ替えたら?

618 :デフォルトの名無しさん:2009/07/12(日) 12:42:19
>>616
EM_GETSEL

619 :デフォルトの名無しさん:2009/07/12(日) 14:34:12
>>617
マジ有難う!
てっきり後から置いた方が前面に来ると思ってたけど
先に置かないと駄目なのか

620 :デフォルトの名無しさん:2009/07/12(日) 16:18:45
ウィンドウのクラス化について書いてある参考書でお勧めのものってありますか?

621 :デフォルトの名無しさん:2009/07/12(日) 17:24:38
サービスに文字列を渡すことはできますか?
ControlServiceでは文字列ではなくてID(整数)しか渡せません

622 :デフォルトの名無しさん:2009/07/12(日) 17:43:31
>>621
名前付きパイプ・メールスロット・ソケットやCOMのようなプロセス間通信でやり取りするしかないはず。

623 :616:2009/07/12(日) 17:50:23
上手くいかない・・・
SendMessage( hWnd_edit, EM_GETSEL, 0, pos );
としたらposに現在カーソル位置までのバイト数が返って来るんじゃないんですか?

624 :デフォルトの名無しさん:2009/07/12(日) 18:09:37
>>623
その3行の書き込みをするよりも、ヘルプでEM_GETSELを調べる方が速いだろう。
VisualStudioなら、そこにカーソル合わせてF1押すだけなんだし。
それでも何が悪いのか分からないのなら、C言語の基礎の問題。

っていうか、EM_GETSELでググれば腐るほどサンプルコード出てくるだろう。

625 :デフォルトの名無しさん:2009/07/12(日) 20:08:08
GetMessageってどうやってHWNDを識別してるんですか?

626 :デフォルトの名無しさん:2009/07/12(日) 20:12:50
>>622
ありがとうございます
そうなんですね
ちょっと不便です..

627 :デフォルトの名無しさん:2009/07/12(日) 22:17:39
>>622
よく知らないけど Atom は渡せないの?

628 :デフォルトの名無しさん:2009/07/12(日) 22:36:31
そんなきもい物渡さないでください

629 :デフォルトの名無しさん:2009/07/12(日) 22:42:43
GetMessageってどうやってメッセージの送信先を特定してるんですか?
引数にもHINSTANCEもHWNDも入ってないですよね?

630 :デフォルトの名無しさん:2009/07/12(日) 22:45:00
スレッド毎にキューイングされてるメッセージってどっかに書いてなかったか

631 :デフォルトの名無しさん:2009/07/12(日) 23:00:52


632 :デフォルトの名無しさん:2009/07/12(日) 23:06:02
user32の中の人が頑張っている

633 :デフォルトの名無しさん:2009/07/12(日) 23:22:08
SDKで開発してるんですが、メモリリークしてるか分かるAPIって無いでしょうか?
リークしないようコードは組み、リーク確認用として、mallocやnewを置き換えるコードを用意しましたが
STLを使っているために、確保した数と解放した数があいません
STLを使わないと問題なく確保/解放数はあうのですが

634 :デフォルトの名無しさん:2009/07/12(日) 23:23:56
スマポイつかえばいいんじゃない?

635 :デフォルトの名無しさん:2009/07/13(月) 00:12:19
>>633

#include <cstdlib>
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#define new ::new( _NORMAL_BLOCK, __FILE__, __LINE__ )

_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );

636 :デフォルトの名無しさん:2009/07/13(月) 00:19:58
WPARAMとLPARAMのWとLって何の略なの?

637 :デフォルトの名無しさん:2009/07/13(月) 00:23:34
Word, Long

638 :デフォルトの名無しさん:2009/07/13(月) 02:15:03
Win16でサイズが異なっていた名残。

639 :デフォルトの名無しさん:2009/07/13(月) 02:22:52
>>632
想像したら何か萌えた

640 :デフォルトの名無しさん:2009/07/13(月) 05:32:59
user32の中の人ってCPUのことだろ

641 :デフォルトの名無しさん:2009/07/13(月) 09:55:58
違います

642 :デフォルトの名無しさん:2009/07/13(月) 13:56:07
DOS窓のrouteコマンドをAPIなどを使ってプログラムでやりたいのですが
それをやるAPIを教えてください

643 :デフォルトの名無しさん:2009/07/13(月) 14:10:27
CreateProcess

644 :デフォルトの名無しさん:2009/07/13(月) 14:13:53
ttp://www.geekpage.jp/programming/iphlpapi/
ttp://www.wmifun.net/sample/win32_ip4routetable.html

645 :デフォルトの名無しさん:2009/07/13(月) 14:19:09
>>643-644
ありがありがとう、早速見てみます

646 :デフォルトの名無しさん:2009/07/13(月) 14:47:34
>>643-644
すみません。
言い方が悪かったです。
route printとか情報取得はできるのですが
route add等の設定する方のAPIを知りたかったですです

647 :デフォルトの名無しさん:2009/07/13(月) 14:58:31
>>646
ttp://www.geekpage.jp/programming/iphlpapi/

648 :デフォルトの名無しさん:2009/07/13(月) 15:17:22
CreateProcess

649 :デフォルトの名無しさん:2009/07/13(月) 15:30:51
もういいです。レスしないで下さい。ウザいだけです。

650 :デフォルトの名無しさん:2009/07/13(月) 15:34:36
応用が利かないバカには何言っても無駄
APIが知りたいと書いてるが、そのものズバリのコードじゃないとわからんらしい。

651 :デフォルトの名無しさん:2009/07/13(月) 15:45:29
知らないならレスしないで下さい。ウザいだけです。

652 :デフォルトの名無しさん:2009/07/13(月) 16:17:26
acanfで複数受け取るにはどうするの?

653 :デフォルトの名無しさん:2009/07/13(月) 16:29:47
応用が利かないバカには何言っても無駄
acanfと書いてるが、そのものズバリのコードじゃないとわからんらしい。

654 :デフォルトの名無しさん:2009/07/13(月) 16:48:20
ツマンネ('A`)

655 :デフォルトの名無しさん:2009/07/13(月) 19:17:08
scanfで複数受け取るにはどうするの?
数字を

656 :デフォルトの名無しさん:2009/07/13(月) 20:24:34
応用が利かないバカには何言っても無駄
%1と書いてるが、そのものズバリのコードじゃないとわからんらしい。

657 :デフォルトの名無しさん:2009/07/13(月) 20:47:36
ツマンネ('A`)

658 :デフォルトの名無しさん:2009/07/13(月) 21:25:06
       |
   \  __  /
   _ (m) _ピコーン
      |ミ|
    /  `´  \
     ('A`)
     ノヽノヽ
       くく

659 :デフォルトの名無しさん:2009/07/13(月) 21:41:44
Win9x系のSetTimerは終わってるって本当?
9x系でも動くようコード組んでるんだけど、自分でスレッド作って
そこからタイマーイベント発行の方がいいかな?

660 :デフォルトの名無しさん:2009/07/13(月) 21:43:17
Win9x系そのものが終わってる。

661 :デフォルトの名無しさん:2009/07/13(月) 21:46:37
それをいっちゃあお終いよ

662 :デフォルトの名無しさん:2009/07/13(月) 21:57:16
耳年増が増えたなあ

663 :デフォルトの名無しさん:2009/07/13(月) 22:00:20
質問です。

zlibライブラリを使う場合、CreateThreadを使って生成した
スレッドで使うとメモリリーク起こすのでしょうか?


少しスレ違いになっているかもしれませんが宜しく御願いします。

664 :デフォルトの名無しさん:2009/07/13(月) 22:00:29
>>659
そんな気を遣うくらいだったらNTでもタイマーは使っていられないと思う。
そう心配することはないのでは?
終わっているなんて聞いたことがないから適当に答えているけど。

665 :デフォルトの名無しさん:2009/07/13(月) 22:04:41
>>664
有難う。環境が無いから確認出来ないんだよね
配布予定のソフトだけど、確認せずリリースしてみる

666 :デフォルトの名無しさん:2009/07/13(月) 22:10:59
>>659
終わってるじゃ何を聞きたいのか分からんよ。
WM_TIMERの優先度が低いのはWin9xに限ったことではないし、
どっちかっていうとtimeSetEventのコールバックの方が悲惨。

667 :デフォルトの名無しさん:2009/07/13(月) 22:46:32
>>663
そんなこたーない。

668 :デフォルトの名無しさん:2009/07/13(月) 22:53:24
>>663
zlib内でCの標準ライブラリを使うならリークは起こる

>C のランタイムライブラリに記録されている関数を使うスレッドは、CreateThread 関数と ExitThread 関数ではなく、
>C のランタイム関数である beginthread 関数と endthread 関数を使うべきです。この方法に従わないと、
>ExitThread 関数を呼び出したときにわずかなメモリリークが発生します。

>>103-107も参照のこと

669 :668:2009/07/13(月) 23:02:18
正確にはリークが起こる可能性がある、かな
使用するCランタイムの関数にもよるし、zlibやCランタイムの
リンクの方法にもよるので

670 :663:2009/07/13(月) 23:08:19
>>667, >>668-669
回答ありがとうございます!
勉強になりました。

671 :デフォルトの名無しさん:2009/07/14(火) 02:14:23
>>666
timeSetEventも割とひどいような……
ttp://blogs.msdn.com/windows_multimedia_jp/archive/2009/07/12/timesetevent.aspx

672 :デフォルトの名無しさん:2009/07/14(火) 04:51:10
CreateTimerQueueTimerでおk

673 :デフォルトの名無しさん:2009/07/14(火) 06:59:53
>>671
わざわざ高分解能タイマを長周期で使うような奴はいないから、
なかなか表面化しなかったんだろうなあ。

674 :デフォルトの名無しさん:2009/07/14(火) 07:29:14
リアルタイムOSじゃないんだからタイマーに精度を求める方が間違っている

675 :デフォルトの名無しさん:2009/07/14(火) 07:45:52
#define STRICT
を定義すると型チェックが厳密になるらしいが、これって本当?
borlandのフリーコンパイラで型による警告が大量に出ても
VCだとスルーするんだけど

676 :デフォルトの名無しさん:2009/07/14(火) 08:12:58
本当

677 :デフォルトの名無しさん:2009/07/14(火) 09:34:11
ウェイタブルタイマ使おうぜ

678 :デフォルトの名無しさん:2009/07/14(火) 13:33:17
うちの会社、データの入力にIE+フォームを使っているのだけど、めっさ使いづらいのよ。
別にデータを持っておいて、そこからなんとかIEのフォームに流し込む手はないっすかねぇ。

普通のコントロール(テキストボックスとか)なら、ウィンドウハンドル取ればなんでもできるけど、
フォームじゃそうはいかないっすからねぇ。

今のところ、キー操作系のWinAPIを使ったキーボードマクロっぽい方法しかないかなと
考えているのですが、他にスマートな方法があれば是非。

679 :デフォルトの名無しさん:2009/07/14(火) 13:42:56
断る

680 :デフォルトの名無しさん:2009/07/14(火) 14:19:32
>>678
IEコンポーネントを使い倒すスレ Ver.2
http://pc12.2ch.net/test/read.cgi/tech/1145189322/

681 :デフォルトの名無しさん:2009/07/14(火) 14:26:40
ブラクラ注意

682 :デフォルトの名無しさん:2009/07/14(火) 14:54:30
>>680
とっかかりをありがとうございます。
なるほど、ウィンドウハンドルからIHTMLDocument2を取得して…という感じか。

683 :デフォルトの名無しさん:2009/07/14(火) 17:27:46
>>678
httpでFormデータを直接POSTしたらだめなんか?

684 :デフォルトの名無しさん:2009/07/14(火) 17:32:44
IEで入力ってwebになってるってことなの
誰が作ったんだろ
まとめてアップとかできないなんて

685 :デフォルトの名無しさん:2009/07/14(火) 17:38:06
>>678
DBに直接アクセスさせてもらえないの?

686 :デフォルトの名無しさん:2009/07/14(火) 19:39:53
>>684
俺もまれにみる糞システムだと思う。コストの削減もあるんだろうけど。

>>685
ちと絶望的かも。セキュリティに関しては無駄に、そして異常に厳しい。

>>683
その発想は無(ry
最終手段としてそれもありですね。ただぶっつけ本番なのが怖いですが。

みなさんレスありがとうございます。

687 :デフォルトの名無しさん:2009/07/15(水) 13:09:02
enterキーを押しても警告音が鳴らないようにできますか?

688 :デフォルトの名無しさん:2009/07/15(水) 13:31:58
唐突過ぎる

689 :デフォルトの名無しさん:2009/07/15(水) 13:36:35

そりゃ出来るか出来ないかといわれれば出来るだろう

690 :デフォルトの名無しさん:2009/07/15(水) 14:12:28
一番簡単なのは電源を切っておくことだな

691 :デフォルトの名無しさん:2009/07/15(水) 14:17:00
しょんな・・・
1つの場面の中でエンターキーの機能はそのままで音だけ鳴らないようにしたいんです

692 :デフォルトの名無しさん:2009/07/15(水) 14:20:20
どんな場面だよ
まず今、警告音が鳴ってる状況を説明してくれよ。

693 :デフォルトの名無しさん:2009/07/15(水) 14:24:22
ああ説明が足りなかった
エディットボックスの中の文字を書いた後にエンター押させたいんだけどポンッって鳴る

694 :デフォルトの名無しさん:2009/07/15(水) 14:27:46
単に複数行入力にすればいいと思うよ

695 :デフォルトの名無しさん:2009/07/15(水) 14:31:07
改行とか受け付けちゃったりしない?

696 :デフォルトの名無しさん:2009/07/15(水) 14:31:40
改行したいんじゃないの?

697 :デフォルトの名無しさん:2009/07/15(水) 14:37:48
enterが改行じゃないケースは少なからず存在する

698 :デフォルトの名無しさん:2009/07/15(水) 14:42:50
ES_WANTRETURN
かな

699 :デフォルトの名無しさん:2009/07/15(水) 14:48:42
>>693
KeyPressの中でKeyがVK_RETURNならKey = NULL;しとけ

700 :デフォルトの名無しさん:2009/07/15(水) 17:03:32
ボリュームをミュートにしてもいいと思うんだ

701 :デフォルトの名無しさん:2009/07/15(水) 18:49:16
釣れますか

702 :デフォルトの名無しさん:2009/07/16(木) 15:02:50
リソースエディタで作ったダイアログ(Langurgeが英語)を日本語環境で表示させる方法を教えてください。

703 :デフォルトの名無しさん:2009/07/16(木) 15:05:42
What is your problem?

704 :デフォルトの名無しさん:2009/07/16(木) 15:15:39
FindResourceEx
LoadResource
LockResource
CreateDialogIndirect(Param)

705 :702:2009/07/16(木) 15:22:27
>>704
ありがとうございます。
アプリのロケールを変えたら、英語のリソース読んでくれるとか、そんな簡単にできないんですね。

706 :デフォルトの名無しさん:2009/07/16(木) 15:36:02
その目的でSetThreadLocaleは使うなと書いてある

707 :デフォルトの名無しさん:2009/07/16(木) 17:08:57
WSAWaitForMultipleEvents(1, &hEvent, FALSE, WSA_INFINITE, FALSE);
WSAEnumNetworkEvents(Socket, hEvent, &EventFlags);
てやったときに、どちらの関数も 0 を返していて、成功はしているだけど
EventFlags.lNetworkEvents が 0 のときがある。これはなんなの??
何もイベントが発生していないのにWSAEnumNetworkEventsから制御が戻ってきたって事?

708 :デフォルトの名無しさん:2009/07/16(木) 20:34:31
キー入力に関して。前回の呼び出しから、今回の呼び出しの間に特定のキーが1度でも押されたかどうかを調べるAPIってありますか?

709 :デフォルトの名無しさん:2009/07/16(木) 20:57:31
あります
ttp://msdn.microsoft.com/ja-jp/library/cc430056.aspx

710 :デフォルトの名無しさん:2009/07/16(木) 21:12:07
GetAsyncKeyStateというやつですね。thx
GetAsyncKeyboardStateが無いのは不便ですね

711 :デフォルトの名無しさん:2009/07/17(金) 02:43:56
one night

712 :デフォルトの名無しさん:2009/07/17(金) 12:30:09
ExitWindowsでWindowsを終了する場合
一応メモリ解放とかした方がいいのかな?
ログオフの時はするけど、終了や再起動ならリークもしても関係無いと思うんだが

713 :デフォルトの名無しさん:2009/07/17(金) 12:33:34
関係なくてもするのが礼儀というものです
礼儀など気にしないなら、別にどうでも

714 :デフォルトの名無しさん:2009/07/17(金) 12:49:03
Windowsを終了する場合は解放しない、なんてコードをわざわざ書くのだろうか。誰得

715 :デフォルトの名無しさん:2009/07/17(金) 13:02:57
カーネルオブジェクトの呼称について質問なんですが、
Memory Mapped FileのことをSectionと呼ぶ場合には、どういった意図が込められているのでしょうか
あるいは殊更に分けて考える必要はないのでしょうか

716 :デフォルトの名無しさん:2009/07/17(金) 13:17:07
>>712
CのmallocとちがってWindowsのresourceは終了時に解放されないものがある
あとはわかるね


717 :712:2009/07/17(金) 13:55:09
有難うございます
後から追加した機能なので、解放処理をWM_CLOSEや他に混ぜている事もあり
面倒なので、いいかなっと思っていました

アプリが終了してからExitWindowsを呼ぶ為には良い方法は無いでしょうか?

718 :デフォルトの名無しさん:2009/07/17(金) 14:24:07
>>717
そんだけの用途なら、なんかのフラグ立てといて、メッセージループ抜けたらExitWindows呼べば?

719 :デフォルトの名無しさん:2009/07/17(金) 14:34:49
>>718
有難うございます
atexitで設定するか、仰る通りにフラグ経ててループ抜けたら呼ぶようにしてみます

720 :デフォルトの名無しさん:2009/07/17(金) 17:18:25
通   素材の味を楽しむ          自然本来の味     う     塩でその店のレベルがわかる
は            塩最高     塩以外は邪道       な   素材のうまみを生かす          素材
塩   「塩で」                              ぎ                          の香
           甘ったるいタレで焼き鳥が食えるか      の   タレ厨は味覚障害者            
      塩もこだわった塩がいい                  白.. 異              高い店で食ったことないんだろ?
                    臭い肉をごまかすためのタレ 焼 . .論    ポテチはうす塩が至高
タレは子供用      AVの見過ぎ                 き   は                   素
                       素      / ̄ ̄ ̄\       認  タレはタレの味しかしない  材
     最終的にたどり着くのは塩  材    .../.\    /. \      め                    の 
                        の   /  <●>  <●>  \ 本   な  焼き鳥=塩           魅
. 「タレ」から「塩」に           味  |    (__人__)    | 当    い                    力
             普通は塩         \    `ー'´    / の   高い店なら塩、安い店ならタレ     が
     シンプルに塩      ..       /             \ 味                           際
             甘味にも通ずるものがある            覚  たれ(笑)  食の原点に戻る        立
 自分用の塩を携帯してない奴は馬鹿                          子供の頃はタレだったが今は塩  つ
                            塩こそ最高の調味料!!


721 :デフォルトの名無しさん:2009/07/17(金) 22:09:37
strcmpi使うとワーニングが出るんだけど_strcmpiつかえってことでしょうか?

少し調べたんですけど両者の違いがよくわからなくて・・
わかる方いたら教えて頂けませんか?

722 :デフォルトの名無しさん:2009/07/17(金) 22:22:03
yahooの知恵袋っていつから珍回答で質問者をからかう場所になってんだ

723 :デフォルトの名無しさん:2009/07/17(金) 22:50:58
>>721
ISO/ANSI標準規格では、下線部で始まる名前を処理系の独自拡張用に使って良いとしている。

VC++にとっては、strcmpiはなんの標準でもない名前なので、
下線を付けて独自拡張用の名前に適合するようにするのがふさわしいとVC++の制作陣は考えたということ。

ここまで書いたけど、スレ違いだから次はよそで聞け。

724 :デフォルトの名無しさん:2009/07/17(金) 23:07:24
WindowsFormsのControl.Tagのような機能をSDKで実現するにはどうしたら良いのでしょうか。
具体的に言うと、各コントロールにそれぞれ整数を記憶させておきたいです。

現在は、STLのmapを使って、ハンドルとデータを関連付けています。

725 :デフォルトの名無しさん:2009/07/17(金) 23:31:15
>>724
SetProp

726 :デフォルトの名無しさん:2009/07/17(金) 23:35:35
たぶんこの3つある。

Set/GetWindowLongPtrでDWLP_USER
Set/GetWindowLongPtrで任意の正整数によるインデックス指定(使用量をWNDCLASS(EX)で指定)
SetProp/GetPropで文字列またはアトムによるキー指定

727 :724:2009/07/18(土) 00:40:32
おぉ、可能なのですね。回答ありがとうございました。
自分に最適な方法を吟味して使ってみようと思います。

728 :デフォルトの名無しさん:2009/07/18(土) 01:48:56
単色塗りつぶしはどの方法がオヌヌメ?
FillRect?PatBlt?それともExtTextOut?

729 :デフォルトの名無しさん:2009/07/18(土) 02:14:14
>>726
自己レス。GWLP_USERだった、すまん。

>>728
自分はExtTextOutが多いなあ。
MFCやWTLだとFillSolidRectという名前でラップされているから、躊躇無く使える。
MFCもWTLも使っていないなら、自前で定義するといいと思う。

730 :デフォルトの名無しさん:2009/07/18(土) 10:27:39
どなたか>>715について知っている方はいませんでしょうか

731 :デフォルトの名無しさん:2009/07/18(土) 10:28:13
Win9xで動くソースをベースに改良を加えたら
9x系で実行すると現在のWindowsのバージョンでは起動出来ない
とエラーが発生するんだが、こうなる原因って何かな?

API周りはきちんと動的リンクにしてる
文字列は全てリソースに纏めてしまったが、もしかしてリソースに纏めると9x系って駄目?

732 :デフォルトの名無しさん:2009/07/18(土) 10:32:54
>>731
VisualStudio2008でビルドすると駄目

733 :デフォルトの名無しさん:2009/07/18(土) 10:49:23
>>730
本人に聞けば良いんじゃね?

734 :デフォルトの名無しさん:2009/07/18(土) 11:10:18
MSDNのライブラリにもあるし、一般的な慣習ならここの方が早いかなと思って質問しました
とりあえず質問に対するお答えを待つことにします

735 :デフォルトの名無しさん:2009/07/18(土) 11:30:48
>>734
そう呼んでいる例をあげてくれまいか。

736 :デフォルトの名無しさん:2009/07/18(土) 11:34:47
>>732
有難うございます
borlandでビルドした所きちんと起動しました
VC++2008ではWin9x系に対応出来ないんでしょうか?

737 :デフォルトの名無しさん:2009/07/18(土) 11:37:20
>>736
2008はNT4以前、9x系はランタイムでバージョンチェックしてる。
2005にするしか無いかなあ。

738 :デフォルトの名無しさん:2009/07/18(土) 12:52:21
>>737
有難うございます
2008では無理ですか…
別のIDEでビルドするようにしてみます。有難うございました。

739 :デフォルトの名無しさん:2009/07/18(土) 14:36:34
まぁ、動くようには出来るがお薦めはしない。
因みにVC2005でも95だけアウトだった気がする。

740 :デフォルトの名無しさん:2009/07/18(土) 15:02:55
>>739
VS2005でWin95はググれば対処法が出てくる。

741 :デフォルトの名無しさん:2009/07/18(土) 15:05:46
>>736
公式にだめにしたと言っている。
http://msdn.microsoft.com/ja-jp/library/dd695830(VS.100).aspx

742 :デフォルトの名無しさん:2009/07/18(土) 16:36:58
ファイルパスを扱うコードを書いてたのですが
NTFSで最大のパス長って32768文字ってことになってますが
Vista64bit環境でエクスプローラでフォルダを作ってみると
どうもMAX_PATH制限がかかっているようで250文字付近から
新しいフォルダを作れなくなります

Win32APIでもパス先頭に \\?\付けてUnicode版なら32768文字までと
MSDNに出ていますが
OS標準のエクスプローラで未だMAX_PATH制限があるのは互換性のため?
自分で作るときもMAX_PATH制限のあるAPIで気にせず使えばいいのでしょうか?

743 :デフォルトの名無しさん:2009/07/18(土) 17:42:05
>>742
.NETだと「\\?\」を付ける形式は殆ど通らないしなあ。
(大抵ArgumentExceptionで蹴られる。)
MS的にはMAX_PATHの範囲内でやりくりしろ、って方針に見える。
つまりは、MAX_PATH制限は半ば公式って事でOKなんじゃないかな。

744 :デフォルトの名無しさん:2009/07/18(土) 18:29:38
windowsにkill()ってないの?

745 :デフォルトの名無しさん:2009/07/18(土) 18:43:39
>>744
windowsにってことならtaskkillのことになるのか?

746 :デフォルトの名無しさん:2009/07/18(土) 18:44:07
恒例のMAX_PATH論争スタートぉぉぉぉぉ!!!

747 :デフォルトの名無しさん:2009/07/18(土) 18:49:18
>>744
何をやりたいかによる。例えば、文字通り殺したいならTerminateProcessだけど。

748 :デフォルトの名無しさん:2009/07/18(土) 18:59:41
>>745
それはコマンドっぽい
>>747
signalハンドラで捕まるもの全て
受け取ったものをそのまま子プロセスに流したい


749 :デフォルトの名無しさん:2009/07/18(土) 19:13:56
それは難しいな。Windowsにはシグナルなんて概念ないから。

ANSI/ISO Cになぜかsignal/raiseが収録されているせいで、C/C++ではsingal関数が使えるけれど、
Windowsではlibc層でエミュレーション的に実装されている。
そのため、大抵は外から直接シグナルを送る手段なんて存在しない。

CygwinやSFU/SUAなどといったUnix互換環境ならそっちのkill使えよと言うところ。

750 :デフォルトの名無しさん:2009/07/18(土) 19:18:05
そんならコンソールプログラムの終了とかは一体どうやって実現されてるの・・・
もしかしてTerminalProcess呼ばれたことも知らないまま死亡?

751 :デフォルトの名無しさん:2009/07/18(土) 19:57:44
>>750
コンソールでのCtrl+C入力をWindows APIで取得するにはSetConsoleCtrlHandler。
初期状態のハンドラはExitProcessを呼び出す。
(しかし、C/C++ならSIGINT用にlibcがハンドラを登録しているはず)

こんな調子で、ほかのものもだいたいは別の手段となる。

752 :デフォルトの名無しさん:2009/07/18(土) 19:58:14
コンソールならSetConsoleCtrlHandlerとかかな
ウィンドウアプリならWaitForSingleObjectでオブジェクトがシグナル状態か非シグナル状態かを確認できる
スレッドが終了すればスレッドのハンドルがシグナル状態になるし、CreateEventとかで自分で好きにイベントを作って
SetEventやResetEventでシグナル状態を変えれるよ…たぶん

753 :デフォルトの名無しさん:2009/07/18(土) 20:10:08
>>752
いや、GUIアプリで、SetConsoleCtrlHandlerに対比させる何かといえばWM_CLOSEだと思う。

754 :デフォルトの名無しさん:2009/07/18(土) 22:30:25
>>743
やっぱエクスプローラでもサポートしてないとこからも
そうなんでしょうね
有り難うございました

755 :デフォルトの名無しさん:2009/07/18(土) 23:41:43
a1からh8なら縦横の位置を出して
qが入ると終了する。どうするの?

756 :デフォルトの名無しさん:2009/07/18(土) 23:42:36
は?

757 :デフォルトの名無しさん:2009/07/18(土) 23:47:26
別のスレでも見たな

758 :デフォルトの名無しさん:2009/07/19(日) 00:08:10
b3を引いてxでOKじゃね?

759 :デフォルトの名無しさん:2009/07/19(日) 00:18:07
いや、s13を左シフトして∀でおk

760 :デフォルトの名無しさん:2009/07/19(日) 00:57:19
何言ってんだ、気合だ、気合だろ。

761 :デフォルトの名無しさん:2009/07/19(日) 07:44:23
ウィンドウにフォーカスがない状態でもキー入力が取得できるように
ウィンドウプロシージャ内でGetAsyncKeyStateを使ってみましたがうまくいきません。
コンソールだとフォーカス外でも取得できるのですがどのようにしたらいいでしょうか?
環境はXPとBCCです

762 :デフォルトの名無しさん:2009/07/19(日) 11:11:04
>>761
SetWindowsHookEx

763 :721:2009/07/19(日) 11:27:16
>>723
ありがとうございます!!
確かにスレ違いでしたので次は気をつけます

764 :デフォルトの名無しさん:2009/07/19(日) 15:47:56
>>762
やはりグローバルフックを使うしかありませんか。サンクス

765 :デフォルトの名無しさん:2009/07/19(日) 16:59:54
API関数が失敗した際にC++例外を投げたとして、内部的にRaiseException等のAPI関数が呼ばれて
GetLastError()の値が更新されることはあり得るんでしょうか

例外をキャッチする箇所でGetLastErrorを呼ぶという設計に問題があるのかもしれませんが...

766 :デフォルトの名無しさん:2009/07/19(日) 17:28:53
GetLastErrorはAPI呼び出し直後に呼ぶものだろ。
自分の都合で勝手にAPIの動作が、自分流になることを期待するなんて、どんだけゆとりなんだよ!

767 :765:2009/07/19(日) 17:47:38
そんなに変ですか?
失敗したときにSetLastErrorでエラーコード設定しておいて、例外で抜けるようにしておけば、
呼び出し元のコードで失敗を処理するか、放置するか選択できて、
特に、失敗頻度が低いであろうコードで見通しのよいコードになると思ったのですが...

768 :デフォルトの名無しさん:2009/07/19(日) 17:48:20
内部的にRaiseException等のAPI関数が呼ばれて
GetLastError()の値が更新される

769 :デフォルトの名無しさん:2009/07/19(日) 17:51:57
SetWindowRgn 関数でリージョン設定すると
XPのビジュアルスタイルがクラシックみないになってしまうのって
回避できないんでしょうか?

770 :デフォルトの名無しさん:2009/07/19(日) 17:58:59
SetWindowAttributesLayeredEx

771 :765:2009/07/19(日) 18:12:46
ありがとうございます
やはりそういうことがあるというなら、回避策を検討します

772 :デフォルトの名無しさん:2009/07/19(日) 18:16:06
もっと使いやすくて同じぐらい低レベルなAPIはないんですか?

773 :デフォルトの名無しさん:2009/07/19(日) 18:42:57
>>767
自分は例外クラスにGetLastErrorのコードを渡すようにしている。
__declspec(noreturn)
void ThrowWin32Exception()
{
throw Win32Exception(GetLastError());
}

774 :769:2009/07/19(日) 18:59:49
>770
ありがとうございます。
調べてきました。
SetLayeredWindowAttributes
UpdateLayeredWindow
ですね。

これ使わないと実現不可ですかね?
可能であればSetWindowRgnが良いのですが。



775 :デフォルトの名無しさん:2009/07/19(日) 19:36:33
SetWindowRgn is obsoleted.

776 :769:2009/07/19(日) 19:54:51
>775
了解。


777 :デフォルトの名無しさん:2009/07/20(月) 01:53:07
タスクトレイのツールチップで変数を表示したいのですが
wsprintf(str, "%d", hensu);
CopyMemory(ic.szTip, str, 5);
上のようにして変数が変わっても初期値(0)のまま表示されます
ホバーするたびに値が更新されるにはどうすればいいですか?

778 :デフォルトの名無しさん:2009/07/20(月) 02:07:59
>>777
NIM_MODIFYでShell_NotifyIconを呼び出さないと駄目。
というか、その二行で本当に反映されると思っていたのなら、
APIの一般的な設計を理解していない気がする。

779 :デフォルトの名無しさん:2009/07/20(月) 02:24:51
>>778
できました。本当にトンクス。精進します

780 :デフォルトの名無しさん:2009/07/20(月) 03:00:38
ウィンドウハンドルって中身はウィンドウオブジェクトの識別子でしたっけ?
LATにウィンドウオブジェクトの識別子があって、LATのインデックス、とかでしたっけ?

781 :デフォルトの名無しさん:2009/07/20(月) 10:28:03
unlockerのようにファイルを使用しているプログラムを列挙するにはどうしたらいいんでしょうか?


782 :デフォルトの名無しさん:2009/07/20(月) 14:49:47
ハンドルはただの実体へのポインタ メモリアドレスなんでプロセス内でしか意味を成さない



783 :デフォルトの名無しさん:2009/07/20(月) 14:52:07
>>782
突っ込みどころ満載だが、平気で嘘つくの良くない!

784 :デフォルトの名無しさん:2009/07/20(月) 14:52:13
カーネルオブジェクトは別だろ?

785 :デフォルトの名無しさん:2009/07/20(月) 14:58:29
ウィンドウハンドルって他プロセスと共有できんの?
別に同期オブジェクトだの共有メモリマップハンドルだのは別腹ですだよ

786 :デフォルトの名無しさん:2009/07/20(月) 15:02:28
共有できなかったら、どうやって WM_COPYDATA を送るんだよ。

787 :デフォルトの名無しさん:2009/07/20(月) 15:17:38
>>786
プロセスBのウィンドウを操作するためのハンドルをプロセスAで取得する
このときプロセスAで取得したハンドルとプロセスBで元々使っていたハンドルは
同じウィンドウを指していても共有されてるわけではない

788 :デフォルトの名無しさん:2009/07/20(月) 15:22:58
あー、はいはい。共有はされてません。同じのが使えるけど。

789 :デフォルトの名無しさん:2009/07/20(月) 15:29:45
sorehatamatama

790 :デフォルトの名無しさん:2009/07/20(月) 15:38:01
>>786みてFindWindowが返すHWNDの中身が激しく気になってきた

791 :780:2009/07/20(月) 15:52:51
俺のあやふやな知識によれば>>787が正しかったと思う
HWNDを別プロセスへ何らかの手段で持っていっても、使えない。
WM_COPYDATAの場合だけは、そのメッセージの場合に限りシステムがHWNDを輸送するための特別な処理をしていたと思う。

HWNDの中身はメモリポインタではなく単純な整数(1とか2)になってて
プロセスごとに1つあるシステム的なオブジェクトを管理するテーブルのインデックスだったと思う。
そのインデックスで参照した先にあるのがメモリポインタだったかウィンドウオブジェクトの識別子だったかは覚えてない。

792 :デフォルトの名無しさん:2009/07/20(月) 15:57:12
前段と後段で矛盾してるわけだが。

793 :デフォルトの名無しさん:2009/07/20(月) 16:13:20
>>791
いや、HWNDの値はシステムで一意だが。

794 :デフォルトの名無しさん:2009/07/20(月) 17:10:36
ん?Spy++で確認できるウィンドウハンドルがSpy++のプロセス内でしか
有効ではない、と言ってる人がいる?まさかね。

795 :デフォルトの名無しさん:2009/07/20(月) 17:13:21
>>792
貴方の感じてる違和感を具体的に言語化出来ますか?

>>793
ソースはありますか?
ハンドル系は全てプロセス内でしか使えなかったはずです。
さまざまな関数やWM_COPYDATAなどでHWNDが使えるのは内部的に処理しているからだったと思いますが、

796 :デフォルトの名無しさん:2009/07/20(月) 17:21:38
WM_COPYDATA でデータをプロセスまたぎで渡せるのは、確かに Windows がうまいことやってくれるから。
HWND はシステムグローバル。Advanced Windows 辺り書いてあんだろ?

797 :デフォルトの名無しさん:2009/07/20(月) 17:22:45
Spy++で見たHWNDをベタ打ちで使っても正常に使えているんだが

798 :デフォルトの名無しさん:2009/07/20(月) 17:25:17
グローバルハンドルとローカルハンドルがあったと思うよ。
使えるのもあるし、ダメなのもあったかなと。

799 :デフォルトの名無しさん:2009/07/20(月) 18:32:03
Windowsが全部のHWND管理してるとは思えんなぁ、プロセス・スレッドで持ってるはずだし
APIで列挙とかするたびにWindowsがプロセス毎に聞いて回ってるとかなら

800 :デフォルトの名無しさん:2009/07/20(月) 19:07:48
事実上
HWND=メモリポインタ
になったのはWindowsの長い歴史から見ると比較的最近なんだよな

801 :デフォルトの名無しさん:2009/07/20(月) 20:08:49
もうだめだこのスレ

802 :デフォルトの名無しさん:2009/07/20(月) 20:36:38
頑張っているのは一人だけだろ

他ウィンドウや、その子ウィンドウにメッセージを送り込むようなコードを
何回となく書いてきたけど、ダメな物なんて一回もなかった。

デバッグ時にspyでHWNDの値を確認するなんてざら。
もちろんこっちのプログラムと同値。断言してもいい。

803 :デフォルトの名無しさん:2009/07/20(月) 20:50:31
たしかHWNDとHGLOBALがシステムでグローバル、
カーネルオブジェクトのハンドルはローカルだがDuplicateHandleで他プロセスに持って行ける、
それ以外(タイマとかGDIオブジェクトとか)はプロセスローカルだったと記憶しているんだが。。。

804 :デフォルトの名無しさん:2009/07/20(月) 20:50:51
>頑張っているのは一人だけだろ
そういう思い込みをしてしまう人は2ch使わない方が良いと思うぞ

805 :デフォルトの名無しさん:2009/07/20(月) 20:53:09
>>804
信じられないような馬鹿は複数いるということだな、つまり。

806 :デフォルトの名無しさん:2009/07/20(月) 20:53:33
>>803
たぶんそれで合ってる
プロセスローカルなハンドルでも子プロセスに限ってプロセス作成時のパラメータで継承させられるとかもあったような

807 :デフォルトの名無しさん:2009/07/20(月) 20:54:13
>>805
たかが知識の間違い程度で信じられないような馬鹿扱いをする幼稚な人も2ch使わない方が良いな

808 :デフォルトの名無しさん:2009/07/20(月) 20:54:54
795だけじゃなかったのか。
ウィンドウハンドルをシステムグローバルじゃないって頑張ってるのは。
世の中は広いな。

809 :デフォルトの名無しさん:2009/07/20(月) 20:59:48
俺一人が頑張ってるとかやめてください いやマジで

810 :デフォルトの名無しさん:2009/07/20(月) 21:40:12
実際有効かどうかなんてどうでもいいだろ。
全てのハンドルがグローバルであることを期待するようなプログラムは Windows の仕様に反してるってだけだ。

811 :デフォルトの名無しさん:2009/07/20(月) 21:52:39
すべてのハンドル != すべてのウィンドウハンドル、だからな。

812 :デフォルトの名無しさん:2009/07/21(火) 07:55:46
プロセスが終了しても自動的に解放されないハンドルってどんなものがありますか?
できれば完全な一覧でもあると助かるのですが

813 :デフォルトの名無しさん:2009/07/21(火) 08:36:10
MSですら把握してないのに?

814 :デフォルトの名無しさん:2009/07/21(火) 09:44:48
というか何で自動で開放されるしくみにしなかったんだろう

815 :デフォルトの名無しさん:2009/07/21(火) 17:38:55
textoutで書いた文字ってdllinjectionを仕組まないと取得できませんか?

816 :デフォルトの名無しさん:2009/07/21(火) 17:41:48
dllinjectionは必要ないが何らかの手段でコードinjectionは必要

817 :デフォルトの名無しさん:2009/07/21(火) 17:43:40
コードinjectionを用いなくても仮想マシンでモニタリングしてもよい

818 :デフォルトの名無しさん:2009/07/21(火) 18:10:45
ググってもコードinjectionが見あたらなかった。

ttp://www.hook-api.com/order.html
にあるサンプルプログラムはコードinjection
ってやつをやっているんでしょうか?

819 :デフォルトの名無しさん:2009/07/21(火) 18:20:18
>>812-814
16ビットや9xの当時ならいざ知らず、今時プロセス終了で解放されないハンドルってあるの?

820 :デフォルトの名無しさん:2009/07/21(火) 18:27:31
非メインスレッドが終了されないでトップレベルウィンドウ破棄後にもプロセスが残ってるぐらいならあった

821 :デフォルトの名無しさん:2009/07/21(火) 19:27:37
>>819

822 :デフォルトの名無しさん:2009/07/21(火) 21:00:57
OSグローバルで共用できるリソースは解放されないんじゃなかったかな

823 : ◆0uxK91AxII :2009/07/21(火) 21:06:37
単に他のprocesssが実体を参照しているだけっていう、間抜けなオチとか。

824 :デフォルトの名無しさん:2009/07/21(火) 21:09:27
ミューテックスなんかのカーネルオブジェクトは参照カウントで、
プロセス終了時にカウント減らされるでしょ。

825 :デフォルトの名無しさん:2009/07/21(火) 21:47:03
>>818
というか、コード注入の手法の一つがDLL注入。

他のプロセスで任意のコードを実行させたい(コードを注入したい)とき、
目的のコードを全部WriteProcessMemory()で書き込んだり、EXEを書き換えたって
かまわないんだけど、それだと色々面倒なので、ほとんどの場合は目的のコードを
DLLにしておいて、相手のプロセスにロードさせる(DLLを注入する)わけ。

そういう意味では、必ずしもDLLを注入しなくても「何らかの手段で」コードを注入すれば
目的は達せられる。現実的にはほぼDLL注入一択だけどな。

826 :818:2009/07/21(火) 22:03:35
>>825
ご丁寧にありがとうございます。
textoutのメッセージをフックするdllを注入するのが
一般的ってことですね。
(最初に、質問したとおりなんですが。)
ありがとうございました。

827 :デフォルトの名無しさん:2009/07/21(火) 23:07:44
>>826
ちょっと違う。俺も初心者の頃混乱した覚えがあるけどな。

SetWindowsHookEx()自体にAPIフックの機能はない。関数名にHookと入っているし、
APIフックのサンプルコードにはよく使われているから、誤解しがちだけど。
SetWindowsHookEx()は、他のプロセスにDLLをロードさせるためだけに使われるので
あって、メッセージフックはただのダミー。
「TextOutのメッセージ」なんてものは存在しない(あれば楽だけど)。

APIフックは別途行う必要がある。

828 :デフォルトの名無しさん:2009/07/22(水) 01:26:26
SetWindowsHookExにDLLをロードさせる機能はないと思うの。
チェーンに登録されるだけな気がするの。

829 :デフォルトの名無しさん:2009/07/22(水) 01:29:03
アホは黙ってろ

830 :デフォルトの名無しさん:2009/07/22(水) 01:40:37
SetWindowsHookEx()でグローバルフックを掛けると、各プロセス空間にフック関数を
配置するために、フック関数を含むDLLがロードされる。
このとき、フック関数だけでなくDLL全体がロードされるので、結果、多くのプロセスに
任意のDLLをロードさせることができる。
ただし、DLLがロードされるタイミングは、フック対象のメッセージを受信したときなので、
SetWindowsHookEx()を実行したからといって、DLLがロードされるとは限らない。
そういう意味では>>828の言っていることも正しい。

831 : ◆0uxK91AxII :2009/07/22(水) 01:46:05
hook procedureの中で、別のDLLをLoadLibraryすればいいと思うの。

832 :デフォルトの名無しさん:2009/07/22(水) 01:48:33
マジレスするとuer32.dllがロードされているプロセス限定

833 :デフォルトの名無しさん:2009/07/22(水) 09:43:28
>>832
システムプロセスなどに誤ロードされフック解除後も居座ることがある
再現方法は不明

834 :デフォルトの名無しさん:2009/07/22(水) 09:46:50
h

835 :デフォルトの名無しさん:2009/07/22(水) 12:07:48
VC++2005 EEってもう落とせない?

836 :デフォルトの名無しさん:2009/07/22(水) 12:12:55
うちにある

837 :デフォルトの名無しさん:2009/07/22(水) 12:13:53
質問の答えになってない 0点

838 :デフォルトの名無しさん:2009/07/22(水) 12:15:11
そうか
うpしようと思ってたけどやめるわ

839 :デフォルトの名無しさん:2009/07/22(水) 12:18:55
誰も望んでいない 0点

840 : ◆0uxK91AxII :2009/07/22(水) 12:22:26
http://www.microsoft.com/japan/msdn/vstudio/express/maninstall/

おっと、手が滑った。

841 :デフォルトの名無しさん:2009/07/22(水) 13:27:35
PostQuitMessageを実行するとMessageBoxが表示されなくなるので
PostQuitMessageを実行せずに独自にフラグを使ってメッセージループを終了するのは
良くないでしょうか?

842 :デフォルトの名無しさん:2009/07/22(水) 13:31:30
いいよ。

843 :デフォルトの名無しさん:2009/07/22(水) 13:53:20
>>840
マジ有難う!

844 :デフォルトの名無しさん:2009/07/22(水) 13:56:31
>>842
ありがとうございます。

845 :818:2009/07/22(水) 18:26:58
皆さん、レスありがとうございます。
初心者で何から調べれば分からずのレベルですので
皆さんのレスの意味があまり分かってないですが、
キーワードが色々出てきてそれだけでも助かります。

>>「TextOutのメッセージ」なんてものは存在しない(あれば楽だけど)。
そ、そんなぁ (;´д⊂ヽヒックヒック
すみません、何のメッセージを捕らえればいいんでしょうか?
Spy++はあります。
(ウィンドウのコントロールを調べるくらいですが)
ご教授お願いします。

846 :デフォルトの名無しさん:2009/07/22(水) 18:33:29
は?

847 :デフォルトの名無しさん:2009/07/22(水) 18:49:13
ああん?

848 :818:2009/07/22(水) 18:53:59
は?も、ああん?も分からないレベルなんで。
そこを何とかお願い。

849 :デフォルトの名無しさん:2009/07/22(水) 19:00:06
もうこの話は終わってるんだよ
KY

850 :818:2009/07/22(水) 19:02:52
そうなの。
なら、スルーしとけばいいじゃん。
ky

851 :デフォルトの名無しさん:2009/07/22(水) 19:07:38
メッセージとAPI関数の呼び出しは別個の問題なの。

852 :818:2009/07/22(水) 19:12:14
ありがとうございます。
先は長いな。(´ー`)y─┛~~

853 :デフォルトの名無しさん:2009/07/22(水) 20:58:11
DirectShowでDRMが掛かったファイルを再生するにはどうすればいいのでしょう?

854 :デフォルトの名無しさん:2009/07/22(水) 21:32:51
>>853 スレ違い。
DirectShowと戦うスレ Part 4
http://pc12.2ch.net/test/read.cgi/tech/1214127501/

855 :デフォルトの名無しさん:2009/07/22(水) 23:14:16
moudamedakonosure

856 :853:2009/07/22(水) 23:25:19
どうもMSにライセンス料1万ドル払う必要があるみたいですね・・・
むりぽ

857 :デフォルトの名無しさん:2009/07/23(木) 11:53:53
ShellExecuteでショートファイルを指定すると
環境によっては、きちんと実行されたり
只、ショートファイルのリンク先が開かれたりするんだが
これは何故?

きちんと実行したい場合はリンク先のEXEパス指定しないと駄目?

858 :デフォルトの名無しさん:2009/07/23(木) 11:56:00
動作しない環境ではその拡張子に何も関連づけされてないんじゃねえの

859 :デフォルトの名無しさん:2009/07/23(木) 12:02:20
きちんと実行したい場合はリンク先のEXEパス指定しないと駄目

860 :デフォルトの名無しさん:2009/07/23(木) 13:43:28
レス有難う
レジストリ見てるんだね
SEE_MASK_INVOKEIDLISTを指定したら、問題のあった環境でも何か動くようになったよ

861 :デフォルトの名無しさん:2009/07/23(木) 23:03:22
GetModuleHandleで取得したモジュールハンドルから何バイトずらしたら
あるクラスの関数のアドレスに行き着くか調べるにはどうすればいいですか?
dumpbinで調べられるのかと思いましたが、エクスポートされている関数名しか出てきません。

862 :デフォルトの名無しさん:2009/07/23(木) 23:30:46
>>861
DbgHelp APIの出番だと思う。

863 :デフォルトの名無しさん:2009/07/24(金) 01:23:10
dumpbinでRVAが見られるだろ。
Toolhelpで得たベースアドレスに足し合わせれば答えがでるんじゃね?

864 :デフォルトの名無しさん:2009/07/24(金) 17:53:01
関数名が得られたら、あとはGetProcAddressすればいいじゃない。

865 :デフォルトの名無しさん:2009/07/24(金) 18:03:55
引き算するだけで普通にオフセットは求まるよ。

866 :861:2009/07/24(金) 22:22:00
>>863
クラスの関数名が表示されないのにどうやってRVAとの対応を見れば・・
>>864
エクスポート関数ではなく
クラスの関数なんでGetProcAddressは使えないんですが・・

867 :デフォルトの名無しさん:2009/07/24(金) 23:17:38
>>861
どうしてそういうことをしたいのか説明できるか?
理由がわかれば妥当な方法を提案しやすい。

868 :デフォルトの名無しさん:2009/07/24(金) 23:20:51
COMで実装しろよもう

869 :デフォルトの名無しさん:2009/07/24(金) 23:28:14
>>614
わかるよ
公務員だもの
楽しょうさがね

阿保みたいな質問平気でする糞職員多いね
無試験採用か

870 :861:2009/07/24(金) 23:31:03
http://www.ring3circus.com/downloads/direct3d-hooking/
ここのライブラリを使ってDirect3Dを使ったアプリの画像取得をしているんですが
XPだと動くのにVistaだと動かないみたいなんです。フックしようとしている関数の
アドレスが正しいか調べる部分(VerifyAddresses()、171行目)
があるんですが、そこではじかれます。それで自分で正しいアドレスのオフセットを
調べようと思ったんですが、どうしたら調べられるのか分かりません。

↓書いてある各関数のオフセット
const long XP_OFFSET_DEVICE_PRESENT = 0x00040EA0;
const long XP_OFFSET_SWAP_CHAIN_PRESENT = 0x00039230;
const long XP_OFFSET_CLEAR = 0x00085720;

const long VISTA_OFFSET_DEVICE_PRESENT = 0x00048CDB;
const long VISTA_OFFSET_SWAP_CHAIN_PRESENT = 0x00048DB4;
const long VISTA_OFFSET_CLEAR = 0x0000E3CD;

871 :デフォルトの名無しさん:2009/07/24(金) 23:45:31
使用OS:windows vista
コンパイラ:Visual c++ 2008 ExpressEdition
ファイル内容:日本語

テキストファイルから1行読み込んで(fopen,fgetws)
ExtTextOutしたいのですが文字化けしてしまいます

どうすればテキスト内容をそのまま表示する事ができますか?

ExtTextOutの文字列指定する所に直接TEXT("日本語")で指定したら正確に表示されます

ファイルから読み込んだ文字列を格納する変数は
TCHAR szText[256];
ですが他の型でできるなら型変更も考えています

872 :デフォルトの名無しさん:2009/07/24(金) 23:48:56
>>870
インターフェイスからVMTをスキャンして目的の関数のアドレスを取得する。
ジャンプテーブルだったらその先のアドレスを探す。
オフセットは普通に引き算でおk。
OSの種類やSPの違い等で変わる可能性があるから、そういった固定オフセットを使うのは意味がない。
俺のプログラムでは動的に計算してるよ。

873 :デフォルトの名無しさん:2009/07/24(金) 23:48:57
テキストファイルのエンコードは?

874 :デフォルトの名無しさん:2009/07/24(金) 23:49:43
>>871
文字コードについて学べ

875 :デフォルトの名無しさん:2009/07/24(金) 23:52:24
>>871
プログラムの頭で、setlocale(LC_ALL, "");呼んでおけ。
あと、TCHARに読み込む関数は、fgetwsではなく、<tchar.h>の_fgetts。

876 :861:2009/07/24(金) 23:56:41
>>872
d3d9.hの内容を見て
IDirect3DDevice9のアドレスから4*17バイトずらしたら
Presentのアドレスになると思ったんですが
以前やったら失敗したんです。
もう1回試してみます。

877 :871:2009/07/25(土) 00:02:53
>>873
>>875さんのsetlocale(LC_ALL,"")追加と_fgettsへ変更した後
Notepadの名前を付けて保存の時に選べる
ANSI
Unicode
Unicode big endian
UTF-8
どれを選んでもダメでした

Unicodeの時は描画すらされず真っ白でした

>>874
文字コード、ですか色々調べてみます
キーワードありがとうございます

>>875
その2箇所変更してもダメでした

878 :デフォルトの名無しさん:2009/07/25(土) 00:10:21
WM_SETFONTでコントロールのフォント変えられるように
背景色を変えるメッセージってありませんか?
SetBkColorではうまく背景色が変わらないので

879 :デフォルトの名無しさん:2009/07/25(土) 00:15:30
そんな物はない

880 :デフォルトの名無しさん:2009/07/25(土) 00:34:53
WM_CTLCOLORなんたらで何とかしろ

881 : ◆0uxK91AxII :2009/07/25(土) 00:52:30
>>870
書き換え先の命令の並びが適切かどうか、確認。
場所は、cでpD3dDevice9->lpVtbl->Presentとかやって取得。

882 :871:2009/07/25(土) 01:28:22
int i=0;
HDC hDC;
HFONT hFont;
TCHAR szInfo[30][256];
FILE *fp;
_locale_t locale;

locale = _create_locale(LC_ALL, "japanese");

if((_wfopen_s(&fp,TEXT("test.txt"),TEXT("r"))) != NULL) {
_wfopen_s(&fp,TEXT("test.txt"),TEXT("w"));
_fwprintf_s_l(fp, TEXT("テスト\nテスト2\n"), locale);
fclose(fp);
_wfopen_s(&fp,TEXT("test.txt"),TEXT("r"));
}
while(_fgetts(szInfo[i], 256, fp) == NULL) {
i++;
}
fclose(fp);

hDC = GetDC(hWnd);
hFont = CreateFont(23, 9, 0, 0, 600, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, FIXED_PITCH | FF_DECORATIVE, NULL);
SelectObject(hDC, hFont);
SetBkColor(hDC, RGB(0,0,0));
SetTextColor(hDC, RGB(100,245,100));
ExtTextOutW(hDC, 50, 50, ETO_CLIPPED, NULL, szInfo[0], wcslen(szInfo[0]), NULL);
ExtTextOutW(hDC, 50, 100, ETO_CLIPPED, NULL, szInfo[1], wcslen(szInfo[1]), NULL);
DeleteObject(hFont);
ReleaseDC(hWnd, hDC);

こんな感じでやってみましたが無理でした
どうすればいいでしょうか

883 :デフォルトの名無しさん:2009/07/25(土) 02:20:52
>>882
TCHAR/TEXTを扱う関数はwではなくt。

_wfopen_s/_tfopen_sは成功したとき、0を返す。そもそも書き込みなら初めからwで開け。
_fwprintf_s_l/_ftprintf_s_lのロケール指定は出力の文字コード変換には影響しない気がする。
というわけで、こんな風に書いたらきちんと動いたぞ。
setlocale(LC_ALL, "");

if (_tfopen_s(&fp, TEXT("test.txt"), TEXT("w")) == 0) {
_ftprintf_s(fp, TEXT("テスト\nテスト2\n"));
fclose(fp);
if (_tfopen_s(&fp, TEXT("test.txt"), TEXT("r")) == 0) {
while(_fgetts(szInfo[i], sizeof szInfo[i], fp) != NULL) {
i++;
}
fclose(fp);
}
}
あと、ExtTextOut, _tcslenな。

884 :デフォルトの名無しさん:2009/07/25(土) 03:14:13
_printf_l系統の使い方がよく判らん。
デバッガで追うと、指定ロケールとは無関係に常に現在のロケールで変換するように見えるなあ。
折角_woutput_s_lでロケールを更新しているのに、
その後で一文字ずつ出力するのに_fputwc_nolockを呼び出したところで、
結局今のロケールに再更新されてしまっているような……

885 :デフォルトの名無しさん:2009/07/25(土) 03:59:55
>>884
ただ、数値変換の書式とか、文字コード変換以外には影響が及んでいると思う。
でもここWin32APIスレだから、スレ違いの話は自重したい。

886 :デフォルトの名無しさん:2009/07/25(土) 06:19:30
>>882
テキストファイルのエンコードは?

887 :デフォルトの名無しさん:2009/07/25(土) 11:24:32
コントロールパネルの表示名ってレジストリに書き込まれてるの?
CPIAppletからCPL_INPUIREで名前のリソースIDとか取得してもうまく行かない

888 :デフォルトの名無しさん:2009/07/25(土) 16:04:19
WinHttpのリクエストのレスポンスヘッダをWinHttpQueryHeadersで一々取得すると、毎回ヘッダ文字列を調べるのでしょうか
それとも、リクエストごとにデータ構造を持っていて引数のヘッダ識別子を使って探すんでしょうか

889 :デフォルトの名無しさん:2009/07/25(土) 20:17:52
リクエストごとにデータ構造を持っていて引数のヘッダ識別子を使って探す

890 :871:2009/07/25(土) 20:59:19
>>833
>>882
if((_wfopen_s(&fp,TEXT("test.txt"),TEXT("r"))) != NULL) {
_wfopen_s(&fp,TEXT("test.txt"),TEXT("w"));
_fwprintf_s_l(fp, TEXT("テスト\nテスト2\n"), locale);
fclose(fp);
_wfopen_s(&fp,TEXT("test.txt"),TEXT("r"));
}
この部分ですが、本当なら最初からテキストに何か記入(notepadで)しておいて
プログラム側で処理するのですが、もしtextがなければエラーになるので
プログラム側でtextを作成するようにしています

ちゃんと思い通りに表示されました
ありがとうございましたてる!
1,8,12,13!

>>886
名前をつけて保存を選んだ時の右下の文字コードはANSIになっていました


891 :890:2009/07/25(土) 21:00:14
>>833 ×
>>883
失礼しました


892 :デフォルトの名無しさん:2009/07/25(土) 23:38:02
DLLのexportをつけてる関数以外の関数(公開しない関数)
を書き換えても公開するための名前は変わりませんか?
hoge@1とかの@1とかが勝手に変わったらDLL差し替えだけでは動かないんですよね?

893 :デフォルトの名無しさん:2009/07/25(土) 23:42:41
yes

894 :デフォルトの名無しさん:2009/07/25(土) 23:43:21
変わるよ

895 :デフォルトの名無しさん:2009/07/26(日) 02:39:45
ポップアップメニューのフォントを変更するにはどうすればよいでしょうか?

ボタンコントロールなど、子ウィンドウの文字の場合はフォントを作成した後、
SendMessage( hWnd, WM_SETFONT, ( WPARAM )hFont, true );
とすれば変更できました。
hWnd(HWND型)のところをhMenu(HMENU型)にしましたがダメでした。

よろしくお願いしますm(_ _)m

896 :デフォルトの名無しさん:2009/07/26(日) 02:45:14
オーナードローかメニューっぽいUI以外実現方法はない

897 :895:2009/07/26(日) 02:56:24
>>896
ありがとうございました!

898 :デフォルトの名無しさん:2009/07/26(日) 14:02:50
ShellExecuteExで指定できるSEE_MASK_INVOKEIDLISTってどういう意味があるの?
これを指定してリムーバルディスクを開こうとすると失敗して
指定せずに実行すると問題無く開ける

899 :デフォルトの名無しさん:2009/07/26(日) 14:16:22
開くファイルを、ファイル名ではなくITEMIDLISTで指定するというフラグ

900 :デフォルトの名無しさん:2009/07/26(日) 14:21:36
>>899
有難う
レジストリを見て実行と
ファイル名で実行と認識していいかな?

901 :デフォルトの名無しさん:2009/07/26(日) 14:27:53
>>900
レジストリとは違うけれど、IShellFolderというインタフェイスを使って
エクスプローラーのようにデスクトップをルートとした仮想フォルダ階層を辿っていくときに使う

902 :デフォルトの名無しさん:2009/07/26(日) 14:32:54
>>901
有難う
具体的に使う場面を教えて貰えないかな?

903 :デフォルトの名無しさん:2009/07/26(日) 14:41:46
エクスプローラーのようにIShellFolderで仮想フォルダ階層を辿っていった場合に、
その仮想階層のパスは文字列ではなくITEMIDLISTで表現するので、
それを指定してファイルを開くときに使う
エクスプローラー自身や、エクスプローラーのファイル階層を真似る必要があるファイラーソフト、
ファイルオープンダイアログ、ファイルブラウザなどで使う

904 :デフォルトの名無しさん:2009/07/26(日) 14:44:48
898じゃないけど勉強になった。ありがd。

905 :デフォルトの名無しさん:2009/07/26(日) 15:47:53
>>903
分かり易い説明マジ有難う!!

906 :デフォルトの名無しさん:2009/07/26(日) 16:27:05
おぉ俺も使った事ないけど勉強になった

907 :デフォルトの名無しさん:2009/07/26(日) 17:21:15
srud(>>1, >>906);

908 :デフォルトの名無しさん:2009/07/26(日) 22:03:14
WinMainに関連付けされたウィンドウハンドルやデバイスコンテキストをほかのスレッドに渡してそのスレッドで描画処理をするのはよくない方法でしょうか?

909 :デフォルトの名無しさん:2009/07/26(日) 22:05:13
別に問題ない

910 : ◆0uxK91AxII :2009/07/26(日) 23:52:40
>>908
http://msdn.microsoft.com/ja-jp/library/cc428626.aspx

止めた方が無難だね。

911 :デフォルトの名無しさん:2009/07/27(月) 09:54:19
h

912 :デフォルトの名無しさん:2009/07/27(月) 09:59:35
>>911
ハンドルがどうした

913 :デフォルトの名無しさん:2009/07/27(月) 10:15:27
プロセスが終了しても自動的に解放されないハンドルってどんなものがありますか?
できれば完全な一覧でもあると助かるのですが

914 :デフォルトの名無しさん:2009/07/27(月) 10:29:39
DLL内にどんな関数があるかわかるツールとかないでしょうか?

915 :デフォルトの名無しさん:2009/07/27(月) 10:32:09
>>914
Dependency Walker

916 :デフォルトの名無しさん:2009/07/27(月) 10:38:50
>>915
ありがとん

917 :デフォルトの名無しさん:2009/07/27(月) 11:01:36
リストボックスからENTERキーが押されたら処理したいんですが
ENTERを押してもKEYDOWNが発生しません
フックを使わずスマートな解決方法は無いでしょうか?

918 :デフォルトの名無しさん:2009/07/27(月) 11:08:34
>>917
サブクラス化

919 :デフォルトの名無しさん:2009/07/27(月) 11:10:52
LBS_WANTKEYBOARDINPUT でどう?

920 :デフォルトの名無しさん:2009/07/27(月) 11:43:20
>>918-919
有難うございます
サブクラスも勿論試しましたが駄目でした
KEYBORADINPUTを指定してみましたが、Enterキーを押してもメッセージが発行されません

921 :デフォルトの名無しさん:2009/07/27(月) 11:43:54
まさかダイアログでやってて食われてるとかじゃないだろうな?

922 :デフォルトの名無しさん:2009/07/27(月) 12:12:20
>>921
そうです!ダイアログ画面にリストを置いています
リストにEnterが行く前に、ダイアログに食われているという事でしょう?

923 :デフォルトの名無しさん:2009/07/27(月) 12:15:01
僕も食いたい

924 :デフォルトの名無しさん:2009/07/27(月) 12:21:50
>>917
いまいちよく分からないんだが、
WM_NOTIFYのLVN_KEYDOWNじゃだめなのか?
当然ダイアログでも通知がくるけど……

925 :デフォルトの名無しさん:2009/07/27(月) 12:49:53
>>924
有難うございます
試して見ましたがうまく行きませんでした…

今はダイアログにリストボックスを貼付けており
リストボックスを選択した後、Enterキーを押したら処理をしたいと考えています
ですがEnterキーを押してもメッセージが発行されず
それ以外のキー入力ではメッセージが発行されている状態です

926 :デフォルトの名無しさん:2009/07/27(月) 12:51:52
普通にWM_KEYDOWNでVK_RETURN来るな・・・
フォーカスないとか?

927 :デフォルトの名無しさん:2009/07/27(月) 14:17:59
リストボックスにWM_SETFOCUSを投げても駄目みたいです

928 :デフォルトの名無しさん:2009/07/27(月) 14:20:18
どうやって調べてる?
spy++とか使ってみては

929 :デフォルトの名無しさん:2009/07/27(月) 14:27:59
APIについて質問なんだがお前達のようなクズ共にわかるかなあ
夏休みだしなあ

930 :デフォルトの名無しさん:2009/07/27(月) 14:30:40
どうせWin32以外の質問するんだろ

931 :デフォルトの名無しさん:2009/07/27(月) 15:16:41
黙れくずが

932 :デフォルトの名無しさん:2009/07/27(月) 15:18:39
フックかな?

933 :デフォルトの名無しさん:2009/07/27(月) 16:03:23
図星かよ・・・

934 :デフォルトの名無しさん:2009/07/27(月) 16:29:02
>>925がどうやって調べてるかわからんな
Spy++で調べれば(当然だが)メッセージが発行されてるんだがな

CDialog使ってるならちゃんとVK_RETURNキャッチしろよ

935 :デフォルトの名無しさん:2009/07/27(月) 17:10:48
またフックかよ

936 :デフォルトの名無しさん:2009/07/27(月) 17:34:21
C#でちょちょいと作るほうが楽だ・・・

937 :デフォルトの名無しさん:2009/07/27(月) 18:10:39
知らないならレスしないでください。ウザイだけです。
srud(>>930);

938 :デフォルトの名無しさん:2009/07/27(月) 19:01:37
>>925
来ないはずないんだけどな……
LVN_KEYDOWNをググって、あちこち参考にしてみた?

BOOL CALLBACK DlgProc(HWND hDlg, UINT mes, WPARAM wParam, LPARAM lParam)
{
...
case WM_NOTIFY:
{
NMHDR* nm = (NMHDR*)lParam;
if(nm->idFrom == IDC_LIST1) {
if(nm->code == LVN_KEYDOWN) {
NMLVKEYDOWN* kd = (NMLVKEYDOWN*)lParam;
WORD wKey = kd->wVKey;
if(wKey == VK_RETURN) {
// リターンキーが押された
}
}
}
}
break;
...
}
な感じできませんか? IDC_LIST1は、当該リストビューのIDね。

939 :デフォルトの名無しさん:2009/07/27(月) 19:06:08
あまり良く読みもせず言うのもなんだけど、コントロール作るとき通知フラグ立ててないんでない?
リストボックスの作成方法が、CreateWindowかエディタかは知らないけど

940 :デフォルトの名無しさん:2009/07/27(月) 19:11:11
>>937
回答しないのにレスしないで下さい


941 :925:2009/07/27(月) 20:09:13
皆様レス有難うございます
MFCではなく、現在はSDKで開発しております
>>938色々と調べてみましたが、やはり私のコードではうまく行きません
ダイアログにリストボックスを貼り付けており、ダイアログは以下の用に定義しています

SAMPLE DIALOG 10, 10, 200, 100
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
{
LISTBOX IDC_LIST1, 10, 10, 180, 57, WS_TABSTOP | WS_VSCROLL | LBS_NOTIFY | LBS_NOINTEGRALHEIGHT
}

リストのサブクラス、ダイアログ側でのWM_NOTIFYでLVN_KEYDOWNが来ないか試していますが
未だ解決しておりません

Spy++ではありませんが、簡単なメッセージフックは使用してやり取りは見ております

942 :デフォルトの名無しさん:2009/07/27(月) 20:20:59
既定のボタンかIDOKが飛んで来るところで処理したら駄目なのか?
それならリストボックスをサブクラス化して、
WM_GETDLGCODEでDLGC_WANTALLKEYSを返すしかないな。

943 :デフォルトの名無しさん:2009/07/27(月) 20:33:37
なにー。
WM_GETDLGCODEを処理してなかったのかよ……OTZ

944 :デフォルトの名無しさん:2009/07/27(月) 23:59:24
自ソフト外の現在のカーソルあるところにキーボードを押して文字を入力したように
認識させたいんだけど、どうすればできマッスル?

945 :デフォルトの名無しさん:2009/07/28(火) 00:08:33
SendInput();

946 :デフォルトの名無しさん:2009/07/28(火) 06:20:50
LVN_はListViewだろ

947 :デフォルトの名無しさん:2009/07/28(火) 07:01:19
VC++2008で作ったDLLもWin9x系は動かない?

948 :デフォルトの名無しさん:2009/07/28(火) 08:20:43
>>947
当然

949 :デフォルトの名無しさん:2009/07/28(火) 09:26:35
有難う
VC++2005とborland freeコンパイラどっちがいいかな?

950 :デフォルトの名無しさん:2009/07/28(火) 10:49:55
>>949
VC++2008の方がいいよ

951 :デフォルトの名無しさん:2009/07/28(火) 11:01:10
VCってwwwwwwwwwwwwwwwwwwwwwwwwwwww

952 :デフォルトの名無しさん:2009/07/28(火) 11:07:31
>>947
動くように設定したらいいよ

953 :デフォルトの名無しさん:2009/07/28(火) 11:13:11
>>952
設定で対応出来たっけ?
EXEのバイナリを弄ればいけるけど、推奨は出来ないな

954 :デフォルトの名無しさん:2009/07/28(火) 11:24:55
普通にコンパイラオプションでなんとかなるし

955 :デフォルトの名無しさん:2009/07/28(火) 12:30:23
MSが2008では無理って言ってなかった?

956 :デフォルトの名無しさん:2009/07/28(火) 13:04:56
This topic lists the breaking changes in Visual C++ 2008.

The Windows 95, Windows 98, and Windows ME platforms are no longer supported. These operating systems have been removed from the list of targeted platforms.

957 :デフォルトの名無しさん:2009/07/28(火) 13:56:26
Win95,98,MEはplatformsではもうサポートしません
platformsの対象から削除されました


958 :デフォルトの名無しさん:2009/07/28(火) 13:57:51
コンパイルオプションとか言ってる奴どうやってんだ?

959 :デフォルトの名無しさん:2009/07/28(火) 14:00:38
スタートアップルーチン差し替えてるとか?

960 :デフォルトの名無しさん:2009/07/28(火) 14:03:36
プロパティーシート使うとき
EndDialogはしては駄目らしいが何故?
WM_CLOSEで使ってるが別に問題ないんだが

961 :デフォルトの名無しさん:2009/07/28(火) 14:12:14
呼んじゃいけないのは各ページの中でじゃないの?

962 :デフォルトの名無しさん:2009/07/28(火) 14:15:35
>>961
有難う
プロパティシートのOKボタンで閉じる場合は
それぞれのダイアログに強制WM_CLOSE発行してEndDialog呼んでるけど
閉じる時だから問題ないって事だよね?

963 :デフォルトの名無しさん:2009/07/28(火) 14:34:04
だってVCだもんwwww

964 :デフォルトの名無しさん:2009/07/28(火) 15:00:50
  _,._
 ( ・ω・)
 ○={=}〇,
  |:::\,',´
、、、し、、(((@)wwww

      _,._
     (・ω・ )
     ○={=}〇,
      |:::\,','
www、、、、、し、、(((@)

      _,._
     ( ・ω・ )
     ○={=}〇,
      |:::\,','
wwwwwwし、、(((@)

   ,,' _,._
  ((((( ・ω・ ))))
',` `ヾヽミ三彡ソ´
w ',  )ミ 彡ノ',`'
',`'  (ミ 彡゛  w
 Σ ', \(    ',`
 ',`'  ))  ',`Σ
wW\\ ( //Ww


965 :デフォルトの名無しさん:2009/07/28(火) 15:54:24
VC++の「オプション」ウィンドウ等では、spy++で見たところダイアログにツリービューとダイアログが貼り付けてあるのですが、
ダイアログにダイアログを貼り付けるにはどのようにすれば良いんでしょうか

966 :デフォルトの名無しさん:2009/07/28(火) 15:58:54
これプロパティシートの1種じゃないのかな

967 :デフォルトの名無しさん:2009/07/28(火) 16:07:49
プロパティシートの左側を余らせて、ツリービューを貼り付けてるってことですか?
OKキャンセルボタンの上に、プロパティシートと同様の区切り線があるからそうかもしれませんね
ありがとうございます

968 :デフォルトの名無しさん:2009/07/28(火) 21:55:29
VC++で例外をスローしたときのスタックフレーム情報を表示したいのですが(Linuxのbacktraceのようなもの)
どうすればできますか?

969 :デフォルトの名無しさん:2009/07/28(火) 22:12:28
>>968ですが、自己解決しました
StackWalkを使えばできそうですね


970 :デフォルトの名無しさん:2009/07/28(火) 23:04:23
IWebBrowser の 再読み込みを知ることってできないでしょうか?

971 :デフォルトの名無しさん:2009/07/29(水) 01:08:04
知らないならレスしないでください。ウザイだけです。

972 :デフォルトの名無しさん:2009/07/29(水) 08:21:35
UNICODEにも対応するため、GetWindowText等に渡すバッファサイズを
sizeof(buf)/sizeof(buf[0])
とやってるんだが、これてビルド時にサイズ決まるよね?

973 :デフォルトの名無しさん:2009/07/29(水) 08:28:58
bufの定義次第

974 :デフォルトの名無しさん:2009/07/29(水) 08:36:12
TCHAR buf[MAX_PATH];
と定義してる
MAX_PATH渡せば良いが、bufのサイズが変わったら面倒だからさ

975 :デフォルトの名無しさん:2009/07/29(水) 10:33:32
_countof

976 :デフォルトの名無しさん:2009/07/29(水) 11:31:40
親ウィンドウと子ウィンドウがたくさんある状態で
常に親ウィンドウにフォーカスがある状態にするにはどうすればいいですか?


977 :デフォルトの名無しさん:2009/07/29(水) 17:13:38
>>975
このスレとしてはARRAYSIZEも推そうよ。

978 : ◆0uxK91AxII :2009/07/29(水) 17:26:27
#define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0]))
( ゚,_J゚)

979 :デフォルトの名無しさん:2009/07/31(金) 07:17:36
>>975
馬鹿発見

980 :デフォルトの名無しさん:2009/07/31(金) 07:40:28
976なんですがこれだけじゃわかりませんよね
複数のウィンドウがある場合に
最初のウィンドウのクライアント領域を即操作出来るように
最初のウィンドウを常にアクティブ状態にしたいのですが可能でしょうか

他のウィンドウを操作した後だと、最初のウィンドウを操作するためには
一回クリックしなければいけないと思うのですがそれをなくしたいのです
どなたかアドバイスを

981 :デフォルトの名無しさん:2009/07/31(金) 07:43:57
他のウィンドウを操作する時もその操作が親ウィンドウにも行っちゃうじゃん

982 :デフォルトの名無しさん:2009/07/31(金) 07:55:44
すみません976は間違いで
他のウィンドウというのは子ウィンドウじゃありませんでした

983 :デフォルトの名無しさん:2009/07/31(金) 08:06:53
>>981
最初のウィンドウを常にアクティブしっぱなしにすると
他のウィンドウが操作出来ないということでしょうか?
それで悩んでいるんです
アクティブというか1クリックせずに操作出来ないのかなと

984 :デフォルトの名無しさん:2009/07/31(金) 08:11:41
可能

985 :デフォルトの名無しさん:2009/07/31(金) 11:44:07

タブコントロールをTCS_BUTTONSで指定して作成し、その後タブを3ページ追加しました。
見かけは、ボタンスタイルでタブが作成されてうまく行っているように見えるのですが
タブをクリックしてもWM_NOTIFYイベントでTCN_SELCHANGEが
やって来ないので困っています。

TCS_BUTTONSを外すと、通常のタブが作成されてWM_NOTIFYイベントでTCN_SELCHANGEが
やってきます。

TCS_BUTTONSの有無でタブコントロールの振る舞いが違うのでしょうか?

ご存知の方、アドバイスお願いします。

986 :985です:2009/07/31(金) 11:46:22

補足です。

環境は、WINDOWS XP PRO SP3 VC++6.0です。

987 :デフォルトの名無しさん:2009/07/31(金) 17:58:37
1

988 :デフォルトの名無しさん:2009/07/31(金) 22:54:24
>>979
馬鹿発見

989 :デフォルトの名無しさん:2009/07/31(金) 23:20:34
TCS_BUTTONSってVisualStyleが無効になるので使い物にならない

990 :デフォルトの名無しさん:2009/08/01(土) 16:37:49
埋め込みリソースのダイアログボックスでコモンコントロール使う時も、やっぱりInitCommonControlsは必要ですか?
それともコンパイル時にうまくいくようにしてくれてるんでしょうか

991 :デフォルトの名無しさん:2009/08/01(土) 18:55:22
InitCommonControls 自体の中身は空っぽで、
強制的に関連モジュールをロードする意味で呼出すと聞いたことがあると思う。
日本語版 Windows だと IME コントロールを通じて
大抵はロード済みなので無くても動くように見えるが、
呼んでおくのが無難と言われている。
リソースが埋め込みでも関係ないはず。
必要なくても呼んだからって問題になるわけでもないので迷ったら呼んどけ。

992 :デフォルトの名無しさん:2009/08/01(土) 20:59:02
だね。
ttp://blogs.msdn.com/oldnewthing/archive/2005/07/18/439939.aspx

993 :990:2009/08/01(土) 21:03:51
なるほど、ありがとうございました

994 :デフォルトの名無しさん:2009/08/01(土) 21:47:48
MSはファイルサイズを求めるまともな関数を非公開にしてるようだな。
ANSI Cだけでファイルサイズを求める方法を改善しようと思ったが、Win32 APIや
MFCやBorlandのVCLのいずれも、ファイルハンドルが必要のようだな。そのファイル
ハンドルは、ファイルをオープンして取得しないといけないし、ANSI Cよりも難しい
内容だし。
エクスプローラやDIRコマンドでファイルの一覧を表示するのって、何もWindowsは
ファイルハンドルを取得してるわけではないだろう。恐らく、ハードディスクに
記録されているファイルの実体とは別の領域に記録された登録簿の情報を読んで
るだけだろう。
ファイル名の文字列を引数に与えるだけで良いVB6のFileLen関数や、NET Frameworkの
FileInfoクラスのLengthを使うほうが、(ANSI Cに比べて)ハードディスクのアクセス
が少なくて早く処理できてるし、恐らく恐らく登録簿から読み取ってるのだろう。
MSは他社の競争力を押さえるために、一部のシステムコールを隠すのか。

995 :デフォルトの名無しさん:2009/08/01(土) 21:50:13
一部を訂正しとく
エクスプローラやDIRコマンドでファイルの一覧の作成で、ファイルサイズ
を取得するために、ファイルハンドルを取得しているわけではないだろう。

996 :デフォルトの名無しさん:2009/08/01(土) 22:01:59
ioctl あたりじゃねーの?
それで何か不満なのか?

997 :デフォルトの名無しさん:2009/08/01(土) 22:11:25
windows だと DeviceIoControl か

998 :デフォルトの名無しさん:2009/08/01(土) 22:12:40
>>994
つFindFirstFile

999 :デフォルトの名無しさん:2009/08/01(土) 22:18:05
ntfs だと sparse ファイルとかシンボリックリンクもあるから用途によってはちょっと工夫がいるけどな

1000 :デフォルトの名無しさん:2009/08/01(土) 22:19:50
>>994
お前が無知なだけだw

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

213 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)