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

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

Win32API質問箱 Build88

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

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

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

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

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

NullPointerExceptionを「ぬるぽ」と呼ぶスレ5
http://pc12.2ch.net/test/read.cgi/tech/1269551404/

2 :デフォルトの名無しさん:2010/05/27(木) 17:43:03
86 ttp://pc12.2ch.net/test/read.cgi/tech/1265350980/
85 ttp://pc12.2ch.net/test/read.cgi/tech/1262430441/
84 ttp://pc12.2ch.net/test/read.cgi/tech/1259478896/
83 ttp://pc12.2ch.net/test/read.cgi/tech/1256891725/
82 ttp://pc12.2ch.net/test/read.cgi/tech/1253699773/
81 ttp://pc12.2ch.net/test/read.cgi/tech/1249140049/
80 ttp://pc12.2ch.net/test/read.cgi/tech/1244057140/
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/

3 :デフォルトの名無しさん:2010/05/27(木) 17:43:12
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/
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/

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

5 :1:2010/05/27(木) 17:45:32
自分で張っといて何だけど、過去スレリンクもう要らないんじゃない?
>>1の前スレリンクあれば過去スレはたどれるんだし、ピンポイントであの過去スレが読みたい
なんて人いないでしょ?

6 :デフォルトの名無しさん:2010/05/27(木) 17:47:59
wikiにも過去スレのリンクあるしね。
無くてもいいとは思う

7 :デフォルトの名無しさん:2010/05/27(木) 17:50:32
そういう事は前スレで提案しなさいよ!

8 :1:2010/05/27(木) 18:03:27
>>7
貼り終わった後に思ったんだ、すまん。

9 :デフォルトの名無しさん:2010/05/28(金) 18:54:42
プッシュボタンを押すapiはありますか?
例えば
push(A);でAボタンが押されるみたいな

10 :デフォルトの名無しさん:2010/05/28(金) 20:27:14
ありますん

11 :デフォルトの名無しさん:2010/05/28(金) 21:35:41
>>9
SendMessage

12 :デフォルトの名無しさん:2010/05/28(金) 21:50:30
findwindowを使ってウインドウハンドルを取得しているんですが、
タイトルバーのないウインドウハンドルを取得するにはどうしたらいんでしょうか?

13 :デフォルトの名無しさん:2010/05/28(金) 22:24:13
>>12
クラス名指定

14 :デフォルトの名無しさん:2010/05/28(金) 22:32:36
>>13
特定のソフトにしかないと思ってたんですが、
クラス名を調べられるソフトがあるんですね。ありがとうございます

15 :デフォルトの名無しさん:2010/05/29(土) 00:13:37
SPY++ってのがあってだな。

16 :デフォルトの名無しさん:2010/05/29(土) 02:43:55
二次関数みたいな散布図のグラフを描画したいのですが
SetPixel関数だと小数や負の値に対応できず困っています
こういったグラフを描画する場合にはどのような手法が
一般的に用いられているのでしょうか?

17 :デフォルトの名無しさん:2010/05/29(土) 03:04:16
-100〜100を0〜200にするとか

0〜100.00を0〜10000にするなどあるだろ。

18 :デフォルトの名無しさん:2010/05/29(土) 09:29:03
ヘッダーファイルに以下のプロトタイプ宣言を記述したいのですが

void start(HWND hwnd);

'HWND' : 定義されていない識別子です。と出てきてしまいます。
これはどうすればコンパイルできるようになりますか?



19 :デフォルトの名無しさん:2010/05/29(土) 09:31:51
typedef HWND int

20 :デフォルトの名無しさん:2010/05/29(土) 09:45:15
そういう問題じゃないような気がするがどうでもいいか

21 :デフォルトの名無しさん:2010/05/29(土) 09:50:30
windows.h をインクルード。

22 :デフォルトの名無しさん:2010/05/29(土) 10:03:27
>>19-21
ありがとうございます
windows.hをヘッダーにインクルードすると
.obj で定義されています。というエラーが出てしまいました・・・

23 :22:2010/05/29(土) 10:12:35
解決しました
みなさんありがとうございました

24 :デフォルトの名無しさん:2010/05/29(土) 12:50:52
>>15
そんなツールがあったんですね。
ありがとうございます!

25 :デフォルトの名無しさん:2010/05/29(土) 17:14:31
指定したファイルがリネーム可能な状態かどうかの判定ってできるかな?


26 :デフォルトの名無しさん:2010/05/29(土) 17:39:53
>>25
if(MoveFile("a","a")){

}

27 :デフォルトの名無しさん:2010/05/29(土) 19:03:31
なんと!

28 :デフォルトの名無しさん:2010/05/30(日) 00:25:41
CreateProcessする時の環境変数を、親プロセスから引き継がずに自前で用意しようとしています。
その中身として、システムのプロパティの詳細設定で設定したものを使いたいのですが、
Win32APIやShell32あたりで取得する方法はないでしょうか?
または、システムのプロパティの環境変数の設定が行われたら即座に親プロセス側の環境変数を
連動して変更するようにすることは可能でしょうか?

29 :デフォルトの名無しさん:2010/05/30(日) 01:35:37
>>28
前者はSetEnvironmentVariable
後者は変更してくれというメッセージを親プロセスに送る


30 :デフォルトの名無しさん:2010/05/30(日) 08:26:04
乗り遅れたけど全スレのRichEditの問題って解決した?
RICHED20Aに対してEM_GETLINEやるとどうも尻切れする。
len = SendMessage(handle, EM_GETLINE
で返されるlenがどうも常にUnicodeの文字数になる。マニュアルにはTCHARs copiedって書いてあるんだが。
EM_LINELENGTHでも同じ。

31 :デフォルトの名無しさん:2010/05/30(日) 09:08:39
>>30
RichEditは知らないが、通常のエディットボックスでビジュアルスタイルを使うと
ANSI版だろうが、Unicode版の動作するという問題あるよな。

32 :30:2010/05/30(日) 09:20:26
RICHEDIT20Aもビジュアルスタイルの影響を受けるみたいだな。
http://fs-cgi-basic01.freespace.jp/~hsp/ver3/hsp3.cgi?print+200510/05100004.txt

33 :デフォルトの名無しさん:2010/05/30(日) 09:57:37
おお、ありがとう。ビジュアルスタイルについて調べてみます。

34 :デフォルトの名無しさん:2010/05/30(日) 11:37:09
32x32より大きいアイコンをexeやdllから抽出するにはどうすればいいですか?

35 :デフォルトの名無しさん:2010/05/30(日) 11:38:55
>>29
ありがとうございます。ちょっとやりたかったことと違いましたが、後者はWM_SETTINGCHANGEだとわかりました。
その後の調査でRegenerateUserEnvironment という未公開APIを見つけたのでこれを使うことにしました。

36 :デフォルトの名無しさん:2010/05/30(日) 17:12:39
>>34
http://stackoverflow.com/questions/1703186/can-48x48-or-64x64-icons-be-obtained-from-the-vista-shell

37 :デフォルトの名無しさん:2010/05/31(月) 00:10:15
>>36ありがとうございます。今度やってみます

38 :デフォルトの名無しさん:2010/05/31(月) 15:00:43
メニューバーの名前で(&文字)と書くことでAlt+文字を押すことでメニューを開けると思うのですが、
一般的なプログラムのように同時に押せば開くようにするにはどのようにすればいいのでしょうか?
現状ではAltキーをいったん話してメニューにフォーカスが合ってからでしか動作しません。

39 :デフォルトの名無しさん:2010/05/31(月) 15:02:41
timeBeginPeriod() で設定した値はシステム全体に影響するようなのですが、
今いくつに設定されているのかを知る方法はありますか ?
また、どのプロセスが設定しているのかを知る方法はありますか ?
教えて下さい。

40 :デフォルトの名無しさん:2010/05/31(月) 18:03:04
('д`)えー

41 :デフォルトの名無しさん:2010/05/31(月) 18:36:51
現在ShellExecuteでURLを起動しているのですが、これをCreateProcessに置き換えなければいけなくなりました
そこで、既定のブラウザで起動できるようにURL形式の文字列をブラウザのパス(および引数)にしたいのですが、そんなAPIはありませんか?

42 :デフォルトの名無しさん:2010/05/31(月) 18:50:34
ShellExecute

43 :デフォルトの名無しさん:2010/05/31(月) 19:04:35
>>41
http://www.atmarkit.co.jp/fdotnet/dotnettips/652getdefaultbrowser/getdefaultbrowser.html

44 :デフォルトの名無しさん:2010/05/31(月) 19:05:01
Windows7だと何かGetKeyStateが正しく返ってこない
それかキーの認識が異常に遅いんだが・・・
これに変わって押されてるキーを識別するAPI教えてください

45 :デフォルトの名無しさん:2010/05/31(月) 19:05:54
>>38
アクセレーター メニュー
とかで検索

46 :デフォルトの名無しさん:2010/05/31(月) 21:45:05
>>45
ありがとうございます。
ですが、知りたいのはメニューバー内にあるコマンドのアクセレータではなく、
メニューでファイル(&F)となっている時にAltと同時にFを押すことによってドロップダウンさせる方法です

47 :デフォルトの名無しさん:2010/05/31(月) 22:18:27
くだらない質問なのですが、
DLL_PROCESS_ATTACHにてアタッチされた際に
GetProcessHeap()を呼ぶとエラーが返されてしまうのですが、
上記が発生してしまう原因と回避方法を教えていただきたいです。


よろしくお願いします。

48 :デフォルトの名無しさん:2010/05/31(月) 22:20:46
>>46
エディットコントロールにフォーカス入ってると Alt+F がエディット側に喰われて親に届いてないくさい
Alt↓ ↑ F で親のメニュー側にフォーカスされて 配送されてるっぽいが…
フォーカスを掴んでるコントロール次第じゃねーかな? (親に送ってるかどうか?)

49 :デフォルトの名無しさん:2010/05/31(月) 23:32:54
ウインドウ作成中のウインドウメッセージはWM_CREATEですが、
ウインドウ作成後のウインドウメッセージなんてものはあるのでしょうか。
また、無ければ代替案を教えてください。


50 :デフォルトの名無しさん:2010/05/31(月) 23:44:40
WM_CREATEは作成後だろ。
単にAPIから戻る前に投げられるというだけで。

51 :デフォルトの名無しさん:2010/06/01(火) 00:11:24
クライアント領域が無いという意味では WM_NCCREATE のほうが先に届く
もっと先には WM_GETMINMAXINFO が飛んできたり…

サブクラス化するにしても(WM_CREATEが実質来ないということに注意する程度で)
あまり気にしたことはないが、CreateWindow(Ex) 帰還後、真っ先に届くのはケースバイケースかなぁ

52 :デフォルトの名無しさん:2010/06/01(火) 01:29:39
色々来てたような気はするが、ウィンドウプロシージャの先頭に
TRACEでも置いておけば何が来てるかくらい調べられると思うが

53 :デフォルトの名無しさん:2010/06/01(火) 08:29:59
WM_CREATEハンドラからWM_APPをポストする。

54 :デフォルトの名無しさん:2010/06/01(火) 11:13:02
>>44
WM_KEYDOWNとWM_KEYUPを監視して自分で管理

55 :デフォルトの名無しさん:2010/06/01(火) 20:44:00
IMEを利用して100文字くらい入力続けていると
入力途中でもWM_IME_COMPOSITIONが送られてしまうのですが仕様でしょうか

56 :デフォルトの名無しさん:2010/06/01(火) 21:51:29
>>55
メモ帳で試してみたら、むしろ一文字入力毎に送られてきたのだが。
環境はx64Win7+OfficeIME2010。
入力途中に送られてくるのが普通、位に考えておけば良いんじゃないか?

57 :デフォルトの名無しさん:2010/06/01(火) 23:00:04
すみません説明不足でした
入力途中にもかかわらず(確定していない)のに
GCS_RESULTSTRが含まれているんです。



58 :デフォルトの名無しさん:2010/06/01(火) 23:32:56
リソースでメニューバーを作成したときに
ウィンドウのリサイズすると、ちらつくのはどう対処すればいいの?

59 :デフォルトの名無しさん:2010/06/02(水) 00:20:19
>>57
MS-IMEには、ある程度以上長く入力すると、
操作とは無関係に初めの方から自動的に確定していく仕様があるのだが、
それじゃないか?

60 :デフォルトの名無しさん:2010/06/02(水) 10:50:47
Windows7だとGetPixelがすんごい遅いんですが
XPみたいにサクサクGetPixelする方法を教えてください

61 :デフォルトの名無しさん:2010/06/02(水) 10:53:39
Aeroを切る

62 :デフォルトの名無しさん:2010/06/02(水) 14:27:19
なあブタ共、ウィンドウハンドルから直接GetPixelする方法ってないか?
あったら教えろよブタ共

63 :デフォルトの名無しさん:2010/06/02(水) 14:35:03
直接という意味がDCを経由しないということなら無理

64 :デフォルトの名無しさん:2010/06/02(水) 16:00:47
そうですかありがとうございましたブタ野郎

65 :デフォルトの名無しさん:2010/06/02(水) 18:02:00
GUIプログラムになれていなんですけど
子ウインドウとかダイアログってマネージャークラスみたいなのが生成と破棄を管理すべき?

66 :デフォルトの名無しさん:2010/06/02(水) 18:22:45


67 :デフォルトの名無しさん:2010/06/02(水) 18:40:52
ごめんなさいスレ違いっぽいですね、皆様気にしないで下さい

68 :デフォルトの名無しさん:2010/06/02(水) 18:42:39
いや許さん

69 :デフォルトの名無しさん:2010/06/02(水) 19:48:05
MDIで、フレームウインドウを非表示、子ウインドウを表示と言った事は可能でしょうか。


70 :デフォルトの名無しさん:2010/06/02(水) 19:50:37
無理
親が非表示だと子も非表示なるよ

71 :デフォルトの名無しさん:2010/06/02(水) 20:02:31
回答有難うございます。


72 :デフォルトの名無しさん:2010/06/02(水) 21:41:39
やりたいこと:
・JNIを用いてWindows7のマルチタッチメッセージをJavaで拾いたい
 →とりあえずJavaのFrameクラスへのWM_TOUCH/WM_GESTUREメッセージを拾いたい

試したこと:
 JavaのFrameクラスのハンドルに対してRegisterTouchWindowを行い
・WH_CALLWNDPROCRET
・WH_GETMESSAGE
・WM_MOUSE_LL
あたりをSetWindowsHookExでフック

結果:
 WM_TOUCH/WM_GESTUREメッセージが拾えない
(マウスUP/DOWNメッセージやWM_PAINT/WM_NCHITTESTなんかは拾えている)

 調べてみたら、RegisterTouchWindowの戻りがFALSEになってて
 GetLastErrorでERROR_ACCESS_DENIEDが返ってきていた
(RegisterTouchWindowに渡すハンドルが正しいことは確認済み)
 →困った

……んなわけで、Windows7マルチタッチメッセージのフック方法が知りたいのです
 お解りの方教えてください

73 :デフォルトの名無しさん:2010/06/02(水) 21:45:08
まず、Javaじゃない普通のウィンドウにやってみればいいじゃん。

74 :デフォルトの名無しさん:2010/06/02(水) 21:47:02
The function fails with ERROR_ACCESS_DENIED if the calling thread does not own the specified window.

だってさ。

75 :デフォルトの名無しさん:2010/06/02(水) 23:33:20
WH_MOUSE_LLでマウスフックを試みている者です。
コールバック関数MouseHookProc()でwParamがWM_MOUSEMOVEだった場合、
メインウインドウにPostMessage()し、そこで座標などを計算し、
MessageBox()が表示される段階まで着ました。

が、MessageBox()を表示する処理が大変遅く感じられます。
改善策があれば教えてください。


76 :デフォルトの名無しさん:2010/06/03(木) 00:00:37
結果的に何がしたいの?


77 :デフォルトの名無しさん:2010/06/03(木) 00:08:50
>>76
SetCursorPos()でのカーソルの移動です。


78 :デフォルトの名無しさん:2010/06/03(木) 00:12:09
PostMessageは止めるべきだな。回数が多すぎる。
WH_MOUSE_LLの呼び出しコンテキストは
SetWindowsHookExの呼び出し元になるから、
とりあえずデータをメモリにため込んでいけばいいかと。
MessageBoxを表示するタイミングはよく判らないが、
そのタイミングでPostMessageを使って通知してやれば良いんじゃないか?

79 :デフォルトの名無しさん:2010/06/03(木) 00:27:05
>>78
>とりあえずデータをメモリにため込んでいけばいいかと。
この箇所を詳しくお願いできるでしょうか。


80 :デフォルトの名無しさん:2010/06/03(木) 00:50:43
>>77
それとMessageBoxはどう関係あるの?
何をしたいのかまったく分からん


81 :デフォルトの名無しさん:2010/06/03(木) 00:52:30
OKボタンの上にカーソル持っていきたいとかなら
CBTフック使えばいいんじゃね

82 :デフォルトの名無しさん:2010/06/03(木) 09:42:47
タスクマネージャで優先度を設定できますが
それをAPIでやる方法を教えてください

83 :デフォルトの名無しさん:2010/06/03(木) 09:57:20
できた。
おまえらってほんと糞の役にもたたねーゴミだなw

84 :デフォルトの名無しさん:2010/06/03(木) 10:15:52
SetPriorityClassとかなかったっけ

85 :デフォルトの名無しさん:2010/06/03(木) 10:58:05
非アクティブなウィンドウにキーを送る方法を教えてくれ

86 :デフォルトの名無しさん:2010/06/03(木) 11:21:13
sendmessage + WM_KEYDOWN

87 :デフォルトの名無しさん:2010/06/03(木) 11:31:32
>>86
それメモ帳で試してみたけど送れなかった、以下ソース
HWND handle = ::FindWindow( "Notepad", "無題 - メモ帳" );
::SendMessage( handle, WM_KEYDOWN, VK_F1, 0);
::SendMessage( handle, WM_KEYUP, VK_F1, 0);

何がダメか教えろ

88 :デフォルトの名無しさん:2010/06/03(木) 11:36:21
notepad.exe

89 :デフォルトの名無しさん:2010/06/03(木) 11:45:03
('д`)えーまじっすか

90 :デフォルトの名無しさん:2010/06/03(木) 11:50:24
ファイルハンドルやらプリンターハンドルからアプリ名を取得する方法はないかなぁー
最悪、アプリが保持してるハンドルの列挙からマッチングかけてもいいのだが

91 :デフォルトの名無しさん:2010/06/03(木) 11:51:06
>>87
Spy++で監視してF1押してみ

92 :デフォルトの名無しさん:2010/06/03(木) 13:58:51
('A`)マンドクセ

93 :デフォルトの名無しさん:2010/06/03(木) 17:07:47
>>80
きちんとフックが機能しているか確認する為にMessageBox()しています。


94 :デフォルトの名無しさん:2010/06/03(木) 17:19:05
なっとう


95 :デフォルトの名無しさん:2010/06/03(木) 17:20:48
もし素直にSpy++でメッセージを監視していればF1は
として処理されていると確認でき
対応法も自ずとわかっただろうに

96 :デフォルトの名無しさん:2010/06/03(木) 17:38:22
( ゚д゚)ポカーン

97 :デフォルトの名無しさん:2010/06/03(木) 19:20:18
>>93
フックプロージャー内でOutputDebugStringすれば十分では?

98 :デフォルトの名無しさん:2010/06/03(木) 19:33:13
>>93
LRESULT MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam){
if(nCode==HC_ACTION && wParam==WM_MOUSEMOVE){
MOUSEHOOKSTRUCT* mhs = (MOUSEHOOKSTRUCT*)lParam;
if( ... ){
SetCursorPos(x,y);
return TRUE;
}
}
return CallNextHookEx(hhk, nCode, wParam, lParam)
}
とか
#define WM_HKMOUSEMOVE WM_USER+0x100
LRESULT MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam){
BOOL skip=FALSE;
if(nCode==HC_ACTION && wParam==WM_MOUSEMOVE){
MOUSEHOOKSTRUCT* mhs = (MOUSEHOOKSTRUCT*)lParam;
skip=SendMessage(g_hwnd,WM_HKMOUSEMOVE,0,MAKELPARAM(mhs->pt.x,mhs->pt.y));
}
return (skip ? TRUE : CallNextHookEx(hhk, nCode, wParam, lParam));
}
MainProc
case WM_HKMOUSEMOVE:
{ int x=(short)LOWORD(lParam);
int y=(short)HIWORD(lParam);
if( ... ){
SetCursorPos(x,y);
return TRUE;
}
return FALSE;
}

99 :デフォルトの名無しさん:2010/06/03(木) 19:34:24
>>87
子のEditの方に投げてやるといいよ

100 :デフォルトの名無しさん:2010/06/03(木) 20:06:42
>>87
トップレベルのウインドウに投げても駄目だよ。
それはメモ帳の枠の部分にキーを入力してることになる。
メモ帳は枠+エディットコントロールのような構成だから
エディットコントロールにメッセージを送らないと駄目。

あと、WM_KEYDOWNはTranslateMessageに処理させないといけないので
SendではなくPostする。

101 :デフォルトの名無しさん:2010/06/03(木) 22:59:03
メニューバーを持ってるウィンドウで、メニューを操作中(カーソルキーでメニュー選択中)
かどうかを判断する方法はないですか。
フォーカスも変わらないしどうにも行き詰まってしまいました。
調べるほどメニューってどういうものなのかがわからなくなっていく。。。



102 :デフォルトの名無しさん:2010/06/03(木) 23:04:38
Spy++でメッセージ見てみればいいじゃん。

103 :101:2010/06/03(木) 23:11:01
補足ですが、
メニュー操作中というか、ALTを押してメニューを開いてる状態と言いますか、
メニューが開いているのでキーを押してもメッセージがウィンドウに通知されない
状態かどうかの判断です。
キーボードフックのコールバックからアクティブなウィンドウの状態を調べたいのです。

104 :デフォルトの名無しさん:2010/06/03(木) 23:14:23
他の方法もありそうだけど
WM_ENTERMENULOOP
WM_EXITMENULOOP
でフラグでも立てとけば?


105 :デフォルトの名無しさん:2010/06/03(木) 23:16:41
なんか勘違いしてるな。

106 :101:2010/06/03(木) 23:25:09
>> 104
試しにSendMessageをフックして共有メモリにメニュー表示中のウィンドウを保持してみます。
ありがとうございます。


107 :デフォルトの名無しさん:2010/06/03(木) 23:32:25
はいはい。がんばってね。

108 :101:2010/06/03(木) 23:41:50
ありがとう、いけました。

109 :デフォルトの名無しさん:2010/06/04(金) 07:53:07
ママ「Windowsとは何か。それは可食体か。」

110 :デフォルトの名無しさん:2010/06/04(金) 14:11:09
>>100
ありがとう参考になった。
ぶっちゃけキーを送りたいのは他のソフトだったんだけど
とりあえずメモ帳で試してみようとおもって。
メモ帳でやるならハンドルから更にExとかでエディットのハンドルを取ってやればいいのかな。


111 :デフォルトの名無しさん:2010/06/04(金) 14:57:30
HDCから幅と高さを取得する方法教えて

112 :デフォルトの名無しさん:2010/06/04(金) 15:06:39
かかってこい

113 :デフォルトの名無しさん:2010/06/04(金) 16:26:10
GetDeviceCaps(hdc,HORZRES)
GetDeviceCaps(hdc,VERTRES)


114 :デフォルトの名無しさん:2010/06/04(金) 16:30:20
>>113
ありがとうありがとう^^

115 :デフォルトの名無しさん:2010/06/04(金) 22:47:52
指定されたモジュールは見つかりませんって出るんですが、
これはどうやれば原因がわかるんでしょうか?

使ってるAPIはSHGetFileInfoです。


116 :デフォルトの名無しさん:2010/06/04(金) 22:58:40
あきらめろ。

117 :デフォルトの名無しさん:2010/06/05(土) 00:40:27
>>115
5番目の引数を確認すれ。

118 :デフォルトの名無しさん:2010/06/05(土) 15:33:16
windowsマシンでsjisの文字列をEUC-JPにC++から変換するAPIはありませんか?
WideCharToMultiByteは駄目でした。

119 :デフォルトの名無しさん:2010/06/05(土) 15:36:28
mlang.dll の ConvertINetString()

120 :デフォルトの名無しさん:2010/06/05(土) 16:58:30
WideCharToMultiByteでEUC-JPのコードページ番号を指定しても無理とな?

121 :デフォルトの名無しさん:2010/06/05(土) 16:59:55
>>120
0が帰ってきました。

122 :デフォルトの名無しさん:2010/06/05(土) 17:06:56
GetLastError()の返り値に手がかりがあるかもしれん

123 :デフォルトの名無しさん:2010/06/05(土) 18:09:33
>>121
EUC-JPのコードページは「20932」と「51932」のどっちを使った?

124 :デフォルトの名無しさん:2010/06/05(土) 18:40:57
51932です

125 :デフォルトの名無しさん:2010/06/05(土) 18:42:30
コードさらせよ。

126 :デフォルトの名無しさん:2010/06/05(土) 19:48:22
パクるんですね、わかります。

127 :デフォルトの名無しさん:2010/06/06(日) 06:22:42
WideCharToMultiByte
MultiByteToWideChar
は51932は使えんかった気が…

とりあえず、おいらは 上記のを使ってみて失敗したら mlang.dll の
ConvertINetUnicodeToMultiByte
ConvertINetMultiByteToUnicode
を使うようにしてる。



128 :デフォルトの名無しさん:2010/06/06(日) 13:07:28
TextOutでint型の変数の値を表示するにはどうすればできますか?

129 :デフォルトの名無しさん:2010/06/06(日) 13:10:24
数値を文字列に変換することから始めましょう

130 :デフォルトの名無しさん:2010/06/07(月) 00:41:45
TextOutにint方の数値を表示するにはどのようにすればよいですか?

131 :デフォルトの名無しさん:2010/06/07(月) 00:53:28
wsprintf
stringstream

132 :デフォルトの名無しさん:2010/06/07(月) 04:01:47
誰かプロパティシートを画面中央に表示させる方法を教えてもらえないでしょうか?
開始時のコールバックでSetWindowPosしてみたら、
一瞬OS規定の場所に表示されてから画面中央へ移動するので見苦しいのです。

133 :デフォルトの名無しさん:2010/06/07(月) 04:40:20
とりあえずソース張れ
WM_CREATEのときとかで動かしてるか?

134 :デフォルトの名無しさん:2010/06/07(月) 05:14:50
キーボード入力をフックで奪ったら
IMEにキー入力がいかなくなっちゃんだけどどうすればいい?
ごく一部のキーだけIMEから奪うようにしたい

奪った後にPostMessageでWM_KEYDOWNとWM_KEYUPを投げてるんだけどIMEは拾ってくれない

135 :デフォルトの名無しさん:2010/06/07(月) 07:27:16
コンテキストメニューにも種類がありますか?
メニューアイテムにアイコンを描画したんですが、メニューアイテムが小さすぎて16x16が半分位しか表示されません。

エクスプローラーのようなコンテキストメニューにするにはどうしたらいいんでしょうか?


136 :デフォルトの名無しさん:2010/06/07(月) 10:55:54
>>133
規制食らってて、携帯からなのでソース貼るのはちとしんどいです。

後から自分のソース見直したら、
PROPSHEETHEADER::pfnCallbackに渡したコールバックのタイミングで動かそうとしても動かなかったみたいです。
最初に表示されるページのWM_INITDIALOGのタイミングだと移動する事はするけど、一瞬本来の位置に表示されてからなのです。
(されずにすむときもある)

137 :デフォルトの名無しさん:2010/06/07(月) 11:14:50
まず服を脱ぎます

138 :デフォルトの名無しさん:2010/06/07(月) 19:16:38
音量を調整するapiを探しています。
waveOutSetVolumeではwave出力の音量を変更するかと思いますが、
一番左の主音量を変更するAPIはないでしょうか?

139 :デフォルトの名無しさん:2010/06/07(月) 19:20:27
>>138
http://www.terra.dti.ne.jp/~vivas/delphi/mixerapi.html

140 :デフォルトの名無しさん:2010/06/07(月) 19:20:34
>>135
自力で描画する場合は高さを指定できたはず

141 :デフォルトの名無しさん:2010/06/07(月) 21:47:26
スレ違いかもしれんが教えてください
Windowsでファイル保存したときの日本語ファイル名って

・FAT32のLFNならばUTF-16LE
・FAT16/FAT32のSFNならばShift-JIS(CP932)

という理解でOK?

142 :デフォルトの名無しさん:2010/06/07(月) 21:48:35
たぶんNG

143 :デフォルトの名無しさん:2010/06/07(月) 22:08:37
>>140
SetMenuItemBitmapsを使ってるんですが、引数にそれらしいものはないんですが・・・
他にもAPIがあるんでしょうか?


144 :デフォルトの名無しさん:2010/06/07(月) 22:10:23
>>141
システムロケールも影響するからそうはならないはず

145 :デフォルトの名無しさん:2010/06/07(月) 22:12:40
CreateProcess で外部プログラムを起動するときに
隠しウィンドウで起動させたいのですが
それらしいオプションが見当たりません
どこをどうすればよいでしょう?

146 :デフォルトの名無しさん:2010/06/07(月) 22:14:30
>>145
STARTUP_INFO 構造体のメンバを見直してみ。

147 :デフォルトの名無しさん:2010/06/07(月) 22:17:35
ちょっと前にも見たなこの話題

148 :デフォルトの名無しさん:2010/06/07(月) 23:31:38
>>134
奪わないキーはCallNextHookEx呼べ

149 :デフォルトの名無しさん:2010/06/08(火) 01:31:45
>>141
日本語Windows上で日本語使っているならば、その通り

150 :デフォルトの名無しさん:2010/06/08(火) 16:00:13
rundll32.exe *.dll,* の形式で使いたいのですが、
任意のファイルを、関連付けされていない任意のアプリで開く
つまりファイルドロップや送るを再現するようなDLLはあるのでしょうか?

rundll32.exe url.dll,FileProtocolHandler は
関連付けされているアプリで開くことしかできませんでした

151 :デフォルトの名無しさん:2010/06/08(火) 16:51:41
APIの尻にあるAとかWってAが32BitでWが64Bitで使われてるという理解でいいんでしょうか?


152 :デフォルトの名無しさん:2010/06/08(火) 16:59:09
Aがshift_jisでWがunicode文字列を引数に取ります

153 :デフォルトの名無しさん:2010/06/08(火) 17:04:49
ANSI(A)とUnicode(W)

154 :デフォルトの名無しさん:2010/06/08(火) 19:41:30
>>150
ShellExecute

155 :デフォルトの名無しさん:2010/06/08(火) 19:58:47
>>143
WM_MEASUREITEM とかは送られてきてない?知らないけど

156 :デフォルトの名無しさん:2010/06/08(火) 20:41:41
リストビューで、32x32のアイコンと文字列を列挙しました。
次に同じリストビューで、アイコン無しの文字列を列挙する為、
ListView_DeleteAllItems()とListView_DeleteColumn()で項目を削除し、
maskをLVIF_TEXTのみで行ったのですが、
高さ32が保持されたままになってしまいます。

削除し足りない部分や、加えるべき動作を教えてください。


157 :デフォルトの名無しさん:2010/06/08(火) 20:51:15
>>143
そのAPIだと、チェックマーク代わりに使うビットマップを指定しているだけだろ。
MENUITEMINFO.hbmpItemに指定する方法でやれば良い。

158 :デフォルトの名無しさん:2010/06/08(火) 21:21:49
>>156
オーナードローをしてないのなら
ListViewと関連付けてるImageListの影響を受けてるはず。

159 :デフォルトの名無しさん:2010/06/08(火) 21:45:46
>>151
後学のためになぜそういう理解に至ったのか400字以内で教えてくれないか

160 :デフォルトの名無しさん:2010/06/08(火) 21:51:29
Windows9x系を知らないからじゃね?
そこら辺の歴史的経緯を知らないと、
ANSI/Unicodeで分かれている事を理解し辛いと思う。

161 :156:2010/06/08(火) 22:38:16
>>158
ImageList_Destroy()やImageList_RemoveAll()を試してみましたが、変化は見られませんでした。


162 :デフォルトの名無しさん:2010/06/08(火) 23:06:23
>>161
おそらく32x32でListView_SetImageList()したときのが残ってるんだろう。
なので、ListView_SetImageList(hwnd,NULL,LVSIL_SMALL);して
それでもダメなら、ダミーの小さいアイコンのImageListをCreate()してSetImageList()してやればいい。

163 :156:2010/06/08(火) 23:16:17
>>161
後者の方法で、

himl=ImageList_Create(1,1,ILC_COLOR,0,0);
ListView_SetImageList(hList,himl,LVSIL_SMALL);

の様にする事で解決しました。
ありがとうございます。


164 :141:2010/06/09(水) 04:04:21
【改】
スレ違いかもしれんが教えてください
Windowsでファイル保存したときのファイル名って

・FAT32ならばUTF-16LE
・FAT16ならば言語依存(2バイト文字ならばシフトJIS等)

という理解でOK?


165 :デフォルトの名無しさん:2010/06/09(水) 06:57:21
逆に聞きたいんだが
なぜファイル名の文字コードなんて気にするんだ?

166 :デフォルトの名無しさん:2010/06/09(水) 07:37:46
>>164
先にFAT16とVFATとFAT32の仕様を自分で調べてくる事を勧める。
その仕様に従って記録されるだけだ。

167 :デフォルトの名無しさん:2010/06/09(水) 07:39:09
>>159
>>160
今使ってるのがXpの64Bitなんで。
てっきりWの方を使われてるのはその所為だと思ってました。


168 :デフォルトの名無しさん:2010/06/09(水) 07:51:20
素人でx64版XP使っている奴なんているんだな。
何という茨の道……

169 :デフォルトの名無しさん:2010/06/09(水) 08:46:28
>>154
教えていただいてありがとうございました
この解釈は正しいのでしょうか?

rundll32.exeはdll各種を実行できる
shell32.dllのAPI関数の一つにShellExecuteがある
ShellExecuteはファイルドロップや送るに相当する動作を再現する
"rundll32.exe shell32.dll,ShellExecute 引数" の書式である

2000、XPにてファイル名を指定して実行、またはバッチファイルから実行で
書式を変えながら試行錯誤してましたが結局うまくいきませんでした

170 :デフォルトの名無しさん:2010/06/09(水) 08:47:58
以下は全滅でした
-------------------------------
rundll32.exe shell32.dll,ShellExecute (handle "open" test_ShellExecute.txt NULL NULL SW_SHOWNORMAL)
rundll32.exe shell32.dll,ShellExecute handle "open" test_ShellExecute.txt NULL NULL SW_SHOWNORMAL
rundll32.exe shell32.dll,ShellExecute handle, "open", test_ShellExecute.txt, NULL, NULL, SW_SHOWNORMAL
rundll32.exe shell32.dll,ShellExecute (handle, "open", test_ShellExecute.txt, NULL, NULL, SW_SHOWNORMAL)
rundll32.exe shell32.dll,ShellExecute (handle, "open", test_ShellExecute.txt, NULL, NULL, SW_SHOWNORMAL);
rundll32.exe shell32.dll,ShellExecute test_ShellExecute.txt
rundll32.exe shell32.dll,ShellExecute wordpad.exe
rundll32.exe shell32.dll,ShellExecute
rundll32.exe shell32.dll,ShellExecuteEX
rundll32.exe shell32.dll,ShellExecuteEXA

以下は動作しました(比較のために実験)
-------------------------------
マウスのプロパティのダイアログが現れる
rundll32.exe shell32.dll,Control_RunDLL main.cpl
ファイルを開くアプリケーションの選択 のダイアログが現れる
rundll32.exe shell32.dll,OpenAs_RunDLL
関連付けされているアプリからファイルが開く
rundll32.exe url,FileProtocolHandler test_ShellExecute.txt
ワードパッド起動
rundll32.exe url,FileProtocolHandler wordpad.exe

171 :デフォルトの名無しさん:2010/06/09(水) 09:30:17
>>169
思考錯誤するのではなくドキュメントを読みましょう。
ShellExecuteの第一引数はHWND

172 :デフォルトの名無しさん:2010/06/09(水) 09:39:06
>>171
MSのプロジェクトなんてドキュメント読んでその通りいかないことも多いからな
結局試行錯誤はつきまとうんだよ

173 :デフォルトの名無しさん:2010/06/09(水) 09:47:48
試行錯誤はドキュメント通りにやってうまくいかないときにやれよ
最初にドキュメント読まないのは問題外だろ…

174 :デフォルトの名無しさん:2010/06/09(水) 09:56:49
ワロタ

175 :デフォルトの名無しさん:2010/06/09(水) 10:01:03
>>172
それは日本語ドキュメントだけ読んでるからだよ。日本語版読むなとは言わないけど、
英語版との併読は必須。

176 :150:2010/06/09(水) 10:50:56
>>171
ドキュメントを漁るのも読み解くへたくそで困っちゃいますね
試局むきになって夜なべしたのに起動できずですよ・・・
試行錯誤しながらなんとかがんばります

http://msdn.microsoft.com/ja-jp/library/cc422072.aspx
http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx
http://support.microsoft.com/kb/224816/ja

http://chagdali.free.fr/dcs/RunDll.htm
http://hp.vector.co.jp/authors/VA022217/tips/hsp/rundll.html
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200312/03120003.txt
http://www.mmbforums.com/ipb/index.php?showtopic=20233
http://www.boot-land.net/forums/index.php?showtopic=158

このへんは読みましたが
>>169の理解は正しかったのでしょうか

177 :デフォルトの名無しさん:2010/06/09(水) 15:00:59
exeを暗号化して置いておいて違うプログラムで読み込んで戻し
そのままexeとして起動する事ってできるでしょうか?

それとも戻した所で一度書き出してCreateProcessみたいな感じにしかできませんか?

178 :デフォルトの名無しさん:2010/06/09(水) 15:15:18
>>177
ヨユーおk

179 :デフォルトの名無しさん:2010/06/09(水) 15:16:08
>>177
逆に余裕

180 :デフォルトの名無しさん:2010/06/09(水) 15:19:07
>>177
ファイルに書き出さずに実行することは技術的には可能。
ただし、当然ながらそんなものはAPIに用意されていないので、やるなら自分で
メモリ上に実行可能なイメージを構築する必要がある。

近いものに、実行ファイルを圧縮しておいて実行時に展開するソフトがある。
オープンソースでUPXとかあるから、参考になるかと。

ただし、UPXはウイルス等にもよく使われるので、UPXを使っているだけで
ウイルスと誤認されやすい。

181 :デフォルトの名無しさん:2010/06/09(水) 15:39:13
>>178 >>179 >>180
できるんですね、ありがとう!調べてみます!

182 :デフォルトの名無しさん:2010/06/09(水) 18:56:27
>>169
rundllについては
http://support.microsoft.com/kb/164787/ja
ここ読めば理解できるでしょ

> 2000、XPにてファイル名を指定して実行、またはバッチファイルから実行で
という事ならShellExecuteは必要ない
ShellExecuteはShellでコマンドを実行してくれるもの。
>ファイル名を指定して実行、またはバッチファイルから実行
はShellから直接実行しているのと同じなのでそのままコマンドを書けばいい
"C:\Program Files\Windows NT\Accessories\wordpad.exe" "filepath"

183 :デフォルトの名無しさん:2010/06/09(水) 19:06:47
WinMain関数の戻り値について質問です。

ttp://msdn.microsoft.com/ja-jp/library/cc364870.aspx
msdnでは
「関数がメッセージループに入る前に終了する場合は、0 を返してください。」
となっていますが、
以下のサイトでは

ttp://wisdom.sakura.ne.jp/system/winapi/win32/win19.html
0だったり
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win20.html
-1だったり、1だったりします。

実際のところ、どんな値でもイイけど、お約束的に0にしときましょう、ということなんでしょうか??

184 :デフォルトの名無しさん:2010/06/09(水) 19:19:56
個人サイトとMSDNのどっちを信用するんだ?

185 :183:2010/06/09(水) 19:26:45
>>184
ありがとうございました!

186 :デフォルトの名無しさん:2010/06/10(木) 10:34:39
PlaySound() でwavファイルを再生させていいるのですが、
Windowsのバージョンで、音が鳴らないとかありますか?
64bit環境で音がならないと言われたので、調査しているのですがビットレートとか関係するのでしょうか?

187 :デフォルトの名無しさん:2010/06/10(木) 10:50:25
あります。
ビットレートは関係ありません。

188 :デフォルトの名無しさん:2010/06/10(木) 15:01:41
>>177
createprocess自体をフックしといとて、そのEXE名が来た時に解凍して実行

189 :デフォルトの名無しさん:2010/06/10(木) 15:08:51
>>177
createprocessフックが嫌なら、エミュレートつくれ

190 :デフォルトの名無しさん:2010/06/10(木) 16:03:04
きえろぶっとばされんうちにな

191 :デフォルトの名無しさん:2010/06/10(木) 21:27:53
win7 64bitだけどアプリは32で作ってるからいいよね?
MCIをAPIレベルで使おうとしたらcoredll.dllもmmsystem.dllも無いんだけど
無くなったってこと?仕様が変わって別のものになったとか?
リアルタイムで音声の波形を取りたいから生のデータが欲しいんだけど
どうやればいいんだろう

192 :デフォルトの名無しさん:2010/06/10(木) 21:36:34
winmm.dllか、勘違いしてた

193 :デフォルトの名無しさん:2010/06/10(木) 22:05:22
とりあえずDirectSoundCapture使っとけば間違いない。

194 :デフォルトの名無しさん:2010/06/10(木) 22:43:36
MCIは変なデーター取りこぼしあるから、
DirectSound使った方がいいよ。

195 :デフォルトの名無しさん:2010/06/10(木) 23:10:47
http://blogs.msdn.com/b/windows_multimedia_jp/archive/2009/09/16/sdk.aspx

196 :デフォルトの名無しさん:2010/06/11(金) 00:07:08
XAudio2 はキャプチャに対応してないからなあ。

197 :デフォルトの名無しさん:2010/06/11(金) 20:21:52
インターネットが一般に普及されてなかった頃って、センパイPGはどうやって勉強したの?
書籍が主なんだろうけれども、それこそ何十冊も読み漁るような毎日だったのでせうか?

198 :デフォルトの名無しさん:2010/06/11(金) 20:51:57
今だってネットにはろくな情報がない

199 :デフォルトの名無しさん:2010/06/11(金) 21:01:18
APIが数メガのヘルプファイルに収まる時代だったしな。

200 :デフォルトの名無しさん:2010/06/11(金) 21:03:12
本にも嘘はあったけどな
とりあえずそれっぽく書いてバグ出しまくればわからない所はわかるからなんとかなる

201 :デフォルトの名無しさん:2010/06/11(金) 21:03:40
教えてください

エディットボックスの入力カーソルの座標を取得したいんですが、
拾うことは可能ですか?


202 :デフォルトの名無しさん:2010/06/11(金) 21:10:19
うん。

203 :201:2010/06/11(金) 21:12:21
>>202
拾うためのAPI名を教えてください

204 :デフォルトの名無しさん:2010/06/11(金) 21:30:59
>>203
http://dobon.net/vb/dotnet/control/tbgetcaretposition.html

205 :デフォルトの名無しさん:2010/06/11(金) 22:01:06
>>200
勉強になります。とにかく書いて書いて書きまくってみます。

206 :デフォルトの名無しさん:2010/06/11(金) 22:09:51
VisualC++4.0付属のIDE上で参照可能な
Win32APIマニュアルが物凄く役立ったな。
俺はエロじゃなくてAPIマニュアルで英語を覚えたよ。

207 :デフォルトの名無しさん:2010/06/11(金) 22:21:58
大体、C MAGAZINE

208 :201:2010/06/11(金) 22:55:39
>>202
すいません、語弊がありました。

入力カーソルのエディットボックス上の描画座標が知りたいです。
カーソル位置にツールチップウィンドウを表示させたいんです。
RECTになるのかは分からないのですが、取得するAPIを教えてください。


209 :デフォルトの名無しさん:2010/06/11(金) 23:02:12
EM_POSFROMCHAR

210 :デフォルトの名無しさん:2010/06/11(金) 23:17:16
>>208
GetGUIThreadInfo

211 :デフォルトの名無しさん:2010/06/11(金) 23:28:17
思ったんですけど
ネットがない時代に10年15年かけて学んだセンパイには悪いんですが、
この時代、10年かけた知識が半年もあれば充分手に入ります
そこで質問です。あなたが現役なら今後、やはりJAVAに移行したほうが得策と思いますか?

212 :デフォルトの名無しさん:2010/06/11(金) 23:30:08
いや全然。

213 :デフォルトの名無しさん:2010/06/11(金) 23:30:23
はい

214 :デフォルトの名無しさん:2010/06/11(金) 23:32:28
移行とかいう言葉が出てくる不思議。全部やればいいじゃない。

215 :デフォルトの名無しさん:2010/06/11(金) 23:34:39
キャパシティ的に一杯一杯なんじゃないの?

216 :デフォルトの名無しさん:2010/06/11(金) 23:35:33
10年15年の知識なりが半年で学べるんなら、
この業界、初心者ばっかりのはずだけどなw

217 :デフォルトの名無しさん:2010/06/11(金) 23:37:23
現役なら言われるまでもなくJava使えるから
下らんことほざくな

218 :デフォルトの名無しさん:2010/06/12(土) 00:39:55
ネットは20年ぐらい前からあったでしょ

219 :デフォルトの名無しさん:2010/06/12(土) 01:42:53
Win32APIスレでJavaかよ
JNIでもやりたいのか?

220 :デフォルトの名無しさん:2010/06/12(土) 02:27:22
>10年かけた知識が半年もあれば充分手に入ります
知っているということと、実際に身に付いているということは別物
身に付けるためにはそれなりの年数や場数がいると思うけどな

>やはりJAVAに移行したほうが得策と思いますか
その開発にJAVAが向いていると思えばJAVAになる
客がJAVAでお願いと言ったら、もちろんJAVAになる
要は、自分がJAVAが得意であってもそれで開発できるとは限らんから
JAVAを学ぶことが適切であるとは一概には言えない
ただ、VCとJAVAの開発どちらが多いかと聞かれると、おそらくJAVA
だから、VCよりJAVAを学んだほうが仕事の面では多少有利かもしれない

221 :デフォルトの名無しさん:2010/06/12(土) 02:43:05
>>220
お前バカだろw

222 :デフォルトの名無しさん:2010/06/12(土) 02:43:06
貴重な意見ありがとうございました
こんな半端な小僧がでかい口聞いてすいませんでした

223 :デフォルトの名無しさん:2010/06/12(土) 08:21:30
>>211
スレタイ嫁バカ消えろ

224 :デフォルトの名無しさん:2010/06/12(土) 08:26:52
くだらんこと聞くなよほんとに

225 :デフォルトの名無しさん:2010/06/12(土) 09:50:56
GetTickCountってどっかのメモリの内容をコピーしてるだけの軽い関数って考えていいの?
それとももっといろいろやってる重い関数なんだろうか。

226 :デフォルトの名無しさん:2010/06/12(土) 10:09:32
_GetTickCount@0:
7C80934A BA 00 00 FE 7F mov edx,7FFE0000h
7C80934F 8B 02 mov eax,dword ptr [edx]
7C809351 F7 62 04 mul eax,dword ptr [edx+4]
7C809354 0F AC D0 18 shrd eax,edx,18h
7C809358 C3 ret

227 :デフォルトの名無しさん:2010/06/12(土) 13:22:12
>>225
規格で決まっているわけではないので、なんとも言えない。
とりあえず今の実装では、GetTickCountはむちゃくちゃ速い。

228 :デフォルトの名無しさん:2010/06/12(土) 13:34:00
>>226-227
ありがとう。
こういうのはデバッガで突入してみれば確認できるのね。

229 :デフォルトの名無しさん:2010/06/12(土) 16:57:07
>>226
これはひどい。乗算にシフトまでやってる無駄の多い関数だ。
GetCurrentProcessを見習うべき。

760c5f85: 83c8 ff OR EAX, -0x1
760c5f88: c3 RET

230 :デフォルトの名無しさん:2010/06/12(土) 22:58:17
そのうちGetCurrentFiberのようにマクロにされるんじゃね

231 :デフォルトの名無しさん:2010/06/12(土) 23:45:00
ChooseColor()で取得したrgbResultを、それぞれR、G、Bに分けるにはどのようにすれば良いでしょうか。


232 :デフォルトの名無しさん:2010/06/13(日) 00:11:04
GetRValue
GetGValue
GetBValue

233 :デフォルトの名無しさん:2010/06/13(日) 01:25:10
JAVAで作ったソフトよりAPIで作ったソフトのほうが速いね
でも汎用性悪すぎだし、これから学ぶものでもなさそうだな
過疎ってるところ見るとそんなの常識だろって言われそうだけど

234 :デフォルトの名無しさん:2010/06/13(日) 06:38:30
VC++で最近リソースを使い始めた者なのですが、
MAKEINTRESOURCE(IDR_GAME_SOUND_01001)
はIDR_GAME_SOUND_01001という整数値からリソース文字列へのポインタを
取得するマクロですが、IDR_GAME_SOUND_01001という整数値からでななくて、
"IDR_GAME_SOUND_01001"という文字列から、リソース文字列へのポインタを
取得する方法はございますでしょうか。

ググっても方法を発見できず困っております。
ご存知の方がいましたら、教えていただけないでしょうか。
よろしくお願いします。

235 :デフォルトの名無しさん:2010/06/13(日) 07:24:29
リソースIDを数値じゃなく文字列で定義すればいいだけじゃね?

236 :234:2010/06/13(日) 08:03:09
>>235
すみません。初歩的なことかも知れないのですが、
リソースIDを文字列で定義する方法がわかりません。
▼▼▼
【proc.rc】
// WAVE
//

IDR_GAME_SOUND_01001 WAVE "K:\\41_開発\\wav_play_test\\wav\\rush_crash.wav"

【resource.h】
#define IDR_GAME_SOUND_01001 131

【ソース】
HRSRC hResource = FindResource(
NULL,
MAKEINTRESOURCE(IDR_GAME_SOUND_01001),
"WAVE"); // リソースを探す
HGLOBAL hWavResource = LoadResource(NULL, hResource );
LPVOID lpWav = LockResource( hWavResource );
PlaySound( (LPCTSTR)lpWav, NULL, SND_MEMORY | SND_ASYNC | SND_LOOP);
▲▲▲
上記のソースで期待した動きをするのですが、「MAKEINTRESOURCE(IDR_GAME_SOUND_01001)」を
リソースID直打ちではなくて、文字型の変数を使いたいです。

237 :デフォルトの名無しさん:2010/06/13(日) 09:10:48
>>236
何が不満なのか理解不能だが
#define IDR_GAME_SOUND_01001 131
をコメントアウトして
"IDR_GAME_SOUND_01001"とか
_T("IDR_GAME_SOUND_01001")で呼べばいけんじゃないかな

238 :234:2010/06/13(日) 10:04:22
>>237
ありがとうございます。
おかげさまで解決しました。
resource.h の #define IDR_GAME_SOUND_01001 131 をコメントアウトして、
ソースの
HRSRC hResource = FindResource(
    NULL,
    MAKEINTRESOURCE(IDR_GAME_SOUND_01001),
    "WAVE"); // リソースを探す
の MAKEINTRESOURCE(IDR_GAME_SOUND_01001) を "IDR_GAME_SOUND_01001" に
変更すると理屈はよくわかりませんが上手く動きました。

VSの統合開発環境で、リソースにwavファイルを普通にインポートした後に、
resource.h に自動に作成される #define 文を削除しなければいけないのは
正直、気持ち悪いです。このやり方が一般的なんでしょうか。

239 :デフォルトの名無しさん:2010/06/13(日) 10:26:36
IDE上のリソースIDを定義する箇所で、
ダブルクォートで囲んだ文字列を指定できるだろ。
ちなみに、一般的にはリソースIDにわざわざ文字列なんか使わない。

240 :デフォルトの名無しさん:2010/06/13(日) 12:27:07
たまにリソースIDは16ビットと決めつけてるプログラムがあるんだよな。

241 :デフォルトの名無しさん:2010/06/13(日) 13:37:23
当方windows7環境ですが、多くのアプリケーションのウィンドウは外枠が5ドット程度ありますが、
時々1ドット程度の非常に細い外枠を見ることがあります
こういうウィンドウを作りたいんですが、CreateWindowのウィンドウスタイルで変えられるんでしょうか?
いろいろ試したんですが今のところ太い外枠にしかなりません

242 :デフォルトの名無しさん:2010/06/13(日) 14:43:15
WM_NCCALCSIZEとDwmExtendFrameIntoClientAreaで
あともう一寸だけ頑張る、って感じだったかと。
クライアント領域にフレームの描画を持ち込むだけだから、
WM_NCHITTESTとかも対応しないと駄目なんだろうなあ。

243 :デフォルトの名無しさん:2010/06/13(日) 14:53:10
vb.netから非アクティブなウィンドウを操作しようとして

Call sendMessage(web.Handle, WM_KEYDOWN, Keys.Tab, Keys.Tab)
Call sendMessage(web.Handle, WM_KEYDOWN, Keys.Tab, Keys.Tab)
Call sendMessage(web.Handle, WM_KEYDOWN, Keys.Enter, Keys.Enter)

と2つある入力領域をタブで飛ばして3つ目にあるボタンを押そうとしたら
タブはうまく動いているようですが、エンターキーが押せませんでした。
vb.netのsendkeyで画面をアクティブにしてやってみるとボタンは押せます。
sendmessageの代わりにpostmessageでもダメでした。

入力領域、ボタンはhtmlで作成し、webブラウザで読み込んでテスト
しています。

原因は何にあるのでしょうか。enterの代わりに入力領域に文字を送ってみても
送信されませんでした。

244 :デフォルトの名無しさん:2010/06/13(日) 15:13:49
Enterはシステムが横取りしてIDOKに変換してんだろ

245 :デフォルトの名無しさん:2010/06/13(日) 16:00:55
ブラウザの方でアクティブ・非アクティブ時の動作が違うだけじゃないのか?

246 :デフォルトの名無しさん:2010/06/13(日) 16:05:49
誤爆スマソorz

247 :デフォルトの名無しさん:2010/06/13(日) 16:06:58
PostMessageAのWM_CLOSEって中はどんな処理してんの?

248 :デフォルトの名無しさん:2010/06/13(日) 16:09:31
ノミ spy++

249 :デフォルトの名無しさん:2010/06/13(日) 16:23:17
AllocConsole()の終了処理は何もしなくてもよいのでつか?
例えば、プログラム終了時にFreeConsole()を呼ぶ必要はありませぬか?

250 :243:2010/06/13(日) 16:31:54
>>244,>>245さんありがとうございます。
と、いうことはsendmessageを用いて非アクティブ状態のウィンドウに対して
エンターキーを押す。という動作は実現できないということでしょうか?orz

実際に操作したいのはflash上に乗ってるボタンでして、アクティブになってる
時にはキーボードからタブキー、エンターキーで操作できたので、何らかの
方法でエンターキーを押せると思ったのですが、無理なのでしょうか。

一瞬ウィンドウをアクティブにして、sendkeyで対応するしかないのかなぁ。

251 :デフォルトの名無しさん:2010/06/13(日) 16:36:18
>>250
Flashかよ。それはFlashの仕様にもよるだろうな。
あとさ、キーボードの操作はDOWNだけじゃないだろ
DOWN→CHAR→UPとくるでしょSpy++とか使ってみた?

252 :243:2010/06/14(月) 12:24:30
>>251さんありがとうございます。
vs2008expressなんでspy++がなくて、uispyも
探してみたのですが見つからず、暗闇の中を
手探り状態ですorz

253 :デフォルトの名無しさん:2010/06/14(月) 12:39:35
ボタンを押すだけならスペースキーでも飛ばせば?

254 :デフォルトの名無しさん:2010/06/14(月) 15:43:24
VC++でテキストファイル「script.txt」をリソースに組み込んで、
ファイルにアクセスするかのように読み出したい(例えば:fgets関数)
のですが、何かよい関数(方法)は、ございますでしょうか。

【テキストファイル】script.txt
【リソースに組み込み】"IDR_GAME_SCRIPT"

それとも下記のように先頭ポインタを取得して
fgetsを自作するしかないのでしょうか。
----------------
  HRSRC hRsrc = FindResource(
    NULL,
    "IDR_GAME_SCRIPT",
    "TXT"); // リソースを探す
  HGLOBAL hGlobal = LoadResource(NULL, hRsrc); // リソースのロード
  void *ptr = LockResource(hGlobal); // データへのポインタ取得
//SizeofResource(NULL, hRsrc)
----------------

よろしくお願いします。

255 :デフォルトの名無しさん:2010/06/14(月) 15:44:50
STLのstringに突っ込んで改行で分割でもしてろカス

256 :デフォルトの名無しさん:2010/06/14(月) 15:57:31
テンポラリを作ってそこから読み出せば?

257 :254:2010/06/15(火) 00:49:32
>>255-256
ありがとうございます。
結局、fgets関数に似たものを自作してfgetsを置き換えました。
テンポラリファイルに書き出す方法は、ゲームなので一瞬でも
ユーザーが見える場所にファイルを置けないため、採用しませんでした。

258 :デフォルトの名無しさん:2010/06/15(火) 00:59:36
ユーザーに弄らせたくないならリソースファイルに格納してる時点でダメだろ。

259 :254:2010/06/15(火) 01:18:53
>>258
普通のユーザーはリソースを見ないと思います。(私の古い偏見。)
コアなユーザーには見られてもしかたないと思っています。

260 :デフォルトの名無しさん:2010/06/15(火) 01:22:00
exeからどうやってリソースファイル見れるの?

261 :254:2010/06/15(火) 01:32:35
>>260
visual studioでexeファイルを開けば、普通に見れます。(画像とか音声ファイルとか)
有料でもいいからexeファイルごと実行可能の状態のままで暗号化するソフトはないのかな?

262 :デフォルトの名無しさん:2010/06/15(火) 01:43:23
ライトユーザーから隠すだけなら、データを全ビット反転するだけでも十分に暗号化したことになる。
この程度ならマシンパワーも必要ないし、すぐ自作できるだろ。

263 :デフォルトの名無しさん:2010/06/15(火) 01:57:28
>>261
うあはw丸見えじゃないすかw
リソースファイル化すれば安全だと思って改造のしやすさという利便性を捨ててまで
リソース化頑張ってたのにマジ意味ねーwもうリソースファイル使わねえw

264 :デフォルトの名無しさん:2010/06/15(火) 02:08:11
何かいきなり低レベルな話始まっててワロス

265 :デフォルトの名無しさん:2010/06/15(火) 02:23:20
API関係ないし

266 :デフォルトの名無しさん:2010/06/15(火) 09:13:31
>>261
>有料でもいいからexeファイルごと実行可能の状態のままで暗号化するソフトはないのかな?
それやるとセキュリティソフトにウィルス扱いされることが多々あるけど、
それでも良ければUPXとかある

267 :デフォルトの名無しさん:2010/06/15(火) 21:48:33
ライトユーザー対策ならzlibで圧縮でもしとけば一石二鳥じゃん。

268 :デフォルトの名無しさん:2010/06/16(水) 04:32:02
ライトユーザー対策なら何もしなくていいよw

269 :デフォルトの名無しさん:2010/06/16(水) 17:41:18
リソースに埋め込むのか、コードに埋め込んでも変わらんような気がしないでもない

270 :デフォルトの名無しさん:2010/06/16(水) 17:48:28
普通にXORするだけで一般の人は読めなくなる。

271 :デフォルトの名無しさん:2010/06/16(水) 19:31:13
一般向けのプロテクトならファイルの拡張子を独自の物にするだけで十分すぎる

272 :デフォルトの名無しさん:2010/06/18(金) 17:16:39
VS2005使ってます。
デバッグ時にDLLのシンボルが読み込まれないんですけど、なぜでしょうか?
dllの中身をみてもpdbファイルのパスは合っていて問題は無いように思われます。

273 :デフォルトの名無しさん:2010/06/18(金) 22:10:22
ExtractIconExで取得したアイコンを描画すると、絵の周りに黒ずみができるんですが、
これってどうやればきえるんでしょうか?


274 :デフォルトの名無しさん:2010/06/18(金) 22:17:40
そのこさんに美白のアドバイスを受ける

275 :デフォルトの名無しさん:2010/06/18(金) 22:38:52
背景を白にする

276 :デフォルトの名無しさん:2010/06/19(土) 21:37:48
メインウィンドウに関連付けたツールチップを表示すると
既に表示してるモードレスダイアログの下に表示されてしまうんだが、解決策ないかな?

277 :デフォルトの名無しさん:2010/06/19(土) 22:00:39
>>276
予めSetWindowPosでHWND_TOPMOSTにしておくのを忘れている、とか?

278 :デフォルトの名無しさん:2010/06/20(日) 08:59:49
>>277
ツールチップをTOPMOSTにするって事かな?
試して見ます

279 :デフォルトの名無しさん:2010/06/20(日) 16:27:47
SetWindowPosを別のスレッドから呼びたいんですけど、
送りつける先でまだ準備が出来ていないらしいので、この関数を直呼びじゃなくて、
PostMessageしたいと思います。
このときに送るメッセージってなんでしょうか?
WM_SIZEとか?

280 :デフォルトの名無しさん:2010/06/20(日) 16:57:08
Spy++

281 :デフォルトの名無しさん:2010/06/20(日) 19:30:21
アプリ内で完結するメッセージなんだから、好きなメッセージを使えばいい。
WM_APP〜0xBFFF辺りを適当に割り当てておけば問題ないだろ。

282 :デフォルトの名無しさん:2010/06/21(月) 10:59:34
準備できてるかどうかイベントでも使って通知しておけば?

283 :デフォルトの名無しさん:2010/06/21(月) 11:15:52
スレッド間で通信す(ry

284 :デフォルトの名無しさん:2010/06/21(月) 12:47:28
外部プロセスのスレッドを指定して例外を起こしたいです
今はSetThreadContextを使ってeipを0にして例外を発生させてるのですが
ほかに方法はありますか?

285 :デフォルトの名無しさん:2010/06/21(月) 12:57:55
Vista以降のOSでIMEがTSFかIMM32かを区別する方法はありますか?

286 :デフォルトの名無しさん:2010/06/21(月) 20:35:36
>>284 asm( "cli" ) とか

287 :284:2010/06/22(火) 17:31:33
それだと自スレッドにしか例外起こせません

288 :デフォルトの名無しさん:2010/06/22(火) 21:53:15
int ErrorNo = 0;
HFONT hFOnt;

hFont = (HFONT)SendMessage(hMain, WM_GETFONT, 0, 0);
ErrorNo = GetLastError();

とやると
・hFontにはなにも帰ってこない
・ErrorNoには120
が返ってくるのですが、どのあたりをしらべたらよいか、
またはどのようにして調べたらよいか、手掛かりをください。。。

289 :デフォルトの名無しさん:2010/06/22(火) 21:56:46
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200501/05010029.txt

>hWindowはトップウィンドウでしょうか?
>だとすると、自身でWM_SETFONT/WM_GETFONTのハンドラを書かなければなりません。
>DefWindowProcは、フォント管理してくれません

検索したら一発で来たぞ

290 :デフォルトの名無しさん:2010/06/22(火) 22:49:50
サブウィンドウをモードレスダイアログに変えたら
再描画する度に、画面のちらつきが酷くなったんだけど
ダイアログだと、WM_ERASEBKGND以外にも何か背景を初期化するメッセージとか来る?

291 :デフォルトの名無しさん:2010/06/23(水) 00:40:57
>> 289

どうもです。

hFont = (HFONT)SendMessage(GetDlgItem(hMain,IDC_EDIT1), WM_GETFONT, 0, 0);

とやっても結果は同じなんですが、これは
トップウィンドウだけでなく、トップウィンドウ上のコントロールも
ハンドラを自分で書く必要がある、ということでしょうか?

292 :デフォルトの名無しさん:2010/06/23(水) 01:05:29
>>288
そもそも「何も返ってこない」ってことはありえない。
0が返ってるというんだったら、その意味はちゃんと書いてある。
The return value is ... or NULL if the control is using the system font.

そもそも普通の実装だと、WM_GETFONTってのは単に
WM_SETFONTされたものを返すだけ。
どういう目的でGETFONTしようとしてるわけ?

293 :デフォルトの名無しさん:2010/06/23(水) 10:28:41
>> 292
根元的な問い掛けありがとうございます。すっかり目的を忘れてました。

もともとは次のようなソースを書いて、システムフォントを取得したかったのです。
ところがこれもErrorNoが120返ってきたので、WM_GETFONT使ってみたのでした。

int ErrorNo = 0;
HFONT hFOnt;

hFont = (HFONT)GetStockObject(SYSTEM_FONT);
ErrorNo = GetLastError();


根本原因は同じな気がしますが、何かヒントをいただければ幸いです。。。



294 :デフォルトの名無しさん:2010/06/23(水) 11:46:42
俺は良く GeyStockObject(DEFAULT_GUI_FONT) を使ってるが…
SYSTEM_FONT と微妙に違うんだろうな

295 :デフォルトの名無しさん:2010/06/23(水) 13:53:07
120ってnot support?
どんな環境何だろう

296 :デフォルトの名無しさん:2010/06/23(水) 18:53:38
そもそも関数の返り値は確認した?
hFontが0でなかったら、関数は成功しているんだから
GetLastErrorの値には何の意味もない。どこか別の場所のエラーが残ってるだけ。

まあ、SYSTEM_FONTもDEFAULT_GUI_FONTも過去の遺物だから
本当にnot supportedになったのかもしれないけど。
What are SYSTEM_FONT and DEFAULT_GUI_FONT?
ttp://blogs.msdn.com/b/oldnewthing/archive/2005/07/07/436435.aspx

297 :デフォルトの名無しさん:2010/06/23(水) 19:15:50
この場合、成否に関係なくGetLastErrorを見ること自体が間違っている、じゃね。
GetStockObjectとか失敗してもGetLastErrorでエラーコードが取得できるってMSDNに書いてないし。

298 :デフォルトの名無しさん:2010/06/23(水) 22:25:10
GetStockObjectが失敗してるなら呼んでる場所に問題ありそうだねぇ、どこだ?吐け!

299 :デフォルトの名無しさん:2010/06/23(水) 23:25:24
Vista以降でDEFAULT_GUI_FONT使っても、メイリオが返ってこないんだよな。
SystemParametersInfo(SPI_GETNONCLIENTMETRICS)を使うんだっけ。

300 :デフォルトの名無しさん:2010/06/23(水) 23:40:35
みなさま、いろいろありがとうございます。

>> 295

後だしじゃんけんでもうしわけない。
WindowsMobile(5.0,6.0) SDKです。
ただ、これらの関数がサポートされていることは確認済みなのです。。。


>> 296

ソースの通り、直前でGetLastErrorの戻り値を入れる変数を、
0にしているので、おそらく問題ないと思っています。


>> 297

上記のとおり、「何か」は取得できたようです。
それが正しい値になっているかどうか、は不明ですが。。。


>> 298

「呼んでる場所」とは具体的にどういうことでしょうか?
現在は、DlgProc()のなかで呼んでいます。そういうことでなくて?

301 :デフォルトの名無しさん:2010/06/23(水) 23:41:48
とりあえず、アンカーのつけかたくらい覚えろよ

302 :デフォルトの名無しさん:2010/06/23(水) 23:47:45
>>300
>「呼んでる場所」とは具体的にどういうことでしょうか?

どのメッセージ来たときに呼んでるの、の意で

303 :デフォルトの名無しさん:2010/06/24(木) 00:01:03
>>300
> ソースの通り、直前でGetLastErrorの戻り値を入れる変数を、
> 0にしているので、おそらく問題ないと思っています。

もうちょっとC/C++の勉強をした方がいい。
変数を0初期化していてもGetLastError()の戻り値で上書きされるから、受け変数の0初期化は全く意味が無い。
意図する動作を求めるなら、するべき事はSetLastError(0)だ。

304 :297:2010/06/24(木) 00:06:10
Mobileか。MobileのほうはGetStockObjectはGetLastErrorでエラー情報が取れるって書いてるな。
>>297は取り消し。

305 :デフォルトの名無しさん:2010/06/24(木) 00:20:19
>>300
> 上記のとおり、「何か」は取得できたようです。
それはどうでもいいからさっさとhFontが何だったか教えろ
GetLastErrorはあくまで「エラーがあった」ことを確認してから見るものだ

306 :デフォルトの名無しさん:2010/06/24(木) 10:36:16
Mobileかー
エミュレーターと実機で同じ?

307 :デフォルトの名無しさん:2010/06/24(木) 12:25:05
TouchDiamondだと何も問題はないな
TCHAR buf[1024];HFONT hfont[2];LOGFONT lf;
hfont[0] = (HFONT)SendMessage(hWnd, WM_GETFONT, 0, 0);
hfont[1] = (HFONT)GetStockObject(SYSTEM_FONT);
for (int i = 0; i < 2; i++){
 wsprintf(buf, TEXT("HFONT:%08x\n"), hfont[i]);OutputDebugString(buf);
 if (!hfont[i]) continue;
 if (GetObject(hfont[i], sizeof(lf), &lf)) {
  wsprintf(buf, TEXT("FACENAME:%s\n"), lf.lfFaceName);OutputDebugString(buf);
  wsprintf(buf, TEXT("HEIGHT:%d\n"), lf.lfHeight);OutputDebugString(buf);
 }
}
S21HTでの結果
HFONT:00000000
HFONT:00000011
FACENAME:Tahoma
HEIGHT:-24

308 :254:2010/06/24(木) 16:51:30
>>262
ありがとうございます。
全ビット反転で実装しました。

>>266
ご教示ありがとうございます。
ウィルス扱いされるのは嫌ですね。

>>267
ゲームを作って販売するので、ライセンスの問題が面倒かも。

>>271
wavデータの全ビット反転で時間が掛かっているようです。
最悪、拡張子だけ独自にしたいと思います。

309 :デフォルトの名無しさん:2010/06/24(木) 17:24:38
>>308
ヘッダだけ弄ればモウマンタイ

310 :デフォルトの名無しさん:2010/06/24(木) 17:54:28
VC++にてリソース機能を使い1データ数十MByteあるリソースデータを
「データ1個をメモリにロード → 使用 → 開放」して、
使用していないときはメモリにリソースを常駐させない設計を考えていました。
しかし、LoadResourceにてメモリに常駐したデータをFreeResourceで
開放できると思ったのですが開放されませんでした。

hRsrc = FindResource(
  NULL,
  res_nm,
  "DATA"); // リソースを探す
hGlobal = LoadResource(NULL, hRsrc); // リソースをグローバルメモリにロード
ptr = LockResource(hGlobal);     // データへのポインタ取得

FreeResource(hGlobal);        // リソースが開放されない

ヘルプにはWin32の場合は、
「ロードしたモジュールがアンロードされると自動的に解放されます。」
とあるのですが、ロードモジュールをアンロードする前に用が済めば
さっさと開放したいのです。

ロードモジュールをアンロードする前に強制的にメモリにロードされた
リソースを開放する方法をご存知の方がいらっしゃれば、
教えていただけないでしょうか。よろしくお願いします。

311 :デフォルトの名無しさん:2010/06/24(木) 17:58:44
どうせメモリマッピングで割り当てられてるだけだから
気にするだけ無駄

312 :デフォルトの名無しさん:2010/06/24(木) 20:05:29
文字列リテラルをfreeしたい、に近いぐらい気にすることが無駄

313 :デフォルトの名無しさん:2010/06/24(木) 20:22:25
初歩的な質問ですが、
CreateProcessでコンソールアプリを起動させたとき、
コマンドプロンプトの画面を表示させたうえで起動させることは可能でしょうか?

314 :デフォルトの名無しさん:2010/06/24(木) 20:24:56
CREATE_NEW_CONSOLE

315 :デフォルトの名無しさん:2010/06/24(木) 20:27:06
cmd.exe呼ぶだけじゃないの
わざわざ/cとかつけない限りは窓が残るはずだけど

316 :254:2010/06/25(金) 15:35:59
>>309
ありがとうございます。
@PNG(画像)ファイルは最初の8Byteのビットを反転する
AWAV(音声)ファイルは最初の12Byteのビットを反転する
で実装したいと思います。

317 :デフォルトの名無しさん:2010/06/25(金) 15:44:12
ただ反転するんじゃなくてXORテーブルを複数持って
XORするとレベルが少し上がる。

318 :310:2010/06/25(金) 15:46:25
>>311-312
>気にすることが無駄
絶対に気にしなければいけません。無視することはできません。
ゲームを作成しているのですが、絵と音のデータはリソースに登録しています。
リソースをLoadResourceした時点で、実メモリを消費します。
絵を一通り表示し音を一通り鳴らせば、全リソースはメモリに常駐し、
プロセスのメモリ使用量は250MByteに膨れあがります。
かなり低スペックのパソコンまで動作対象にするため、
ユーザーに空きメモリ250MByteなんてスペックは要求できません。
リソースを開放できれば、プロセスのメモリ使用量を25MByte程度に
抑えることができます。もし、リソースが開放できない場合は、
最終手段として、ゲーム中の絵と音をexeファイルとは別に持たなくてはいけません。

リソースは、LoadResourceするまで実メモリを消費しないという一見便利に
見えますが、使い終わったら開放できるという機能を併せ持たないと
使い物にならないもののように思います。

ロードモジュールをアンロードする前に強制的にメモリにロードされた
リソースを開放する方法をお伺いしておりますが、もしかして、
「不可能」というご回答なのでしょうか。

319 :デフォルトの名無しさん:2010/06/25(金) 16:03:53
>>318
>>311-312の意味理解してるか?
exeにリソースを埋め込んで実行した時点で
メモリ上にロードされるわけで…
メモリ上にロードしたくないっていうんならあんたの言う最終手段とやらを使わないと無理だよ

320 :デフォルトの名無しさん:2010/06/25(金) 16:19:46
だから、そこら辺はOSが勝手に管理するから無視しろって事。
実メモリが128MBでも各プロセスには4GBのメモリ空間が割り当てられるだろ。

321 :310:2010/06/25(金) 16:34:42
>>319
>exeにリソースを埋め込んで実行した時点で
>メモリ上にロードされるわけで…
僕も最初はロードモジュール(リソース付き)のロード時には、
exeファイルが丸ごとそのままメモリにロードされると思っていましたが、
実際にやってみると違う挙動をしました。
実際にはロードしてみると、リソース部はロードされませんでした。
LoadResourceの時点で初めてメモリにロードされました。

>メモリ上にロードしたくないっていうんならあんたの言う最終手段と
>やらを使わないと無理だよ
そんな気がしてきました。exeと同じフォルダにdataファルダを
作るというダサいことをしないといけないような気がしました。
dataファルダを隠蔽するためにインストーラーも使用しないといけないかも。

>>311-312の意味理解してるか?
>>311は、リソースはロードモジュールのロード時には、メモリに上がっており、
実メモリのリソースの先頭アドレスを返してくるだけと僕は解釈しました。

>>312は、リソースサイズが微小なものは、開放しなくていいじゃんと言っている
ように僕は解釈しました。

意味を理解してなかったらすみません。

322 :310:2010/06/25(金) 16:36:41
>>320
>そこら辺はOSが勝手に管理するから
残りメモリが少なくなった場合はOSが勝手に、リソースを開放してくれる
という認識であっていますでしょうか。開放されるタイミングが
わからないのは、かなり不気味なのですが。

323 :254:2010/06/25(金) 16:40:12
>>317
ありがとうございます。
PNG,WAVの他にテキストファイルがあって、
テキストファイルはファイル全体を暗号化します。
8ByteのXORテーブルを作って、繰り返し使い
暗号化したいと思います。
PNG,WAVもヘッダだけじゃなくて先頭から
何kByteか程暗号化したほうが安全かも。

324 :デフォルトの名無しさん:2010/06/25(金) 16:53:53
>>321
リソース部がロードされないってどうやって確認したんだ?
みるのはコミットサイズの方だぞ

325 :310:2010/06/25(金) 18:08:51
>>324
メモリ管理について、あまり詳しくないのですが、先ほど検証させていただきました。
コミットサイズというのは、Windowsタスクマネージャのコミットチャージ合計を見ればよかったのでしょうか。

用意したロードモジュール
@ロードモジュールサイズ 21.5MByte リソース20MByte LoadResourceでリソース10MByteをロード
Aロードモジュールサイズ 21.5MByte リソース20MByte リソースのロードはなし
Bロードモジュールサイズ  1.6MByte リソースなし

Windowsタスクマネージャにて
【ロードモジュール実行前】
PF使用量 457MB コミットチャージ合計 468668
【ロードモジュール実行時】
@PF使用量 485MB コミットチャージ合計 497544
APF使用量 473MB コミットチャージ合計 484888
BPF使用量 473MB コミットチャージ合計 484732

AとBの違いはロードモジュールサイズの違い。(リソースの有無)
ロードモジュールロード時の[PF使用量][コミットチャージ合計]は一緒。
@とAの違いはLoadResource実行の有無。
@のLoadResource実行時にはPF使用量は12MB増加、
コミットチャージ合計は13MB増加となり、
LoadResourceでロードした10MByteと整合性が取れます。

326 :デフォルトの名無しさん:2010/06/25(金) 18:37:06
>>325
タスクマネージャーなら
表示→列の選択でコミットサイズにチェック入れればプロセス個別に見れるでしょ
ブレークポイントでも張ってこの前後でのコミットのサイズみてみろよ
HRSRC hrs = FindResource(NULL, MAKEINTRESOURCE(IDR_TEST1), _T("TEST"));
HGLOBAL hg = LoadResource(NULL, hrs);

327 :デフォルトの名無しさん:2010/06/25(金) 20:33:40
1011 0101
(1011 xor 0101) (1011)
1110 1011

1110 1011
(1011) (1110 xor 1011)
1011 0101

328 :デフォルトの名無しさん:2010/06/25(金) 20:40:17
>>321
だからお前はメモリマッピングを理解してねえんだっつーの

329 :310:2010/06/25(金) 20:57:42
>>326
コミットサイズの意味がわからず調べました。
⇒コミットサイズとはアプリの正確なメモリ使用量
とのことでした。

>>325はWinXP SP2で計測しています。
開発環境はWinXP SP2にしか入っていませんし、
デバッグモードは実際の環境ではないのでリリースモードで計測しました。
下記タスクマネージャーにコミットサイズのあるWin7で計測した結果です。

@メモリ−プライベートワーキングセット 20,488k メモリ−コミットサイズ 35,096k
Aメモリ−プライベートワーキングセット 9,220k メモリ−コミットサイズ 19,472k
Bメモリ−プライベートワーキングセット 9,196k メモリ−コミットサイズ 19,416k

>コミットのサイズみてみろよ
結果から
1.ロードモジュールのロードの時はリソースはロードされない。
2.LoadResourceの時に初めてリソースがロードされる。
ということを実証したことになると思います。

>>326は何をおっしゃりたいのでしょうか。

330 :デフォルトの名無しさん:2010/06/25(金) 21:02:55
>>329
いいから開発環境でLoadResourceの前後にブレークポイント張ってみろ
メモリは1bitたりとも増えないから
>>325でコミットチャージの差を見ればメモリ上にexe全部ロードされてるって分かるだろ…
なぜこんなに理解力が無いんだ…

331 :310:2010/06/25(金) 21:19:26
>>330
ブレークポイントを置くデバッグ環境は特殊な環境で実環境とは異なるので
デバッグ環境の結果を鵜呑みにするのは危険だと思います。

>>325でコミットチャージの差を見ればメモリ上にexe全部ロードされてるって分かるだろ…
何を言っているのかわかりません。
>>325の結果は
Aロードモジュールサイズ 21.5MByte リソース20MByte リソースのロードはなし
Bロードモジュールサイズ  1.6MByte リソースなし
で、コミットチャージ合計に”違いが無い”ということが証明されています。
もし、ロードモジュールのロード時にリソースがロードされるのなら、
Aのコミットチャージ合計は、484888ではなくて+10MBの497544と表示されるはずです。

332 :デフォルトの名無しさん:2010/06/25(金) 21:30:31
リソースの対応するアドレス領域を調べて、
そこにVirtualFreeのMEM_DECOMMITをかけてやれば、
一応直ぐに実メモリを解放してやれるんじゃないか?
意味があるかどうかは知らないけど。

333 :デフォルトの名無しさん:2010/06/25(金) 21:30:32
>>331はLoadResource時にメモリに読み込んでもらわないと困るんだな…
もうそれでいいよバカに説明するのは疲れた…

334 :310:2010/06/25(金) 21:30:51
>>328
理解していません。よろしければ教えてくださらないでしょうか。
メモリマッピングでググってみると
「仮想アドレス空間を物理アドレス空間に対応づけることをメモリマッピングという」
と出てきました。

LoadResourceのヘルプを見ると
「指定されたリソースをグローバルメモリにロードします。」と書いてあります。
これは、グローバルメモリを確保してリソースからロードするという動きのことだと思います。
メモリマッピングだから何なのでしょうか。すみませんが、難しいと思いますが、
もう少し噛み砕いて説明していただけると幸いです。

335 :デフォルトの名無しさん:2010/06/25(金) 21:48:15
>>332
ためしにやってみたら失敗したな
アプリケーションが確保したメモリじゃないから当たり前だが

336 :デフォルトの名無しさん:2010/06/25(金) 22:52:29
>>334
だから、気にしなくて良いって言ってんだろ。
Win32以降ではLoadResourceでロードしたリソースは実メモリが足りなくなったら
自動的に解放される。FreeResourceする必要すらない。

337 :310:2010/06/25(金) 23:20:28
皆様大変失礼しました。
余計なソースコードが悪さをしていました。
▼▼
01:  HRSRC hResource = FindResource(
02:    NULL,
03:    "IDR_GAME_SOUND_01001",
04:    "GAME_DATA");
05:  HGLOBAL hWavResource = LoadResource(NULL, hResource );
06:  LPVOID lpWav = LockResource( hWavResource );
07:
08:  unsigned int i;
09:  char *p;
10:  p = (char *)lpWav;
11:  for(i=0; i<SizeofResource(NULL, hResource); i++)
12:  {
13:    p[i] = ~p[i];
14:  }
▲▲
11〜14行目にてリソースデータを書き換える処理を入れていた為、
(どうやらやってはいけない処理だったみたい)書き換えたByte分
(10MByte)、OSが勝手にメモリを確保するという予想外の
動きをしていました。

ご迷惑をお掛けしたことを謹んでお詫び申し上げます。
また、教えていただいた「コミットチャージ合計」の測定によると
やはり、ロードモジュールのロード時はリソースはロードされないみたいです。
リソースが実メモリを圧迫しないみたいなので、当初の予定通りリソースを
中心にしてプログラムを作成していきます。
ありがとうございました。

338 :デフォルトの名無しさん:2010/06/25(金) 23:32:24
その11行目の書き方は駄目すぎる。
それだと、ループ毎にSizeofResource呼び出しする素敵仕様だぞ。
あとビット単位の反転だけなら、せめて4か8バイト単位でまとめて処理した方が良い。

339 :デフォルトの名無しさん:2010/06/25(金) 23:45:28
>>338
いいんだよ>>337はメモリさえ消費しなければ
CPUがいくらぶんまわろうがどうでもいいんだよ

340 :デフォルトの名無しさん:2010/06/26(土) 00:29:27
>>337
「コピーオンライト」でググれ

341 :デフォルトの名無しさん:2010/06/26(土) 01:16:53
SetProcessWorkingSetSizeで(SIZE_T)-1を指定して無理やり追い出すとかはどうだろう

342 :デフォルトの名無しさん:2010/06/26(土) 09:11:14
こうやって凄腕プログラマが苦労して実装したメモリ管理を無駄にしていくのであった。



まぁ、若干お茶目な凄腕プログラマなんだろうけども。

343 :デフォルトの名無しさん:2010/06/26(土) 11:10:47
ゲームプログラムの画像や音声って何十〜何百MBytesにもなると思うんだが
それを>>310はexeのリソースに入れようとしてるのか

修正パッチ配布しなきゃならなくなったときどうするつもりなんだろうね?

344 :デフォルトの名無しさん:2010/06/26(土) 11:13:54
>>341
そんなAPIがあったのかいいこと聞いた

345 :デフォルトの名無しさん:2010/06/26(土) 11:22:16
大きいデータはSQLにBLOBで突っ込む俺

346 :デフォルトの名無しさん:2010/06/26(土) 12:00:02
>>343
差分を知らない馬鹿は来なくていいよ

347 :デフォルトの名無しさん:2010/06/26(土) 14:54:39
>>341
CoWして確保されたメモリはページアウト対象になる

348 :デフォルトの名無しさん:2010/06/26(土) 16:33:19
リストビューのスクロールバーを削除する為に、
ShowScrollBar(hList,SB_BOTH,FALSE);
としたのですが、スクロールバー表示用かと思われるの末尾一行が残ってしまいます。
スクロールバーと一緒にこれも削除する方法をお願いします。

349 :デフォルトの名無しさん:2010/06/26(土) 16:36:36
>>348
普通にウィンドウスタイルからWS_VSCROLLとかを削除すりゃいいんじゃないの?

350 :348:2010/06/26(土) 16:56:46
>>349
lpStyle=GetWindowLongPtr(hList,GWL_STYLE);
lpStyle^=WS_HSCROLL;
SetWindowLongPtr(hList,GWL_STYLE,lpStyle);
SetWindowPos(hList,NULL,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_FRAMECHANGED);
としたのですが、末尾一行どころか、スクロールバーさえも消えてくれませんでした。


351 :デフォルトの名無しさん:2010/06/26(土) 20:01:15
>>350
>lpStyle^=WS_HSCROLL;
これは
lpStyle &= ~WS_HSCROLL;
こうしないと消えないんじゃないかな

352 :348:2010/06/26(土) 20:07:54
>>351
残念ながら、消えてくれませんでした。


353 :デフォルトの名無しさん:2010/06/26(土) 20:33:38
>>352
DWORD dwStyle = ::GetWindowLong(hList, GWL_STYLE);
DWORD dwNewStyle = (dwStyle & ~WS_VSCROLL);
::SetWindowLong(hList, GWL_STYLE, dwNewStyle);

::SetWindowPos(hList, NULL, 0, 0, 0, 0,
SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_DRAWFRAME);

ためしにやってみたら消えたけど
スクロールするとかってにWS_VSCROLLが復活するな

354 :デフォルトの名無しさん:2010/06/26(土) 21:30:38
WM_NCCALCSIZE

355 :348:2010/06/26(土) 22:49:09
>>353
>>354
残念ながら消えてくれませんでした。
OS:Win XP SP3


356 :デフォルトの名無しさん:2010/06/27(日) 23:37:18
>>355
ListViewに、 LVS_NOSCROLL という独自のスタイルがある。
SetWindowLong()で適用してみたらスクロールバーは消えたよ。
でも、矢印キー、Endキー、PageDownキーを使って選択はできてるようだけど、
中身のスクロールができなくなる。
LVM_ENSUREVISIBLEも効かない。
こんなの何に使うんだろ?

357 :デフォルトの名無しさん:2010/06/28(月) 00:18:48
デスクトップ表示用なんじゃないか?
アイコンとか表示するのにListViewを使っているし。

358 :デフォルトの名無しさん:2010/06/28(月) 02:28:43
EnableScrollBar()はいかがか?

359 :デフォルトの名無しさん:2010/06/28(月) 11:06:02
プログラム上からCreateService()でインストールしたサービスプログラムを、
手動で削除(レジストリの箇所)しようとしてます。

この場合、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
のキーを削除するだけで、完全に消したことになりますか? 


360 :デフォルトの名無しさん:2010/06/28(月) 16:00:27
その方法だと再起動必要

361 :デフォルトの名無しさん:2010/06/28(月) 16:17:58
>> 360
net stop でサービス停止後に削除します。
レジストリ関係のゴミが残らないのかが心配で質問しました。

362 :デフォルトの名無しさん:2010/06/28(月) 17:26:29
IFELanguage::GetMorphResult使って文字列の読みを連続して取得しているのですが、メモリリークが発生して困っています。
IFELanguageを毎回Releaseしてやれば発生しないので、IFELanguage内部に原因があると思うのですが、
MORRSLT構造体のCoTaskMemFree以外に何が必要なのでしょうか?

http://msdn.microsoft.com/en-us/library/ee957386(v=office.12).aspx
http://msdn.microsoft.com/en-us/library/ee957388(office.12).aspx

363 :デフォルトの名無しさん:2010/06/28(月) 18:50:38
キャッシュしているだけじゃね?

364 :デフォルトの名無しさん:2010/06/28(月) 18:55:44
黙れブタ

365 :デフォルトの名無しさん:2010/06/28(月) 19:35:24
>>361
なぜDeleteServiceを使わない

366 :362:2010/06/28(月) 20:44:31
>>363
試しに2種類の文字列を交互に連続して処理させてみたところメモリ使用量は安定しました
仰るとおりキャッシュしているようですね
ご指摘ありがとうございます

しかし30MB以上もキャッシュするというのはちょっと頂けない・・・
手動でキャッシュをクリアする方法はあるのでしょうか?

367 :361:2010/06/29(火) 12:25:48
>>365
過去に作ったプログラムで登録されたサービスを削除したいだけです。
後は、興味でCreateService()で作成したサービスは、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services のみに書き込みをするのか
知りたいです。

368 :デフォルトの名無しさん:2010/06/29(火) 12:37:10
ウイルス制作者

369 :デフォルトの名無しさん:2010/06/29(火) 12:40:45
>CreateService()で作成したサービスは、
>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services のみに書き込みをするのか

とは限らないが
サービス自体はそのレジストリが無くなれば無くなる

DeleteService 使うのが普通

リソキの instsrv.exe を使ってもよい

370 :デフォルトの名無しさん:2010/06/29(火) 14:19:38
黙れ

371 :デフォルトの名無しさん:2010/06/29(火) 19:21:06
どうした?w

372 :デフォルトの名無しさん:2010/06/30(水) 19:07:33
Visual Studio 2005で Win32APIを使用して、サービスプログラムを作成していたのですが、
参考になる書籍、ホームページなどがあったら、教えてください。

よろしくお願いします。


373 :372:2010/06/30(水) 19:08:55
>>372

汚してすいません m(_ _)m

× 作成していた
○ 作成したい


374 :デフォルトの名無しさん:2010/06/30(水) 19:26:27
別にそんな複雑なもんじゃないよ。

Writing a ServiceMain Function
http://msdn.microsoft.com/en-us/library/ms687414.aspx

375 :デフォルトの名無しさん:2010/07/01(木) 13:51:14
現在ログオンしているユーザーのWindowsユーザー名とパスワードを取得したいの
ですがどうすればいいでしょうか?パスワードを取得なんてセキュリティ上そんな
APIってやっぱ存在しない?

376 :372:2010/07/01(木) 14:14:39
>>374

助かりました、ありがとうございました m(_ _)m

377 :デフォルトの名無しさん:2010/07/01(木) 14:15:17
またハッキングツールか!!!

378 :デフォルトの名無しさん:2010/07/01(木) 14:39:37
ハッキングツールではないまともな目的なので知っていたらお願いします。

379 :デフォルトの名無しさん:2010/07/01(木) 14:41:29
>>378
まともな目的でも、ここに書くことによって悪用される可能性はわからない?

380 :デフォルトの名無しさん:2010/07/01(木) 14:43:15
そんなことできたらパスワードの意味ないだろ
アホか

381 :デフォルトの名無しさん:2010/07/01(木) 15:53:55
パスワードって、入力された文字列そのままで保管されてるんじゃなくて、
MD5なりなんなりでハッシュ値算出して、それを保管してるんじゃなかったっけ?

382 :デフォルトの名無しさん:2010/07/01(木) 16:00:31
普通プレーンテキストや可逆文字列で保存はしないわな

383 :デフォルトの名無しさん:2010/07/01(木) 21:16:27
Ophcrackとか見るに辞書アタックとかで総当たりするくらいしかないだろう

384 :デフォルトの名無しさん:2010/07/01(木) 21:26:16
>>383
でもこれが結構よく当てるんですな。

385 :デフォルトの名無しさん:2010/07/01(木) 21:56:30
>>375
存在しません。

386 :デフォルトの名無しさん:2010/07/01(木) 22:52:46
>>375
スクリーン乗っ取って、ログオンダイアログ出せば、ユーザーが教えてくれる。
>>381-382
生パスワードが必要な認証方式は普通にある。
その場合は可逆的な保存をする。

387 :デフォルトの名無しさん:2010/07/01(木) 22:54:52
ん?
不可逆な保存でも大丈夫っしょ

388 :デフォルトの名無しさん:2010/07/01(木) 23:01:35
POP3での USER/PASS認証とか? <生パスワード
鯖側はおいといて、メーラーは

POP鯖に繋ぐ際に生パスを生成できないとまずいので
可逆保存でないと都合が悪いと

389 :デフォルトの名無しさん:2010/07/01(木) 23:05:28
Windowsの認証の話から、何故脱線したことを話し出す馬鹿が出てくるんだろう?

390 :デフォルトの名無しさん:2010/07/01(木) 23:05:49
>>388
メーラーが生パスを持っててPOP3で鯖にに生パス送ってるってことか?

391 :デフォルトの名無しさん:2010/07/01(木) 23:08:01
けしからんな

392 :デフォルトの名無しさん:2010/07/03(土) 03:25:52
メーラーのアカウントに記録されているパスワードが分からなくなった時に、
Wiresharkでパケットの中身を覗いて確認したことがあったなw

393 :デフォルトの名無しさん:2010/07/03(土) 06:42:24
あの、Janeみたいにスプリッタウインドウの中の子ウインドウ(ペイン)に
ツールバーを付けたいのですが、どうやったらいいかわかりません。
教えてください。お願いします。

394 :デフォルトの名無しさん:2010/07/03(土) 07:01:06
リバーの子としてツールバーを作って表示すればいいよ

395 :デフォルトの名無しさん:2010/07/03(土) 09:28:31
おまいらいつまでガンプラの話してんだ

396 :デフォルトの名無しさん:2010/07/03(土) 11:55:31
>>378
そのまともな目的って何?
まともならほかの解決策があるんじゃね?言ってごらん。

397 :デフォルトの名無しさん:2010/07/03(土) 12:03:48
port135でプロミスキャスモードでデータ拾うにはどんなWin32APIを使えばよいですか?

398 :デフォルトの名無しさん:2010/07/03(土) 17:55:03
ドライバを挟み込まないと無理かと。
自分で作るよりWinPcapを使った方が現実的。

399 :デフォルトの名無しさん:2010/07/03(土) 19:28:40
スイッチはモニタポート持ってないと意味ないよ

400 :デフォルトの名無しさん:2010/07/03(土) 20:30:04
BitbltでCPU使用率上がっちゃうんだよ。
俺は今どう考えても256色以上使わないアプリ作ってるんだよ。
Bitbltに8bitモードとか無いのかな?
色のテーブルを別に持っといてそのテーブルのインデックスの羅列を転送するみたいなの。

助けてください。

401 :デフォルトの名無しさん:2010/07/03(土) 21:32:12
>>400
8bitのCompatibleBitmap/CompatibleDC使えばいい

402 :デフォルトの名無しさん:2010/07/03(土) 21:32:26
>BitbltでCPU使用率上がっちゃうんだよ。
きちんとDDBを使わないから。

403 :デフォルトの名無しさん:2010/07/03(土) 22:06:41
>>401.402
よくわかんないけど調べて頑張ってみます。ありがとうございました。

404 :デフォルトの名無しさん:2010/07/03(土) 22:38:05
BitBltを細切れの範囲で呼び出していないか?
一部分だけ書き換えるときは直接DIBの中身を弄った方が速いぞ。
内部フレームバッファの内容を実画面へ転送する時位しか、今時のOSだと出番は無いかと。
昔は、DDBとかでVRAM内で完結させて高速化とかあったのだろうけど。

405 :デフォルトの名無しさん:2010/07/03(土) 23:11:38
>>404
後出しで悪いんですが、楽譜エディタみたいなのを作ってるんです。
五線譜の背景の上に、クリックで音符を置いたり移動したり消したりできるように
しようと思ってるんですが、音符を置く毎に背景を再描画するのは無駄なので、
メモリバッファを2枚用意して、背景をbmpbkgndに、背景+音符をbmplayerに、
そしてWM_PAINTでは実画面にbmplayerを転送するだけという感じで、
例えば音符の位置に変更があった場合、bmpbkgndをbmplayerにBitbltしてから
音符をbmplayerに書き込むことで、背景(五線譜)を描画する手間をスキップしています。

こんな風にするのは無駄でしょうか。よろしければご意見聞かせてください。

406 :デフォルトの名無しさん:2010/07/04(日) 00:04:53
人間がたまにクリックする程度の頻度の描画でCPU使用率が問題になるなどあり得ない。
そもそも根本的な部分で間違いを犯しているんだろう。
それ以上はソースを晒せとしか言いようがない。

407 :デフォルトの名無しさん:2010/07/04(日) 00:10:55
正直、CPU使用率が上がるような処理には見えないなあ。
楽譜全体をバッファで保持しても今のPCなら問題無さそうだし。
bmplayer中の表示範囲に入っていない部分は更新後回し、とかそんなところ?

408 :デフォルトの名無しさん:2010/07/04(日) 00:12:29
APIで学ぶWindowsプログラミング
って本どうですか?
以前、APIで学ぶ Windows徹底理解―できるプログラマになるための (日経BPパソコンベストムック) 安室 浩和
は購入しましたが、メモリ管理あたりはかなり解説が難しかったです。
Part1のアプリケーションの構造を理解する ぐらいしか分かりやすい解説はなかったのですが、新しいAPIで学ぶWindowsプログラミングはどうでしょうか?


409 :デフォルトの名無しさん:2010/07/04(日) 00:14:40
>>405
そんなことするのは無駄だから
今すぐギターを抱えて街に出ろ

410 :デフォルトの名無しさん:2010/07/04(日) 00:30:25
>>406,407
レスありがとうございます。
仰る通りクリックするときの描画はBitbltを2回呼ぶだけなのでそう問題ないんですけど、
背景をスクロールするとCPU使用率が20%くらい行ってしまうんです。
これはメモリバッファからデバイスへの転送が遅いのかなと考え、
8bitのビットマップとかあればいいのにと質問させてもらいました。

しかし良く考えてみたらスクロールってのはアニメーションと一緒ですから
それくらいCPU使用しても仕方ないのかもしれませんね。

411 :デフォルトの名無しさん:2010/07/04(日) 01:03:55
専ブラJane Doe Styleを使ってるけど、
スクロールバードラッグして上下にスクロールさせたら
100%近く行った件。

ま、そんなもんだろ。

412 :デフォルトの名無しさん:2010/07/04(日) 02:10:13
.NETが普及している今の時代、APIは需要あるの?
APIだけを用いて開発してる所ってある?

413 :デフォルトの名無しさん:2010/07/04(日) 02:10:54
Win32APIのことね

414 :デフォルトの名無しさん:2010/07/04(日) 02:15:40
.netはWin32API使ってないとでも?

415 :デフォルトの名無しさん:2010/07/04(日) 02:28:05
.NETでWin32APIを呼び出すことがあることは知っているが、
今でも完全にWin32APIだけを用いて開発されてたりするの?

Windowsアプリケーションを作るためにWin32APIを学ぼうと思っているんだが、
こんなことを考えてたらモチベーションが上がらなくて…

416 :デフォルトの名無しさん:2010/07/04(日) 02:51:47
つゲーム

それかMFCを学ぶとか。ほぼAPIとおんなじだし

417 :デフォルトの名無しさん:2010/07/04(日) 03:06:46
普通wrapper書くなり既存のライブラリ使うなりするだろう

418 :デフォルトの名無しさん:2010/07/04(日) 03:40:03
今は.net一色なのか、その方が驚きだ
フリーソフトなんかで.netのなんか全然見かけないんだが

419 :デフォルトの名無しさん:2010/07/04(日) 03:50:44
たまたま視界に入ってないだけでは

420 :デフォルトの名無しさん:2010/07/04(日) 03:53:22
受託開発の世界なんかはすっかり入れ替わってるね。

421 :デフォルトの名無しさん:2010/07/04(日) 03:57:17
MFCはおわってる

422 :デフォルトの名無しさん:2010/07/04(日) 05:01:08
MFCの方が見慣れた部品が揃ってるから落ち着くんだけどなあ

423 :デフォルトの名無しさん:2010/07/04(日) 08:30:18
warning LNK4254: セクション 'ATL' (50000040) は '.rdata' (40000040) に異なる属性を伴ってマージされています

↑って放置しておいても大丈夫な警告ですか?

424 :デフォルトの名無しさん:2010/07/04(日) 08:48:40
IMAGE_SCN_MEM_SHARED属性が消えただけだ気にするな
読み取り専用セクションはCoWしない限り元々共有される

425 :デフォルトの名無しさん:2010/07/04(日) 09:15:22
>>424
内容は難しくて理解できませんでしたが
大丈夫そうなのでそのまま使うことにします
ありがとうございました

426 :デフォルトの名無しさん:2010/07/04(日) 10:23:26
やっぱりWindowsアプリケーション作るなら
C++ + Win32API が1番自由度(?)高いの?(出来ることが多いの?)

427 :デフォルトの名無しさん:2010/07/04(日) 10:25:36
そりゃまあ、Win上で動作するものはどれも最終的にはAPI呼んでるからなあ

428 :デフォルトの名無しさん:2010/07/04(日) 10:42:10
じゃあWin32APIを使う欠点と言えば、その生産性くらい?

429 :デフォルトの名無しさん:2010/07/04(日) 11:07:13
意味不明

430 :デフォルトの名無しさん:2010/07/04(日) 11:14:01
すまん、言い換えると
Win32APIを使う欠点は、アプリケーションを開発する時に大変ってことくらい?

431 :デフォルトの名無しさん:2010/07/04(日) 11:15:41
大変も何も使わないとそもそも開発できない。

432 :デフォルトの名無しさん:2010/07/04(日) 11:23:01
他の開発環境(C# + .NET 等)と比較してってことだろ
お前も分かれよ

433 :デフォルトの名無しさん:2010/07/04(日) 11:48:08
C#からでもAPIは直接呼べるし.NETのライブラリは間接的にAPIを利用してる
つまりできることに違いは無い
違うのはパフォーマンスと生産性



434 :デフォルトの名無しさん:2010/07/04(日) 11:58:25
では総合的に考えると C# + .NET > C++ + Win32API だということ?

435 :デフォルトの名無しさん:2010/07/04(日) 12:03:41
両方やってみて使い分けるのがいいと思うよ

436 :デフォルトの名無しさん:2010/07/04(日) 12:11:06
win32api直の方が必要な知識は少なくて自分で好きにできるじゃん。MFCとかだと使い方を調べるのに時間かかった上に細かいカスタマイズとかできなかったりするじゃん。

437 :デフォルトの名無しさん:2010/07/04(日) 12:15:44
適材適所

438 :デフォルトの名無しさん:2010/07/04(日) 13:05:52
>>436
はげどう

439 :デフォルトの名無しさん:2010/07/04(日) 13:11:33
構造体のたくさんの変数に代入して関数呼ぶの繰り返し
結局ラッパー組むことになる

440 :デフォルトの名無しさん:2010/07/04(日) 13:14:09
Qt4 とか wxWidgets に慣れるともう MFC は二度と使いたくなくなる

441 :デフォルトの名無しさん:2010/07/04(日) 15:58:53
>>434
C# + C++/CLI + .NET + Win32 > C# + .NET <> C++ + Win32

442 :デフォルトの名無しさん:2010/07/04(日) 17:44:17
>>436
>win32api直の方が必要な知識は少なくて
これには同意しかねるが、MFCとWin32APIはどちらか一つやってれば
もう一方も理解しやすいから、MFC使って融通が利きづらいところは直接API呼べばおk

443 :デフォルトの名無しさん:2010/07/04(日) 18:51:29
Edit Controlの右クリックのメニューの
項目を追加したり削除したりする事は可能ですか?


444 :デフォルトの名無しさん:2010/07/04(日) 18:57:12
やめておけ
危険だ

445 :デフォルトの名無しさん:2010/07/04(日) 22:28:44
>>408
その本のことはよく知らないけど、メモリのことならAdvanced Windowsが分りやすいと思う。
というか、APIで学ぶWindowsプログラミングってかなり最近の本なんだな。

>>437
だな。

446 :デフォルトの名無しさん:2010/07/05(月) 22:45:25
ちょっとマニアックな質問になりますが・・・

CreateFileというAPIでdwFlagsAndAttributesフラグに
FILE_FLAG_WRITE_THROUGHとFILE_FLAG_NO_BUFFERINGを指定すると
バッファ、キャッシュを使わずにファイルを開けるとあります。

この場合、ハードディスク内部のキャッシュも使わないということなのでしょうか?
それとも、ディスク内のキャッシュを使用有無を制御するのは不可能なのでしょうか?

この当たりについて詳しく調べたいので、ディスクキャッシュの利用状況を見れるような
APIも教えてもらえると助かります。


447 :デフォルトの名無しさん:2010/07/05(月) 22:57:25
WindowsからすればHDD内部で何をどう処理していようが、あるいはそれが実はHDDですらなく
SSDだった、なんてことはどうでもいいというか、どうにもならない。そこにキャッシュがあるのか、
キャッシュが効いているのかも。というかそういうパーツ内部のレベルまでWindowsが管理してると
いう発想はどこから来るのか。

448 :デフォルトの名無しさん:2010/07/05(月) 22:58:00
書き込みに関しては前者がそのフラグ
http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
Caching Behavior読め

449 :デフォルトの名無しさん:2010/07/06(火) 00:15:14
>>447、448
レスありがとうございます。

ハードディスクがサポートしていれば、書き込み操作でキャッシュを
スルーしてディスクに直接書くみたいですね。

SQL Serverはデータベースファイルを操作する際に
FILE_FLAG_WRITE_THROUGHとFILE_FLAG_NO_BUFFERINGを
指定するという話を聞いたので少し気になったのです。

でも、ハードディスクが内部キャッシュのライトスルーをサポートしているとなると
上記フラグを指定をした際に、書き込みが遅くなってしまう可能性もあるような
気がしてきました。

>>448さんのページも、まだ怪しい翻訳しかできてないので
もう少し調べてみます。

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

450 :デフォルトの名無しさん:2010/07/06(火) 00:55:23
SQL ServerはReadFileScatterやWriteFileGatherとかも使っているから、
FILE_FLAG_NO_BUFFERINGは自ずと必須になる。
まあ、SQL Serverのアクセス方法は特殊過ぎて全く参考にならんな。

ここら辺を読むと、一生使いそうにも無いAPIの説明があって結構面白い。
http://msdn.microsoft.com/ja-jp/library/cc280359.aspx

451 :デフォルトの名無しさん:2010/07/06(火) 01:02:38
遅くなる可能性はあるみたいね。
けど、SQL Serverは書き込まれるデータの安全性を重視してると。

古いけど、日本語の記事もあったよ。
http://support.microsoft.com/kb/234656/ja

452 : ◆PNn5yLyBvA :2010/07/06(火) 17:31:23
□□□□ → □□□□
□■■□ → □■■□
□■■□ → □■☆☆
□□□□ → □□☆☆

□ SRCPAINTで作った白色
■ SRCPAINTで作った青色
☆ FillRectで塗りつぶした白色

上の画像を白色を透過して表示したいのですが、そのまま表示されます。
ただ、FillRectで一部を白色で塗ると、その部分だけ透過されます。

見た目は同じ白、GetPixelでもちゃんと白が返ってきますが、
同じ色なのにデータ上違う事とかはありえるのでしょうか。

(透過はここのサイトのような感じのやり方です)
ttp://homepage2.nifty.com/rleez/program_old/winapi/bmpmask2.html

(SRCPAINTで作ったというのは、元の画像の1色だけの色を変え、他を白にした画像)
(画像の1色だけを色を変えながら透過表示したいため)


453 :デフォルトの名無しさん:2010/07/06(火) 17:53:33
>>452
何を言ってるのか分からん。

まぁ、他人に分かるようにちゃんと説明できたら、質問なんてしないで
自己解決するんだろうけど。

まず、マスク画像はどうしちゃったんだ?

454 : ◆PNn5yLyBvA :2010/07/06(火) 17:54:58
黄黄黄黄 → 緑緑緑緑 + 白白白白 → 白白白白
黄青青黄 → 緑緑緑緑 + 白黒黒白 → 白緑緑白
黄赤赤黄 → 緑緑緑緑 + 白白白白 → 白白白白
黄黄黄黄 → 緑緑緑緑 + 白白白白 → 白白白白

元画像 → fillHBmp +(SRCPAINT) maskHBmp → fillHBmp

色を変えながら透過(青を緑に変え)はこんな感じです。
fillHBmpとmaskHBmpはCreateCompatibleBitmapで作っています。

最後にできた白と緑の画像を白を透過して表示したいのですが、
透過されずそのまま表示されてしまいます。
一部を白でFillRectすると、その部分だけ透過できます。

455 : ◆PNn5yLyBvA :2010/07/06(火) 18:01:39
>>453
ありがとうございます、分かりにくくてすいません。
マスク画像は、処理を行う関数で作っています。
ウィンドウに表示して確認していますが、意図した画像にはなっています。
(>>454の3番目の図のような)

456 :デフォルトの名無しさん:2010/07/06(火) 18:16:21
白 := 透過 で

元絵A   背景      合成後
白白白白 黒黒黒黒   黒黒黒黒
白青青白 黒黒黒黒   黒青青黒
白赤赤白 黒黒黒黒 ⇒ 黒赤赤黒
白白白白 黒黒黒黒   黒黒黒黒
ここまではできてて 元絵Aに対し FillRectで加工

白白白白 黒黒黒黒   黒黒黒黒
白青青白 黒黒黒黒   黒青青黒
白赤白白 黒黒黒黒 ⇒ 黒赤白白
白白白白 黒黒黒黒   黒黒白白
こうなってしまった

こういうことか? 元絵の色空間の都合で(8bit?)
マスク生成段で FillRectで塗った白 が "白" とならなかったんでない?

457 : ◆PNn5yLyBvA :2010/07/06(火) 19:27:47
>>456
ありがとうございます。

FillRectで加工しない場合は、透過できずにそのまま表示されます。
白白白白 黒黒黒黒   白白白白
白青青白 黒黒黒黒   白青青白
白赤赤白 黒黒黒黒 ⇒ 白赤赤白
白白白白 黒黒黒黒   白白白白

FillRectで加工した場合は、加工した部分だけ透過されます
白白白白 黒黒黒黒   白白白白
白青青白 黒黒黒黒   白青青白
白赤白白 黒黒黒黒 ⇒ 白赤黒黒
白白白白 黒黒黒黒   白白黒黒

元絵は24bitで、LoadImageでロードしています。
デスクトップのbitも24bitです。

458 :デフォルトの名無しさん:2010/07/06(火) 19:32:08
透過するかどうかは、マスク画像で決めるんだから
マスク画像の生成に問題があるんでしょ。

459 : ◆PNn5yLyBvA :2010/07/07(水) 04:22:43
なぜか、LoadImageで作ったHBITMAP(最初の画像)に
透過に使いたい最終画像(>>457の4番目)をSRCCOPYして、
それを透過表示させた所うまくいきました。

LoadImageと、CreateBitmapやCreateCompatibleBitmap
で作るHBITMAPでは、描画速度に差があったりしますが、
同じようにHBITMAPのタイプ?の違いによる物かもしれません。

>>458
ありがとうございます。
途中で作る画像をウィンドウに表示して確認していますが、
見た目では意図したのが表示されています。

460 :デフォルトの名無しさん:2010/07/07(水) 07:41:54
「連投」の仕方を教えてください。

461 :デフォルトの名無しさん:2010/07/07(水) 11:13:43
●でも買えば

462 :デフォルトの名無しさん:2010/07/07(水) 11:16:26
>>461
もうちょっと詳しく教えてくれませんか?
ド素人なのでよく分からないんです。

463 :デフォルトの名無しさん:2010/07/07(水) 13:02:15
http://www.google.co.jp/search?hl=ja&q=2ch+%E2%97%8F%E8%B3%BC%E5%85%A5

464 :デフォルトの名無しさん:2010/07/08(木) 00:12:28
マウスメッセージやキーボードメッセージを別のウインドウに転送したくて
WndProc内で該当メッセージを受け取った時に別のウインドウにPostMessageする処理を書いたら
WindowsXPではちゃんと動いたんですが
Windows7でAeroをオンにしていると動かなくなります



465 :464:2010/07/08(木) 00:16:45
(書きかけで送信してしまった)

Aeroがオンの時って別の(PostMessageを送るアプリが管理していない)ウインドウに
PostMessageできないんでしょうか?

ChangeWindowMessageFilterでメッセージをMSGFLT_ADDしてやらないと駄目なのかとも思いましたが
試してみてもメッセージは飛んできてないようです

466 :デフォルトの名無しさん:2010/07/08(木) 00:20:45
WS_TRANSPARENT だったかな

467 :464:2010/07/08(木) 00:35:12
>>466
ありがとうございます

WS_EX_TRANSPARENTも試してみたのですが
メッセージを無条件で転送してしまうので使えないのかなと思ってました
「右クリックのみは転送せず自分で処理する」みたいなことをやりたいのです

ごめんなさい説明足らずでマジ申し訳ないです

468 :デフォルトの名無しさん:2010/07/08(木) 01:23:03
基本的なプロセス間通信の手段なんだから、送れないわけないだろう。
っていうか、メッセージが届いてるかくらい自分で簡単に確認できるだろう。

届いた後の処理に問題があるんじゃないの?

469 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 05:45:07
すみません。質問です。
win32アプリケーションウィザードによって自動的に作成されたウィンドウにて
マウスカーソルの表示/非表示の制御をおこないたいのですが上手くいきません。

ウィンドウの白枠の中ではマウスカーソルを非表示、ウィンドウの白枠以外
(メニューやタイトルバーの上)ではマウスカーソルを表示したいです。
http://jishinkuma.aa0.netvolante.jp/etc/mouse_cursor.png

どういうイベントとwin32 APIの組み合わせで実現できますでしょうか。

WM_MOUSEMOVEイベントは白枠の中でのマウスカーソル移動しか拾わない為、
白枠の中とメニューの境界線をまたぐときの判定が取れません。

また、マウスカーソルの表示/非表示は、ShowCursor(TRUE)/ShowCursor(FALSE)を
使うということであっていますでしょうか。

以上、よろしくお願いします。

470 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 06:11:08
WM_SETCURSOR

471 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 08:17:50
469の質問の回答お願いします。

472 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 08:33:15
他スレの質問?

473 :469:2010/07/10(土) 08:44:56
>>470
お教えいただきありがとうございます。

下記機能を実装したソースを記載します。
変な実装方法をしていないか見ていただけると幸いです。
▼▼▼
  case WM_SETCURSOR:
    GetCursorPos(&mos_pos); // マウス座標を取得(スクリーン座標)
    ScreenToClient(hWnd, &mos_pos); // マウス座標を変換(クライアント座標へ)
    SetRect(&rect, 0, 0, MAX_SCREEN_WIDTH, MAX_SCREEN_HIGHT); // ウィンドウの白枠の大きさ
    if( PtInRect(&rect, mos_pos) == 0 )
    {
      // メニューやタイトルバーの上(ウィンドウの白枠の中以外)の場合
      hCursor = LoadCursor(NULL, IDC_ARROW); // 標準のマウスカーソルを表示
      SetCursor(hCursor);
    }
    else
    {
      // ウィンドウの白枠の中の場合
      SetCursor(NULL); // マウスカーソルを消去
    }
    break;
▲▲▲

474 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 09:16:12
RECT rect;
GetClientRect(hWnd,&rect);
...
case WM_MOUSEMOVE:
{
static bool b=false;
long x = (long)LOWORD(lParam);
long y = (long)HIWORD(lParam);
if(rect.left<=x && x<rect.right && rect.top<=y && y<rect.bottom){
if(!b){
b=true;
SetCapture(hWnd);
while(!ShowCursor(0)){}
}
}
if(!(rect.left<=x && x<rect.right && rect.top<=y && y<rect.bottom)){
if(b){
b=false;
while(ShowCursor(1)){}
ReleaseCapture();
}
}
}
break;

475 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 09:23:58
>>473
1.LOWORD(LPARAM)でウィンドウのどの領域か判定可能。
HTCLIENTが入っていたらクライアント領域
2.クライアント領域の時だけSetCursorしてTRUEを返せば十分。
それ以外の時はDefWindowProcにそのまま流せば良いかと。

476 :469:2010/07/10(土) 10:50:27
>>474
レスありがとうございます。

>>475
ありがとうございます。
おかげで処理がすっきりしました。

477 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 18:14:08
あのーーー、初めてのDLLなんですが
DLLから輸出する関数は普通
stdcall、cdeclのどちらの規約にするんですか?
で、fastcallは使っちゃだめなの?
ついでに、_kansuu@Xとか出てくるんですけど、@Xの
Xの数字は何を意味するんですか?

478 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 18:18:44
普通は__stdcall。@の後ろは、引数のサイズだっけか?

479 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 19:41:24
__fastcallは仕様の明確な規定が無かった所為で、
コンパイラ間で互換性が保障されなくなっているので使えない。
ちなみに、x64は呼び出し規約が一つに統一されたので考える必要は無くなった。

480 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 20:57:17
__rapidcallとか__ultrahighspeedcallとか__ohmygodとかあったら俺は間違いなく使うぞ

481 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 21:03:32
_pascal ってなかった?

482 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 21:47:46
現在適用されている壁紙を調べる方法ってレジストリを見る以外にないかな?

483 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 21:58:17
>>482
SystemParametersInfo()で取れそうだよ

484 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 22:34:05
>>483
有難う!
SPI_GETDESKWALLPAPERで取れるとの事だけど、MSDN見るとWin2000しか使えないようですが
9x系で指定すると、何も返ってこないのでしょうか?

485 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 22:54:27
今時9x系って・・・

486 :名無しさん@そうだ選挙に行こう:2010/07/10(土) 23:59:15
>>478-479
http://www.egaoya.com/arigato/image/nobori.jpg


487 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 00:33:26
ありとがう

488 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 00:55:24
http://stat001.ameba.jp/user_images/ba/be/10124970142_s.jpg

489 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 01:17:09
アガリ糖

490 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 03:10:42
タブコントロールでタブをクリックしたときに、
そのタブが前に来ないようにするのってどうやんの?


491 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 03:12:34
サブクラス化でもすれば

492 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 05:16:15
>>484
手元にWin9x系がないから確認できないけど、アクティブデスクトップが有効なら
COMのIActiveDesktop使えばいけると思うよ

493 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 09:07:43
アクティブデスクトップなんか誰も使ってなかっただろ

494 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 09:23:31
>>479
x64は最初の4引数がレジスタ渡しされてビビったな

495 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 09:50:11
IE4.0以降がインストールされていれば、
使用・未使用に関わらずとりあえず機能するんじゃないか?
といっても今更確認する気にもならないが。
x64Win7ですら現役の機能だし、まあ大丈夫だろ。

496 :名無しさん@そうだ選挙に行こう:2010/07/11(日) 17:30:56
PCに接続されているけど、
無効になっているモニタの情報を取得したり、有効にするには
どうすればいいでしょうか?

497 :496:2010/07/11(日) 22:20:08
WMIとかいうものでなんとかなりそうです。
失礼しました。

498 :デフォルトの名無しさん:2010/07/11(日) 23:57:27
すみません。質問です。(正しい用語を知らないので上手く説明できないかも知れません。)
win32アプリケーションウィザードによって自動的に作成されたウィンドウにて以下の2点のタイミングを捕らえることが目的です。
(1)ウインドウ内でクライアント領域から制御が離れるタイミング
(2)ウインドウ内でクライアント領域に制御が戻るタイミング
目的を実現するには、どういうイベントを使えばよいのでしょうか。

↓↓↓上記の質問だけだと何を言っているのかわからないと思いますので以下に試してみたことや図説を書きます。
クライアント領域から制御が離れたときの制御の遷移は以下の@Aのみしかありえないと考える場合
(@A以外にありえる場合は、以下の方法は目的の達成に意味をなしません。)
@現在のウインドウの「メニューバー」に制御が移る
 ([Alt]や[F10]([Alt]+Fなど)押下などのキー操作やウインドウのメニューバーを左クリックなどのマウス操作を実施)
A現在のウインドウの「コントロールメニュー(プルダウンメニュー?)」に制御が移る
  ([Alt]+[Space]押下などのキー操作やウインドウのタイトルバーのアイコンを左クリック、
  『(A)ウインドウのタイトルバーのアイコンを右クリック、(B)ウインドウのタイトルバーを右クリック』などのマウス操作を実施)
図説 http://jishinkuma.aa0.netvolante.jp/etc/seigyo.png (「制御」の文字がにじんで読みにくくて申し訳ないです)
〜〜〜 >>499に続きます 〜〜〜

499 :デフォルトの名無しさん:2010/07/11(日) 23:58:42
え?

500 :498:2010/07/12(月) 00:00:15
〜〜〜 >>498の続き 〜〜〜
WM_MENUSELECTイベントを使うと『クライアント領域から制御が離れたタイミングとクライアント領域に制御が戻るタイミング』を
捕らえることができると思いました。しかし、(A)(B)の操作をしたときにクライアント領域から制御が離れたにも関わらず
WM_MENUSELECTイベントが発生しないため、WM_MENUSELECTイベントでは『クライアント領域から制御が離れるタイミング』を
捕らえることができませんでした。『クライアント領域に制御が戻るタイミング』は「@のメニューバーから制御が離れる」ときと
「Aのコントロールメニューから制御が離れる」ときにWM_MENUSELECTイベントが発生するため捕らえることができます。
  case WM_MENUSELECT:
    // @のメニューバーやAのコントロールメニューがクローズされた場合
    if( (HIWORD(wParam) == 0xFFFF) && (lParam == NULL)){
     XXXXXXXX
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
    break;

説明が大変わかりにくくて申し訳ありません。目的を実現するのに有効なイベントを知っている人がいらっしゃれば、
お教えしていただけないでしょうか。よろしくお願いします。

501 :デフォルトの名無しさん:2010/07/12(月) 00:10:28
>>498
SetCapture / ReleaseCapture 使え


502 :デフォルトの名無しさん:2010/07/12(月) 00:13:28
キャプションやらなんやらは、WM_NCHITTESTで取れる。

503 :デフォルトの名無しさん:2010/07/12(月) 00:23:59
そもそもクライアント領域の制御ってどういうことを意味してるんだろうね。

単にキーボードフォーカスとマウスカーソルの位置だけでいいのか、
それともクライアント領域に作成した子ウインドウのウインドウメッセージ処理全般を指してるのか。

504 :498:2010/07/12(月) 02:40:41
>>501-503
レスをいただきありがとうございます。
ただいま体調不良の為、体調が回復したらお教えいただいた方法を試させていただきます。

>>503
>そもそもクライアント領域の制御ってどういうことを意味してるんだろうね。
スレ違いだと言われそうなので書かなかったのですが、DirectXを使用しています。
クライアント領域はDirectXの描画領域となっており秒間60コマで表示更新され続けています。
私の表現で『クライアント領域に制御がある』とは、クライアント領域がDirectXにより、表示更新され
続けている状態のことを指します。『クライアント領域に制御がない』とは、DirectXの表示更新が、

[Alt]や[F10]や[Alt]+F押下などのキー操作やウインドウのメニューバーを左クリックなどのマウス操作、
[Alt]+[Space]押下などのキー操作やウインドウのタイトルバーのアイコンを左クリック、ウインドウの
タイトルバーのアイコンを右クリック、ウインドウのタイトルバーを右クリックなどのマウス操作

によりメニューバーやプルダウンメニューにフォーカスが移ってクライアント領域のDirectXの表示更新が
ピタッと止まってしまう状態のことを指します。

505 :498:2010/07/12(月) 02:44:30
>>503
〜〜〜>>504の続き〜〜〜
検証に使っているパソコンのマウスカーソルが、どうやらハードカーソルではないらしく、DirectXで
表示更新され続けているクライアント領域にマウスカーソルを持っていくと、DirectXの描画と
マウスカーソルの描画が競合してマウスカーソルがちらついて表示されてしまいます。その問題を
解決するために、マウス座標がクライアント領域にある場合は、標準のマウスカーソルを消去し、
代わりにDirectXのグラフィックでマウスカーソルの絵を描画するようにしました。しかし、クライアント領域に
マウスカーソルの絵が表示されているときに、▼▲の操作を行うと、DirectXの表示更新がピタッと止まり、
マウスカーソルの代わりの絵がクライアント領域の▼▲の操作を行う直前の位置に張り付いたままの状態で、
標準のマウスカーソルが表示されてしまいます。(マウスカーソルが2つ表示されて気持ち悪いです。)
対処法として「クライアント領域から制御が離れるタイミング」(標準のマウスカーソルが表示されるタイミング)で、
マウスカーソルの代わりの絵を消去し「クライアント領域に制御が戻るタイミング」(標準のマウスカーソルを
消去するタイミング)でマウスカーソルの代わりの絵を描画するという処理を実装しようとしています。
上記理由から
(1)ウインドウ内でクライアント領域から制御が離れるタイミング
(2)ウインドウ内でクライアント領域に制御が戻るタイミング
を検出したいのです。

506 :デフォルトの名無しさん:2010/07/12(月) 10:24:31
止まるのは自分でアイドル以外で描画してないからだろ

507 :デフォルトの名無しさん:2010/07/12(月) 11:27:56
WM_NCHITTEST、WM_NCMOUSELEAVE、GetCursorPos()で毎回マウスカーソルの位置を拾って
自分で描画を制御するしかないかなぁ…。

508 :498:2010/07/12(月) 14:02:44
>>506-507
レスありがとうございます。
自分自身の複雑な発想を改め単純に考えてみると
下記コーディングにて無事機能を実装できました。
▼▼▼
  case WM_SETCURSOR:
    if(LOWORD(lParam) == HTCLIENT)
    {
      SetCursor(NULL); // 標準マウスカーソル非表示
      g_mousecursor.SetDispFlag(1); // スプライトマウスカーソル表示
      return TRUE;
    }
    else
    {
      // 標準マウスカーソル表示
      g_mousecursor.SetDispFlag(0); // スプライトマウスカーソル非表示
      if( Render() < 0 ) // DirectXの描画
      {
        DestroyWindow(g_hwnd);
      }
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
    break;
▲▲▲

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

509 :デフォルトの名無しさん:2010/07/12(月) 16:57:11
他プロセスのEM_REPLACESELをフックしてメッセージを破棄したいのですが、
WH_CALLWNDPROCではメッセージ自体を変更することができないようで困っています。
何か方法があれば教えてください。

510 :デフォルトの名無しさん:2010/07/12(月) 16:59:56
その他プロセスに入り込んで直接フックしろ

511 : ◆EFMKcHX4gM :2010/07/14(水) 20:47:53
エディトボックスの上でキーを押しても文字が入力されないのですが、
何の原因が考えられるでしょうか。
右クリックの貼り付けとかはできます。

メッセージループにはWM_KEYFIRSTが来ていますが、
コールバックにはWM_COMMANDが来ていないみたいです。
(MessageBeepとifでどのWM_の時に音が鳴るかで調べました)

512 :デフォルトの名無しさん:2010/07/14(水) 20:55:42
TranslateMessage

513 : ◆EFMKcHX4gM :2010/07/14(水) 21:01:32
>>512
ありがとうございます。
試してみます。

514 :デフォルトの名無しさん:2010/07/15(木) 04:32:32
窓辺ななみのデスクトップマスコットみたいな輪郭のくり抜きって
SetWindowRgn使ってると思うのですが、
その際アンチエイリアス処理は無理でしょうか?

515 :デフォルトの名無しさん:2010/07/15(木) 05:20:47
SetWindowRgnは古い
今は
SetLayeredWindowAttributes
で α値を使う

http://msdn.microsoft.com/ja-jp/library/ms997507.aspx

516 :デフォルトの名無しさん:2010/07/15(木) 20:12:57
親がWS_POPUPである、サブクラス化したリストビューにて、
ListView_DeleteColumn()しても、中身は削除されるようですが、コラム自体は残ってしまいます。
又、SetWindowPos()でその部分を隠そうかとも思いましたが、どうも変更されません。
何方かご教授お願いします。


517 :デフォルトの名無しさん:2010/07/16(金) 06:30:57
SVNみたいなファイル/フォルダのオーバーレイ表示ってどうやんの?

518 :デフォルトの名無しさん:2010/07/16(金) 06:53:38
>>517
http://eternalwindows.jp/shell/shellex/shellex03.html

519 :デフォルトの名無しさん:2010/07/16(金) 06:58:32
おもしろそうだな。自分もやってみたいけどこれといったネタがないw

520 :デフォルトの名無しさん:2010/07/16(金) 07:18:12
Explorerフックされるのが嫌で、TortoiseSVN使うの止めますた
どうかそういうソフトは作らないで下さい

521 :デフォルトの名無しさん:2010/07/16(金) 09:16:54
フックじゃなくてシェル拡張でしょ

522 :デフォルトの名無しさん:2010/07/16(金) 09:19:58
>>520
オプションで切るという発想がないのがすごい

523 :デフォルトの名無しさん:2010/07/16(金) 13:02:14
>>521
言葉遊びはもういいです

524 :デフォルトの名無しさん:2010/07/16(金) 13:16:26
>>523
間違いを指摘されて怒ったのか?
牛乳飲めよ煮干し食えよ

525 :デフォルトの名無しさん:2010/07/16(金) 13:25:23
残念だなあ。
君は何か勘違いしている様だけど、聞いて揚げ足取りをしたいんじゃなくて、
単純に君の意見が面白そうだから聞いてみたかっただけなんだよ。
もっとまともなレスを期待してたんだけど。ごめんね。
ちなみに君は揚げ足を取られる事を恐れているようだけど、それは違うと思う。
揚げ足を取られるのは、君に隙があるから。
隙だらけの人間ってのはそうやって余計な所でつまらない恥をかく事になるもんだよ。
他人につっこまれる事は、自身の知識をより客観的で多角的なものとする為に
有益な指針となるものだと思うな。

526 :デフォルトの名無しさん:2010/07/16(金) 13:35:25
少なくともお前は面白くない

527 :デフォルトの名無しさん:2010/07/16(金) 13:55:17
>>526
面白くないと死んじゃうのか?
牛乳飲めよ

528 :デフォルトの名無しさん:2010/07/16(金) 13:56:57
その返しにウィットが効いてると思ってるの?

529 :デフォルトの名無しさん:2010/07/16(金) 13:58:37
間違ってるとしたら俺なんだけど
間をとってシェルフックって事で手を打たないか?

530 :デフォルトの名無しさん:2010/07/16(金) 14:04:15
どっちにしろフックじゃない
シェル拡張作ったことあるか知らんが単純なプラグイン機構だ

531 :デフォルトの名無しさん:2010/07/16(金) 14:33:35
プラグインみたいにロードできる事は分かるが、単純ではないと思うけどなぁ

532 :デフォルトの名無しさん:2010/07/16(金) 14:37:31
この場合は
プラグイン=フック

533 :デフォルトの名無しさん:2010/07/16(金) 14:51:13
シェル拡張の多くはフック的仕組みではあるが
シェルフックは別にWH_SHELLやIShellExecuteHookがあるから紛らわしい

534 :デフォルトの名無しさん:2010/07/16(金) 14:52:25
本当にAPIと関係の無い話題で盛り上がるのが好きだな

535 :デフォルトの名無しさん:2010/07/16(金) 23:51:59
SendInputでFキーやEscキーは送れるのですがカーソルキーが送れません
← の場合 wScan = MapVirtualKey(0x25, 0) としているのですが、何故送れないのですか?

536 :デフォルトの名無しさん:2010/07/17(土) 11:10:55
>>535
RegisterRawInputDevicesでスキャンコードを取り出してみたら、
「←」押下で42,75、「←」を離した時点で75,42と来てるなあ。
操作的には左シフトを押しながらNUMPAD4を押して、逆順で戻すって感じか。
家のはPS/2キーボードだからUSBだと違うのかもしれないが、
一応これと同じように送ってやればいいんじゃないか?

537 :デフォルトの名無しさん:2010/07/17(土) 11:33:37
スキャンコードと仮想キーコードって全然違うくない?

538 :デフォルトの名無しさん:2010/07/18(日) 21:41:15
申し訳ありません、非常に幼稚な質問かと思うのですが尋ねさせてください
ttp://www.geocities.jp/ky_webid/win32c/028.html
http://www4.plala.or.jp/tamo/vc/HowToVS/HowToVS.html
これらのページを参考にVisual Studio 2008 Professional Editionで
プログラムを作っています
しかし、現在ウィンドウにメニューを表示させたいのですが
表示させることができず困っている状態です

win32APIのプロジェクトにおいて
VSに付属のリソースエディタでxxx.rcを作成し
その中にリソースの追加を行いMenuを新規作成しました
そのMenuのIDはIDR_MENU1になっているので
参照しているURLの上の方のリンクの最初にある
サンプルプログラムをコピーして

// メニューリソースをロードする
hMenu = LoadMenu( NULL, _T("IDR_MENU") );
// ウィンドウにメニューリソースを割り当てる

この中段の部分の IDR_MENU を IDR_MENU1 に変更し
一応includeファイルにもresource.hを足しておりますが
ビルドはできても、実行するとメニューのない
ウィンドウしかでてこないのです
原因の分かる方いらっしゃいましたら
できれば教えていただきたいと思います
よろしくお願いします

539 :デフォルトの名無しさん:2010/07/18(日) 21:50:42
普通に Win32プロジェクトを開始して、Windowsアプリケーションを選べば、
メニュー付きのウィンドウが出るよ。

540 :デフォルトの名無しさん:2010/07/18(日) 21:54:44
ソースの下のLoadMenuの説明をちゃんと読みましたか?

541 :デフォルトの名無しさん:2010/07/18(日) 21:59:21
ありがとうございます
空のプロジェクトでやってましたが、気付かなかったです
これでメニューのでたウインドウのコードと比較してみて
何が差異としてあるか見てみようと思います
助かりました

542 :デフォルトの名無しさん:2010/07/18(日) 22:25:02
>>540
こちらもありがとうございます
おかげさまで無事に表示することができました
ついでに質問させてもらっていいでしょうか

ページ最初の XN Resource Editor上での作成 という項目の最後辺りにある

>ここまで終わったら、メニューバー自体にも名前を付けます。
>左側のツリービューから、「Language Neutral」の部分を右クリックし、
>「プロパティ」を選択します。

>するとダイアログボックスが出てくるので、
>「名前」に「IDR_MENU」と入力します。

この部分ですが、VSのリソースエディタでリソース中の
メニューのプロパティを見ても、Nameという部分は
グレーで選択できない状態になっていますよね
こうなっているということは、必ずVSではMAKEINTRESOURCEを使う必要が
あるということでしょうか

543 :デフォルトの名無しさん:2010/07/18(日) 22:27:22
リソースのID指定と文字列指定を勘違いするなよ。

544 :デフォルトの名無しさん:2010/07/18(日) 22:44:25
>>542
プロパティのIDを""で囲ってやれば文字列形式になる
"で囲まない(通常) -> ID が .h に定義される -> リソースIDになる
"で囲む -> ID が .hに定義されない -> 文字列形式になる
これだけの話、.rc, .h を直接編集してやってもいい
まぁ普通はリソースIDを使うと思うけど

545 :デフォルトの名無しさん:2010/07/18(日) 23:03:04
>>543-544
なるほど、良く分かりました
要領が悪くもうしわけございません
私はリソースの文字列形式というものの
理解がそもそも足りておらなかったですね
しかし非常に助かりました、ありがとうございます

546 :デフォルトの名無しさん:2010/07/19(月) 07:39:14
>>545
最初はみんな理解が足りないんだから気にしないで。
なんていうか、一旦川を渡った人が初めて川を渡る人に川の渡り方を
説明するのに、まともなものは稀なもの。んで、同じ轍を踏む。

547 :デフォルトの名無しさん:2010/07/19(月) 23:08:50
既に川に橋が架かってる時代に
わざわざ川の中泳いで渡ろうという奇特な人のために
だれも助け船なんて出そうと思わないのと一緒

548 :デフォルトの名無しさん:2010/07/20(火) 05:37:42
頭の足りない人たちが作ったAPIを理解できないのは当たり前。
同じように足りなければ相性がいいってだけで理解できないから劣っているわけではない。
頭の悪さに慣れるしかない。気にするな。

549 :デフォルトの名無しさん:2010/07/20(火) 09:28:35
Win32 APIよりましなAPIセットなり、フレームワークなりを
作ってからじゃないと、全然説得力ないな。

550 :デフォルトの名無しさん:2010/07/20(火) 09:39:07
野党時代の民主党みたいなもの。
無責任に言うだけ言って、与党になったら何も出来ないのが露呈する。

551 :546:2010/07/21(水) 08:16:45
今たまたま SetClipboardData() でスタックエラーというんで、
http://msdn.microsoft.com/ja-jp/library/cc430086.aspx
を見ていたら、uFormat の項のところ、
・・・「」または「」を参照しろ・・・と。
久々に機械翻訳のやりっぱなしに出会ってしまった。

範囲選択して Ctrl-C を押すのが続くんで、行頭にカーソル置いて
右クリック一発をできるようにして置こうと思ったんだけど、
朝から萎えた。

552 :551-546:2010/07/21(水) 11:24:55
独り相撲そのものだか、
SetclipboardData() で渡すハンドルには GMEM_DDESHARE の属性がないと
失敗するようだ。551 に上げたページにはジェンジェン触れてないよ。喝

553 :552-546:2010/07/21(水) 17:37:58
やりたいことは出来たけど、ちょっと疑問。教えて下さい。

GMEM_DDESHARE を使うっていうと、ハンドルは GlobalAlloc() で取る
だけになりますよね。GlobalAlloc() は古いから HeapAlloc() を勧め
るって聞いたような気がするけど、これはどう考えるのでしょうか。
(HEAP_DDESHARE って用語はぐぐっても出てこない。)

554 :デフォルトの名無しさん:2010/07/21(水) 19:09:03
>>553
Win16の頃にGlobal/Local系でやり取りする取り決めにしたAPIは、
Win32になったからといって急に変更すると移植に手間がかかってしまう為、
そのままになっている。
APIによる制限が無い使い方なら、Global/Local系を使う理由は無い。

555 :デフォルトの名無しさん:2010/07/22(木) 02:13:54
>>551
日本語版をアテにするな。
http://msdn.microsoft.com/ja-jp/library/cc428720.aspx あれ?戻り値は……?
http://msdn.microsoft.com/ja-jp/library/cc410588.aspx 関数名はどっちが正しいの……?

556 :デフォルトの名無しさん:2010/07/22(木) 04:03:00
いいからAPI出せや

557 :553-546:2010/07/22(木) 07:03:40
>>554
SetclipboardData() を使おうと思ったから過去に引き戻されたわけね。

>>555
激励感謝。アテにしてないから他も見て解決。551 は 545 への応援も
あったと思ってね。

558 :デフォルトの名無しさん:2010/07/23(金) 21:51:47
いいからAPI出せや

559 :デフォルトの名無しさん:2010/07/24(土) 10:58:07
Yield()笑

560 :デフォルトの名無しさん:2010/07/24(土) 11:19:08
Yieldの精神はUmsThreadYieldに受け継がれているのだ。

561 :デフォルトの名無しさん:2010/07/24(土) 12:18:16
そのAPIは?

562 :デフォルトの名無しさん:2010/07/24(土) 12:49:59
x64版のWin7か2008R2なら使えるよ。

563 :デフォルトの名無しさん:2010/07/24(土) 12:51:35
何故 WinMain の返り値を msg.wParam にするの?
0を返すのとどう違うの?

564 :デフォルトの名無しさん:2010/07/24(土) 12:56:12
WinMainの返り値(終了コード)はGetExitCodeProcessで取得できる。

565 :デフォルトの名無しさん:2010/07/24(土) 13:00:06
>>563
PostQuitMessageの引数に終了コードを入れておくと、
WM_QUITのWPARAMにそのコードが入っているから。

566 :デフォルトの名無しさん:2010/07/24(土) 13:17:08
じゃあウィンドウプロシージャの中に
PostQuitMessage(0);
と書いたら、msg.wParam の値は 0 ってこと?

567 :デフォルトの名無しさん:2010/07/24(土) 15:32:25
yes

568 :デフォルトの名無しさん:2010/07/24(土) 17:19:04
サンクス

569 :デフォルトの名無しさん:2010/07/24(土) 19:28:13
APIってきもいよね^^

570 :デフォルトの名無しさん:2010/07/24(土) 19:38:20
米国石油協会に喧嘩を吹っかけるとな

571 :デフォルトの名無しさん:2010/07/24(土) 19:58:52
だって石油だぜwwww
きもすぎるwwwww

572 :デフォルトの名無しさん:2010/07/25(日) 10:44:01
車はガソリンで走るのです

ってCMあった気がする

573 :デフォルトの名無しさん:2010/07/25(日) 10:44:37
ウィンドウを画面中央に表示させたいときは

HWND hDeskWnd = GetDesktopWindow();
HDC hDeskDC = GetDC(hDeskWnd);

を書いた後に、CreateWindow() の引数で
x座標に GetDeviceCaps(hDeskDC, HORZRES)/2 - WIDTH/2
y座標に GetDeviceCaps(hDeskDC, VERTRES)/2 - HEIGHT/2
(WIDTH, HEIGHT はウィンドウの幅, 高さ)
を指定してあげる方法でOK?

574 :デフォルトの名無しさん:2010/07/25(日) 10:46:55
モニタ2台あったらどうするつもりだ

575 :デフォルトの名無しさん:2010/07/25(日) 10:50:32
/2が一回無駄

576 :デフォルトの名無しさん:2010/07/25(日) 10:52:25
は?

577 :デフォルトの名無しさん:2010/07/25(日) 10:57:08
引いてから割った方がエコ。

578 :デフォルトの名無しさん:2010/07/25(日) 10:59:04
実装する時は()付けるべきだろうけど
これくらいならコンパイラがやってくれそうな気もする。

579 :デフォルトの名無しさん:2010/07/25(日) 11:00:38
結果が違う場合があるのにやるわけない

580 :デフォルトの名無しさん:2010/07/25(日) 11:11:03
確かに/2は1回で出来たな、サンクス

>>574のような場合も含め
多くの環境に対応させるには、具体的にどのように書いたらいいの?

581 :デフォルトの名無しさん:2010/07/25(日) 11:11:35
足し算と間違った

582 :デフォルトの名無しさん:2010/07/25(日) 11:16:35
分母が2、分子が整数であれば、結果が異なる場合はないんじゃね?

583 :デフォルトの名無しさん:2010/07/25(日) 11:31:13
> 分母が2、分子が整数であれば、結果が異なる場合はないんじゃね?
> 分母が2、分子が整数であれば、結果が異なる場合はないんじゃね?
> 分母が2、分子が整数であれば、結果が異なる場合はないんじゃね?
> 分母が2、分子が整数であれば、結果が異なる場合はないんじゃね?
> 分母が2、分子が整数であれば、結果が異なる場合はないんじゃね?
> 分母が2、分子が整数であれば、結果が異なる場合はないんじゃね?
> 分母が2、分子が整数であれば、結果が異なる場合はないんじゃね?


584 :デフォルトの名無しさん:2010/07/25(日) 11:48:32
何が言いたいのか分からない

585 :デフォルトの名無しさん:2010/07/25(日) 11:50:05
>>582
GetDeviceCaps(hDeskDC, HORZRES) == 1001、WIDTH == 501 の時、さあどうなる?

586 :デフォルトの名無しさん:2010/07/25(日) 11:51:38
もっともこの場合、割り算が少ない方が正しい結果になるけどな

587 :デフォルトの名無しさん:2010/07/25(日) 11:53:45
ディスプレイで奇数ドット数なやつ見てみたいわ

588 :デフォルトの名無しさん:2010/07/25(日) 12:00:04
マルチモニタだとモニタとモニタの間に来ちゃうんじゃなかったかな?このやり方だと。

589 :デフォルトの名無しさん:2010/07/25(日) 12:00:56
>>585

キャスト入れないと同じになると思うんだけど
int x = 1001/2 - 501/2;
int x2 = (1001 - 501) / 2;

ans. x==250, x2==250

590 :デフォルトの名無しさん:2010/07/25(日) 12:01:56
キャストっていうか、結果か

591 :デフォルトの名無しさん:2010/07/25(日) 12:07:00
int GetDeviceCaps();

どうやって、コンパイラが最適化すんだよ。

592 :デフォルトの名無しさん:2010/07/25(日) 12:15:14
>>591
こんな風にならんのかな?

x = GetDeviceCaps(hDeskDC, HORZRES)/2 - WIDTH/2

x = (int)/2 - (int)/2

x = ((int)-(int)) / 2

593 :デフォルトの名無しさん:2010/07/25(日) 12:31:40
頑張って最適化しても、APIより先には手が出せない
しかもホットスポットがAPIの中そのものだったりする

594 :デフォルトの名無しさん:2010/07/25(日) 12:33:25
ダメだこりゃ。

595 :デフォルトの名無しさん:2010/07/25(日) 12:59:41
いかりやさん…

596 :デフォルトの名無しさん:2010/07/25(日) 13:17:55
>>588
そうなのか、サンクス

マルチモニタの場合を考えなければ
/2の部分を修正した>>573の方法でOK?

597 :デフォルトの名無しさん:2010/07/25(日) 14:16:49
>>587
そんなのないと思うでしょ。

MS Virtual PCのような仮想マシンで動かせば簡単に作れる。
大抵、仮想マシン側の画面解像度をホスト側のウィンドウ(のクライアント領域)の
大きさに合わせる機能が備わっているため。

598 :デフォルトの名無しさん:2010/07/25(日) 14:19:56
まぁどうでもいいけどな
実際はないんだから

599 :デフォルトの名無しさん:2010/07/25(日) 14:20:58
>>587
自由に解像度が設定できる(仮想含む)グラフィックボードとか、
あるいはウィンドウモードで動作する仮想PC使ったこと無いの?

600 :デフォルトの名無しさん:2010/07/25(日) 14:33:41
Win32APIはWinFXとなり新しく生まれ変わります。

601 :デフォルトの名無しさん:2010/07/25(日) 14:37:36
しかし、この大胆な計画はまったく賛同を得られずマイクロソフトは撤回した。

602 :デフォルトの名無しさん:2010/07/25(日) 16:10:02
そして、周囲に中核を失って残骸となったサブシステムが残った・・・
そして後日、小出しに公開

603 :デフォルトの名無しさん:2010/07/25(日) 16:56:15
そしてWin32API派と.NET派の戦いが始まった…

604 :デフォルトの名無しさん:2010/07/25(日) 16:57:18
.NET派なんて中にAPI派を抱えてるから簡単に…
いやなんでもないです

605 :デフォルトの名無しさん:2010/07/25(日) 17:09:52
奴らを寝返らせるのは簡単ってかw

606 :デフォルトの名無しさん:2010/07/25(日) 19:51:36
>>573
こんな感じの実装になると思われ。(間違っていたらごめん。)

DWORD g_window_style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;

rect2.top = 0;
rect2.left = 0;
rect2.right = MAX_SCREEN_WIDTH; // クライアント領域の幅
rect2.bottom = MAX_SCREEN_HIGHT; // クライアント領域の高さ
AdjustWindowRect(&rect2, g_window_style, TRUE);

rect.left = ( GetSystemMetrics(SM_CXSCREEN) - (rect2.right - rect2.left) ) / 2;
rect.top = ( GetSystemMetrics(SM_CYSCREEN) - (rect2.bottom - rect2.top) ) / 2;
rect.right = rect2.right - rect2.left;
rect.bottom = rect2.bottom - rect2.top;

CreateWindow関数にg_window_styleとrectを渡す
rect.left // ウィンドウの横方向の位置
rect.top // ウィンドウの縦方向の位置
rect.right // ウィンドウの幅
rect.bottom // ウィンドウの高さ

607 :デフォルトの名無しさん:2010/07/25(日) 21:34:11
WM_CREATEの中でSetWindowPosしないと、
どのモニタで起動しようとしたのか把握できない気がする。
後は、MonitorFromWindowで対象モニタの情報を取って、
作業領域の中央に配置するように計算すれば良い。

608 :デフォルトの名無しさん:2010/07/26(月) 07:42:48
AutoHotkey で Win32API を使っています。
ノート PC の電源状態を取得する目的で、以下のスクリプトを使用しています。

; stat はモニター電源が On なら 1、Off なら 0 を返す
LCDPowerState() {
hDisp := DllCall("CreateFile", "Str", "\\.\LCD", "UInt", 0xC0000000, "UInt", 3, "UInt", 0, "UInt", 3, "UInt", 0, "UInt", 0, "Ptr")
DllCall("GetDevicePowerState", "UInt", hDisp, "IntP", stat)
DllCall("CloseHandle", "UInt", hDisp)
Return, stat
}

しかし本スクリプトは内蔵モニターと外部モニターを区別しないようで、
特に外部モニターを外した後、常に 0 または 1 を返し続けることがあります。
内蔵モニターだけを監視するには、どのようにハンドルを取得すべきなのでしょうか。

関連がありそうなリンクを以下に列記します。

http://social.msdn.microsoft.com/Forums/ja-JP/vcgeneralja/thread/c83373d7-20de-4042-9804-6aabe0a93d5f/
http://homepage1.nifty.com/MADIA/vc/vc_bbs/200411/200411_04110001.html

宜しくお願いします。

609 :デフォルトの名無しさん:2010/07/26(月) 15:19:51
>>606,607
サンクス
とても勉強になりました

610 :デフォルトの名無しさん:2010/07/26(月) 17:13:28
子プロセスから親プロセスが所有するWindowにウィンドウメッセージを送りたいのですが、
ウィンドウハンドルはどのように渡せば良いでしょうか?

HWNDをポインタとして数値表記をコマンドラインで渡す方法がよくつかわれているようですが、
HANDLEはポインタと互換であることが保証されているのでしょうか?

なお、親になるプロセスは複数インスタンスが同時に実行される可能性があり、かつ、
送信先のWindowのタイトルもユニークではないので探して送るはうまくありません。

611 :デフォルトの名無しさん:2010/07/26(月) 18:47:22
>>610
ヘッダのtypedefくらい見ろよクズ

typedef void *HANDLE

となってます
まんまポインタです

612 :デフォルトの名無しさん:2010/07/26(月) 19:16:18
それは現在の実装がそうなっているというだけで、保証されているとは言いませんね。

613 :デフォルトの名無しさん:2010/07/26(月) 19:18:33
じゃあ保証されてないからそのまま死ねば?

614 :デフォルトの名無しさん:2010/07/26(月) 19:19:50
知らないなら黙っててください

615 :デフォルトの名無しさん:2010/07/26(月) 19:20:24
はぁ手前が黙れ

616 :デフォルトの名無しさん:2010/07/26(月) 19:21:19
それを言い出したらずーっとWindowsである保証もねーよな。

617 :デフォルトの名無しさん:2010/07/26(月) 19:23:07
アホな人が質問するのは良いですがアホな人が回答するのは控えてください

618 :デフォルトの名無しさん:2010/07/26(月) 19:23:32
>>617
アホはいいですけど低知能な質問はお断りです

619 :デフォルトの名無しさん:2010/07/26(月) 19:24:20
>>617
いやよくないよ。

620 :デフォルトの名無しさん:2010/07/26(月) 19:25:11
>>617
そもそもAPIの質問じゃないじゃん。
スレタイも読めない奴は小学校から出直せよ。

621 :デフォルトの名無しさん:2010/07/26(月) 19:27:58
>>617
気分はどうだアホ

622 :デフォルトの名無しさん:2010/07/26(月) 19:30:07
で保証されてんですか?

623 :デフォルトの名無しさん:2010/07/26(月) 19:30:54
>>622
保証されてんですか(笑)

624 :デフォルトの名無しさん:2010/07/26(月) 19:31:13
>>622
スレタイ読めるなら消えろ

625 :デフォルトの名無しさん:2010/07/26(月) 19:31:38
ID出ないからやりたい放題だなオイ

626 :デフォルトの名無しさん:2010/07/26(月) 19:31:58
>>622
かーもね

627 :デフォルトの名無しさん:2010/07/26(月) 19:32:47
保証されてるか聞いてんのにヘッダー見ろとかw

628 :デフォルトの名無しさん:2010/07/26(月) 19:34:42
>>627
じゃあMSに電話して聞けよ
アーキテクチャーが正しいかどうかなんて部外者には分かんねーぞ
本だって「書いた時点ではそうなってる」以上のことは言えないんだから

629 :デフォルトの名無しさん:2010/07/26(月) 19:35:08
>>627
保証書でも探して読んでろよクズ

630 :デフォルトの名無しさん:2010/07/26(月) 19:35:36
>>627
お前にはそれで十分だろ。

631 :デフォルトの名無しさん:2010/07/26(月) 19:35:51
UZEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

632 :デフォルトの名無しさん:2010/07/26(月) 19:36:40
じゃあ最初から「MSに電話しろ」って答えるか、黙ってれば?w

633 :デフォルトの名無しさん:2010/07/26(月) 19:37:57
>>632
スレタイ見てすらいないお前がな。

634 :デフォルトの名無しさん:2010/07/26(月) 19:38:09
>>632
そうだな電話しろ

635 :デフォルトの名無しさん:2010/07/26(月) 19:38:38
>>632
そうだね黙ってればよかったねお前がね

636 :デフォルトの名無しさん:2010/07/26(月) 19:40:02
夏だなあ

637 :デフォルトの名無しさん:2010/07/26(月) 19:40:34
質問も汲み取れないから仕様書いつも読み違えてバグばっかりなんだよお前らはw

638 :デフォルトの名無しさん:2010/07/26(月) 19:40:42
いんさまーばけーしょん

639 :デフォルトの名無しさん:2010/07/26(月) 19:40:56
>>637
お前の存在がバグだろ

640 :デフォルトの名無しさん:2010/07/26(月) 19:41:15
>>637
自己紹介しなくて良いよ。

641 :デフォルトの名無しさん:2010/07/26(月) 19:41:34
まぁでも保証してるのかどうか聞いてるのは痛すぎると思うわw

642 :デフォルトの名無しさん:2010/07/26(月) 19:42:29
保証が必要じゃAPIなんか使えないからな
怖くて

643 :デフォルトの名無しさん:2010/07/26(月) 19:43:37
まだ続くの?

644 :デフォルトの名無しさん:2010/07/26(月) 19:45:57
俺はもう飽きたからいい

645 :デフォルトの名無しさん:2010/07/26(月) 19:46:27
WindowsSDKのドキュメントにも書かれている以上
一応信用して使っておいても問題無いんじゃないかな。
まあ、Win64の話が出てきたと思ったら
DialogProcの戻り値がBOOLからINT_PTRに変わったなんて事もあるし、
諦めも肝心だったりするw

646 :デフォルトの名無しさん:2010/07/26(月) 20:02:45
>>645
あー、それそれ。やっとまともな回答者が現れた。
Windows Data Typesに書かれてますね。

>>624
スレタイ読めなくて消えるべきはキミのようだ。www

647 :デフォルトの名無しさん:2010/07/26(月) 20:46:28
ああ、まだやってたの?
暇だね

648 :デフォルトの名無しさん:2010/07/26(月) 23:02:35
sizeof(int *) <= sizeof(int)
であれば問題ない

649 :デフォルトの名無しさん:2010/07/26(月) 23:32:11
> DialogProcの戻り値がBOOLからINT_PTRに変わったなんて事もあるし、
それのどこに問題があるの?
result==TRUEやresult!=TRUEでチェック入れてた人は困るかもしれないけど
そんな人って存在するの?

650 :デフォルトの名無しさん:2010/07/26(月) 23:53:50
悪あがきw

651 :デフォルトの名無しさん:2010/07/26(月) 23:56:41
リファレンスにBOOLと書いてあった以上居るんじゃあねえのか

652 :デフォルトの名無しさん:2010/07/27(火) 00:09:51
DialogProcを書くやつがGetMessageの件を知らんとは思えん

653 :デフォルトの名無しさん:2010/07/27(火) 01:06:50
このスレにはそれを知らない自称回答者が沢山いる。バカなんだから黙ってりゃいいのに。

654 :デフォルトの名無しさん:2010/07/27(火) 01:13:31
バカなくせにしゃしゃり出ておまけに逆切れまでしてすいませんでした

655 :デフォルトの名無しさん:2010/07/27(火) 01:17:24
GetMessageなんて定型で使ってる奴多いだろ
Mainにコピペで済ませてるだけなら知らなくても不思議ではない

656 :デフォルトの名無しさん:2010/07/27(火) 01:20:49
夜分遅くまでたのしそうっすね

657 :デフォルトの名無しさん:2010/07/27(火) 12:52:32
INT_PTRはポインタじゃなくてポインタサイズの整数じゃ!
と何度も言う必要があるな。ひどい名前付けてくれたもんだぜ

658 :デフォルトの名無しさん:2010/07/27(火) 18:50:42
http://www.itmedia.co.jp/enterprise/articles/0506/15/news006_2.html
まったくだな!

659 :デフォルトの名無しさん:2010/07/27(火) 18:52:46
誰だよその酷い記事書いたのはw

660 :デフォルトの名無しさん:2010/07/27(火) 20:10:25
つまり_PTR追加しときゃ間違いないってことだ

661 :デフォルトの名無しさん:2010/07/27(火) 22:28:35
APIがどんどんカオスになってくる

662 :デフォルトの名無しさん:2010/07/28(水) 12:34:02
整数型にアドレスぶっこむ奴らの気が知れない
そんな奴は頼むからプログラム書くな
いつか飛行機が墜ちる

663 :デフォルトの名無しさん:2010/07/28(水) 13:02:10
ポインタに演算なぞ以ての外
Cの使用は法律で禁止すべき
OSもPascalで書け

664 :デフォルトの名無しさん:2010/07/28(水) 13:31:24
Adaがあるだろ

665 :デフォルトの名無しさん:2010/07/28(水) 13:50:51
キチガイ語り場!

666 :デフォルトの名無しさん:2010/07/28(水) 14:17:04
Jhon、、、Ada、、、、

667 :デフォルトの名無しさん:2010/07/28(水) 14:18:10
しまったJohnだった

668 :デフォルトの名無しさん:2010/07/28(水) 18:08:29
Jホンェ・・・

669 :デフォルトの名無しさん:2010/07/28(水) 23:14:22
>>649
BOOLに対して、result==TRUEやresult!=TRUEは禁止だろうけど、result!=FALSEはありだし互換性はあるな。

670 :デフォルトの名無しさん:2010/07/29(木) 01:29:48
>>659
恣岡悄。記事の名義はch3。

671 :デフォルトの名無しさん:2010/07/29(木) 23:56:36
Windowsフォトビューアーでzipファイル内の画像をダブルクリックして開いたあと、
左右矢印のボタンを押すとzipファイル内の別の画像を表示できますが、
これはどうやったら実現できるのでしょうか?
普通に関連付けただけでは、1個だけ画像が展開された一時フォルダのパスが
渡されるので、元のzipファイルには他にどんな画像が含まれていたのか
知ることができません。

672 :デフォルトの名無しさん:2010/07/30(金) 00:01:31
http://www.pkware.com/documents/casestudies/APPNOTE.TXT
自分で中身読めば良いだろ
ZIPなんかたいしたフォーマットじゃねえ

673 :デフォルトの名無しさん:2010/07/30(金) 00:22:06
>>672
zipファイルのパスがわかれば自分で開いて読むのですが、
一時フォルダのパスしかわからないのです…

674 :デフォルトの名無しさん:2010/07/30(金) 09:36:16
apiとどういう関係が?

675 :デフォルトの名無しさん:2010/07/30(金) 09:58:36
パスってフォルダのことか。パスワードのことかと思った。

676 :デフォルトの名無しさん:2010/07/30(金) 18:43:20
>>674
Windowsフォトビューアーがzipファイルのフルパスを取り寄せる方法は
APIとして公開されているのでしょうか?

677 :デフォルトの名無しさん:2010/07/30(金) 20:26:45
レジストリのHKCRでjpegfile/shell/open/DropTargetとか
登録されているのが何か怪しい。BMPとかPNGとかも似たような感じだし。
ShellNamespace系のインターフェースで受け取れたりとかするんじゃないか?
試すの面倒そうだから後は知らないけど。

678 :デフォルトの名無しさん:2010/07/30(金) 20:31:06
C言語は読めるが日本語が読めないので>>672は読めない

679 :デフォルトの名無しさん:2010/07/30(金) 20:34:20
自己解決しました。
COMローカルサーバーを作成してIDropTargetとIObjectWithSiteを実装
→IObjectWithSite::SetSite()で設定されたpUnkSiteからIServiceProviderをQI
→IServiceProvider::QueryService()でIShellBrowserを取得
→IShellBrowser::QueryActiveShellView()でIShellViewを取得
→QIでIFolderViewを取得
→IFolderView::GetFocusedItem()とIFolderView::Item()でPIDLを取得
→IFolderView::GetFolder()でIShellFolderを取得
で、zipファイルを表すIShellFolderとダブルクリックした画像のPIDLに到達できました。
一時フォルダに無意味に画像ファイルが展開されてしまうようなのですが、
Windowsフォトビューアーでもそうなるので仕様なのだと思います。お騒がせしました。

680 :デフォルトの名無しさん:2010/07/30(金) 20:35:38
あ、更新する前に書き込んでしまった
>>677
おっしゃる通りDropTargetキーとShell Namespaceが鍵でした。ありがとうございます。

681 :デフォルトの名無しさん:2010/07/31(土) 00:12:50
よく判ったな
シェル関係とか関わりたくねえ

682 :デフォルトの名無しさん:2010/07/31(土) 17:50:41
http://msdn.microsoft.com/ja-jp/library/cc410911.aspxによると、
MapVirtualKeyExは仮想キーコードを文字列に変換出来るとあるのですが、
逆に文字列を仮想キーコードに変換するには、どうすれば良いのでしょうか。


683 :デフォルトの名無しさん:2010/07/31(土) 19:57:30
文字列・・だと・・?

684 :デフォルトの名無しさん:2010/07/31(土) 20:14:00
言葉足らずで申し訳ないです。
文字列とは、Ctrl+Q,Shift+Ctrl+Eといったもののことです。


685 :デフォルトの名無しさん:2010/07/31(土) 20:16:37
そんなAPIないだろ

686 :デフォルトの名無しさん:2010/07/31(土) 20:24:48
MapVirtualKeyExの逆という意味なら、VkKeyScanExとかか?

687 :デフォルトの名無しさん:2010/07/31(土) 20:52:14
>>684
ホットキーのプレビュー表示用(スペース入りだけど)はそんな感じだし
ByIdに対するByNameだから普通にありそうな気もするけど
俺ならとりあえず
std::map<std::string,WORD>
とかで変換用のテーブル作っちゃうかな
IDEの進歩のおかげでリファクタリングも容易ですし

688 :デフォルトの名無しさん:2010/08/01(日) 14:55:27
VBのSendKeysみたいなやつか?

689 :デフォルトの名無しさん:2010/08/02(月) 00:39:58
WinTab.dllを用いずに、ペンタブ筆圧を取得する方法ってありませんか?
Win7+.Net4+Silverlightとかで普通に取得できる事をXPとかじゃできそうになくて。

WinTabのソースコードでも公開されてれば自分で解析するんですが…。
ご存知の方はご教示宜しくお願い致します。

690 :デフォルトの名無しさん:2010/08/02(月) 00:46:27
あ、それから
知らない人は黙っていてください。

691 :デフォルトの名無しさん:2010/08/02(月) 01:00:48
そうはいきませんよ(ニヤリ

692 :デフォルトの名無しさん:2010/08/02(月) 07:06:26
XPだと、Win32 APIでは無理。
ということで、スレ違いだな。

693 :デフォルトの名無しさん:2010/08/02(月) 07:59:32
The Linux Wacom Project でソース後悔されてないの?

694 :デフォルトの名無しさん:2010/08/02(月) 10:51:22
自力で通信すれば可能だけど知らない人は黙ってろっていうから
詳しくは書かないでおくわ

695 :デフォルトの名無しさん:2010/08/02(月) 11:39:49
いい心がけ

696 :デフォルトの名無しさん:2010/08/02(月) 15:51:34
XPのGetPrivateProfileSectionNamesで、存在しないセクション名が取得されることってあるんですか?
なんか、ほかの人のところで動かしたら、そんな状態らしいんです

697 :デフォルトの名無しさん:2010/08/02(月) 15:56:34
レジストリにマッピングしてるとか?

698 :デフォルトの名無しさん:2010/08/04(水) 12:34:57
ノートPCでバッテリーが何%まで減ったらバッテリー切れの警告が出るか、調べるAPIを教えてください
OSはXPです

699 :デフォルトの名無しさん:2010/08/04(水) 13:08:50
>>698
CallNtPowerInformation

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

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)