- 1 名前:デフォルトの名無しさん mailto:sage [2007/07/19(木) 22:57:45 ]
- スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/)の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- 136 名前:デフォルトの名無しさん [2007/07/23(月) 19:10:08 ]
- あるよん
- 137 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 19:11:14 ]
- コマンドでよけりゃcacls
- 138 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 19:11:58 ]
- >>112
時代遅れなのでは?
- 139 名前:135 mailto:sage [2007/07/23(月) 19:15:11 ]
- 自己解決しました
- 140 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 19:18:14 ]
- 作成と同時でよければ、CreateFileのSECURITY_ATTRIBUTESへのポインタ型の引数で指定できる。
後からなら、SetSecurityInfoやSetNamedSecurityInfoなど。
- 141 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 19:47:47 ]
- >>112
Sleep挟むなりしないとノートPCの寿命縮めたりでえらいことになる
- 142 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 20:05:23 ]
- >>141
112のコードにはSleepは必要ないが。
- 143 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 21:08:45 ]
- ど素人かPeekMessageと間違えてるかのどちらか
- 144 名前:110 [2007/07/23(月) 21:47:08 ]
- >>112さん
遅レスですみません。 ありがとうございます。できました。 (ショックです。でも、本当にありがとうございます。) DirectXのレンダリングを挟むので、>>112さんのコードをまねて、 ZeroMemory( &msg, sizeof(msg) ); while( msg.message!=WM_QUIT ) { if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { Render(); } } なんて感じにしたうまくいきました。 ただ、>>143さんのコメントが気になります。 PeekMessageはまずいんでしょうか? 教えて君ですみません。
- 145 名前:110 [2007/07/23(月) 22:00:44 ]
- >>141
ど素人の勘違いかもしれないのですが、Sleepを実行しても、CPUは休んでない のではないでしょうか。すると、PeekMessageでも、Sleepをする意味はないように 思うのですが。どうなんでしょう?
- 146 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:08:40 ]
- 睡眠関数入れないと中央演算装置使用率十割になるんじゃ
- 147 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:15:25 ]
- Sleepしたからといって全てのプログラムでCPUが休むわけではない。
- 148 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:38:50 ]
- 結論、sleepいれないとノートPCの液晶の寿命が縮む
- 149 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:39:08 ]
- そもそもCPUの使用率が十割になるとまずいの?
ほんとに寿命が縮むの?
- 150 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:40:42 ]
- 縮みません
- 151 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:41:08 ]
- >>148
なぜ液晶が?
- 152 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:41:40 ]
- CPUの使用率10割になると
限界をこえたことによって CPU内部のトランジスタが痛むって141がいってた
- 153 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:42:39 ]
- 言ってません
- 154 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:52:03 ]
- でも常に10割いってたらどっかは痛む罠。電源とか
- 155 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 22:56:54 ]
- レンダーを別スレッドで行うのが定石
- 156 名前:110 mailto:sage [2007/07/23(月) 23:02:25 ]
- みなさん、ありがとうございます。
やってみたら、CPUの使用率は50%ちょいになりました。 確かに、普段と比べると多いかも。 でも、ゲームをやるなら仕方が無いようにも思います。 よくわかりませんが。 いずれにしても、勉強になりました。ありがとうございます。
- 157 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:09:05 ]
- >>144
そういう風にメッセージが来なかったときにやることがあるなど、 必要があってPeekMessageを使うこと自体はまずくはない。 GetMessageはメッセージが来るまでスレッドを休ませる効果があるが、 PeekMessageではそれがないので、メッセージが来ないときに何もやらない場合、 (そのコードで言うとRenderの呼出がなくしたようなコード) 無駄にループが回ってCPUの無駄遣いになるというだけのこと。 それが寿命に悪影響なのかどうかは知らないが、そんなこと気にするなんて話は聞いたことがない。 俺としては寿命よりも他のプログラムがCPUに飢える事態を心配してやれと言いたい。 あと、お前らSleepばっか言ってないでたまにはWaitMessageも思い出してやれ。
- 158 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:11:56 ]
- そういやsleepってミリ秒単位らしいけど1を指定しても一秒近く停止するのはなんで?
- 159 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:13:13 ]
- Sleepの分解能って10msが最小で10ms単位じゃないっけか?
- 160 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:13:15 ]
- 君のトロいコードで999ミリ秒掛かってるから
- 161 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:13:22 ]
- WindowsOSの場合
- 162 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:28:32 ]
- WindowSOS
- 163 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:31:08 ]
- リアルタイムOSじゃないから当たり前。
- 164 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:35:21 ]
- >>160 つまらん。おまえのレスはつまらん。
- 165 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:35:49 ]
- WindowsEx
- 166 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:46:23 ]
- Sleep(1);
で普通に1000分の1秒停まるぜ
- 167 名前:デフォルトの名無しさん mailto:sage [2007/07/23(月) 23:48:58 ]
- うそぉん
- 168 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:03:54 ]
- >>158
優先度が高いほかのスレッドが1秒近くCPUを使っているとかそういうことはない?
- 169 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:06:40 ]
- >>160-165
つまらん。
- 170 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:08:22 ]
- >>166
あれを呼んでおけば止まるね。あれを。
- 171 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:12:17 ]
- どれ?
- 172 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:17:07 ]
- 10ms以上(だっけ)のSleepの場合は気にする必要ないけど
それ以下の精度が必要なら timeBeginPeriod(1) 以下、検索したらTOPに出た↓サイトの抜粋 Win95,98,Me では、この関数の実行とかかわりなく精度は 1ミリ秒になっている。WinNT,2000,XP では、ちゃんと 精度を設定する必要がある。
- 173 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:25:34 ]
- その手の話ならこれだな
ttp://www.emit.jp/prog/prog_t1.html
- 174 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 00:56:18 ]
- メディアプレイヤーとか動かしながら動かすと動作が変わるソフトはtimeBeginPeriodを使ってないかららしいな。
- 175 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 06:48:24 ]
- 木屋さんってバイク好きの木屋さん?
- 176 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 08:16:57 ]
- ドラスレだったりしてw
- 177 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 08:36:49 ]
- ドラスレやんw
- 178 名前:デフォルトの名無しさん mailto:sage [2007/07/24(火) 19:22:19 ]
- >>173
>ttp://www.emit.jp/prog/prog_t1.html >>175-177 正解
- 179 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 02:24:56 ]
- 質問です。
vfwを使ってaviからビットマップは取り出すことが出来たのですが、 オーディオを無圧縮PCMで取り出すにはどのようにしたらいいでしょうか? 単純にヘッダをくっつけただけだとファイルが壊れてますと言われるのですが…
- 180 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 08:15:25 ]
- >>179
もう一声分の詳しさが欲しいな。 いわんとする事はわかるけど、 もうちょい詳しく書けば、回答が早いと思う。
- 181 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 08:27:24 ]
- え、君が回答すればいいのに
- 182 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 08:35:10 ]
- え、もうちょい詳しく書かないと分からないんだろ
- 183 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 09:00:15 ]
- え、言わんとすることは分かるって
- 184 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 09:24:05 ]
- え、そんなんできるんですか
- 185 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 09:36:01 ]
- 無圧縮PCMなら、ヘッダさえ正しければどんな出鱈目なデータでも再生はできるから、
くっつけたヘッダが間違ってるんでないの。
- 186 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 10:04:43 ]
- え、?
- 187 名前:179 mailto:sage [2007/07/25(水) 10:44:19 ]
- >>180
vfwを使ってオーディオストリームは取り出せるのですが、 常に無圧縮のデータを吐き出してくれるわけではないみたいで、 ReadFormatで得られたPCMWAVEFORMATとRIFFなどの 決まり文句をくっつけただけじゃだめみたいなので、 どのようにしたら無圧縮の状態で取り出せるようになるのかなと 思い質問させていただきました。 圧縮されたまま書き出せばwavファイルには出来るみたいなのですが、 それだと次の編集が出来なくなるので…
- 188 名前:179 mailto:sage [2007/07/25(水) 10:45:41 ]
- >>187
圧縮されたまま書き出せば → × 取り出したデータをいじらずに → ○
- 189 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 10:59:24 ]
- ここの第4章は?
www.ecoop.net/coop/vfw/avi.html
- 190 名前:179 mailto:sage [2007/07/25(水) 11:44:34 ]
- >>189
そんな方法が… ありがとうございます。 //ただ解凍するだけなのになんかものすごいことに…
- 191 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 14:48:49 ]
- 自分のウインドウがアクティブじゃなくても
ボタン入力を受け取る方法ってありますか? ブラウジングなどで大量にできたウインドウを マウス真ん中クリックで次々消したいなと思いまして
- 192 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 14:50:46 ]
- 便乗ですが、WMVファイルやMPGファイル(要はWMPで再生できる形式)でAVIStreamGetFrameと同じようなことがしたい場合、
どんなAPIを使えばいいのでしょうか。 それらしきものが探しても見つからず、キーワードだけでも頂ければあとは調査したいと思います。
- 193 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 14:51:11 ]
- >>191
ジャーナルフック
- 194 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 14:56:58 ]
- >>192
DirectShow
- 195 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 14:58:15 ]
- とうとうフックに手を出さないといけないのか・・・難しそう
グローバルな感じのlParamだかなんだかに 格納されたりしてすぐに取り出せたりとかは不可能でしょうか?
- 196 名前:192 mailto:sage [2007/07/25(水) 15:03:36 ]
- まいどどうもです。
調べた結果このへん参考になりそう。 ttp://www.geekpage.jp/programming/directshow/samplegrabber.php
- 197 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 15:03:38 ]
- フックほど簡単なものはない
- 198 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 15:08:47 ]
- グローバルフックでHHOOKの保持にハマることが多かったが、最近はそれも無いみたいだしなぁ
- 199 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 15:21:19 ]
- グローバルフックでHHOOKの保持にハマるなんて都市伝説
- 200 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 15:25:30 ]
- しかしフックというのは
チートだのキーロガーだの悪の技術 手を出してはいけないと教わりました
- 201 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 16:01:41 ]
- まあいつでもマウスで呼び出したいというのなら、タスクトレイに入れとくと言う手もあるしなあ
- 202 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:03:47 ]
- ごめん。
悪の技術に関する質問です。 Office 2003でImm*を使ったグローバルフックが問題なく動いてたんだが、 Office 2003 sp2にしたところ動かなくなりました。 原因分かる人いますか。 Office2003_SP2Changes(英語)に該当する情報ってありますか? support.microsoft.com/default.aspx?scid=kb;ja;887616
- 203 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:06:46 ]
- Office2003_SP2Changes(英語)
- 204 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:13:10 ]
- >>203
ありますか? すんません、英語じゃなくてもいいです。 っていうか、英語じゃないほうがいいです。
- 205 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:18:25 ]
- 英語じゃないとダメです。
英語を勉強して下さい。
- 206 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:26:54 ]
- じゃあ、英語でも良いです。
「Office 2003 Service Pack 2 - Changes」 の原文のほうに目を通しましたが、、、
- 207 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:27:11 ]
- 一番の近道は留学だな
- 208 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:31:18 ]
-
/.n l /⌒ヽ | l l | ,' /7 ,' , '' ` ー ' '-' / / 、_, `ヽ l , .-. 、`´ l ヽ ヽ ̄フ / 丶、 ̄____,/ / ,. - 、 ) (( ( n ([N],ハ_う ゝ)ノ  ̄ ヽ / _ l )) 〈__ノ´ `(_ノ
- 209 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:41:00 ]
- セキュリティレベルが上がったから!?
- 210 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 18:10:12 ]
- 単にImm32が呼ばれてなかっただけだったりして。
TSF経由とか。
- 211 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:01:45 ]
- WM_CREATEでウィンドウ位置を変更してから
タブコントロールを作るとタブコントロールが正しく表示されないんですが ヒントでいいので何かもえませんか? ウィンドウ位置変更を抜いたり、WM_SIZE後は正しく表示されるので 何かサイズ関係なんだと思って SendとかPostとかしてみたんですがどうも上手くいきません
- 212 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:18:04 ]
- 何も萌えません
- 213 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:51:20 ]
- >>210
とりあえず、回避方法は分かった。 ありがとう。 210は良い奴。
- 214 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:57:01 ]
- 213は悪い奴。
- 215 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:57:41 ]
- 214 は普通の奴。
- 216 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:02:32 ]
- 普通の奴です、すいません。
- 217 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 20:08:44 ]
- 普通のヤツの反応じゃねぇ....
- 218 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:45:12 ]
- >>211
「正しく表示されない」とは?
- 219 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 21:56:06 ]
- >>212
orz もらえませんかでお願いします >>218 クリックで反応するので 多分タブコントロールの一部分だけ描画されてるみたいです
- 220 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 22:14:36 ]
- VIP uploaderという所にプリントスクリーンしたのをあげてみました
4M(Nullpo)のga7919こんなのですっていうのです
- 221 名前:デフォルトの名無しさん [2007/07/25(水) 22:21:11 ]
- nullpo.vip2ch.com/ga7919.bmp
- 222 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 23:19:53 ]
- コマンドプロンプトが対応しているロケールは、日本語圏の環境だ
とJapanese_Japan.932ですが、これをプロンプト上で実行したアプ リの方で取得する術を探しています。 ご存知の方はいらっしゃいませんか?
- 223 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 00:21:50 ]
- プロセスの現在値ならGetThreadLocaleかな
システム全体ならGetSystemDefault***系
- 224 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 08:34:48 ]
- APIじゃないんだけどWin限定だしMFCじゃないのでここに質問してみる。
ttp://www2s.biglobe.ne.jp/~ragnarok/program/win32/class_of_cpp_in_dll.htm ここを見ながら、簡単なサンプルを作っていろいろ試してみたのだけど、 1. Exportクラスを純粋仮想クラスにした場合、dllexport無しでも正常に動作するっぽい。 (ヘッダはどのみち必要なので、どの関数が存在しているかはわかっている & virtual ついてれば exportされてない関数もちゃんと呼んでくれる) 2. Exportのデストラクタをちゃんとvirtualで宣言しておけば、exe側でdeleteしても dll側のデストラクタおよびdeleteが呼ばれるっぽい。 (virtual無しだとexe側が呼ばれてしまいクラッシュ) という2つの考察結果を得ました。 これがどちらもOKなら、DLL越しにクラス使うのがかなり気楽になるんだけど、 潜在的なトラブルの可能性とかあったら教えてくださいエロい方々。
- 225 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 08:42:17 ]
- C言語の方から使っても大丈夫か
- 226 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 09:03:30 ]
- すいません。またvfw関係なんですが…
AVIStreamRead(pstm, i, AVISTREAMREAD_CONVENIENT, NULL, 0, &lLength, &lSample) としてストリームのサンプル数を取得しようとしたのですが、AVIERR_ERROR が発生してサンプル数が取得できません。 どこか間違っている場所があれば教えていただきたいのですが…
- 227 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 09:44:52 ]
- >>226
エスパーが必要そうですね
- 228 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 09:51:57 ]
- >>226
どこと指摘できるほど十分な情報を提示してないのに その質問文でわかってもらえると思ってる所を間違えてる。 もっと広範囲のソース晒すとかすれば?
- 229 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 10:09:37 ]
- >>221
タブコントロールのサイズがおかしくなってるとか WS_CLIPCHILDREN付けてないからタブの領域塗りつぶしちゃってるとか
- 230 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 10:18:15 ]
- もしかして、AVIStreamRead後のlLengthとlSampleは変化してる?
- 231 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 10:22:25 ]
- ほかのウィンドウにCtrlやAltといったModifierKeyと通常のキーを
同時に送信するにはどうすればいいのでしょうか? 試しにWM_KEYDOWNを送信してみたのですが Ctrl+Vのイベントは起こりませんでした。
- 232 名前:226 mailto:sage [2007/07/26(木) 10:37:48 ]
- >>228
>>189のTEST05.Cのコードとほぼ同じで、 int WINAPI WinMain()のところをwchar_t*型の引数2つ(入力avi名、出力wav名)の 関数に変更して、AVIFileOpenのファイル名の部分を先の引数に変更、 ビデオ部分の出力処理をまるまるカットしただけです。 >>230 本当なら変化しているはずらしい(上記リンク先TEST04.CのCopyStream内 の条件より)のですが、全く変化なしです。
- 233 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 11:01:00 ]
- _tWinMainとかwWinMain とかあったなー
(某
- 234 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 11:28:21 ]
- >>224
君の考察結果は間違ってないと思うが(とは言ってもVC++とかの話な。 DLL絡みは結局処理系に依存するところが多いだろ)、果たして 「気楽」かね? 要は必ずインタフェースクラスとファクトリを作らなきゃいかん、 それは面倒だし、全てが仮想関数呼び出しになることで効率も犠牲になる、 そこまで頑張ってもABIが処理系依存なせいで、昔ながらのCのDLLとは違って 他の言語どころか他のコンパイラからさえ利用できない、 テンプレートはどのみちDLL化できない(特殊化バージョンを入れることは 出来るが)、バージョンコントロールを厳密に意識するなら 引数や戻り値にも気楽にクラスを使えない(std::basic_string<>とか 使えないのは結構致命的では?)、といった問題があるだろう。
- 235 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 12:08:28 ]
- >>224
つCOM www.ascii.co.jp/pb/bookmart/pdf/47561/4756130666.pdf Windows用の処理系ならまず間違いなくCOMが使えるようなABIになっているため、 多少はCOMでないクラスも結構やり取りできてしまう。
- 236 名前:デフォルトの名無しさん mailto:sage [2007/07/26(木) 12:11:44 ]
- >>224
結局、劣化COMを実装しているだけじゃないか。 DirectXのようにCOMの最低限のルールだけ借りて使う方がいいかと。
|

|