ふらっと C#,C♯,C#(初心者用) Part152
■ このスレッドは過去ログ倉庫に格納されています
!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 どうしてもC#でやりたいならDllImportでkernel32.dllのOpenProcessとかReadProcessMemory利用すれば出来る
それらをスムーズに利用するためにunsafeなポインタ型を理解することから始めよう >>687
回答ありがとうございます。
やりたいことはそのとおりです。
C++とWin32APIの参考書は買ったのですが
覚えることの多さとWin32APIのコードが長すぎて全然読んでませんでした。
Win32C++に比べたら簡単そうなC#でやりたいのですが遠回りでしょうか? >>689
プログラミング自体初心者であればC++はハードルが高すぎるから
チート用途としては多少不便なもののC++より難易度の低いC#から始めるのは良い選択
ただC#自体に他プロセスのメモリを読み取る機能は無いから結局Win32APIは避けて通れない道 >>690
やることが見えてきたので助かりました!
ありがとうございました。 >>691
こんな感じでWin32APIも使うこと自体はそんな難しくはないがC/C++の経験が無いとMSDNを呼んで引数等をC#の型に変換するのは難しいだろうな
とりあえずゲーム側のアドレスが既に分かってるならプログラミング自体はそんな難しくはないが、
こういうのはそもそもアドレスを解析したりする工程で7割くらい時間使う訳で、その解析力については>>687で言った通り
[DllImport("kernel32.dll")]
static extern bool ReadProcessMemory(IntPtr handle, nuint lpBaseAddress, void* lpBuffer, nint nSize, nint* lpNumberOfBytesRead);
static int ReadInt(IntPtr processHandle, nuint address)
{
int result = 0;
ReadProcessMemory(processHandle, address, &result, sizeof(int), null);
return result;
}
static byte[] ReadBytes(IntPtr processHandle, nuint address, int length)
{
byte[] result = new byte[length];
fixed (byte* p = &result[0]) return ReadProcessMemory(processHandle, address, p, length, null) ? result : null;
}
static bool TryReadVector4(IntPtr processHandle, nuint address, ref Vector4 vec4)
=> ReadProcessMemory(processHandle, address, Unsafe.AsPointer(ref vec4), sizeof(Vector4), null); ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。 global usingは使ったほうがいいですか? いわゆるフォルダ表示みたいな物をやりたいんですが
そのままフォルダみたいなGUIのパーツはないのですか?
リスト表示でごちゃごちゃやるしかない?
jpgの縮小画像表示みたいのしたいのですが >>698
お前の中ではそりゃ説明不要なんだろうが、
こっちはウィンドウズアプリでやりたいのかWebアプリにしたいのかさっぱり分からんわけよ。
つまり出直して来い そのままフォルダみたいなGUIのパーツは標準ではないな
サードのライブラリを漁ったらあるのかもしれんが, .NETのGUIライブラリとか紹介してくれる人って一切いないからよ
俺は聞いたことがない 自分は使ったことはないけど
Windows API Code PackにExplorerBrowserがある
Explorerのシェルをそのまま使うやつ
Windows API Code PackのMS公式配布は終わってるけど野良クローンがそこらに ListViewで普通に組んでも手間は同じじゃねえの
えいやって組む気合が要るけど jpgの縮小画像表示みたいのしたいって言ってるし
ファイルのサムネ表示自動でやってくれるならそうとう手間は減るんじゃ 実行されたらすぐに音を出す方法はありますでしょうか
SoundPlayerだと数秒遅れて音がするので遅いなーと >>698
漏れは、Ruby で、selenium webdriver, nokogiri などを使って、
ローカルPC から画像ファイルを読み込んで、
それでHTML を作って、ブラウザを自動起動して表示している
# PCからランダムに、画像ファイルを10個取り出す
picture_paths = Dir.glob( 'C:/Users/Owner/Pictures/*' ).sample( 10 )
# 各画像の、img タグを作る。改行を削除する
picture_paths.each do | pict_path |
img_str = <<"EOT".gsub(/\n/, "")
<img src="#{ pict_path }">
EOT
img_node = Nokogiri::HTML::DocumentFragment.parse img_str # HTMLの断片を作る
puts img_node.to_html
出力は以下のように、10個のimgタグ
<img src="C:/Users/Owner/Pictures/a.gif">
<img src="C:/Users/Owner/Pictures/b.png">
<img src="C:/Users/Owner/Pictures/c.jpg">
これらをHTML内に入れて、スタイルを付けて、ブラウザで表示する。
Bootstrap でも何でも使える
driver.execute_script jsCode
で、JavaScript のソースコードも実行できる NGにしてるから見えないけどどうせR○byコードの基地外がいるんだろ
ム板でRu○yは問答無用のNGで問題ないよ なんでc#スレで
るびぃでコード書いてんだよ
マイナー言語なんて苦労を背負い込むだけでなんもいいことないじゃん これが噂のアレだったのか
matzに対する熱い風評被害 どこかの言語は助成金タカリビジネスだって言うし、人々に忘れられて金が出なくなったら困るんだろう JavaにだけではなくRubyにまで馬鹿にされるようになったC#。 嫉妬されてんだね
C#より出来がいい言語って無いから ここ10年の追加仕様がスクリプト言語ライクに寄ってるからな。
そういう輩を呼び寄せたのは自業自得。 このRuby妖怪は大昔からどこにでも現れるぞ
人間の常識に当てはめてはいけない >助成金タカリビジネス
これだから日本のIT(ITに限らないが)は競争力失ったんだぜ 初心者です
Form1にtextBox1とbutton1のコントロールを貼りました これで実行してテキストボックスに文字を入力して
public void button1_Click(object sender, EventArgs e)
{
string st;
st = textBox1.Text;
}
ボタン押してこの部分は呼ばれるんですが st が空で入力した文字が入りません
テキストボックスのプロパティのTextに文字入力して実行してボタンを押すと
なぜかその文字だけは取得できます
この実行後の自己入力の文字だけ取得できないのはなぜなんでしょう? >>723
>st が空で入力した文字が入りません
これ、どうやって確認していますか?
何をどうしたいのかがイマイチ読み取れないけど、エスパーすると変数のスコープ関係なんじゃなかろうか 確認は
st = textBox1.Text;
のところにブレークポイント置いてステップ実行でstの中身を見ています
st のところをグローバル変数にしてもローカル変数にしても結果は同じでした
プロパティからのText入力の時はちゃんと取得できてるのでこの記述は間違ってないように思うのですが
実行時の入力がなぜか見た目通りに反映されてないというか 確認は
st = textBox1.Text;
のところにブレークポイント置いてステップ実行でstの中身を見ています
st のところをグローバル変数にしてもローカル変数にしても結果は同じでした
プロパティからのText入力の時はちゃんと取得できてるのでこの記述は間違ってないように思うのですが
実行時の入力がなぜか見た目通りに反映されてないというか 確認は
st = textBox1.Text;
のところにブレークポイント置いてステップ実行でstの中身を見ています
st のところをグローバル変数にしてもローカル変数にしても結果は同じでした
プロパティからのText入力の時はちゃんと取得できてるのでこの記述は間違ってないように思うのですが
実行時の入力がなぜか見た目通りに反映されてないというか 確認は
st = textBox1.Text;
のところにブレークポイント置いてステップ実行でstの中身を見ています
st のところをグローバル変数にしてもローカル変数にしても結果は同じでした
プロパティからのText入力の時はちゃんと取得できてるのでこの記述は間違ってないように思うのですが
実行時の入力がなぜか見た目通りに反映されてないというか ブレークポイントで止まってるときに見えているのは代入される前の状態じゃなかったっけかな
例えば
private void button1_Click(object sender, EventArgs e)
{
string st;
st = textBox1.Text;
MessageBox.Show(st);
}
みたいなことをすれば、ちゃんとstに値が入っているのが分かると思う MessageBox.Show(st); でも変化はありませんでした
自分の環境が壊れてるのかなあ、まだ入れてそんなに経っていないんですが st = textBox1.Text;にブレークポイントを置くと実行される前に止まるのでstに値は入らない
ステップさせると値は入る もちろんステップ実行で通過させています
今新規でこの部分だけでやったら正常動作しました
元のプログラムはprivate void dispatchKeyEvent(int k, int ev) とかいろいろ入ってるので
どれかが邪魔してるんでしょうかね、どれであるかまだ見当はつきませんが じつは入力してるテキストボックスはtextBox1じゃない他の、とか VSのデバッガは世界最強と言われて四半世紀経つが、
それでも見つからないバグもあるんだな。 お前の中でそうだとしても他人もそうだとは限らんぞ
境界性の方かな? >>733
そのいろいろ入ってる処理の中で数値だけ入力許可するとかやってるのかもね 原因がわかりました
private void Form1_Load(object sender, EventArgs e)
{
InitializeComponent();
}
この InitializeComponent(); を消したら直りました
うーんデフォルトにはないこれがなんで書かれてたんだろ… OS標準のC#やpowershellだけでGUIポトペタしたいんだけど
そういう気の利いた野良C#コードやスクリプトってないかな
なければ作るけど qiitaのc#の記事トレンドでVSCODEでWPF開発みたいな記事が人気出てるので
初心者がわからないでやってるんだろ
WPFをデザイナなしで入門しようなんて無理すぎる 会社などのポリシーでVS入れられないんじゃないの
ちゃんと話を通すか転職するのがベストソリューションだよ 容量が大きいから入門コストが高く感じるんじゃないかなと本当は思ってる 前も書いたけど「無人島サバイバル術」的な動機なんだと思うよ 客先で下請けイジメ受けてた時はWPFよりFormsの方が楽だったな
WPfはideの助け無しに書くには難しすぎる >>748
Formsの方がイジメやすかったってこと? >>743
客先の環境でポトペタしたい
というかいまだ標準でできないっぽいのに驚かされた
気の利いた外人もこの世に居なかった 予想外の返事が来たな
つまりVSのポトペタを知った上で無ければ自分で作るとおっしゃるのか
素晴らしい、ぜひ頼む そりゃ外人ならVS入れるか俺が何もしないか選べやファ○クで終わりだからな
その程度の交渉ができないなら真面目にこの業界辞めたほうがいい 俺も会社のPCでOS標準のcsc.exeとメモ帳でFormsアプリ作ってる
開発とは無関係な部署だからVisual Studio入れらんないけど、
仕事楽にしたくて自分や同僚用にアプリ作ってる
でも一番喜ばれるのはExcelのマクロだわ UNIX入門書なんて今だにviで四苦八苦してccだから問題なし。 これも前も書いたけど、「道具(IDE)に依存したくない」って動機は理解できる部分もあるけど、
道具なしで何か作れるようになったところで何か潰しが利く汎用的なスキルが身につくわけじゃないことは
理解した方がいいよね。 いやGUIビルダーをもし自前で作り切れたら、十分すぎるほどに潰しが利く汎用的なスキルが身についてると思うぞw
まあ成果物としてGUIビルダーそのものはほとんど無価値だから、同じ苦労をするならもっと評価されるようなものに労力を投資したほうが賢明だとは思うが 生産性をあげる気がない現場ではゆっくり仕事して残業代を稼ぐ事に集中したほうがいい
調べ物してるフリして全然違うこと勉強したりね >>757
まあ、客先で普通にvisualstudioインストールできない環境でツール作りたいとき不便だよねっていう >>763
vscodeはインストーラ実行なしで使える >>765
そんなん普通だろ
管理者権限ないとインストーラ実行できないから使えないってだけ Windows365で解決だな
ブラウザだけで何でも支えるぞ >>767
仮想マシンにインストールするvisualstudioのライセンスを買ってもらわないと解決しない
無料版で仕事するとライセンス違反の可能性が高い >>758
GUIビルダーを作れるのは有効なスキルかもしれないけど、それをメモ帳で作れるってのは役に立たないスキルだろ >>768
VS2017エックスプレスがあるじゃない WPFでアプリを作ってて、datagridからデータのソースを取得する関数を作っているのですが、各ウインドウやページごとでdatagridのソースに使用しているクラスの型が違うため、関数でうまく処理できません
https://i.imgur.com/fZfQcmG.jpg
どうすれば良いでしょうか。 >>771
同じDataTable使っているならDatagridとDataTableのBindingで事足りるような気がするけどやりたいことと違うような気がしてならない >>771
そういうときのためのC#のInterface言語機構じゃないのか?
つまり根本設計が悪い
あと基本的にUIコンポーネントを引数にとる設計も良くない。
>>772が言っているようにDataContextにぶちこんでいるデータを引数にとる設計にする。
ObservableCollectionのリストになっているのであれば、データクラスを追加するだけで
自動的にDataGridにも行が追加される。 あーdatatableをグローバル関数にすればいいってことですね
合ってます? 単にスタンドアロンのGUIアプリをIDE無しで作りたいという話なら
GUIは全部Webviewの中に押し込んじゃえばいいじゃない
ダメ? 今考えてるのはそんな高級なものじゃないので。
フォームと部品の位置取りをGUIでズリズリやりたいだけなので。
まず既定のフォームを表示する。実際には本物のフォームを表示。この時フォームにグリッド線とかそういうのが表示できたらいい。
貼り付けるコントロールは部品の種類を選んでからフォーム上でマウスで始点と終点を決めて適当に部品を配置する。
各フォームやコントロールのサイズやスタイルはいつでもいじれるようにする。
コンボボックスとかは仮データが入れられるとよい。
出力でC#やpowershellのコードが出てくる。
割と簡単そう。 GUIをテキストで直書きするのは、Windowsアプリを昔から作ってる人からしたら変に見えるのかも知らんが・・・・・
それを離れたら、Webでもスマホのアプリでも、どちらかというとメジャーな方法だろう guiアプリを昔から作っていた人は
rcを手書きすると思うんだが? WindowsアプリでもXAML直書きが手っ取り早くて好き Xamlはボリューム大きすぎて実用化には程遠い印象 XAMLなんてもう終わったものではw
当時からクソ扱いだったし
何でもかんでも詰め込み過ぎなんだよな xamlは手書きが楽で良いよな。Formsのdesigner.csは人が触るもんじゃなかったし。 条件分岐したいだけなのにデータトリガーとかテンプレートセレクターとか書かされるのはキツかった
二度とやりたくない >>784
XAMLに限らないデザイナ一般の話。
いちいちGUIでちまちまやるよりテキストエディタの方が楽なことも多い。 ■ このスレッドは過去ログ倉庫に格納されています