ふらっと C#,C♯,C#(初心者用) Part142
レス数が950を超えています。1000を超えると書き込みができなくなります。
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part141
http://mevius.5ch.net/test/read.cgi/tech/1544839627/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured ついでに聞きたいんだけど、このボタンの描画ってUIスレッドで実行されることは保証されてるの? >>842
Convert.ToInt32
>>851
それがUIスレッドの仕事なんだけど、何を心配してるの? >>852
まさに探していたものです!
最悪の場合、型ごとに場合分けしてキャストするメソッドでも
作ろうかと思っていたのですが、実にスッキリ解決できました。
どうもありがとうございました。 >>838-839
詳しくありがとうございます。
前の章にも書いてありました。自分の勉強不足でした… PCからのサウンド出力をイヤホンが刺さっている刺さっていないに関わらず、内部スピーカーかイヤホンか選択して出すにはどうしたらいいでしょう
NAudioを使っていろいろ試してるんですがうまくいきません
OS Windows10
サウンドデバイスがSpeakers/Headphones Realtek
だとサウンドデバイスがスピーカーとヘッドホンに分かれていませんが、これだと無理なのでしょうか それは間違った機能だから出来たとしても実装するな
イヤホンが刺さってたら絶対イヤホンで出せ public Form1()
{
MessageBox.Show("form1");
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("form2");
}
フォームアプリについてなんですが、この2つ関数の違いはなんですか?
タイミング的にはform1関数が先なんですが、どう使い分けるんでしょうか? >>857
先に言語の入門本やサイトなどを読むべき
そうすればクラス名と同一名のメソッドには特別な意味があることが分かるし
そのキーワードと一緒にイベント名で検索すれば関連する話題も出てくる 何度も何度も基礎からやれって言われてもずっとやらんのだからもう無理だと思う
こういうのが才能とかセンスみたいなもんなのかね 調べた限りでは
フォームが作られるときと、作られて読み込まれたとき
という差でしょうか >>855
普通は物理的に切り替えている(ジャックにプラグを差し込むとSP出力が物理的に切断される)から無理でしょうww
恐らくソフトウェアでそれをやってるマシンはないと思うよ >>855
その機器のドライバにAPIでも無ければ少なくともC#では無理
ハードウェアの方から調べることでここで質問して答えられるようなものではないと思う
>>860
http://bbs.wankuma.com/index.cgi?mode=al2&namber=38433&KLOG=66
コンストラクタはクラスで必ずはじめに実行されるもの
イベントメソッドと分けて考えないと >>857
だから入門用の本を読めと何度も言ってんだろうが >>856>>861>>862
ありがとうございます
無理ですか。。
Audio Switcherなるものがあるのでソフトウェアからの制御もなんとか出来るかと思ったのですが >>864
ハードウェア的にスプリッターを使ってライン出力かヘッドフォン出力を
二股で取り出せるようにする方が賢明でしょうね
100均で売ってるよ >>864
いや昔やったこと有るからできるんだが、昔過ぎてやり方思い出せんわ
Vistaからマスターオーディオの制御ができるAPIがWindows標準になっていて
当時見たソースの跡地だけ発見したわ
https://www.codeproject.com/Articles/18520/Vista-Core-Audio-API-Master-Volume-Control >>864
ググったらそれらしきもの在ったから、あとは自分で頑張ってくれ
http://mikeo410.minim.ne.jp/cms/~programmingcoreaudiointerface プラグが刺されるとオープンになるジャック使ってるのは、プラグが刺されたらスピーカーから音が鳴らなくて良いものだけだろ。
テレビでも最近のはそんなジャック使ってないわw
ジャックにプラグ刺されてるか判定してるだけ。
お前はどんなラジカセで書き込みしてるんだ? >>869
確認してから書いた方がいいよ。
特殊な業務用とかフィリップスみたいなところが作ってる超高級品は知らんけど、
大概のTVはそんなもったいぶったことしてないの。する意味がないでしょ >>870
WindowsだとUSB経由とかS/PDIDとか有るし、そこに必ずSPが繋がっているとも限らないから
音声の切り替えはソフトでやっているのよ
イヤフォンの切り替え機能って俺の記憶だとWindows10 が最初だよ >>870
あと、Windowsの機能で切り替えるのは標準の出力先だけだが、当然APIで標準以外の出力先に音声流すことも可能だ >>871
それはオーディオデバイスが複数ある時にどれを有効にするかって話と違うの?
あと、高級品のサウンドカードだと複数系統の出力があってそれぞれボリュームコントロールが
ついていたりするかもしれないが、そういうの使ってるならこんな質問してないと思うよ。
普通に考えてオンボードのサウンドしかついてない普通のPC前提の質問じゃないの? なんかググるとM/BによってヘッドホンとSP(ライン出力)が排他になってるのと
そうでないのがあるみたいだけど、質問者みたいに排他になってる場合は普通は
物理的に切り替えてるはずなんで、ソフトじゃどうにもならんと思うよ >>873
普通のパソコンだってUSBのデコーダー付けられるだろ
それがどうやって物理的に切り替えられるのか考えてくれよ
それと俺は音楽プレーヤーソフト作ったこと有るから、恐らくあんたよりは詳しい >>875
USB接続のオーディオデバイスを使ったら
M/Bのヘッドホンからはそもそも音が出ないと思うんだけどね普通は
複数のオーディオデバイスを同時に有効にして同じ音を出す、
なんて芸当できるんだっけ? 光出力が付いてる場合は排他にできるわけないね確かに。
でも質問者がそういう環境ならこんな質問してないわな >>876
Windows10は普通にイアフォンとその他が切り替わるように仕様変更されている
勿論それがHDMI経由だろうがSP端子だろうが光出力だろうが >>877
つかWindows95の頃から、音声出力はソフトで切り替えるのが常識だよ
ハード的に変えるほうが寧ろ珍しい >>878
いやちょっと何を言ってるのか分からないんだけど、
ハードウェアがそうなってなきゃソフトがいくら頑張っても手も足も出ないのよ
質問者の環境はSP出力とヘッドフォン出力が排他的になってる環境で、
その切り替えは普通はメカ接点で物理的に行われるものだから、ソフトじゃどうしようもないよ >>880
少なくとも今はHDMI経由でテレビから音声流す機能は標準搭載されているから
年代物のパソコンを除けばデジタル音声出力機能は標準搭載だよ
それをどうやってイヤフォンと物理的に切り替えるのか考えたら無理だと判るでしょ
Windows10から自動切り替えはできるようになっているけど、当然ソフトで制御しているし
それをVista以降はAPIとしてプログラマーが簡単に触れるようになっている いやちょっと何を言ってるのか分からないんだけど、
メカ接点で物理的に行われるが、
SP出力とヘッドフォン出力が排他的になってるのは今時はソフトの設定でしょ? >>881
だーから、その場合は普通はM/Bのヘッドホンからは音出ませんよ。
M/Bのヘッドホン端子はオンボードのオーディオデバイスに繋がってるだから
>>882
今時も糞もないってだからw
M/Bのヘッドホン端子はオンボードのオーディオデバイスに繋がってて、メカスイッチでそれを
ライン出力(スピーカー)と切り替えてるだけなので >>882
サウンドミキサーってのがWindows95には既に付いていて、それで音声の切り替えとかマスターボリュームを制御していたから
XPまでのソフトでは大本の切り替えとか不可能だった
しかしVISTAから全てソフトから見えるようになって、ソフトごとにどの出力から出すなどの指定ができるようになった
同じパソコンでイヤフォンとスピーカーから違う曲を流すことさえやろうと思えばできるんだよ >>884
Mixerを制御するAPIがVISTA以降に公開されたんだよ
C#から制御したことも有るし >>885
えーっとですねえ、だからそんな芸当はHWが対応してなきゃできないんだってw
標準的なPCのオンボードのオーディオデバイスはオーディオ出力が一つしかないので、
そんな芸当は逆立ちしても不可能ですw
物理的な出力端子の数 = オーディオ出力の数
ではないのよ。 UWPのMediaPlayerでもオーディオ出力先は好きなように変えることができる
https://docs.microsoft.com/ja-jp/windows/uwp/audio-video-camera/play-audio-and-video-with-mediaplayer
このページ内の「特定のオーディオ エンドポイントへの出力」ってのがピンポイントでは有るが、これはUWPのモジュールで最近WinFormsから使えるようになったが
まだ未完成な部分もあって割と面倒
ただ、同じことはAPIつかって地道に作ることもできるよ >>>887
Windows10なら右下のスピーカーマーク押して「サウンド」ってのを選択すると出てくるダイアログで
「再生」ってタブを押せば、そのパソコンで使える音声出力先が出てくるが
出力が1つしか無いなんて化石のようなパソコンは見たことないわ
最低限スピーカーとイヤフォンとHDMIぐらいは付いている >>889
まあどっちにしろそれは質問してる人が聞きたいことと違うと思うよ。
質問者はアプリごとに別々のチャンネルに音を出したいって言ってるんじゃないからね。 >>890
だから何度も同じことを言わせないで。
既定のオーディオデバイスは一つしか選択できない
だからHDMIのモニターから音を出すと普通は同じ音をM/Bのヘッドホン端子から
出力することはできないの >>891
いや、889はイヤフォンが繋がっていてもスピーカーから音声を流す機能そのものだ
何も読んでいないだろ >>892
HDIMIとパソコンのイヤフォン端子をどうやって物理的に切り替えるんだよ
普通にソフトで切り替える機能が標準でついているんだよ >>893
どこをどう読んだらそうなるのw
だから、何度も言うけどHW的に排他的になってたらソフトじゃどうにもならないってw >>894
ソフトで切り替える?
何を言ってるのか分からないよ。
単純な質問だ。
君のPCではHDMIのモニタを既定のサウンドデバイスに選択している時に、
同じ音をM/Bのヘッドフォン端子からも聞くことができるのかい?
できないってw
今まで知らなかったのか >>895
string audioSelector = MediaDevice.GetAudioRenderSelector();
var outputDevices = await DeviceInformation.FindAllAsync(audioSelector);
foreach (var device in outputDevices)
{
var deviceItem = new ComboBoxItem();
deviceItem.Content = device.Name;
deviceItem.Tag = device;
_audioDeviceComboBox.Items.Add(deviceItem);
}
コンボボックスで指定した出力先に音声を切り替えているだろ
頭弱いねぇ >>897
何を言ってるんだこの人。
その出力先っていうのはオーディオ出力のことであって
物理的な出力端子じゃないんだってば
どんだけメカ音痴なのマジで >>896
それは質問と違うこと言っているよね
音声出力を標準以外からソフト制御で切り替えられるんだよ
VISTAからね もうボケ老人の繰り言だけど、だから普通のPCのオーディオ出力端子っていうのは
ヘッドホンとライン出力と2系統あるように見えるけど、実態は1つなんだよw
2つの別々のADCに繋がってるわけじゃないの。同じものをアナログ的に分配してるだけなの >>900
だからね、質問者はそんなこと聞いてないのよ >>899
そこのdevice.Nameってのが「ヘッドフォン」だったり「HDMI」だったりするんだよ
あんたが知らないだけで10年前からソフトで切り替えられる Realtekのオーディオデバイスならイヤホン端子とスピーカー端子はH/Wで排他になってないわな
設定で排他にするか切り替えられたはず 話し合ってるレイヤーが違うんだよ
いい加減気付いて質問者のためになるレスをしてくれ
質問内容が不明瞭なら明確になる質問を返せ
想像で質問内容を決めつけて延々と罵り合ってるだけで肝心の質問は何一つ進展してないぞ >>903
もうダメだなこの人。
だから何度も言うけど、それはHWが対応してないとできないのよ。
何度も言うけど、普通のPCのスピーカーとヘッドホン端子は同一のオーディオ出力に繋がってるの。
別々のオーディオ出力に繋がってるんじゃないの。わかる?
次いでいうと、これも何度も書いてるが、それ質問者の質問と全然関係ないの。
質問者さんの質問はスピーカーとヘッドホンが排他的に切り替わるのが気に入らないから
ソフトで何とかできないか、だから。
何度もいうけど、普通のPCではHWで物理的に切り替えてるので不可能です >>906
パソコンにHDMIは最低限付いているから、音声出力が1系統しか無いパソコンなど滅多にお目にかかれません
しかもUSBとかBluetoothとか音声を出す場所はいくらでもあるんだから、最低限ソフトでオフに出来ないと問題になる
つか1系統でイヤフォンとスピーカーが物理的に切り替わるだけしか出来ないパソコンって存在するのか?
例えば何ていうパソコンのことか具体的に名前出してくれ 落ち着け。どっちも正しい。
イヤホンジャックの接続を確認して他のサウンドデバイスを黙らせるハードウェアも有る。
時々出力先間違えるドライバが有るな。
再生デバイスの先でイヤホンジャックが物理的にスピーカー出力を切る装置も有る。
後者はソフトではどうしようも無い。 >>907
何がいいたいの?
まったく意味が分からん
質問者さんが何を聞いてるか、もう一度落ち着いてよく考えてよ >>909
イヤフォンつなげたままスピーカーから音声を流すAPIは存在するってことね
SPとHPが共有だったとしても、他に出力する先は色々有る
何故物理的に不可能だと言い切っちまうの?APIが存在するのにさ >>910
意味が分からないよ。
だから、誰も最初からそんな話してないって
何で一人で「アプリごとに個別の出力先に音声出力が可能か?」なんて
誰も問題にしてない話をしてるのよ どっからそんな話が出てくるのマジでw
ほんと意味わからんよ >>870
たいがいのテレビもそうなってるよ。
確認してみた?自分ちのテレビ。 >>876
それをやるのがオーディオミキサーじゃん?
昔ならsndvol32とか。 >>916
なってないよ。
そういや思い出したけど、大昔のテレビはイヤホンジャックが2つあったんだよな
で一つはSPの音を消さない仕様になっていた
普通に考えてその方が単純明快で親切だ
ヘッドをンを差し込んでも音を消さないためには、何とかボタン押して設定画面出して
この項目のアレを....
なんてまどろっこしいしヲタしか使えないしソフトもハードもコストがかかる
>>917
何か根本的に勘違いしてるんじゃないの?
それは同一のオーディオデバイスの複数の音源のボリュームを調整するんだよ。
複数のオーディオデバイスの音量を調整するんじゃないの。わかる?
他の人も書いてたと思うけど、ウィンドウズは複数のオーディオデバイスを持てるが、
既定のデバイスに設定できるのは一つだけだ(当たり前だけど) >>918
そんな安物使ってるのか。
普通はジャックの状態で選択してるだけで、物理的に切断はよほどローテクな機械しかやらんよ。
スマホにイヤホン刺してもスピーカーからも音鳴るっしょ。
PCでもそうなってるよ。普通は。
刺したら切り替わるだけ。排他ではない。
https://pcrepair.w-pickup.com/post-6263/
とか、
逆に、両方から鳴って困る事のQAもある。
https://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?PID=3908-4397
sndvol32はそのとおりだな、間違ってた、すまん。
出力デバイスを選ばにゃならんが、直接叩くなら別個に出力できたと思うけど。
具体的にはKernel Streamingで。 >>918
それイヤホンジャックじゃなくてLINE出力のことだろ? こんなところまでLINEが進出してるとは、韓国もやるな >>919
TVはどうだか知らんけど、なるほどPCではソフトでヘッドフォン接続を検出して
SP出力を制御してるタイプもあるんだな。
これは素直に知らなかった。
自作用M/Bだとリアパネルの端子の接続をソフトで検出するタイプは昔から結構あったけど。
質問した人のPCがこういうタイプならドライバのユーティリティーで設定変えたら解決するね。
ノート含めメーカー製のPCの大半はこういうタイプじゃないと思うけど wpfとwinformどちらがいいのですか?
C#で検索するとほとんどはwinform向けのコードのような気がします
大部分は同じですけども >>855です
色々と議論頂いて申し訳ないでした
しかしとても参考になりました
ありがとうございました
まさに>>919がやりたいことなんですが、自分がサウンドデバイスとAPIの関係性がいまいち理解不足な気がしますのでもう一度しっかり見直してみたいと思います >>923
絶対winform
wpfは資料なさすぎて辛いよ >>923
どっちでもいいけどまあとっつきやすいのはWinFormじゃない >>923
シンプルな画面ならwinformsかwpfどっちでもいい
複雑な画面ならwpf一択 >>923
デスクトップアプリ自体が時代遅れだから、基本的にはどちらもお勧めはできない。
しかしちょっとしたツールなんかで便利なことはあるから、覚えておいて損はないだろう。
その意味では断然WinFormsがお勧めだ。
WPFは習得コストが高く、デスクトップアプリという死んだ技術に対しては割に合わない。 確かに調べた限りではwinformのほうがサンプルが圧倒的に多いですね
wpfは初学者にはきついかも、、
>>928
デスクトップアプリが時代遅れとはなんのことでしょうか
毎日使ってますが 横で申し訳ないのだけど、WinFormsが枯れて次に学習すべきは何がおすすめ?
とりあえず簡単な業務用アプリくらいは作ってますが(データベースと連携あり)
ASP.NETとかWebアプリに進むと、セキュリティの面でまた何かと面倒なのかなと躊躇しちゃう >>924
Realtek HDオーディオマネージャーでやってるのは、
おそらくOSのAPIではなく
Realtekのドライバーの独自機能を直接呼び出してると思う wpf始めたんですが、画像の表示について教えてください
コントロールに紐付ける方法がわかりません
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var bt = new BitmapImage();
bt.BeginInit();
bt.UriSource = new Uri(@"C:\Users\◎◎\Desktop\programing\vs_project\0_practice_project\tilemap_wpf\tilemap_wpf\img\1.png");
bt.EndInit();
}
ここまでは調べられたんですが、コントロールに紐付ける方法がわかりません
コントロールの種類はimageで名前はimage_mです。
資料少なめですね >>934
このbegininitで初期化をコントロールの初期化をするという説明がされていますが、なぜこの作業が必要なんですか?
winformにはなかった手順なので、存在する意味がわかりません 自己解決したなら解決手法を書きましょう
winformとwpfは異なるものなので手順も異なります 忠告されているのにわざと自分から沼にはまって助けを求める人 >>934
URL指定するだけで良いならnew BitmapImage(URL);でいいよ
ロード前に色々プロパティ設定したいならBeginInit使う
固定の画像ならXAMLで<Image Source="URL"/>だけでもいい >>932
ありがとうございます
引き続き色々と調べてますが未だ出来ていません
NAudioを使ってオーディオデバイスの取得をしていて、自分のイメージでは
オーディオデバイスをスピーカーとヘッドホンのそれぞれで取得して、どちらかを既定のデバイスとして設定してあげれば出来るのかな?と考えてたんですが
デバイスがSpeakers/Headphonesの一つしか取得できないのでPC側の出力状態になっているものしか制御できないのです
この辺りがHWの制約によるものなのかドライバの設定でなんとかなるのかを現在調査中です >>940
引数 1: は 'string' から 'System.Uri' へ変換することはできません。
new BitmapImage(url)
で指定するとこのエラーが出ますが、参考ページありますか? >>942
あなたは逆引き本を買って、コードをコピペしなはれ
それがええで なんで一度uri変数に入れないといけないのですか? treeviewのノードなくなってますけどどうやってノード追加するんですかね Ruby でも文字列から、URI オブジェクトを作る。
たぶん、他の言語でも同じだろ
require 'uri'
site = URI( "http://example.org/test.cgi?a=b&c=d" )
p [ site.scheme, site.host, site.port, site.path, site.query ]
#=> ["http", "example.org", 80, "/test.cgi", "a=b&c=d"]
# URL を抜き出す。
p URI.extract( "abc http://example.net/ xyz" )
#=> ["http://example.net/"] URIとやらに便利なメソッドがいっぱいあるんだろう。知らんけど。 >>949
そういうものなんですね
型を適切なものにしないといけないと
uriオブジェクトを作るという表現で少しわかった気がします レス数が950を超えています。1000を超えると書き込みができなくなります。