ふらっと C#,C♯,C#(初心者用) Part152

■ このスレッドは過去ログ倉庫に格納されています
2021/08/25(水) 19:44:16.81ID:tgvUkE6r0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part151
https://mevius.5ch.net/test/read.cgi/tech/1621129559/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
https://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/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
https://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/08/25(水) 19:46:58.93ID:tgvUkE6r0
関連スレ
ふらっと C#,C♯,C#(議論用)
https://mevius.5ch.net/test/read.cgi/tech/1469538912/
2021/09/03(金) 00:07:36.45ID:AHipKBXs0
GoogleChromeにあるイメージファイルをデスクトップにドラッグすると大抵の場合イメージファイルを保存できますが
これをPictureBoxに直接ドラッグしてイメージを表示させたいです
※URLを取得してからのダウンロードだとjavascriptなどで読めないイメージが多いので他の方法を探しています

これはクリップボードを経由してるんでしょうか?もし経由しているとしたらクリップボードのフォーマットは何を使ってるんでしょうか。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.dataformats?view=net-5.0
それ以外ならどういう仕組みなんでしょうか、何か手掛かりになるものがあれば助かります。

もし無理なら特定フォルダ作り定期的に監視して増えたファイルをロードしようと思いますが
できればコントロールにドラッグしたいです、よろしくおねがいします。
2021/09/03(金) 00:31:32.04ID:AHipKBXs0
>>3
返答なさそうなので相談室に移動しました
スレ汚しになってすみませんでした
2021/09/03(金) 00:59:39.49ID:/hJaxIac0
>>4
最近の5chはだいぶ過疎ってきてるし0時過ぎたらそうそうレス付かないぞ
2021/09/03(金) 02:24:35.26ID:csEVwGb30
画像を握ってるChrome自身が好き勝手できることに疑問はないが
ブラウザから他のアプリのコントロールにってなんかできる気がしないぜ
2021/09/03(金) 08:18:16.22ID:Ew11Ba9+D
そもそもC#なのかっていう
2021/09/03(金) 11:39:55.75ID:hrRshf8H0
>>6
Windows純正エクスプローラーとかってChromeからドロップされた画像をわざわざ再度ダウンロードしてるってこと?
2021/09/03(金) 12:12:30.13ID:hrRshf8H0
いやでもドロップされたURLからダウンロードし直す、って形だと例えばリファラー見てくるPixivの画像とか保存できないよな
でも出来るって事は何かしら画像データを直接貰う方法あるんだと思うけど、自分も気になってWinFormsでテストしてみたらそれらしきドロップ情報は見当たらない
DragImageBitsが一見そうっぽかったけど、これは元データではなくドラックドロップするときのサムネ画像だった
2021/09/03(金) 12:50:06.92ID:csEVwGb30
>>9
バカなん?
Chrome自身が表示するための画像持ってるんだから単にファイル保存してるだけだろ
そこに疑問があるの?
2021/09/03(金) 12:52:52.33ID:csEVwGb30
サムネイルがちっちゃかったらうんこみたいな画像表示されんじゃないの?
2021/09/03(金) 13:13:32.82ID:hrRshf8H0
>>10
???
Chrome → ExplorerへのドロップのみChrome側の特殊配慮でファイル保存してくれるって主張?
そういう事を言いたいんであればTablacs等の3rdパーティー製アプリでも同様の挙動してくれるから送り先ではなくドロップ先が何かしらの操作をしてるものだと思うんだが?
2021/09/03(金) 13:16:27.64ID:PQRWg2pe0
>>10
なんでそんな煽り口調なのか分からんけど
D&Dって実際に処理するのはドロップされた側なのよ
だからファイルとして保存するのはExplorerの仕事
Explorerからデータくれって言われてからデータを渡す遅延処理の仕組みはある
2021/09/03(金) 13:23:39.02ID:hrRshf8H0
>>13
Chrome以外のブラウザでも同じ挙動なのと、上で上げたようなExplorer以外のアプリでもDDからの直接保存を実装可能な点も考慮したら受け取る側が処理してるとみるのが普通だよな
ただWinFormsのドロップイベントからはそれらしき情報は見当たらないが
15デフォルトの名無しさん (ラクッペペ MM8f-em86)
垢版 |
2021/09/03(金) 13:24:19.97ID:uY/kSVt6M
>>12
お察しの通りChromeがローカルファイル保存してそのパスを伝える
2021/09/03(金) 13:28:26.22ID:Bx5RA1Jba
>>13
まあ公平に見て>>9は煽られてもしょうがないと思うw
D&DでURIをもらって〜、なんてありえないでしょう(笑)

受け渡しているのはChromeのキャッシュフォルダーの中の画像ファイルの
パスに決まってるよね普通に考えて。
しかし、Chromeがビットマップ自体のD&Dを提供してないのは
セキュリティー上の理由なのか単なる手抜きなのか、
何なんだろうね。

今のは知らんけどちょっと前のFireFoxとかだと普通に出来たけどな
2021/09/03(金) 13:30:30.90ID:hrRshf8H0
>>15
当然それも想定したけどWinFormsのドロップイベントからはローカルファイルパスらしき情報は見当たらなかった
FILEDESCRIPTORW構造体からcFileName読み取ったりとかまでしてみたけど
2021/09/03(金) 13:31:37.71ID:hrRshf8H0
>>16
だからURI貰って〜があり得ないっていうのは9で言ってるだろ
それだったらリファラー見て弾いてくるような画像は保存不可能なはずだからな
そしてキャッシュ渡しに関しては>>17
2021/09/03(金) 13:32:24.15ID:Ew11Ba9+D
ここまでC#の話題無し
2021/09/03(金) 13:33:32.91ID:hrRshf8H0
>>19
俺はずっとWinFormsのドロップイベントの話してるけどな
2021/09/03(金) 13:39:28.75ID:Bx5RA1Jba
>>18
そうですか。

まあそれはともかく、>>9が言うように、Chromeからエクスプローラに
画像をD&Dした時に何が行われているかについては
どこにも疑問の余地はないと思うけどね。
2021/09/03(金) 13:41:11.51ID:Bx5RA1Jba
>>21
失礼

× >>9が言うように
>>10が言うように
2021/09/03(金) 13:45:43.94ID:hrRshf8H0
>>22
12の俺のレスや>>13は間違ってるって主張?
2021/09/03(金) 13:47:28.12ID:hrRshf8H0
まぁキャッシュ渡しならキャッシュ渡しで良いからどうやってローカルパス取得出来るのか具体的に教えてもらいたいな
2021/09/03(金) 13:51:37.56ID:pInph4TO0
HTML から、OS のネイティブ内には、直接アクセスできない

つまりブラウザは、OSのAPI を使って、
ファイル保存ダイアログを呼ぶ事しかできない

ファイル保存ダイアログは、ユーザーが直接操作する事しかできない。
ブラウザが操作する事はできない

もし、HTML から自動的に操作できれば、ローカルPC 内をいじられてしまうから、
ユーザーの直接操作しか認めていない
26デフォルトの名無しさん (ラクッペペ MM8f-em86)
垢版 |
2021/09/03(金) 13:54:23.64ID:uY/kSVt6M
ググってすぐ出てくるこれじゃだめなん?
https://atmarkit.itmedia.co.jp/fdotnet/csharptips/003dragdrop/003dragdrop.html
2021/09/03(金) 13:58:47.79ID:hrRshf8H0
>>26
エクスプローラーからのドロップが直データではなくstring[]のファイルパス配列って事は当然知ってるからそれに習って模索してみた訳だが結果は>>17
まぁ見逃してるかもしれんから、キャッシュパス渡してる説唱えてるやつは是非とも具体的な取得方法を書いてもらいたいが
2021/09/03(金) 14:04:16.74ID:hrRshf8H0
>>25
ドラッグ操作はHTMLやjsによるものではなくブラウザの機能だからその説明はちょっと違うけどな
んでChromeって恐ろしい頻度でCreateFileやReadFile、WriteFile呼びまくってるからユーザーの許可なくファイル操作なんて日常茶飯事にやってることだし
2021/09/03(金) 14:05:19.33ID:Bx5RA1Jba
>>23
間違っているかどうかは知らない。
何を言ってるのかよく分からないから。

Chromeからエクスプローラに画像ファイルをD&Dした時にエクスプローラ側がもらう情報は
Chromeのキャッシュの画像ファイルのパスなのは疑問の余地がない。

エクスプローラはドロップ先のフォルダにその画像ファイルをコピーしてるだけ。

人の話聞かない人みたいだから繰り返すけど、重要なのは上記に「疑問の余地なんかない」ってこと。
だから疑問の余地なんかないと指摘してる>>10は正しいと言ってる。
2021/09/03(金) 14:07:19.94ID:hrRshf8H0
>>29
だーかーら、キャッシュパス説を唱えるなら具体的なパス取得方法書いてくれよ
ググってもんな情報出てこないからきっとスーパーハッカーのお前しか分からないっぽいのでぜひとも教えてくれ
2021/09/03(金) 14:09:42.64ID:XfY3huhQ0
MemoryStream読むっぽいよ
https://stackoverflow.com/questions/49695870/how-can-i-retrieve-the-drag-drop-data-from-chrome-like-windows-explorer-does
2021/09/03(金) 14:26:02.52ID:hrRshf8H0
>>31
GetFileContentNamesと同じようなことは既にやってて、FileGroupDescriptorWは単なるファイル名しか取得できずキャッシュパスは取得できなかったが
GetFileContentは試してみる価値ありそうだな
この方法だとしたらキャッシュからの取得ではなく画像データすっぱ抜くってことになりそうだが
2021/09/03(金) 14:32:35.52ID:OHAz9Fu/0
>>30
パスじゃなくてIDataObject
クリップボードで使ってるのと同じ
source側でIDataObjectを生成してDragEventArgsに入れてdestination側で受け取れるようにしてる

>>3
ブラウザによって対応フォーマットが違うので
IDataObjectのGetFormats()でアプリ別に対応フォーマットを確認して望ましいフォーマットの順に処理する
2021/09/03(金) 14:36:22.10ID:hrRshf8H0
>>33
やっぱりローカルファイル渡しではなくバイナリ渡しっぽいな
>>31を.NET5で試すとGetFileContentFromHGlobal内でリフレクション使ってローカルフィールドにアクセスするところで例外出るからhsource.dot.netでも見て調整しなきゃダメそうだが
2021/09/03(金) 14:38:46.60ID:uM+QBK1w0
>>20
WinFormsって.NET FrameworkのAPIだからC#の話題じゃないじゃん
2021/09/03(金) 14:42:28.10ID:hrRshf8H0
>>35
「C#固有の話題じゃないじゃん」なら100歩譲って分かるけどC#の話題ではあるだろ
2021/09/03(金) 14:51:03.62ID:nIoBxviM0
C#って何かしらのフレームワークと組み合わせで使われるのが普通だしな。
システムコールだけでWindowsのウィンドウ開くアプリ作れってか?
2021/09/03(金) 15:20:03.92ID:hrRshf8H0
完璧に出来たわ
>>31のAnswer内のコードを丸々コピペして、
private static MemoryStream GetFileContentFromHGlobalメソッド内の"GetDataFromHGLOBLAL"を"GetDataFromHGLOBAL"に修正すればちゃんとリフレクションでメソッド取得出来て画像データのMemoryStreamゲットできる
下らないタイプミスあって笑ったが素晴らしいアンサー
2021/09/03(金) 15:28:11.28ID:uM+QBK1w0
>>37
聞く場所が違うぞって誘導するだけでいいでしょ
2021/09/03(金) 15:34:48.16ID:hrRshf8H0
どうでもいいけどリフレクションで取得した動的メソッドもC#9の関数ポインタから問題なく呼べるんだな
>>38で言うと
var func = (delegate*<object, string, IntPtr, object>)getDataFromHGLOBLALMethod.MethodHandle.GetFunctionPointer();
として第一引数のobjectにインスタンス渡したら普通に画像ゲットできた
2021/09/03(金) 16:08:18.45ID:pInph4TO0
なるほど、キャッシュパス説か。
確かに、ブラウザは画像があると、それをキャッシュファイルに保存する

だから、2回目以降は、そこから再読み込みするのだろう。
それをブラウザ内のメモリに読み込んで、それをOS のAPI に渡すのだろう
2021/09/03(金) 16:11:37.35ID:hrRshf8H0
WndProcオーバーライドしてWMドロップ等からバッファ取得してUnmanagedMemoryStreamからImageに変換みたいなスマートな方法もありそうだな
そもそも自分発のお題ではないけどDDでブラウザから画像直接貰えるのは便利だからもっとスマートな実装模索してみる
2021/09/03(金) 16:13:13.44ID:hrRshf8H0
>>41
キャッシュ渡し説は完全論破されてるけどな
ブラウザが画像をどう読み込むかにおいてはキャッシュが利用されるのは当然だがそれはこの話とは関係ない
2021/09/04(土) 00:40:03.49ID:7+pvijvQ0
Outlook Drag and Drop
2021/09/04(土) 02:05:19.65ID:SIvDzyYf0
クリップボードはふしぎがいっぱい!
2021/09/04(土) 02:05:31.27ID:3vx2GXJfa
>>30
確かにキャッシュされたファイルのパスなんか提供されてないねw
今確認した。

偉そうな口をきいて失礼しました。
2021/09/04(土) 07:38:39.73ID:xKc0OJDY0
キャッシュかそうじゃないかが重要だったの?
2021/09/04(土) 09:05:57.74ID:vIpBQxqx0
>>47
別に画像取得さえできれば受け取りアプリ側からしたら何でもいいから重要ではないけど>>10みたいにドヤ顔で虚報広めてる奴いたからな
ただ不思議なのはなぜ標準のやり方ではFileContentsはnull返してくるんだろうか
IDataObjectが進化に追いつけてないってことなのか
2021/09/04(土) 11:14:26.78ID:xKc0OJDY0
>>48
>>10を書いたのは俺だけどキャッシュなんて一言も言ってないじゃん
2021/09/04(土) 11:21:14.12ID:xKc0OJDY0
なんか思い込みで無駄な苦労してない?
2021/09/04(土) 11:50:26.72ID:+o/Xq3Mh0
>>47
キャッシュかどうかが問題ではないが、ファイルかどうかは大事なところ

>>49
まあたしかに>>10ではファイルとしか言ってないな
それだと普通に考えればキャッシュか一時ファイルかになるだろうけど

キャッシュに決まってるだろって言いだしたのは>>16
2021/09/04(土) 12:08:37.25ID:vIpBQxqx0
>>49
別に俺はお前がキャッシュ渡しをしてると主張したなんて一言も言ってない
お前が虚報を言ってると言ったまで
2021/09/04(土) 12:08:51.84ID:xKc0OJDY0
>>51
じゃあ、君は間違っていたんだね?
2021/09/04(土) 12:11:22.19ID:xKc0OJDY0
>>52
キャッシュ重要なの?
ってレスに対して>>10を出して来たのは他ならぬ君のハズだけど
脳みそバグってない?
2021/09/04(土) 12:13:26.51ID:vIpBQxqx0
>>54
脳みそバグってるのはお前な
とにかく俺はお前が虚報を言ったとしか言ってないのは明確
んで実際にお前は間違っていた
Chromeがファイル保存をしているのではなくファイル保存をしているのはドロップ先のプロセスって結論出た訳だし
2021/09/04(土) 12:14:11.18ID:xKc0OJDY0
>>55
じゃあ、キャッシュと関係ないレスなんでしたの?w
バグってるだろw
2021/09/04(土) 12:17:58.67ID:vIpBQxqx0
>>56
どういうレスしようが5chなんてそれぞれの勝手だろ?
まぁそういう意味じゃお前が虚報を撒こうが勝手だけどそれを非難するのも俺の勝手だからな

主題で反論できないと分かるや論点ずらして小さい箇所で一点突破を目指すってまるでF爺にコテンパンにやられた西村博之みたいなカスだなお前
2021/09/04(土) 12:21:25.54ID:xKc0OJDY0
>>57
そうか、まあ、頑張れw
2021/09/04(土) 12:48:53.41ID:f4vSDVRW0
lets action begin.
2021/09/04(土) 18:13:14.95ID:ZyOjgA390
文字化けってほんとつらいっす
ありとあらゆるところに文字化けが潜んでて作業の邪魔する

ぐぐりまくって、バイト列に変換してから目的の文字コードに直す方法を習得したんだけど
これはもしかして万能な方法なんじゃないかと期待してるんだけど
まぁそのうち試してみよ・・・
2021/09/04(土) 20:14:30.44ID:4fE9BStG0
>>60
予め文字コードが分かってるなら何も難しい話は無いはずだけど、
色んなテキストファイル読み込んだり色んなHTML巡ったりしてて文字コードが不規則って事?
2021/09/04(土) 20:19:25.15ID:4fE9BStG0
>>57
半年くらい前にひろゆきがオブジェクト指向の説明をしようとして非OOPなただのMath系関数の説明し始めてて悲しかった
2ch開設者って言うからプログラミングの腕もそれなりだと思ったら初歩的な事も理解してないレベルだった
2021/09/04(土) 20:22:11.87ID:HPILmW6y0
あめぞうBBSに手を加えただけだし、
転送量危機の時だって本人は何もしてない
2021/09/04(土) 20:25:11.89ID:osn6/XE+0
>>62
ひろゆきはパクリこそ至高ってゆってるぞ
ソースなんてパクッってナンボ、ほんで文系
2021/09/05(日) 03:52:19.25ID:2EeVeniH0
>>61
今やってるのはメール受信ですわ
テストのために同じメーラーから同じ文章をgmailアカウントに送っているんだけど
なぜかアプリで受信したときの件名や本文とかの文字コードがUS-ASCIIになったりISO-2022-JPになったり。

ISO-2022-JPで送られてきたものをISO-2022-JPで変換すると、これまた文字化けすることに気づいて、対象の文字コードをまず取得して、それから変換しなきゃいけないと気づいてようやく今解決ですわ (解決したと思い込んでる段階
2021/09/05(日) 05:57:23.17ID:oHh0g2FX0
RFC読めよ
2021/09/05(日) 10:58:26.93ID:n9DrSLdy0
趣味ならRFC熟読するまでも無いだろ
そもそも文字化けでもないし
ちょっと検索すれば出てくるじゃん
https://atmarkit.itmedia.co.jp/ait/articles/0602/18/news009.html
2021/09/05(日) 11:56:27.38ID:iGX/kvk70
>>67
メール関連全く分からんけどヘッダのContent-Typeにcharset書かれてるならHttpClientみたいに自動エンコしてくれないん?
2021/09/05(日) 14:22:36.23ID:ICYnYWWd0
つかまあ7bitとかいいながらSHIFT_JISで送ってくるメーラーとかあるけどな
2021/09/05(日) 14:56:29.78ID:oHh0g2FX0
そういう解説には不十分なことしか書いてないからな
2021/09/05(日) 15:08:07.86ID:2EeVeniH0
おぢちゃんたち、ありがとうございます

これ>>67、わかりやすそうなのでいろいろ考えてみます
今日は疲れたのでまた明日にでも。
ずっと没頭してやってたんで、プログラム自体はいい感じに動くようになってきました

今回の文字コードの問題は再現性が低くてやっかいです
FromやToでこういう↓日本語交じりのアドレスを使ってテストしてると
ごちゃん株式会社<***@***.com>
ほんと、たま〜に「ごちゃん株式会社」の部分の文字がおかしくなる
連続してテストしても再現しないけど、時間置くとたまーに・・・
これきた、と思ってもう一度やると再現しない

もちっと勉強してきます
2021/09/05(日) 15:24:44.87ID:7oSpDR4l0
MIME-B や MIME-Q ってエンコードは知ってる?その仕様に合わないものが届いたりするってこと?
2021/09/05(日) 16:13:31.39ID:n9DrSLdy0
全く同じもの送りつけて再現しないならRFC以前の問題な気もするけど
2021/09/05(日) 16:31:42.66ID:Lv/WyGL80
>>71
馬鹿、ここは若い衆多いぞ
ちょっと目を離すとレスバトルだ
2021/09/05(日) 16:42:03.85ID:gyzxPlwG0
他の人が投げたメールを自分で作ったメールクライアントで受けると化けるものが
あるってい場合には、すべてに自動で対応するのは不可能に近いかな
みんながみんなちゃんとした完全なメールクライアントである保証(設定も含めて)は
ないから

自分で作ったメールクライアント同士で化けることがあるなら、基本は実装を
疑ってみる必要があるけど途中のメールサーバに問題があるとかないかな

本文は何かのエンコードでパック化しちゃえば問題起こらないだろうけど、
あて先とかSubjectはサーバ側でいじることも出来るので何か変えられて
いるとか・・・最近はそういうことないのかな
2021/09/05(日) 16:58:54.43ID:69Mttc9X0
Xamarinで他のタプページの値を取得しようとしてますが上手くいきません。

kadou.xamal.cs)

public sbyte Eigyou_kaisi => sbyte.Parse(eigyou_kaisi.Text);
public sbyte Eigyou_owari => sbyte.Parse(eigyou_owari.Text);

kihon.xaml.cs)

set_eikaisi = kadou.Eigyou_kaisi;
//営業時間の開始
set_eisyuryou = kadou.Eigyou_owari;
//営業時間の終了(時)
2021/09/05(日) 18:29:42.24ID:VF4l5IWe0
>>76
経過報告ありがとう。
引き続き調査よろしく。
2021/09/05(日) 19:09:17.61ID:69Mttc9X0
>>77
kadou k1 = new kadou();
set_eikaisi = k1.Eigyou_kaisi;
//営業時間の開始

のようにインスタンスを作成したらエラーが直りました。
79デフォルトの名無しさん (スッップ Sd7f-Z3ju)
垢版 |
2021/09/06(月) 12:29:48.61ID:742OrnqFd
vs2017から2019移行してInstallerProjectをいれたところ
setupプロジェクトのビルドで失敗します
2017のときはエラー一覧に成功数とかでてたのですが
2019では何も出力されないのですが
ここにエラー出す方法ありますか?
ツール、オプションのビルド設定で出力の詳細を
かえてみたものの変わりありません
2021/09/06(月) 16:37:31.47ID:PKsgHZNm0
重いループ処理で「くるくる」を表示させたいのですが、上手くいきません。
ボタンを押したら、10秒以上固まったような状態になります。

try
{
cvLayer.IsVisible = true;
frLayer.IsVisible = true;
MyActivityIndicator.IsRunning = true;

//await Task.Run(() =>
//{
//長い処理を記述
do
{
2021/09/06(月) 16:48:37.32ID:qiPyLsW90
質問文がないようだが
あとそのコメントアウトは何
2021/09/06(月) 17:07:07.69ID:PKsgHZNm0
Xamarin.Formsで重い処理の待ち時間に「くるくる」を表示させたいだけです。

コメントアウトは特に関係ありません。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況