X



ふらっと C#,C♯,C#(初心者用) Part141
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/12/15(土) 10:46:07.45ID:Wu4Fx0bU
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
0005デフォルトの名無しさん
垢版 |
2019/03/07(木) 18:11:07.25ID:/Jh0neEY
ピクチャーボックスにallowdropはありましたか?
フォームのプロパティからはみつかりません。

ピクチャーボックスからピクチャーボックスに画像を移動させるプログラを作りたいのですが、参考ページはありますか?ピクチャーボックス以外での解説はあるようです。
0006デフォルトの名無しさん
垢版 |
2019/03/07(木) 18:38:24.06ID:Lh0uMM6Z
>>5
「フォームのプロパティ」じゃなく「PictureBoxのプロパティ」じゃないのか
もしデザイナの一覧に表示されていなくてもどっちにもAllowDropのプロパティはある
ピクチャーボックスからピクチャーボックスに画像を移動させるのはImageプロパティをそのまま代入するだけ
0007デフォルトの名無しさん
垢版 |
2019/03/08(金) 11:59:10.38ID:dOPZ4GNG
↑回答ありがとうございます
allowdropはコード上にしかないみたいですね
gui上からは設定項目が見つからないです
0008デフォルトの名無しさん
垢版 |
2019/03/08(金) 16:51:25.14ID:RT9HCx1Y
グローバル変数の定義にvarを使おうとしたらだめだって言われたんだけど、これってなんで使えないようになってるの?
ローカル変数なら良くてグローバル変数ならだめとか意味が分からん
0009デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:17:51.69ID:dOPZ4GNG
private void pictureBox_main_of_form1_DragEnter(object sender, DragEventArgs e)
{
AllowDrop = true;
MessageBox.Show("ドラッグエンター");
}

ドラッグの許可ですが、これだけではドラッグできないです
メッセージのイベントが発生しないのですが、どこがわるいのでしょうか?
ドラッグエンターというのは領域内にドラッグされたら発生するイベントかと思います
0010デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:25:49.29ID:KslHfI7m
>>9
AllowDrop = true;はthis.AllowDrop = true;と同じ。つまりフォームのAllowDrop = true;の設定
それ以前にpictureBoxのドロップイベントでpictureBox.AllowDrop = trueにしようとしているみたいだけど無意味
コントロールの設定はどこでやるべきかわからない?もう少し考えてから質問するようにしないと
0011デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:25:58.73ID:dOPZ4GNG
どうやらピクチャーボックスの許可の問題のようです
panelなら問題なくメッセージが出ます
そちらについて調べてみます
0012デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:27:22.36ID:dOPZ4GNG
>>10
pictureboxはドロップを許可できないということですか?
0014デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:43:07.32ID:dOPZ4GNG
はい
0015デフォルトの名無しさん
垢版 |
2019/03/08(金) 21:09:46.20ID:unDD4xx5
ドラッグドロップって面倒臭いな。糞サンプル書いてみた

public Form1()
{
  InitializeComponent();
  listBox1.Items.AddRange(GetWebColors().Cast<object>().ToArray());
  pictureBox1.AllowDrop = true;
}

private Color? mDataToDrop;

static IEnumerable<Color> GetWebColors()
{
  foreach (PropertyInfo info in typeof(Color).GetProperties(BindingFlags.Public | BindingFlags.Static))
    yield return (Color)info.GetValue(null, null);
}

private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
  if (e.Button != MouseButtons.Left) return;
  var index = listBox1.IndexFromPoint(e.Location);
  if (index < 0) return;
  mDataToDrop = (Color)listBox1.Items[index];
}
0016デフォルトの名無しさん
垢版 |
2019/03/08(金) 21:10:55.42ID:unDD4xx5
private void listBox1_MouseMove(object sender, MouseEventArgs e)
{
  if (!e.Button.HasFlag(MouseButtons.Left)) mDataToDrop = null;
  if (mDataToDrop != null)
    listBox1.DoDragDrop(mDataToDrop, DragDropEffects.All);
}

private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
  var color = e.Data.GetData(typeof(Color)) as Color?;
  if (color != null) pictureBox1.BackColor = color.Value;
}

private void pictureBox1_DragOver(object sender, DragEventArgs e)
{
  e.Effect = DragDropEffects.Copy;
}
0017デフォルトの名無しさん
垢版 |
2019/03/08(金) 21:13:48.36ID:unDD4xx5
>>15を書いてて疑問に思ったんだが、ListBoxってマウスがキャプチャーされないのか?
ListBoxのクライアント領域の外でマウスのボタンを離してもMouseUpが発生しないけど何なのこれ。
変だよね?
0018デフォルトの名無しさん
垢版 |
2019/03/08(金) 21:45:39.00ID:S6VEx3Fw
>>5
答えそのものをあげる
https://ideone.com/p9Hui9
Windowsフォームアプリケーションを作る
ソリューションエクスプローラーからForm1.csとProgram.csを削除する
ソリューションエクスプローラーのプロジェクトで追加->既存の項目でダウンロードしたcsファイルを追加する
ビルドして完成
左のボックスにはエクスプローラーから画像をドロップできる
右のボックスは左のボックスからドロップできる
0019デフォルトの名無しさん
垢版 |
2019/03/09(土) 01:21:53.28ID:RHbC4qfa
>>15
ごめんこれ思いっきり変なことやってるわ。

DoDragDropはMouseDownで一度だけ呼べばいい。
フィールド(mDataToDrop)なんか作る必要なかった。
0021デフォルトの名無しさん
垢版 |
2019/03/09(土) 01:56:17.70ID:N1XPQc7R
1+1は2になるのに1×1はなんで1なんですか違いがわかりません、みたいな質問だ
0022デフォルトの名無しさん
垢版 |
2019/03/09(土) 02:36:17.53ID:FZa5GqcE
>>20
Console.ReadLine()はコンソールから文字列を取得(入力)
int.Parse()/double.Parse()は文字列をint型/double型に変換する
0024デフォルトの名無しさん
垢版 |
2019/03/10(日) 05:02:53.58ID:enIE2ATr
form1.csというファイル自体はクラスとは言わないのでしょうか?
0026デフォルトの名無しさん
垢版 |
2019/03/10(日) 08:48:37.14ID:enIE2ATr
↑ありがとぅございます
0027デフォルトの名無しさん
垢版 |
2019/03/10(日) 08:49:07.21ID:enIE2ATr
ドラッグイベントについてなんですが、やり方としてはマウスの位置にコントロールを移動させると考えて良いでしょうか?
0028デフォルトの名無しさん
垢版 |
2019/03/10(日) 09:47:12.78ID:MYQ0O9oy
>>24
「クラスが何か」って説明は自分が>>20で書いたサイトを読み進めれば書いてあるのにまだ読んでないの?
https://ufcpp.net/study/csharp/oo_class.html
>>27
>15-16,18のどこに「マウスの位置にコントロールを移動」している部分がある?
マウス止めてそこにコントロール持ってくることがまずおかしいでしょ
>16はlistBox1.DoDragDrop(mDataToDrop, DragDropEffects.All);
>18はpictureBox1.DoDragDrop(dataObj, DragDropEffects.Copy);
のそれぞれが「ドラッグドロップを開始(DoDragDrop)」
そしてDragDropイベントでコントロールに対する「ドラッグドロップを受ける」動作になっている
0029デフォルトの名無しさん
垢版 |
2019/03/10(日) 12:28:17.59ID:Gkjt178x
.Net Frameworkの標準クラスライブラリにある全インターフェースの機能見たいんだけど
MSDNしかない?
0030デフォルトの名無しさん
垢版 |
2019/03/10(日) 12:30:03.47ID:Gkjt178x
IEnumerable<T>
ICollection<T>
IList<T>

これって分けてる意味あるの?全部IListでよくない?
0031デフォルトの名無しさん
垢版 |
2019/03/10(日) 12:39:21.20ID:/0JR1y5c
>>30
使う側目線に立てばね。「大は小を兼ねる」
実装する側に立てば違うでしょ。

Enumerable<T> がなければイテレーターも存在できない。
>>15に書いた↓みたいな奴ね
static IEnumerable<Color> GetWebColors()
{
  foreach (PropertyInfo info in typeof(Color).GetProperties(BindingFlags.Public | BindingFlags.Static))
    yield return (Color)info.GetValue(null, null);
}
0032デフォルトの名無しさん
垢版 |
2019/03/10(日) 12:41:31.02ID:/0JR1y5c
LINQみたいな(値の集合ではなく)シーケンスとして扱うライブラリも存在できなくなるね
0033デフォルトの名無しさん
垢版 |
2019/03/10(日) 12:44:15.26ID:w/W9tZbl
使う側からしても大は小を兼ねるは無い。
いざメソッドを使ってみたら、NotSupportedException例外が飛んでくるとか嫌でしょ。
0035デフォルトの名無しさん
垢版 |
2019/03/10(日) 12:55:34.57ID:Gkjt178x
機能の意義の話か
列挙して読み取りするだけの機能なのに
AddやRemove機能ついてるのもおかしいよねって話か
0036デフォルトの名無しさん
垢版 |
2019/03/10(日) 13:39:12.23ID:Bl+LQorv
IEnumerable 読み取り専用、前方走査可能
ICollection 読み書き可能、集合全般(順序有り集合、順序無し集合など集合のスーパーセット)
IList 読み書き可能、順序有り集合、ランダムアクセス可能(実装上ランダムアクセスを装っているだけのものもあるが)

それぞれ特性が全く異なるので使い分けが必要です
0037デフォルトの名無しさん
垢版 |
2019/03/10(日) 15:23:21.02ID:edisDenU
そういや、インターフェイスの使い方が全く身につかん
DI等でインターフェイスを使うことが強制される場面を除いては使ったこともない・・・・
どうすればまともなコードを書けるように練習できるん?
0040デフォルトの名無しさん
垢版 |
2019/03/10(日) 18:13:18.92ID:edisDenU
>>38-39
ありがとう
SOLIDの原則を大雑把に見てきたんで、守れるように努力するよ
0041デフォルトの名無しさん
垢版 |
2019/03/10(日) 18:57:05.34ID:km5dayCM
異なるクラスなんだけど、List〈インターフェース〉とかにして、foreach回したり出来るのがうれしいってことでおけ?
0044デフォルトの名無しさん
垢版 |
2019/03/11(月) 18:06:04.14ID:5tiLwPRT
IEの自動操縦には大分慣れてきました。
そこで今回、

MicrosoftEdgeを自動操縦したいと思います。

この方法を解説している良いブログなどありませんか?
0046デフォルトの名無しさん
垢版 |
2019/03/11(月) 23:09:01.60ID:5DvwA+Xd
>>42
Bindingが強力。
GUIデザインが(良くも悪くも)自由。
高DPI対応が簡単。(ほとんど何もしなくていい)
0047デフォルトの名無しさん
垢版 |
2019/03/12(火) 08:00:12.93ID:oX4bYoPv
>>44
Ruby で、Selenium WebDriver で、ブラウザを自動操作してるけど、

Chrome, Edge のどちらでも動く
0051デフォルトの名無しさん
垢版 |
2019/03/12(火) 21:04:22.37ID:t9nw0tv2
pythonとかのコードコピーしてもエラーになるからな。
若干メソッドが違う。その辺の勘所あれば大丈夫。
0052デフォルトの名無しさん
垢版 |
2019/03/13(水) 10:40:43.08ID:aEeMgLuC
>>50
ほんまやね。

久々にC#のWindowsFormを使ってるんですが
右上の「×」ボタンをなくすにはどうすればよいですか?

自前で「閉じる」ボタンを用意しているので
邪魔なので消し去りたいのです。
0053デフォルトの名無しさん
垢版 |
2019/03/13(水) 11:40:37.06ID:y4WTTUAI
ControlBoxをfalseにすれば最大化最小化ボタンとともに消せる
単独で消す方法は特にない
0055デフォルトの名無しさん
垢版 |
2019/03/13(水) 12:41:50.39ID:aEeMgLuC
サイトに自動ログインしたいのですが
ID/PASSの自動入力、ログインボタンのクリックはできました。

しかし、Googleの認証エリア(私はロボットではありません。 reCAPTCHA)へのチェックを
どうしても入れられません。


iFrameを使っているみたいなのですが、
こういう場合ってIEの自動操縦で操作する事は無理でしょうか?

自動ログインをして手間を省きたいのです。
0057デフォルトの名無しさん
垢版 |
2019/03/13(水) 15:29:39.84ID:J7uH1zio
まぁそういう自動ログインを防ぐための仕組みだしなぁ
googleと勝負するかそのサービス提供者にrecaptcha外してもらうかくらいじゃない?
0058デフォルトの名無しさん
垢版 |
2019/03/13(水) 18:14:15.39ID:aEeMgLuC
>>56 >>57

ID/PASSを入力してからTABキーを押すとiFrameの中の
チェックボックスにフォーカスが入るみたいです。
もしかして突破できる!!??

C# + Windows APIで
TABキーを送ってチェックボックスのクリックって
どうかけばいいですかね?
0059デフォルトの名無しさん
垢版 |
2019/03/13(水) 18:40:07.18ID:J7uH1zio
>>58
キーが送れるなら普通はspaceでチェックボックスonできるけどrecaptchaを突破できるかはしらん
0060デフォルトの名無しさん
垢版 |
2019/03/13(水) 18:59:57.06ID:aEeMgLuC
>>59
サンクス
TAB+spaceキーのsendで試してみます。
自動ログインするとだいぶん手間がはぶける
0061デフォルトの名無しさん
垢版 |
2019/03/13(水) 23:11:05.05ID:K5xsHdh9
自動ログインしてるとロボット判定くらって
パズルやる羽目になるんじゃないかな。
0063デフォルトの名無しさん
垢版 |
2019/03/14(木) 17:17:00.07ID:SO0caDlp
Navigate と Navigate2の違いは何ですか?
サイトによって前者だったり後者だったりします。
0067デフォルトの名無しさん
垢版 |
2019/03/15(金) 15:32:11.15ID:4iy7KMFj
「実戦で役立つ C#プログラミングのイディオム/定石&パターン」っていう本が気になるんですが、これってSOLIDの原則みたいなものが解説されてる本なんですか?
https://www.amazon.co.jp/dp/4774187585
本の題名から、デザインパターンの本っぽく見えるものの、見方を変えればただの逆引き系テクニック本っぽくも見えて判別が付きません・・・・
持ってる人いたら教えて!
0068デフォルトの名無しさん
垢版 |
2019/03/15(金) 15:42:07.07ID:SEjqglYP
ときどき話題になるけど
初心者用
プログラマーなら大半が無駄
0069デフォルトの名無しさん
垢版 |
2019/03/15(金) 17:53:39.10ID:FRygED1T
>>67
Microsoftが出してる参考書がいい勉強になると思う
タイトルは忘れたけど黒い表紙のやつ
0070デフォルトの名無しさん
垢版 |
2019/03/15(金) 18:57:25.93ID:4iy7KMFj
これかあ・・・なんと540ページ・・・・やっぱりこれ級の本が必要なの?
https://www.amazon.co.jp/dp/4822253546
本当はレジュメ10枚とかそんな簡単なのが欲しいんだけどそういう傾向のはないのかな
0071デフォルトの名無しさん
垢版 |
2019/03/15(金) 20:16:15.98ID:c5iTEfMf
「自分用に要約したまとめが欲しい」ってC#の自由度だと無理
ネットで公開されているオープンソースのもの読んで勉強したら本買うことも無い
0073デフォルトの名無しさん
垢版 |
2019/03/16(土) 11:34:56.31ID:DBWOZzSE
今更の質問ですが
ブラウザの自動操縦はC#で行ってました。

VBAで自動ログインだったりスクレイピングもできますか???
だとするとC#で抽出してExcelに転記する必要なかったなぁ〜〜〜
0075デフォルトの名無しさん
垢版 |
2019/03/16(土) 21:28:06.14ID:DBWOZzSE
>>74
ありがとうございます。
VBAでIE操作する事にします。
最初からこっちにしとけばよかったかな〜〜〜〜
0076デフォルトの名無しさん
垢版 |
2019/03/18(月) 03:01:47.93ID:Orngtrfp
>>70
レビュー全然無いやん
0077デフォルトの名無しさん
垢版 |
2019/03/18(月) 17:41:01.21ID:oR4heX+u
便利なツールを作りました。
しかし、悪い奴がそれをコピーして複数端末で使われると困ります。

そこでアドビ製品の様なライセンス制御の仕組みを取り入れたいのですが
何か参考になるサイトはありますか?


不正利用防止対策としてユーザに一意のキーを埋め込んで
アプリの起動時にWEBサーバにその情報を送って突合させようかと思っています。

何かもっとスマートなやり方をご存知の方はいませんか?
0078デフォルトの名無しさん
垢版 |
2019/03/18(月) 17:44:06.83ID:pLo5oLE9
C#で作っていたらアクチだろうが何だろうがILSPYあたりで逆アセンブルされるから無駄
アクチ部分抜いてビルドしなおせば終わる
0080デフォルトの名無しさん
垢版 |
2019/03/19(火) 22:47:35.46ID:lhNrB1l4
>>78
うーん、、、やっぱりそうかー
そもそもそーいう事できる人間は
ソフト自体を自分で作れるから
いちいちやるかな〜というパラドックス

100人いたら3人位がそーいう悪い事するかな
0081デフォルトの名無しさん
垢版 |
2019/03/19(火) 22:54:33.28ID:qnLJux/M
ドングル使う手もあるよね。
まあそんなケツの穴の小さいこと考えないのが一番簡単ではある
0082デフォルトの名無しさん
垢版 |
2019/03/19(火) 23:09:05.45ID:lhNrB1l4
↑はじめてきいたわ

そんなのあったんだ。

うーんまいったなー
一定の割合で犯罪者がいるから悩む
0083デフォルトの名無しさん
垢版 |
2019/03/20(水) 00:39:48.00ID:v7tyiNru
web認証プラス重要なメソッドをwebapi化すれば本体リコンパイルされても再現不可能だな。
0084デフォルトの名無しさん
垢版 |
2019/03/20(水) 09:40:49.70ID:4fAbiRjS
>>83
どうしてもクライアントじゃないとごにょごにょできない処理なんですよ
犯罪者の違法コピー使用はあきらめるしかないかな
0086デフォルトの名無しさん
垢版 |
2019/03/20(水) 13:05:24.17ID:/jX7WF9n
対応する工数とそれで得られる利益が見合うならやればいい
adobe製品とかならまだしも見合うことなんてまず無いから
不正利用者はセキュリティしっかりしてたらそもそも利用しないから対応しても利益にはならない
0087デフォルトの名無しさん
垢版 |
2019/03/20(水) 13:15:41.54ID:ZZcTomnN
簡単な認証かけておけばカジュアルコピーは防げる。
リバースエンジニアリングまでするようなのは少数なはずだから、無視するのが現実的。
ガチでやるならドングル。面倒臭いから正規利用者からも嫌われるけど。
0088デフォルトの名無しさん
垢版 |
2019/03/20(水) 13:47:25.53ID:4fAbiRjS
>>86 >>87
うーん、一部の犯罪者はスルーして
カジュアルライセンス制御しまう。

起動時と処理部分でWEBサーバに通信して認証チェックします。
アプリ内に一意な識別キーを入れておいて
AがBにコピーを渡した場合
異なるIPでAとBから同一キーがWEBサーバに送られるからそいつは不正利用
という判断でいこうかと思います。

逆アセンブルするヤツはそもそも自分で作れるだるから
いちいちコピーして使わないかな。
0089デフォルトの名無しさん
垢版 |
2019/03/20(水) 14:08:39.22ID:/jX7WF9n
どういうアプリかしらんけどIPみたいコロコロ変わるもんを認証に使って大丈夫なの?
macアドレスとか取ればいいんでね?
偽装は簡単にできるけどそういうのはスルーするんだろうし
とはいえ購入者が別端末使ったりPC買い換えるだけで不正利用扱いされることにはなるが
0090デフォルトの名無しさん
垢版 |
2019/03/20(水) 14:20:50.41ID:4fAbiRjS
>>89
おお!!いいですね!!
@ユーザ個別の識別キー
Aユーザ利用のMACアドレス
BIPアドレス


カジュアルライセンス制御は、これでうまくいけそうです!
(一部の犯罪者はもうスルーします。どうせ作れるだろうし、、、)
0091デフォルトの名無しさん
垢版 |
2019/03/20(水) 14:23:53.82ID:JR1ztFlD
というか、毎回認証するのはユーザーにとっても提供側にとっても負担大き過ぎでしょw
ネットつないでないと使えないし

普通にMSのアクティベーションと同様の仕組みでいいでしょ。
プロダクトキー使って一度認証したらライセンス返上するまでずっと有効。
1つのプロダクトキーがいくつかの(通常は一つ)のライセンス枠を持ってる。
枠が全部埋まってると誰かが返上して空きができない限り新たな認証はできない

以前使ってたTIの開発ツールはこんな感じだったよ
0093デフォルトの名無しさん
垢版 |
2019/03/20(水) 14:43:00.12ID:4fAbiRjS
>>91
なるほど!そーいう手もありますね!
ツール自体はネットがつながっている事前提なので
そこはユーザにとってもサーバにしても心配していません。

>>92
IP偽装も簡単にされてしまうので
確かにあまり意味をなさないですね。
0095デフォルトの名無しさん
垢版 |
2019/03/20(水) 14:58:40.20ID:/jX7WF9n
不正対策のために正規利用者が不利益を被ることは極力避けるべき
大抵が開発者の自己満足
ちょっとした手順が必要になるだけでも使い勝手は極端に下がる
ましてや誤って不正利用認定なんかされた日にはもう2度と関わりたくないと思う
さらにwebサーバーの常時保守と認証周りでのトラブルのカスタマーサポートとかまで考えたら本当に必要な工数なのかも疑わしい
そこまでする必要があるレベルのプロダクトならいちいちこんなところで質問なんて投げないだろうしね
0097デフォルトの名無しさん
垢版 |
2019/03/20(水) 17:10:46.92ID:/jX7WF9n
鯖への攻撃まで考慮しなきゃいけないくらいでかいソフトなの?
どんだけ高価なもん作ってるのか知らんけどパス付きzip程度じゃあかんの?
0098デフォルトの名無しさん
垢版 |
2019/03/20(水) 17:17:15.36ID:4fAbiRjS
>>97
世の中には悪い奴がいてWEBサーバ攻撃してくるヤツもいるんですよ
zipだと解凍してコピーして横流しされそう。
まぁ、ごく一部でしょうけどね。
■ このスレッドは過去ログ倉庫に格納されています

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