「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part131
http://mevius.5ch.net/test/read.cgi/tech/1504861931/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://mevius.5ch.net/test/read.cgi/tech/1492843013/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
ふらっと C#,C♯,C#(初心者用) Part132
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ (ワッチョイ 1e9a-XSap)
2017/10/09(月) 19:00:56.93ID:Y4203ffV0726デフォルトの名無しさん (アウアウオー Saa3-U9gu)
2017/10/31(火) 21:03:25.88ID:tTECqdhTa こうやってプログラム=タダって概念が世の中に蔓延したよね
広告費で稼ぐ世の中になったけど
広告費で稼ぐ世の中になったけど
727デフォルトの名無しさん (ワッチョイ e9b6-AYwW)
2017/10/31(火) 22:07:06.75ID:UyVEd0rJ0 飢餓ベネズエラ「1600%インフレ率」で仮想通貨が生活の柱|ビットコインマイニング(採掘)で生き残る
http://virtualmoney.jp/I0001275
「ビットコイン」新世界のベネズエラ:自由を求める、採掘者たちの反逆
https://www.fuze.dj/2017/01/venezuela_mining.html
ベネズエラ、ビットコインマイナーが10万人規模に
http://btcnews.jp/5c5uq4ei13034/
ジンバブエではビットコインが80万円?自国通貨がインフレしている国の仮想通貨需要について
http://coinpost.jp/?p=5803
ビットコインとは?投資で儲かる仕組みと危険性を分かりやすく解説
https://enjoyrock.jp/bitcointoha-4370
http://virtualmoney.jp/I0001275
「ビットコイン」新世界のベネズエラ:自由を求める、採掘者たちの反逆
https://www.fuze.dj/2017/01/venezuela_mining.html
ベネズエラ、ビットコインマイナーが10万人規模に
http://btcnews.jp/5c5uq4ei13034/
ジンバブエではビットコインが80万円?自国通貨がインフレしている国の仮想通貨需要について
http://coinpost.jp/?p=5803
ビットコインとは?投資で儲かる仕組みと危険性を分かりやすく解説
https://enjoyrock.jp/bitcointoha-4370
728デフォルトの名無しさん (ワンミングク MM53-1Xwn)
2017/10/31(火) 22:10:24.98ID:ryJZgMRZM ビットコインとはなんぞや?
729デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
2017/10/31(火) 22:46:58.06ID:4MZcs+cX0 FindWindowで見つけたウインドウの画面をキャプチャすることはできますか?
ウインドウが隠れていてもキャプチャできるようにしたいのですが
PrintWindowと組み合わせようとしてもよくわからないです
ウインドウが隠れていてもキャプチャできるようにしたいのですが
PrintWindowと組み合わせようとしてもよくわからないです
730デフォルトの名無しさん (ワッチョイ 138a-whYl)
2017/10/31(火) 22:57:04.76ID:QkT+8axj0 隠れている部分はそもそも描いてないでしょ
731デフォルトの名無しさん (ワッチョイ e9d3-nu9H)
2017/10/31(火) 23:28:17.44ID:P79QNeNU0 そんなXP時代じゃないんだから…
隠しAPIのDwmGetDxSharedSurfaceが定番やね
今でも使えるのか知らんけど
隠しAPIのDwmGetDxSharedSurfaceが定番やね
今でも使えるのか知らんけど
732デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
2017/10/31(火) 23:31:19.87ID:4MZcs+cX0 DWMも使ってみたいのですが日本語解説のサイトが全くなくて…
英語出来ないとやっぱりだめですね
英語出来ないとやっぱりだめですね
733デフォルトの名無しさん (ワッチョイ a906-Eec1)
2017/10/31(火) 23:59:12.73ID:RzsX96BS0 >>732
最小化されてなければ重なってようが画面からはみ出ていようが適当なBitmap作って
using (var g = Graphics.FromImage(bmp)) PrintWindow(hWnd, g.GetHdc(), 1);
とかでも済みそうだが。環境依存だろうから.NETには碌に無いしWin32APIの領分だなぁ
最小化されてなければ重なってようが画面からはみ出ていようが適当なBitmap作って
using (var g = Graphics.FromImage(bmp)) PrintWindow(hWnd, g.GetHdc(), 1);
とかでも済みそうだが。環境依存だろうから.NETには碌に無いしWin32APIの領分だなぁ
734あ (ワッチョイ 9b99-PHjP)
2017/10/31(火) 23:59:53.09ID:KKSGwBSw0 >>722
確かに、規格ではないな。そういう意味では、それこそ自由化されたあとはNTTのローカルルールに縛られず、すべてが番号として取り扱われるべきなのかもしれん。
自動応答マシンの特定のメニューまで進むのを「番号」と言っていいと思うぞ、俺は。
確かに、規格ではないな。そういう意味では、それこそ自由化されたあとはNTTのローカルルールに縛られず、すべてが番号として取り扱われるべきなのかもしれん。
自動応答マシンの特定のメニューまで進むのを「番号」と言っていいと思うぞ、俺は。
735デフォルトの名無しさん (アウアウエー Sa23-f3sA)
2017/11/01(水) 00:21:59.34ID:L5KemQuba Win32関数のリファレンス日本語だけになっちゃったんだw
ほんといらんことするよなMSもGoogleもw
ほんといらんことするよなMSもGoogleもw
736デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
2017/11/01(水) 04:36:44.91ID:dB2PwCEI0 https://ideone.com/jcN0mM
別のプログラムのキャプチャを取りたいのです
別のプログラムのProcessオブジェクトを取得してPrintWindow関数につっこみたいのですが
どうしたらよいでしょうか?
別のプログラムのキャプチャを取りたいのです
別のプログラムのProcessオブジェクトを取得してPrintWindow関数につっこみたいのですが
どうしたらよいでしょうか?
737デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
2017/11/01(水) 04:39:54.64ID:dB2PwCEI0 GetProcessesByNameでオブジェクトを取得した後
↑に貼ったコードのCaptureControlにthisの代わりにどうやって渡せば良いでしょうか?
↑に貼ったコードのCaptureControlにthisの代わりにどうやって渡せば良いでしょうか?
738デフォルトの名無しさん (ワッチョイ a906-Eec1)
2017/11/01(水) 05:32:38.62ID:vhfog6b10 >>736-737
FindWindowと云うからP/Invokeは理解しているのかと思いきや、躓いてるのはソコかいってかコピペかい
ProcessオブジェクトにはメインウィンドウハンドルだけならMainWindowHandleプロパティが既に用意されてる
枠の有無でGetWindowRectやGetClientRect等のWin32APIでサイズ取得、枠無しならnFlagsにPW_CLIENTONLY(1)を指定
LPRECTをout Rectangleとしても互換性はあるが、メンバの意味は異なるので注意。あとOpenGL画面とかは怪しかった気もする
FindWindowと云うからP/Invokeは理解しているのかと思いきや、躓いてるのはソコかいってかコピペかい
ProcessオブジェクトにはメインウィンドウハンドルだけならMainWindowHandleプロパティが既に用意されてる
枠の有無でGetWindowRectやGetClientRect等のWin32APIでサイズ取得、枠無しならnFlagsにPW_CLIENTONLY(1)を指定
LPRECTをout Rectangleとしても互換性はあるが、メンバの意味は異なるので注意。あとOpenGL画面とかは怪しかった気もする
739デフォルトの名無しさん (ワッチョイ 33eb-nu9H)
2017/11/01(水) 12:54:43.00ID:wiqlBWqs0 初歩的なことで申し訳ないですが、
C#をx86でコンパイルしたときlong型は何バイトですか?
32ビットですよね?
long型な引数を持つC++で作られたDLLを呼ぼうとしてるんですが
C#側もlong型にするとバイオレンスエラーが出るんです
C#をx86でコンパイルしたときlong型は何バイトですか?
32ビットですよね?
long型な引数を持つC++で作られたDLLを呼ぼうとしてるんですが
C#側もlong型にするとバイオレンスエラーが出るんです
740デフォルトの名無しさん (ブーイモ MMeb-2G8F)
2017/11/01(水) 13:00:28.87ID:xMsiUXHhM >>739
64じゃないの
64じゃないの
741デフォルトの名無しさん (ワッチョイ 6b8a-82Um)
2017/11/01(水) 13:01:02.25ID:DoTChEv+0 C# の long型 の .NET型は System.Int64
64ビットだよ
64ビットだよ
742デフォルトの名無しさん (ワッチョイ 71e6-QTUj)
2017/11/01(水) 13:30:22.67ID:JNwvccyI0 どうでもいいけどバイオレンスじゃなくてバイオレーションな
743デフォルトの名無しさん (ワッチョイ 138a-whYl)
2017/11/01(水) 13:34:10.98ID:G3xjFDeG0 デジタル バイオレンス 略して DVか
744デフォルトの名無しさん (ワッチョイ 33eb-nu9H)
2017/11/01(水) 13:43:47.20ID:wiqlBWqs0 ありがとうございます。
x86指定でもC#は64ビットですか。
つまり、x86なC++のlong = C#のint ってことですね
ありがとうございました。
x86指定でもC#は64ビットですか。
つまり、x86なC++のlong = C#のint ってことですね
ありがとうございました。
745デフォルトの名無しさん (ワッチョイ a906-Eec1)
2017/11/01(水) 14:07:25.95ID:vhfog6b10 >>744
x86なC++というかILP32ね、LLP64でもlongは32bitだから、Windowsに限り常に32bit
C#は常にintが32bit、longが64bit、IntPtrがポインターサイズでCIL名native int
x86なC++というかILP32ね、LLP64でもlongは32bitだから、Windowsに限り常に32bit
C#は常にintが32bit、longが64bit、IntPtrがポインターサイズでCIL名native int
746デフォルトの名無しさん (アウアウエー Sa23-f3sA)
2017/11/01(水) 14:12:57.28ID:a3/dOAjga バイオレンスww
747デフォルトの名無しさん (ブーイモ MMeb-2G8F)
2017/11/01(水) 14:36:04.02ID:wgMqyCilM >>745
IntPtrは64bitと32bitで自動的にサイズが変わる罠があるよね
IntPtrは64bitと32bitで自動的にサイズが変わる罠があるよね
748デフォルトの名無しさん (ワッチョイ 138a-fGZN)
2017/11/01(水) 14:53:25.19ID:58WxqpRI0 罠じゃなくてそれをマネージド上で扱うことを目的とした型やねんで
749デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
2017/11/01(水) 15:34:33.63ID:DJIAeWHo0 >>725
当分出来ねえから期待しないでおけ
当分出来ねえから期待しないでおけ
750デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
2017/11/01(水) 15:53:44.71ID:dB2PwCEI0 >>738
すいません高度すぎてちょっとよくわからないです
FindWindowでウィンドウハンドルを取得して画面をキャプチャするプログラムは作れたのですが
ウインドウハンドルしか取得してないのでウインドウの大きさが設定できなくて困っています
(現在ピクセル数で設定)
GetWindowRectやGetClientRectを使おうとしてもRECT構造体の定義がよくわからなくて出来ません。
GetProcessesByNameで取得したProcessオブジェクトからハンドルとオブジェクトの大きさを取り出すにはどうしたら良いでしょうか?
すいません高度すぎてちょっとよくわからないです
FindWindowでウィンドウハンドルを取得して画面をキャプチャするプログラムは作れたのですが
ウインドウハンドルしか取得してないのでウインドウの大きさが設定できなくて困っています
(現在ピクセル数で設定)
GetWindowRectやGetClientRectを使おうとしてもRECT構造体の定義がよくわからなくて出来ません。
GetProcessesByNameで取得したProcessオブジェクトからハンドルとオブジェクトの大きさを取り出すにはどうしたら良いでしょうか?
751デフォルトの名無しさん (ワッチョイ a906-Akqv)
2017/11/01(水) 16:36:24.43ID:4v6bi03L0752デフォルトの名無しさん (ブーイモ MMeb-2G8F)
2017/11/01(水) 16:43:34.62ID:wgMqyCilM753デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
2017/11/01(水) 17:06:28.99ID:dB2PwCEI0 >>751
よくわからないですが後で読んでおきます
>>752
そのページは見たことあるんですが意味がよくわからないです…
すごく低レベルな質問だと思うのですが
Process[] ps = Process.GetProcessesByName("notepad");
foreach (System.Diagnostics.Process p in ps)
{
textBox1.Text = p.MainWindowTitle;
}
だと問題ないのに
Process[] ps = Process.GetProcessesByName("notepad");
textBox1.Text = ps[0].MainWindowTitle;
では動作しないのは何故でしょうか?
よくわからないですが後で読んでおきます
>>752
そのページは見たことあるんですが意味がよくわからないです…
すごく低レベルな質問だと思うのですが
Process[] ps = Process.GetProcessesByName("notepad");
foreach (System.Diagnostics.Process p in ps)
{
textBox1.Text = p.MainWindowTitle;
}
だと問題ないのに
Process[] ps = Process.GetProcessesByName("notepad");
textBox1.Text = ps[0].MainWindowTitle;
では動作しないのは何故でしょうか?
754デフォルトの名無しさん (アウアウエー Sa23-f3sA)
2017/11/01(水) 17:12:20.00ID:a3/dOAjga >>753
後者だけ動かない理由はないから何か勘違いしてるんでしょう
後者だけ動かない理由はないから何か勘違いしてるんでしょう
755デフォルトの名無しさん (ブーイモ MMeb-2G8F)
2017/11/01(水) 17:29:00.13ID:wgMqyCilM >>753
動作しないの内容が曖昧です。
動作しないの内容が曖昧です。
756デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
2017/11/01(水) 17:35:15.46ID:dB2PwCEI0 すいません動きました!
メモ帳開いていなかっただけでした…
メモ帳開いていなかっただけでした…
757デフォルトの名無しさん (バットンキン MM85-zrjR)
2017/11/01(水) 17:37:14.82ID:qqAk/1TWM 勉強用トイプログラムで抽象クラスを継承したクラスにインタフェースを継承したのですが、実務の世界ではよくやる事でしょうか?
抽象クラス側にインタフェースのメソッドを書くとか美しく無いので邪道な事をしてるかもと心配になりまして
抽象クラス側にインタフェースのメソッドを書くとか美しく無いので邪道な事をしてるかもと心配になりまして
758デフォルトの名無しさん (ワッチョイ eb9a-20SA)
2017/11/01(水) 17:46:07.56ID:xAl8OFsq0 >>744
公式にアンマネージとマネージでのデータ形式のリファレンスがあるからそこ見ておいた方がいい
https://msdn.microsoft.com/ja-jp/library/ac7ay120(v=vs.110).aspx
C#でlongは紛らわしいから使わない方がいいと思う
>>753
構造体がわからないとWinAPI使えないよ
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/using-structs
公式にアンマネージとマネージでのデータ形式のリファレンスがあるからそこ見ておいた方がいい
https://msdn.microsoft.com/ja-jp/library/ac7ay120(v=vs.110).aspx
C#でlongは紛らわしいから使わない方がいいと思う
>>753
構造体がわからないとWinAPI使えないよ
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/using-structs
759デフォルトの名無しさん (ワッチョイ 1be7-DNJs)
2017/11/01(水) 17:55:43.82ID:DJIAeWHo0 ボールとか壁に当たって反転させるときに
int speed=1;
更新処理
position.x+=speed;
if(800<position.x)
{
speed*=-1;
}
こうゆう反転っておkなの?+=って無駄じゃねえかとか言われない?
int speed=1;
更新処理
position.x+=speed;
if(800<position.x)
{
speed*=-1;
}
こうゆう反転っておkなの?+=って無駄じゃねえかとか言われない?
760デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
2017/11/01(水) 19:13:00.27ID:dB2PwCEI0 https://ideone.com/gKjIFo
見よう見まねでRECT構造体を使おうとしているのですが
17行目の&rectWinという所で以下の2つのエラーが出てしまいます
何が間違っているのでしょうか?
ポインターおよび固定サイズ バッファーは、unsafe コンテキストでのみ使用することができます。
引数 2 はキーワード 'out' と共に渡す必要があります。
見よう見まねでRECT構造体を使おうとしているのですが
17行目の&rectWinという所で以下の2つのエラーが出てしまいます
何が間違っているのでしょうか?
ポインターおよび固定サイズ バッファーは、unsafe コンテキストでのみ使用することができます。
引数 2 はキーワード 'out' と共に渡す必要があります。
761デフォルトの名無しさん (ブーイモ MM33-Eec1)
2017/11/01(水) 19:18:35.70ID:JgbY2jhcM762デフォルトの名無しさん (スップ Sd73-Na5b)
2017/11/01(水) 19:18:49.98ID:C3RJkmbpd >>757
人間クラスと継承した社員クラスがあるとして
体重身長インターフェイスは人間クラスに、入社日退職日インターフェイスは社員クラスにってのが普通だと思うけど
抽象クラスだから付けないって考え方は美しくないんじゃないかな?
人間クラスと継承した社員クラスがあるとして
体重身長インターフェイスは人間クラスに、入社日退職日インターフェイスは社員クラスにってのが普通だと思うけど
抽象クラスだから付けないって考え方は美しくないんじゃないかな?
763デフォルトの名無しさん (ワッチョイ 13f7-cyx1)
2017/11/01(水) 19:22:01.17ID:dB2PwCEI0 >>761
できました!有難う御座います!!!!!!!
できました!有難う御座います!!!!!!!
764デフォルトの名無しさん (アウアウウー Saa5-fDrw)
2017/11/02(木) 04:46:41.42ID:leSyCza7a765デフォルトの名無しさん (バットンキン MM75-NpKs)
2017/11/02(木) 07:15:17.22ID:pmQPnNAeM766739 (ワッチョイ d2eb-Q/5A)
2017/11/02(木) 13:32:08.71ID:wZG1ntZl0 みなさんありがとうございました。
C++側で void test(long aa[2]);
みたいに定義されてるやつをC#から使うときも IntPtr でやりくりするしかないんですよね。
C++側で void test(long aa[2]);
みたいに定義されてるやつをC#から使うときも IntPtr でやりくりするしかないんですよね。
767デフォルトの名無しさん (ブーイモ MM62-Xio0)
2017/11/02(木) 14:07:36.43ID:RiVwOr7+M c#はインタープリタなので遅いって言われたw
768デフォルトの名無しさん (ガックシ 0626-zraI)
2017/11/02(木) 15:50:21.67ID:i1tOzlAd6 バイナリプログラムもCPUがインタープリットしてるしインタープリタだなw
769デフォルトの名無しさん (ブーイモ MMb6-pUQr)
2017/11/02(木) 16:06:47.45ID:/X9eIi7aM >>766
いやintを2つ並べただけの構造体を用意してrefかout使えばいい
いやintを2つ並べただけの構造体を用意してrefかout使えばいい
770デフォルトの名無しさん (ブーイモ MM6d-uPgn)
2017/11/02(木) 16:12:10.17ID:KloAouzuM771デフォルトの名無しさん (ワッチョイ d2eb-Q/5A)
2017/11/02(木) 16:17:55.02ID:wZG1ntZl0 >>769
pack意識したうえで配列という手もありますね
どっちにしろコード量は増えますね
C# 側で ref を付けるだけで
勝手にIntPtrやらマーシャル確保・代入・解放してくれたらいいのに・・・
char * → string みたいな超絶ラクチンな方法でさ
pack意識したうえで配列という手もありますね
どっちにしろコード量は増えますね
C# 側で ref を付けるだけで
勝手にIntPtrやらマーシャル確保・代入・解放してくれたらいいのに・・・
char * → string みたいな超絶ラクチンな方法でさ
772デフォルトの名無しさん (ワッチョイ d2eb-Q/5A)
2017/11/02(木) 16:20:47.53ID:wZG1ntZl0 ちょっと早合点で書き込んでしまいましたが
[StructLayout(LayoutKind.Sequential, Pack = 4)
struct struct_aa
{
public int aa1;
public int aa2;
}
struct_aa aa;
としたうえで
test(ref aa);
で出来ちゃうんですか!?
[StructLayout(LayoutKind.Sequential, Pack = 4)
struct struct_aa
{
public int aa1;
public int aa2;
}
struct_aa aa;
としたうえで
test(ref aa);
で出来ちゃうんですか!?
773デフォルトの名無しさん (ブーイモ MMb6-pUQr)
2017/11/02(木) 16:43:51.34ID:/X9eIi7aM >>772
それでいけるはず
それでいけるはず
774デフォルトの名無しさん (ブーイモ MM62-Xio0)
2017/11/02(木) 17:08:27.57ID:hwMc8ywnM >>770
昭和のおっさんなので仕方ない
昭和のおっさんなので仕方ない
775デフォルトの名無しさん (ワッチョイ 2e9a-lboT)
2017/11/02(木) 17:12:38.78ID:oE5JXb4z0776デフォルトの名無しさん (ワッチョイ d2eb-Q/5A)
2017/11/02(木) 17:42:00.04ID:wZG1ntZl0 ググって最初のほうに出てくるサイトで char * 以外は全てマーシャってるので
てっきり IntPtr を駆使すると思い込んでました。
配列じゃないポインタ渡しは ref/out で何の造作もなく出来ました。
(マーシャル関連のコードを大量に書いていたのが馬鹿らしくなるほど)
んで配列ですが
// C++(x86)
extern "C" __declspec(dllexport) void test(long a[2]);
// C#
[DllImport("usrbatch.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void test(out int[] a);
int[] a = new int[2];
test(out a);
で、バイオレーションエラー出ちゃいます。。。
てっきり IntPtr を駆使すると思い込んでました。
配列じゃないポインタ渡しは ref/out で何の造作もなく出来ました。
(マーシャル関連のコードを大量に書いていたのが馬鹿らしくなるほど)
んで配列ですが
// C++(x86)
extern "C" __declspec(dllexport) void test(long a[2]);
// C#
[DllImport("usrbatch.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void test(out int[] a);
int[] a = new int[2];
test(out a);
で、バイオレーションエラー出ちゃいます。。。
777デフォルトの名無しさん (ワッチョイ 2e9a-lboT)
2017/11/02(木) 17:52:53.60ID:oE5JXb4z0778デフォルトの名無しさん (ワッチョイ d2eb-Q/5A)
2017/11/02(木) 18:01:00.66ID:wZG1ntZl0 うわぁ、ありがとうございます。
先方で値が書き換わる場合には ref/out を付けないといけない
(付けなかったら配列だろうが値渡しになる)
だと先入観で思い込んでました。
配列だったらC++と同じくポインタ渡しになるんですね!
// C#
[DllImport("usrbatch.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void test(int[] a);
int[] a = new int[2];
test(a);
で、うまくいきました。
(C++側で設定された値が戻ってきた)
先方で値が書き換わる場合には ref/out を付けないといけない
(付けなかったら配列だろうが値渡しになる)
だと先入観で思い込んでました。
配列だったらC++と同じくポインタ渡しになるんですね!
// C#
[DllImport("usrbatch.dll", CallingConvention = CallingConvention.Cdecl)]
static extern void test(int[] a);
int[] a = new int[2];
test(a);
で、うまくいきました。
(C++側で設定された値が戻ってきた)
779デフォルトの名無しさん (アウアウエー Sa4a-pdK9)
2017/11/02(木) 18:34:34.93ID:OVuNv67Pa >>778みたいな場合、アンマネージド関数の宣言の仮引数にOutAttributeを付ける必要が
あるのかないのか、MSDN読んでもいまいちよく分からん
https://msdn.microsoft.com/ja-jp/library/75dwhxf7(v=vs.90).aspx
を読むとBittableな型の一次元配列の場合不要のようにも思えるが、
https://msdn.microsoft.com/ja-jp/library/hk9wyw21(v=vs.90).aspx
のサンプルでは属性がついてる
あるのかないのか、MSDN読んでもいまいちよく分からん
https://msdn.microsoft.com/ja-jp/library/75dwhxf7(v=vs.90).aspx
を読むとBittableな型の一次元配列の場合不要のようにも思えるが、
https://msdn.microsoft.com/ja-jp/library/hk9wyw21(v=vs.90).aspx
のサンプルでは属性がついてる
780デフォルトの名無しさん (ワッチョイ e227-MwDY)
2017/11/02(木) 22:14:18.55ID:FJPOLiu40 >>779
そのリンク先に書いてあるぞ
これらの型は、呼び出し元と呼び出し先が同じアパートメントに属する場合には、In/Out パラメータとしてマーシャリングされるように見えることがあります。
ただし、そのような型は実際には In パラメータとしてマーシャリングされるため、引数を In/Out パラメータとしてマーシャリングする必要がある場合には、InAttribute 属性と OutAttribute 属性を適用する必要があります。
Outがないと保証されない
そのリンク先に書いてあるぞ
これらの型は、呼び出し元と呼び出し先が同じアパートメントに属する場合には、In/Out パラメータとしてマーシャリングされるように見えることがあります。
ただし、そのような型は実際には In パラメータとしてマーシャリングされるため、引数を In/Out パラメータとしてマーシャリングする必要がある場合には、InAttribute 属性と OutAttribute 属性を適用する必要があります。
Outがないと保証されない
781デフォルトの名無しさん (ワッチョイ 4d06-7T4N)
2017/11/02(木) 22:48:20.45ID:uoctVHYW0 >>778
ref/outは書き換え云々というより変数の参照で初期化の必要があるかどうか、P/Invokeでは構造体くらいにしか使わぬ
配列は参照型なので参照の参照になるし、そのままでもオブジェクトヘッダ+要素数を含むのでネイティブ配列へはちょっとズラしている
>>779
上のページに>>780の通りずばり書いてないか?コピーと固定 # 書式指定された Blittable クラスのメモとかにも。そういう事ではなく?
既定のマーシャリング動作を理解し、MarshalAs属性とIn/Out属性を駆使すれば、Marshalメソッドの出番はあまりなくなる
Marshal.UnsafeAddrOfPinnedArrayElementとかもArrayWithOffsetというお誂え向きな構造体がある
手動でIntPtrを捏ね回すのが有効なケースもあるが。ちぃと古いけど↓の記事はよく纏められている
https://msdn.microsoft.com/ja-jp/library/ff647812.aspx#scalenetchapt07_topic4
ref/outは書き換え云々というより変数の参照で初期化の必要があるかどうか、P/Invokeでは構造体くらいにしか使わぬ
配列は参照型なので参照の参照になるし、そのままでもオブジェクトヘッダ+要素数を含むのでネイティブ配列へはちょっとズラしている
>>779
上のページに>>780の通りずばり書いてないか?コピーと固定 # 書式指定された Blittable クラスのメモとかにも。そういう事ではなく?
既定のマーシャリング動作を理解し、MarshalAs属性とIn/Out属性を駆使すれば、Marshalメソッドの出番はあまりなくなる
Marshal.UnsafeAddrOfPinnedArrayElementとかもArrayWithOffsetというお誂え向きな構造体がある
手動でIntPtrを捏ね回すのが有効なケースもあるが。ちぃと古いけど↓の記事はよく纏められている
https://msdn.microsoft.com/ja-jp/library/ff647812.aspx#scalenetchapt07_topic4
782デフォルトの名無しさん (ブーイモ MM62-pUQr)
2017/11/02(木) 22:54:42.83ID:vimPIuS6M GCがうざいならstackallocを使う手もあるよ
unsafeになるけど、マネージ配列のマーシャリング使ったとしても境界外へアクセスしたら普通にクラッシュするんだし
むしろ危険な操作は明らかに危険とわかったほうがマシ
unsafeになるけど、マネージ配列のマーシャリング使ったとしても境界外へアクセスしたら普通にクラッシュするんだし
むしろ危険な操作は明らかに危険とわかったほうがマシ
783デフォルトの名無しさん (アウアウエー Sa4a-pdK9)
2017/11/02(木) 23:07:34.82ID:OVuNv67Pa784デフォルトの名無しさん (ワッチョイ 4d06-7T4N)
2017/11/03(金) 01:31:28.84ID:zjyHgUY90 >>782
stackallocはスタックを理解していなければ危険すぎないか、少量で確保速度が最重要ならアレだけど
unsafeポインターを使うならfixedでも境界チェックは外れるし、そのあたりで…
>>783
アーその辺はCOMの話かな、COMマーシャリングが挟まれると固定では済まなくなるという
https://msdn.microsoft.com/ja-jp/library/eaw10et3.aspx#marshaling_and_com_apartments
具体例については…直接COM使った経験がC++でちょろっとしか無いのでわっかんないや(無能
stackallocはスタックを理解していなければ危険すぎないか、少量で確保速度が最重要ならアレだけど
unsafeポインターを使うならfixedでも境界チェックは外れるし、そのあたりで…
>>783
アーその辺はCOMの話かな、COMマーシャリングが挟まれると固定では済まなくなるという
https://msdn.microsoft.com/ja-jp/library/eaw10et3.aspx#marshaling_and_com_apartments
具体例については…直接COM使った経験がC++でちょろっとしか無いのでわっかんないや(無能
785デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
2017/11/03(金) 04:43:40.14ID:ZqwqQq4y0 Parallelの動きがわからん
10個のZIPを同時に解凍する処理するとして
Parallel.Forで実行したらどうなる?
ちなcore i7
エラー?
10個のZIPを同時に解凍する処理するとして
Parallel.Forで実行したらどうなる?
ちなcore i7
エラー?
786デフォルトの名無しさん (オッペケ Srf1-RCX9)
2017/11/03(金) 09:51:59.78ID:wXWM393Ar 1.5倍(適当)くらい速くなる
787デフォルトの名無しさん (ワッチョイ 49c9-lboT)
2017/11/03(金) 10:02:10.84ID:YKGzMcXY0788デフォルトの名無しさん (ワッチョイ 0219-lboT)
2017/11/03(金) 11:00:02.96ID:QTbHfBOQ0 >>787
オイ!
オイ!
789デフォルトの名無しさん (ワッチョイ 2ee8-BQiS)
2017/11/03(金) 15:48:21.85ID:m874gEkx0790デフォルトの名無しさん (アウアウイー Sab1-7T4N)
2017/11/03(金) 15:52:47.69ID:OoLmNkMra 何を期待してるか知らないけどやればいいじゃないか
791デフォルトの名無しさん (ワッチョイ c2f7-48Ez)
2017/11/03(金) 17:10:18.04ID:bRMk/YPf0 c#で画像の黄色部分だけを白にして残りを黒にする様なことはできますか?
792デフォルトの名無しさん (ブーイモ MM6d-pUQr)
2017/11/03(金) 17:32:15.18ID:tw8puOLsM793デフォルトの名無しさん (ワッチョイ 0219-lboT)
2017/11/03(金) 18:22:36.00ID:QTbHfBOQ0 DataTable dt = new DataTable();
bool foofunc(ref DataTable dt)
{
・・・・
adapter.Fill(dt);
こんなコード見たんだが何かメリットあるのか?
bool foofunc(ref DataTable dt)
{
・・・・
adapter.Fill(dt);
こんなコード見たんだが何かメリットあるのか?
794デフォルトの名無しさん (ブーイモ MM6d-pUQr)
2017/11/03(金) 18:28:01.91ID:tw8puOLsM795デフォルトの名無しさん (ワッチョイ 0219-lboT)
2017/11/03(金) 18:37:57.11ID:QTbHfBOQ0796デフォルトの名無しさん (ワッチョイ 457f-XJHg)
2017/11/03(金) 18:41:43.76ID:lrZzjWeI0 >>792
そういうのって、C#でって言うのかな。
そういうのって、C#でって言うのかな。
797デフォルトの名無しさん (ワッチョイ 2e9a-lboT)
2017/11/03(金) 19:35:14.12ID:Xp/sMfFK0798デフォルトの名無しさん (ワッチョイ 2ee8-zAbU)
2017/11/03(金) 19:43:53.45ID:ZqwqQq4y0 imagemagickってソースに組み込める何か提供してるん?
799デフォルトの名無しさん (ワッチョイ 9d17-Q/5A)
2017/11/03(金) 19:44:48.34ID:EmHaDWp+0 大昔にマスク画像を作っていたのを思い出した
800797 (ワッチョイ 2e9a-lboT)
2017/11/03(金) 20:02:57.12ID:Xp/sMfFK0 ついでに補足しておくとMarshal.ReadInt32でなくMarshal.Copyでバイト配列で4バイトずつ読めば
Blue,Green,Red,Alphaが取れるから許容範囲設定とかしたかったらそっちで
Blue,Green,Red,Alphaが取れるから許容範囲設定とかしたかったらそっちで
801デフォルトの名無しさん (オッペケ Srf1-RCX9)
2017/11/03(金) 20:15:49.55ID:WHWgtK+kr 経験年数と理解度?にどれだけの相関関係があるのか
疑問が生じている今日この頃
疑問が生じている今日この頃
802デフォルトの名無しさん (ワッチョイ 99b3-14h3)
2017/11/03(金) 20:20:24.80ID:aVxxhWTE0 相関関係はある
但し個人差は大きい
但し個人差は大きい
803デフォルトの名無しさん (ワッチョイ 0219-lboT)
2017/11/03(金) 20:26:05.42ID:QTbHfBOQ0804デフォルトの名無しさん (ワッチョイ 469d-Ab9z)
2017/11/03(金) 22:49:49.36ID:om2fc3b00 >>793-794
refで渡せば、呼び出し先の関数で、呼び出し元の変数のインスタンスを変更できる
これをやりたい状況がどれだけあるかとか、やるべきかどうかとかはおいといて
なんの意味もないわけではない
refで渡せば、呼び出し先の関数で、呼び出し元の変数のインスタンスを変更できる
これをやりたい状況がどれだけあるかとか、やるべきかどうかとかはおいといて
なんの意味もないわけではない
805デフォルトの名無しさん (ワッチョイ 711e-9Rqp)
2017/11/04(土) 00:09:44.98ID:3cC+jj+w0806デフォルトの名無しさん (ワッチョイ c2f7-48Ez)
2017/11/04(土) 01:46:45.24ID:qZ8I6rgd0807デフォルトの名無しさん (ワッチョイ 99b3-x3Hc)
2017/11/04(土) 04:11:36.08ID:MnNwpnC60 >>804
君も参照型を理解してないね。
君も参照型を理解してないね。
808デフォルトの名無しさん (ワッチョイ 42b3-r/51)
2017/11/04(土) 08:41:31.55ID:sTeHaJ1X0809デフォルトの名無しさん (ワッチョイ 0219-lboT)
2017/11/04(土) 09:02:47.97ID:5h9DYzfZ0 DataTable dt = new DataTable();
bool foofunc(ref DataTable dt)
{
DataTable dt = new DataTable();
・・・・
adapter.Fill(dt);
「なんの意味もないわけではない」のコードにはなったが
更に輪をかけた馬鹿コードに進化させてみた。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
bool foofunc(ref DataTable dt)
{
DataTable dt = new DataTable();
・・・・
adapter.Fill(dt);
「なんの意味もないわけではない」のコードにはなったが
更に輪をかけた馬鹿コードに進化させてみた。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
810デフォルトの名無しさん (ワッチョイ 0219-lboT)
2017/11/04(土) 09:17:38.08ID:5h9DYzfZ0 DataTable dt = new DataTable();
bool foofunc(ref DataTable dt)
{
dt = new DataTable();
・・・・
adapter.Fill(dt);
間違えてたw
bool foofunc(ref DataTable dt)
{
dt = new DataTable();
・・・・
adapter.Fill(dt);
間違えてたw
811デフォルトの名無しさん (ワッチョイ 4980-P0ds)
2017/11/04(土) 09:19:39.29ID:flyq3nv80 それじゃただのoutじゃんrefの意味じゃないじゃん(難癖
812デフォルトの名無しさん (ワッチョイ 0219-lboT)
2017/11/04(土) 09:48:23.86ID:5h9DYzfZ0 >>811
そう、参照型にrefは無意味なのです。
参照型が分かってないよりこのコードが問題なのは、
検査結果を引数に返して実行エラーの有無を戻り値で返していること。
参照型も理解していないが例外処理はもっと理解していない糞野郎のコード。
そう、参照型にrefは無意味なのです。
参照型が分かってないよりこのコードが問題なのは、
検査結果を引数に返して実行エラーの有無を戻り値で返していること。
参照型も理解していないが例外処理はもっと理解していない糞野郎のコード。
813デフォルトの名無しさん (ワッチョイ 0219-lboT)
2017/11/04(土) 09:51:19.52ID:5h9DYzfZ0 ×検査結果
○検索結果
スマン、寝ぼけてるわ
○検索結果
スマン、寝ぼけてるわ
814デフォルトの名無しさん (ワッチョイ 457f-XJHg)
2017/11/04(土) 10:16:12.92ID:q474DaJy0815デフォルトの名無しさん (ワッチョイ 0219-lboT)
2017/11/04(土) 10:20:08.20ID:5h9DYzfZ0 >>814
public bool TryGetValue (
TKey key,
out TValue value
)
refじゃなくてoutやないかい!
public bool TryGetValue (
TKey key,
out TValue value
)
refじゃなくてoutやないかい!
816デフォルトの名無しさん (ワッチョイ 457f-XJHg)
2017/11/04(土) 10:29:08.52ID:q474DaJy0 そうだった。>>811とまざった。
こっちも寝ぼけてるねw
こっちも寝ぼけてるねw
817デフォルトの名無しさん (ワッチョイ d2eb-Q/5A)
2017/11/04(土) 10:29:22.28ID:fyiwYE9E0 つまり
>>793と
DataTable dt = new DataTable();
bool foofunc(DataTable dt)
{
・・・・
adapter.Fill(dt);
とは同じ結果になると
>>793と
DataTable dt = new DataTable();
bool foofunc(DataTable dt)
{
・・・・
adapter.Fill(dt);
とは同じ結果になると
818デフォルトの名無しさん (ワッチョイ 457f-XJHg)
2017/11/04(土) 10:37:55.56ID:q474DaJy0819デフォルトの名無しさん (ワッチョイ 49c9-lboT)
2017/11/04(土) 10:38:05.17ID:OcSSsXSe0 この手のメンバ変数に検索結果をセットする時はこんな感じにして、例外処理は基本呼出側に任せちゃうんだけど問題あるのかね?
前はエラーコードのEnum返してたけど、エラーケースの殆どが例外処理で扱われる物ばかりだったので止めちゃった
DataTable dt = new DataTable();
Void SetHoge(DataTable dt){
・・・・
adapter.Fill(dt);
}
前はエラーコードのEnum返してたけど、エラーケースの殆どが例外処理で扱われる物ばかりだったので止めちゃった
DataTable dt = new DataTable();
Void SetHoge(DataTable dt){
・・・・
adapter.Fill(dt);
}
820デフォルトの名無しさん (ワッチョイ 457f-XJHg)
2017/11/04(土) 10:56:19.06ID:q474DaJy0821デフォルトの名無しさん (ワッチョイ 0219-lboT)
2017/11/04(土) 12:23:07.70ID:5h9DYzfZ0 >>819
自分ならこうするけど。
DataTable GetHoge()
{
var dt = new DataTable();
・・・・
adapter.Fill(dt);
return dt;
}
自分ならこうするけど。
DataTable GetHoge()
{
var dt = new DataTable();
・・・・
adapter.Fill(dt);
return dt;
}
822デフォルトの名無しさん (ササクッテロラ Spf1-ip3T)
2017/11/04(土) 13:59:17.12ID:dOyJdliUp >>821に1票
823デフォルトの名無しさん (ワッチョイ 469d-PyOG)
2017/11/04(土) 14:56:00.76ID:ePC4mkkA0 参照型にrefは無意味って言ってるやつは
呼び出し元変数のインスタンスを変更「できる」
ってことをどう評価してるのか
呼び出し元変数のインスタンスを変更「できる」
ってことをどう評価してるのか
824デフォルトの名無しさん (ワッチョイ 2ee8-BQiS)
2017/11/04(土) 15:15:02.21ID:Vg1Izipf0 型がわからない変数と同じ型の変数を用意したいときってなんか記述方法ある?
型を調べるとかじゃなくてプログラミング的に解決する手法あったら教えて
型を調べるとかじゃなくてプログラミング的に解決する手法あったら教えて
825デフォルトの名無しさん (ワッチョイ 2e81-QTk1)
2017/11/04(土) 15:24:28.88ID:m6ZusNHm0 型引数で解決できるならそれで
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- 【画像】カリカリ女、脱いだらすごい😨 [632966346]
- 俺のおちんちん舐めたい女の子いる?
- くそしてかがやけ
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
