[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 07/09 05:34 / Filesize : 231 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build59



1 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:39:56 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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


477 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 13:12:10 ]
>>475
ちなみにその「一時的なレジストリ」を使って実現してもいいんだよ

478 名前:425 mailto:sage [2007/11/26(月) 13:15:48 ]
>>463
情報サンクス。でもLVGS_COLLAPSIBLEの値がわからないです。
誰か分かる方います?

479 名前:425 mailto:sage [2007/11/26(月) 13:17:14 ]
てかvista以降って書いてない?

480 名前:471 mailto:sage [2007/11/26(月) 13:27:29 ]
>>477
レジストリだと、実行中にレジストリエディタで簡単に書いたり消したりできますよね。
もちろんアトムやメモリマップトファイルでも、
本格的にセキュリティ対策するならそのまま使うわけにはいかないでしょうけど、
OS付属のエディタで読み書きできてしまうことくらいは避けておきたいなと思いまして。

481 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 13:36:04 ]
>>479
じゃあVista以降なんだろう。残念だな。

482 名前:425 mailto:sage [2007/11/26(月) 13:40:42 ]
そうなんでしょうね、諦めます。
で、次の質問なんですが、ListViewでマウスホイールが回転されたことを取得したいんですけど、
サブクラス化するしかないですよね?

483 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 13:43:19 ]
他にも方法はあるけど、サブクラス化が一番楽でコストも低いような

484 名前:425 mailto:sage [2007/11/26(月) 13:54:04 ]
おk、サンクス

485 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 16:48:58 ]
software.nikkeibp.co.jp/software/backno/04apimook1.html
ここのPart3のFileCopyプログラムですが
表示されるべきのメニューが表示されません。。。

COPYやEXITなどのメニューを表示するようにするには
どうすればいいですか?



486 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:03:18 ]
リソースファイル (*.rc) をコンパイルしてリンクしたか?

487 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:38:18 ]
>>486
ご指摘のように
リソースファイルをプロジェクトに追加するのを
忘れていたのが原因だったようです。

表示するようになりました。ありがとうございます。

488 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:56:47 ]
文字列置換や文字列検索に使える関数ってSDKにない?

489 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 19:01:02 ]
検索や置換のダイアログの表示なら
FindTextやReplaceTextで可能です。

490 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 19:14:03 ]
>>489
ありがとうございます
FindTextとReplaceTextについて調べてみよ

491 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 20:10:01 ]
デバッガAがDebugActiveProcessでプロセスBにアタッチした後、
デバッガCがデバッガAのアタッチを強制的にデタッチして
プロセスBにアタッチしなおすことって、出来るんでしょうか?

その過程の間、プロセスBは停止したらダメ、という条件で。

ちょっと分かりにくいですが、要するにデバッガAをデバッガCに
差し替えてしまうことができるか、ということです。(AはCに
ついては何も知らないプログラムなので、連携した動作は
ありません)

デバッガAを強制的に終了するとプロセスBも終了してしまう
ようで、一見すると不可能っぽいのですが。OSは2000〜Vista
です。よろしくお願いします。

492 名前:491 [2007/11/26(月) 20:11:58 ]
すみません、上げさせてください。

あと、「プロセスBは停止したらダメ」というのは、ようするに
終了は不可と言うことで、ブレーク状態になるのは構いません。

493 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 20:17:20 ]
XP以降ならDebugActiveProcessStopってのがある。

494 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 20:34:23 ]
>>493 どうもありがとう

495 名前:491 mailto:sage [2007/11/26(月) 21:14:53 ]
教えてもらったので早速実験してみました。

WinMain(){
DebugActiveProcessStop(GetCurrentProcessId());
 :
 :
 :
}

ってやってデバッグ実行開始したら、デバッガ(VC8)が
外れると期待したのですが、外れずにそのまま下に
行っちゃいました。

もしかしてDebugActiveProcessStopはデバッグ対象じゃなくて
デバッガのプロセスIDを渡すのかしら? それとも自プロセスが
デバッガから強制離脱することはできない…?

あるいはDebugActiveProcessを呼んだあとに、そのプログラムが
デバッグ対象を切り離す用途で使うのかも。それだと>>491
外部からのデバッガの差し替えはできませんね。

憶測ばかりで申し訳ないですが、このAPI、ググっても細かい
ところがよく分かりませんでした。




496 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:04:52 ]
コレ見た感じだと DebugActiveProcess 呼んだデバッガが自分で
デタッチするときに使うような感じっぽくない?

msdn2.microsoft.com/En-US/library/ms679301.aspx

497 名前:デフォルトの名無しさん [2007/11/26(月) 22:30:55 ]
ある特定のトップレベル・ウィンドウを、最前面に持ってくるのってSetWindowPos関数?
ほかにも何かいい方法ありますか?

498 名前:491 mailto:sage [2007/11/26(月) 22:30:58 ]
>>496
情報ありがとう

499 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:57:02 ]
>>497
BringWindowToTopはどう?

500 名前:497 [2007/11/26(月) 23:48:53 ]
>>499 トン
これもいいな
コードがすっきりした

表に持ってきたウィンドウの再描画が完了したのを検地したのを知る方法ってある?
タイマーで1秒くらい待ってから、ってやってるけどエレガントじゃない

501 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 00:09:25 ]
FindWindow

502 名前:デフォルトの名無しさん [2007/11/27(火) 04:34:26 ]
プログラムの実行中に、ウィンドウが常に最前面に表示されるようにウィンドウスタイルを変更したいです。
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_TOPMOST);
SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
うまくいきません。助けてケロ

503 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 05:10:48 ]
てかWS_EX_TOPMOSTが付いてれば後ろに引っ込んだりしないだろ

…他にWS_EX_TOPMOSTを持ってるウィンドウがなければ

504 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 05:17:10 ]
>>502
なんでそこまでいっておいて、SetWindowPosを調べないんだ?
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
これだけでいい。

SetWindowLongはいらない。

505 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:26:31 ]
SetWindowLong入らない?



506 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:39:24 ]
XPの制限ユーザー上で実行するとはProgramFiles以下に書き込めません。
Vistaではこのようなファイル操作はVirtualStoreにリダイレクトされるようです。

実際のプログラムで設定ファイルを保存する場合は、
実行されたパスが読み書き可能なものであるか? Yes→実行されたパスに書き込み
No↓
ユーザーディレクトリ(AppDataなど)を取得し、そこに書き込み

このような動作が必要だと思います。
これをどのwindowsでも確実に動作させるにはどのようなAPIを使えばいいのでしょうか。


507 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:45:01 ]
>>505
CreateWindowExの段階でWS_EX_TOPMOST付けてるなら要らないと思うけど

508 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 09:45:53 ]
>>506
常にユーザディレクトリに書けばいいやん

509 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:04:14 ]
>実行されたパスが読み書き可能なものであるか? Yes→実行されたパスに書き込み
この考えがそもそも間違い
ユーザーディレクトリに置くかレジストリを使用すべき

510 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:33:00 ]
共用というのであれば、それなりのアクセス権もってAll Usersに置けばいいし。

511 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 11:37:09 ]
どうしてもやりたければOSのバージョンを取得してやればいいんじゃね

512 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:38:15 ]
>>500
InvalidateRectしてからUpdateWindowすればWM_PAINTが完了するまで待てるけど
あれって他プロセスのウィンドウに使えたかな?

513 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 12:40:47 ]
WH_CALLWNDPROCRETを見てればWM_PAINTの処理が終わったかは分かる

こんなことでフックするなんて蛇足にも程がある気がするけど

514 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 13:42:59 ]
この場合、InvalidateRectが無くてもいいでしょう。
UpdateWindowだけで再描画されなくても、WM_PAINTは抜けてるって事だし。

515 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:24:24 ]
インストールせずにスタンドアローンで使うことを想定しているのですが、
万が一ユーザーがProgramFiles以下に置いた場合でも正常に動作させられるようにしたいのです。



516 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:26:44 ]
ユーザーがProgramFiles以下に置いた場合でも置かない場合でも、
常にユーザディレクトリに書いとけばいつでも正常に動作する

517 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:27:36 ]
だったらなおさら、どこに配置されようとAppDataを使うべきだろ
System32に入れる奴だっているかもしれないんだし(もっともXP以前ならそこでも読み書きできるが)

518 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:28:28 ]
>>515
たぶん、あなたが言いたいそれを「スタンドアローン」とは言わないと思う。
Readme にでも注意書きを書いておけば、わざわざ Program Files に
配置するスキルがあるユーザなら、意味をくみ取ってくれるんじぇね?

519 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 14:31:25 ]
専用のインストーラ・アンインストーラを設けないなら、
ユーザフォルダやレジストリに情報残すと削除がめんどいってのは同意するけども。

520 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:18:05 ]
>>515
気持ちは分かるけど、妙な俺様仕様を作らないほうがいいよ。
OSが推奨する共通の方式に従ったほうが
安全だしセキュアだし管理しやすいし将来の互換性も期待できるし
結果ユーザにとっても使い勝手が良いから。

521 名前:デフォルトの名無しさん [2007/11/27(火) 17:35:43 ]
>>503-505
レスありがとう
解決した。
だけど、SetWindowPos に指定するフラグで、HWND_TOPMOSTはドキュメントに載ってるが
HWND_NOTOPMOSTはヘッダー見て初めて知った
最前面化:SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
最前面化解消:SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
でOKだた

522 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 17:36:45 ]
そういやexeあるフォルダのの下にファイル作るプログラム、そのままVistaでちゃんと動いてるなと思って
ファイル探したら、ユーザーの下のVirtualStore\Program Files (x86)\xxx の下にできてたわ。
勝手にマッピングしてくれるみたいだな。

523 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 17:56:19 ]
>>520
MSが互換性に気をつけると思っているのですか

524 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:02:56 ]
実際気をつけてるよ

525 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:17:32 ]
>>522を下位互換性と呼ばずになんと呼ぶと?



526 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:18:56 ]
>>525
新機能

527 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:28:47 ]
GetSysColorBrush(COLOR_***)の結果と、HBRUSH(COLOR_*** + 1) って使用上で何か違うの?

528 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:46:04 ]
>>524
なぜIEとFirefoxでは表示が異なるのですか?

529 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 18:51:40 ]
Firefox の仕様準拠度が低いからだな

530 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:06:03 ]
>>527
GetSysColorBrush はブラシのハンドルが返る
HBRUSH(COLOR_*** + 1) ってのは、WNDCLASSEX 構造体のメンバーに入れてると思うが
これはRegisterClassExを呼んだ先でインデックスかブラシのハンドルか判断して
内部でGetSysColorBrushに相当するものを呼んでるだけだろう。
+1なのはインデックス0とNULLを区別するためだなw

531 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:28:39 ]
FillRectとかでHBRUSH(COLOR_*** + 1)入れても動くよな?

532 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:37:24 ]
>>529
違います。
IEの独自仕様のためですよ。

533 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:42:46 ]
違います
仕様が曖昧だからですよ

534 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:43:23 ]
IEの仕様解釈がおかしいのは認めるが、Firefoxも解釈おかしいよ

535 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:53:09 ]
>>532
えーと実際に Firefox で Acid2 とか試したことありますか?




536 名前:デフォルトの名無しさん [2007/11/27(火) 19:55:09 ]
ある文字列(改行含む)から、最長行の文字数を返す関数ってあります?
UNICODE/ANSIどっちでも対応できるもので、マルチバイト文字もうまく扱ってくれるもの

前に便利な文字列操作関数っていうサイトを見た希ガスるんだけど、見つからん

537 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:57:02 ]
>>535
Acid2なんて飾りだよ

538 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:58:06 ]
>>536
Win32API に、ですよね。
そういう関数はありません。

539 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 19:58:23 ]
>>536
等幅フォント?

540 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:06:27 ]
指定したフォルダにあるファイルのファイル名を全て取得する関数ってありますか?

541 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:11:12 ]
>>540
FindFirstFile FindNextFile FindClose

542 名前:デフォルトの名無しさん [2007/11/27(火) 20:13:54 ]
>>539
そうです。

>>538
別にAPIになければ、APIじゃなくてもいいです。
自作するのはちょtっとミリなので

543 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:13:54 ]
>>541
ありがとうございます。貴方のおかげで道が開けまんた。

544 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:23:18 ]
>>542
なぜ自作するのが無理なんだ?

int line = 0;
int maxlen = 0;
int i = 1;
while (fgets(s, ...)) {
 int len = strlen(s);
 if (maxlen < len) {
  line = i;
  maxlen = len;
 }
 i++;
}
こんな感じでどうにかなるだろ。

545 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:32:00 ]
>>542
size_t maxCharsInLine(LPCTSTR p)
{
 size_t maxLen = 0;
 size_t len = 0;
 while (*p) {
  switch (*p) {
   case 0x0d: case 0x0a:
    len=0; break;
   default:
    if (maxLen < ++len) maxLen = len;
  }
  p = (LPCTSTR) CharNext(p);
 }
 return maxLen;
}



546 名前:鈴木 [2007/11/27(火) 20:41:03 ]
164 名前:鈴木[who@am.i] 投稿日:2007/11/27(火) 13:12:56

MiniDumpWriteDump をつかって、Dumpを出力しているのですが、
どのようにしてファイルの中身は見れるでしょうか?

547 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 20:42:50 ]
>>546
よう鈴木、こないだ貸した5000円返せよ

548 名前:鈴木 [2007/11/27(火) 20:43:36 ]
>>547
しゃ、借用書はあるのかっ!

549 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:01:46 ]
>>531
そうなのか。
それも内部でブラシ取得してるんだろう。
ハンドルかインデックスかは、上位ワードが
0かどうかを見てる気がする。

550 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:16:30 ]
質問です。

windowsで流れているサウンドをフックすることは可能でしょうか?
もし方法があれば、調べれば良いポイント・キーワードなどを教えていただけないでしょうか。

551 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:21:47 ]
そういうことを質問する前に最低限、
録音プログラムぐらいは作ったことがあるんだろうな?

552 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:23:57 ]
>>551
Windowsでサウンドプログラミングの経験があります。

553 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:34:15 ]
>>550
「サウンドをフックする」っていうのがわからない。

途中で加工したい?
それとも覗ければ(キャプチャできれば)十分?
audio 関連の filter driver を書けばいいと思うんだけど、
Vista 以前の OS だと色々なパスがあって面倒だと思う。

特定のアプリが対象なら話は遙かに簡単になるけど。

554 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:35:57 ]
>>553
> それとも覗ければ(キャプチャできれば)十分?
はい、覗けるだけで十分です。
加工して戻すということは想定していません。

555 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:36:23 ]
>>552
録音するプログラムを組んだことがあるのか無いのか聞いているんだが、ニホンゴワカリマスカ?



556 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:39:58 ]
>>555
録音するプログラムを書いたことがあります。

557 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:41:24 ]
>>556
じゃあ既に問題は解決している。

558 名前:デフォルトの名無しさん [2007/11/27(火) 21:42:21 ]
新規質問です。
Beep関数で、XPでは音が出るもののVistaでは音がでません。
プログラムはVisualStudio2005のC++でコンパイルしています。
VistaではBeep関数を使えないのでしょうか?

559 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:44:42 ]
>>558
MessageBeep を使ってみてはいかが?

560 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:47:04 ]
>>558
マザーボード上の内蔵Beepデバイスから出ているのなら、
物によってはマザーボードからスピーカーに繋げなければ音が出ない。
XPだと逆にドライバがなかったから、サウンドデバイスから出力されていただけでは?
そもそもAPIとは何の関係もない。

561 名前:デフォルトの名無しさん [2007/11/27(火) 21:48:06 ]
>>559
確かに、MessageBeepは使えますが、自由にメロディを設定したいのでBeep関数が使いたいのです。

562 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:53:16 ]
>>561
PlaySoundでwavを鳴らせばいいだろ

563 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 21:55:15 ]
>>554
DDKを使って、カーネルモードのフィルタドライバを書いてオーディオドライバの
上側のAPI(のようなもの)をフックすることになると思います。

この「オーディオドライバ」ってのが色々あるのがXPまでのOSでの難点・・・
www.microsoft.com/whdc/device/audio/wdmaud-drv.mspx
Vista からは UAA (Universal Audio 何とか) に統一されてるんだけど。

セキュアオーディオパスってのがあって、DRM処理された音源の再生時には
署名されていないフィルタドライバは割り込めなかったような気もする。

そうして僕の知るところ、これをやってる例は聞いたことがない。
オーディオカードの出力から入力へループバックする方が遙かに簡単だから。

特定のアプリが対象で、どんなAPIで鳴らしてるのか見当が付くなら、
単純なAPIフックで実装できるわけですが。

564 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:05:38 ]
リダイレクトに相当するものを録音するだけ。
ドライバを作る必用もなければ、APIをフックする必用など微塵もない。

565 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:16:40 ]
サウンドカード(デバイス)が対応してればそれが一番簡単でしょうね。




566 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:28:14 ]
リアルタイムでエフェクトでもかけたいんでね?

567 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:31:56 ]
用途が分からんがDirectShowでキャプチャで十分な希ガス

568 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:34:36 ]
サウンドデバイスをフックしてDRM解除するソフトでも作りたいのだろ

569 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 22:40:14 ]
>>566
お前は他人の話を聞かない奴だとよく言われるだろ。

570 名前:sage [2007/11/27(火) 22:45:54 ]
録音はwaveInXXXで実装できるが、何らかの音が鳴り始めた瞬間というのは、
ユーザーモードでは特定できないはず。
しかし、WAVEデバイス指定のmciSendCommandやwaveOutWriteをAPIフックしたとなれば、
それを期に録音を開始することで再生バイトを取得できるかもしれない。
これらの関数には、MM_MCINOTIFYのような再生終了の通知メッセージがあったから、
メッセージフックでそれを取得すれば録音終了のタイミングも図れるのではないだろうか。
デバイスオープンの関数が通知を指定していないのであれば、
その関数もフックして通知フラグを立ててしまえばいい。

571 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:03:00 ]
今時waveOutってのもなぁ〜
DirectSoundかASIOだろ

572 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:07:37 ]
>>570
そんな余計なことを考え無くったって受け取った音声データ自体をみれば、
音が鳴っているかどうかなんて判断できるだろ。

そもそも再生の開始のタイミングを受け取りたいなんてどこに書いてあるんだ?
録音終了のタイミングが知りたいなんてどこに書いてあるんだ?
再生バイトの取得が必用なんてどこに書いてあるんだ?
通知フラグを立てる必用があるなんてどこに書いてあるんだ?

573 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:14:22 ]
>>571
DirectSoundはVistaでHALが廃止された過去の技術
ASIOは応答速度と引き替えにCPU負荷が上がる上、
ミキサーなどの機能制約がある使う場所を選ぶ技術

知っている用語を出したいんだろうが、頭が悪すぎる

574 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:26:40 ]
VistaがDirectSoundのHAL捨てたのはCPUパワーが上がってきたのと、
一部に狼藉ドライバがあったからで、過去の技術と言うほどじゃない。
それを言うならwaveOutの古さってどうよ?

575 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:33:04 ]
waveOutが古くないなんて誰も言っていないが、妄想が酷いんじゃないか?



576 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:36:38 ]
>>575
横から悪いが、
あんたちょっと黙ってたほうがいい気がするよ。
誰にでも難癖つけてるようにしか見えない。

577 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:37:35 ]
>>573
何を勘違いしてるのか知らんが、今時waveOut系を使ってるプレーヤーなんてほとんど無いから
waveOut系をフックしてもあまり意味無いだろって言ってるのだが。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<231KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef