C♯相談室 Part21
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん♯
05/01/23 23:24:00(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
過去スレは>>2-5あたり。
関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D
0002名無しさん♯
05/01/23 23:24:34Part20 http://pc5.2ch.net/test/read.cgi/tech/1103005153/
Part19 http://pc5.2ch.net/test/read.cgi/tech/1100240847/ (現在HTML化待ち)
Part18 http://pc5.2ch.net/test/read.cgi/tech/1096112588/ (現在HTML化待ち)
Part17 http://pc5.2ch.net/test/read.cgi/tech/1091284402/ (現在HTML化待ち)
Part16 http://pc5.2ch.net/test/read.cgi/tech/1087297504/ (現在HTML化待ち)
Part15 http://pc5.2ch.net/test/read.cgi/tech/1083066815/ (現在HTML化待ち)
Part14 http://pc5.2ch.net/test/read.cgi/tech/1076933504/ (現在HTML化待ち)
Part13 http://pc2.2ch.net/test/read.cgi/tech/1071663456/ (ログ行方不明)
Part12 http://pc5.2ch.net/tech/kako/1066/10660/1066038651.html
Part11 http://pc5.2ch.net/tech/kako/1061/10612/1061262958.html
Part10 http://pc5.2ch.net/tech/kako/1051/10518/1051842450.html
Part9 http://pc2.2ch.net/tech/kako/1039/10396/1039646808.html
Part8 http://pc3.2ch.net/tech/kako/1032/10324/1032488831.html
Part7 http://pc3.2ch.net/tech/kako/1027/10275/1027531796.html
Part6 http://pc3.2ch.net/tech/kako/1022/10222/1022257078.html
Part5 http://pc3.2ch.net/tech/kako/1019/10195/1019533942.html
Part4 http://pc.2ch.net/tech/kako/1016/10165/1016597767.html
Part3 http://pc.2ch.net/tech/kako/1009/10094/1009473982.html
Part2 http://pc.2ch.net/tech/kako/1002/10024/1002468050.html
Part1 http://pc.2ch.net/tech/kako/977/977112364.html
0003931==936
05/01/23 23:50:10乙。
0004デフォルトの名無しさん
05/01/23 23:50:290005デフォルトの名無しさん
05/01/23 23:58:43おっつー
0006デフォルトの名無しさん
05/01/24 01:06:140007デフォルトの名無しさん
05/01/24 01:17:462.0はリリースまだなので聞かれて答えても
MSの修正入ったりなんなりする予感。
0008デフォルトの名無しさん
05/01/24 03:35:510009デフォルトの名無しさん
05/01/24 06:14:48次はPopを行いながらファイルに書き込むと5000〜9999までしか書き込まれません。
以下のプログラムで何か間違っていますでしょうか。
using System;
using System.IO;
using System.Collections;
using System.Text;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Stack tmpStack = new Stack();
Stack syncedStack = Stack.Synchronized(tmpStack);
for (int i=0; i<10000; i++)
{
syncedStack.Push(i.ToString());
}
StreamWriter sw = new StreamWriter(@"C:\Out.txt", false, Encoding.Default);
for (int i=0; i<syncedStack.Count; i++)
{
sw.WriteLine(syncedStack.Pop().ToString());
}
sw.Close();
Console.WriteLine("終わりました。");
}
}
}
0010デフォルトの名無しさん
05/01/24 06:20:57POPしながらfor (int i=0; i<syncedStack.Count; i++)ではできないのも当たり前でした・・・
0011931==936
05/01/24 09:08:24http://zep.s3.x-beat.com/up/img-box/img20050124090648.gif
オブジェクト型の実体を調査するために
御指示通りに試みましたが、突き止めるに至りませんでした
(>_<) どうしたらよろしいでしょうか。
0012デフォルトの名無しさん
05/01/24 09:31:030013931==936
05/01/24 11:14:56クラスを探してほしいですが、
それ以前に、オブジェクトブラウザの使い方を・・・。
0014デフォルトの名無しさん
05/01/24 11:18:48使い方はぐぐるなどして自分で調べれ。
0015931==936
05/01/24 11:21:360016デフォルトの名無しさん
05/01/24 11:32:20C1TrueDBGridのオブジェクトから行番号取得したいんだけど
どなたかわかりますでしょうか?
0017デフォルトの名無しさん
05/01/24 11:43:38SelectedRowsプロパティ辺りじゃね。
0018デフォルトの名無しさん
05/01/24 11:56:26その下がわかりません。
教えていただければ幸いです。
001917
05/01/24 11:59:47私自身はグレープシティのFAQざっとみてそれっぽいプロパティを挙げただけだからなー。
大体その下って何よ。
//コレクションにはそれぞれRowが入っていて、そのプロパティにはIndexなんてのがあったりするのか?
0020931==936
05/01/24 12:18:16ワード→Alt+F8→VB起動
ライブラリ=Word
クラス=Find
Parent見つけました。
Property Parent As Object
読み取り専用
これしか書いてないっす・・・●rz...
0021デフォルトの名無しさん
05/01/24 12:34:29002216
05/01/24 13:16:33すいません下というのは
MessageBox.Show (c1TrueDBGrid2.SelectedRows.???);
???の部分なんです。
グレープシティに問い合わせですが、まだトライアル版で使用しているので聞けないんです。
002316
05/01/24 13:38:49int a = dataGrid1.CurrentCell.RowNumber;//行番号取得
txtBox1.Text = dataGrid1[a,0].ToString();//選択レコードの内容をテキストボックスにコピー
色々説明不足ですみません。
0024デフォルトの名無しさん
05/01/24 13:50:130025デフォルトの名無しさん
05/01/24 14:03:19int a = c1TrueDBGrid2.Row;
txtBox1.Text = c1TrueDBGrid2.SelectedText;
こんな感じ?
002616
05/01/24 14:23:18結果的にはそうです。選択行の0列目の値を取得したいのです。
0027デフォルトの名無しさん
05/01/24 14:36:06int rowNum = c1TrueDBGrid1.SelectedRows[0];
string colName = c1TrueDBGrid1.SelectedCols[0].Caption;
MessageBox.Show(c1TrueDBGrid1[rowNum, colName].ToString());
002816
05/01/24 14:56:23ありがとうございます。
行をセレクトすると
int rowNum = c1TrueDBGrid1.SelectedRows[0];
の部分でインデックスが範囲を超えています。とエラーが・・・。
もし0列目のみであれば
int rowNum = c1TrueDBGrid1.SelectedRows[0];
MessageBox.Show(c1TrueDBGrid1[rowNum, 0].ToString());
でいけますよね?
0029デフォルトの名無しさん
05/01/24 15:24:380030デフォルトの名無しさん
05/01/24 15:33:24重たい処理が複数あるなら、シングルCPU環境においては順次やっていった方が早いかもしれない。
いずれにせよUIスレッドは処理スレッドとは分けるべき。
0031デフォルトの名無しさん
05/01/25 00:42:55うまくいきません。
�@NotifyIcon追加しました。
�Aアイコンを自作し、NotifyIconのIconPropertyに割り当てました。
�BShowInTaskBarをfalseにしました。
そして、F5後に、フォームの右上の最小化ボタンを押しました。
すると、画面の左下のスタートボタンすぐ上にちっこくなりました。
最小化とは、SystemTrayにのみ表示される状態 だと思うのですが、
Systemtrayのみならず、小さいながらもデスクトップ領域に残ってます。
当然TaskbarにはShownされていません。
原因はなんでしょうか。よろしくNE.
0032デフォルトの名無しさん
05/01/25 00:47:560033デフォルトの名無しさん
05/01/25 00:53:22最小化されたことを検出するには、どうすればいいのでしょうか。
SizeChangedでも一応ひっかかりますが、これは他用途で使用しているので
専用のがあったらいいな。
private void myform_minimized(object sender, e){
this.ShowInTaskbar = false;
}
復帰用
private void myform_*****(object sender, e){
}
お願いします。
0034デフォルトの名無しさん
05/01/25 00:56:23私はもっぱらResizeイベントでやってる。
0035デフォルトの名無しさん
05/01/25 01:00:15SizePropertyの値がControlで変更されたときに発生sらしい。
Resizeやってみます。
Resizeである値以下に小さくなるのを監視すればいいんですか?
0036デフォルトの名無しさん
05/01/25 01:03:11でも、それでは、
通常使用時(sisytemtoryに格納されておらず、Form見えている状態)
では、タスクバーに表示されてしまいます・・・。
0037デフォルトの名無しさん
05/01/25 01:09:02{
this.WindowState = System.Windows.Forms.FormWindowState.Normal;
}
private void Form1_Resize(object sender, EventArgs e)
{
if (this.Height < 30)
this.ShowInTaskbar = false;
else
this.ShowInTaskbar = true;
}
こんな感じでそれとなくできましたが、
より好ましい形態がありましたら、教えていただけますでしょうか
お願いします。m(_ _)m
0038デフォルトの名無しさん
05/01/25 01:09:15で、>36については最小化時に一旦ShowInTaskbarをtrueにしてすぐfalseにするとか。
0039デフォルトの名無しさん
05/01/25 01:12:22今気づきました。minimizedをみることを。
アドバイスさんくすこー!
一旦、それやてみるよ。
0040デフォルトの名無しさん
05/01/25 01:18:56{
this.WindowState = System.Windows.Forms.FormWindowState.Normal;
}
private void Form1_Resize(object sender, EventArgs e)
{
this.ShowInTaskbar = true;
this.ShowInTaskbar = false;
// if (this.WindowState == System.Windows.Forms.FormWindowState.Minimized)
// this.ShowInTaskbar = false;
// if (this.WindowState == System.Windows.Forms.FormWindowState.Normal)
// this.ShowInTaskbar = false;
}
なんとも、ばかばかしくて、意味不明。
はぁっ?って感じ。これでうまくいきました〇rz...
0041デフォルトの名無しさん
05/01/25 01:19:36コメントきぼん抜
0042デフォルトの名無しさん
05/01/25 01:28:272005のステータスバーに追加したプログレスバーだけ
ForeColorの変更が適用されないのでしょうか。
普通にフォームに貼り付けたプログレスバーは
きちんとForeColorの変更が適用されているのに・・・〇rz...
http://senpuuji-gai.hp.infoseek.co.jp/cgi-bin/img-box/img20050125012723.gif
0043デフォルトの名無しさん
05/01/25 01:36:25StatusStripに追加するのはToolStripProgressBar。
別物なので混同しない。
コードで変更した場合はどうなの?
004442
05/01/25 01:40:42似て非なるものだけど、まぁ同じようなものだと思う。
画像には、誤ってFormに貼り付けたプログレスバーのプロパティ
だしてしまってるけど、
StatusStripに貼り付けたToolStripProgressBarも
全く同じように、ForeColorをRedに、BackColorをSystem.Desktop
にしています。
0045デフォルトの名無しさん
05/01/25 01:43:55ちなみに私の所では問題なく色が変わってる。
VS2005は入れてないからそっちのチェックはできないが。
0046デフォルトの名無しさん
05/01/25 12:03:55ShowInTaskBarをfalseにすると、
HotKeyって使えないんですか?
falseにしたら使えませんでした。
2005 C#
参考ソース
[DllImport("user32.dll", EntryPoint = "RegisterHotKey", CallingConvention = CallingConvention.Winapi)]
public static extern int RegisterHotKey(IntPtr hwnd, uint HK_ID, uint MOD_KEY, uint KEY);
[DllImport("user32.dll", EntryPoint = "UnregisterHotKey", CallingConvention = CallingConvention.Winapi)]
public static extern int UnregisterHotKey(IntPtr hwnd, uint HK_ID);
0047デフォルトの名無しさん
05/01/25 12:10:31004847
05/01/25 12:25:52ShowInTaskbarを変更するとフォームのウィンドウハンドルが作り直されるのね。
そうするとホットキーを送出するウィンドウ先が不明になって無効になると。
HotkeyをControlとかから継承した独自クラスにすればいい。
WM_HOTKEYを受け取ったらイベントを通知するようにして。
//と言う作業を私は既にやっていたから……。
004946
05/01/25 13:04:39005042-44-46
05/01/25 15:12:32form_load内で、設定したらうまくいったですたい。
でも、どうしてですたい。
それじゃ、プロパティウィンドウでの設定は
なんのためにあるとですたい。
0051デフォルトの名無しさん
05/01/25 15:39:27ttp://axxe.at.infoseek.co.jp/GlobalHotkey.zip
>>50
ベータテストに参加しているという自覚を持って、きちんとMSに報告するように。
005242-44-46
05/01/25 16:35:3649 サンクスコ!!!
50 報告の仕方のサンプルきぼん抜(>_<)
0053デフォルトの名無しさん
05/01/25 16:41:51005442-44-46
05/01/25 17:03:05まぁそう○rzむなよ。
0055デフォルトの名無しさん
05/01/25 18:30:02005642
05/01/25 21:15:280057デフォルトの名無しさん
05/01/25 22:10:00インストールしたディレクトリ(ex. C:\Program Files\Microsoft Visual Studio 8)の
readme.htmを参考に。
0058デフォルトの名無しさん
05/01/25 22:12:17一方、HTTPプロトコル(通常のネット)は許可されている環境において、
NTPサーバーが提供している時刻、あるいはそれに準ずる時刻を
取得する方法はございませんか?
0059デフォルトの名無しさん
05/01/25 22:34:22某独立行政法人のページに、負荷がでかくなりすぎたからサービス止めたって書いてあった。
というかそんな環境なら、外側と繋がってるPCだけNTPを許可して、そこから時刻を供給するようにするのが普通。
管理者にでも文句を言って下さい。
0060デフォルトの名無しさん
05/01/25 22:34:480061デフォルトの名無しさん
05/01/25 22:52:04ソース見ましたが、これってwebrequestで取得できそうなんですか?
どうも無理なような・・・
機械的なアクセスはご遠慮下さい、とは書いてあるがみなかったことにして。
0062デフォルトの名無しさん
05/01/26 07:48:58などの温度を取得して、計算を止めた時に書き出す
事はできますか?
0063デフォルトの名無しさん
05/01/26 07:52:150064デフォルトの名無しさん
05/01/26 09:00:50ttp://www.dotnet247.com/247reference/msgs/42/212165.aspx
統一的なCPU温度の測定手法は無いってさ。
0065デフォルトの名無しさん
05/01/26 10:29:030066デフォルトの名無しさん
05/01/26 10:35:11直接送信したいってことなら可能。
0067デフォルトの名無しさん
05/01/26 11:10:03どのように取り組んだらいいのでしょうか。
お願いいたします。
0068デフォルトの名無しさん
05/01/26 11:41:17いくつも参考サイトが出てくるのだが。情報検索能力ゼロですか。
0069デフォルトの名無しさん
05/01/26 12:24:16なにか良い方法はありますでしょうか。
public class MyForm1 : System.Windows.Forms.Form
{
public string MyProperty { ... }
}
public class MyForm2 : (System.Windows.Forms.Form)MyForm1
{
public string NewMyProperty { ... }
}
として MyForm2 のインスタンスから見えていて欲しいのは System.Windows.Forms.Form のメンバのみ
MyForm1 のプロパティーは全部または一部を protected にしてしまいたい
0070デフォルトの名無しさん
05/01/26 12:35:55集約を使うなどしてあまり無闇に継承させないというのが最近のOOP。
0071デフォルトの名無しさん
05/01/26 12:49:26集約でも構わないです、System.Windows.Forms.Form の継承をしたまま
MyForm1を利用できるか調べています。
0072デフォルトの名無しさん
05/01/26 12:52:34プロパティウィンドウの表示はBrowsableAttribute属性で。
007362
05/01/26 13:04:10そうですか…
ありがとうございました
0074デフォルトの名無しさん
05/01/26 13:06:460075デフォルトの名無しさん
05/01/26 13:08:270076デフォルトの名無しさん
05/01/26 13:09:38意外と多く存在すると、聞いたのですが‥
どうでしょうか!?
007762
05/01/26 13:11:09何桁まで円周率を求めることができますか?
時間さえあればほぼ無限と考えていいのでしょうか?
0078デフォルトの名無しさん
05/01/26 13:11:23てかそれ知ってどうする。
0079デフォルトの名無しさん
05/01/26 13:12:150081デフォルトの名無しさん
05/01/26 13:15:140082345
05/01/26 17:25:45あまりにも低レベルな質問するな!
3で、いいじゃねーか、3で!!
0083デフォルトの名無しさん
05/01/26 17:28:570084デフォルトの名無しさん
05/01/26 17:58:20RichTextBoxでHideSelectionをfalseにしたときに、
AppendText()やると自動的に最下行までスクロールしてくれる。
だけど、キャレットの位置が末尾以外の時にはスクロールしたくない。
どうすればいい?
0085デフォルトの名無しさん
05/01/26 19:28:560086デフォルトの名無しさん
05/01/26 21:48:34読み込みはできるのですが、書き込みはできないのでしょうか?
簡単にiniファイルなどの設定を保存する機構を実現するためには
独自のオブジェクトをXMLでシリアライズするしかないのでしょうか?
(レジストリ保存意外の方法の場合)
0087デフォルトの名無しさん
05/01/26 22:00:260088デフォルトの名無しさん
05/01/26 22:33:45できるけどやらない方がいいって
MVPの連中が言ってた。
俺も別のファイルに保存したほうがいいと思う
008984
05/01/26 22:46:41キャレットが末尾以外の時は、スクロールが動かないようにしてほしいんですよ。
Text += hoge;
ってやり方だと、スクロールが先頭にいってしまいます。
キャレットが末尾以外の時の動作ってのは、HideSelectionがtrueの時の動作がいいのです。
でも、
HideSelection = true;
AppendText("ほげほげ");
HideSelection = false;
ってなやり方でやってもうまくいかないんですよね。
他にやり方ありますかね?
009067
05/01/26 23:47:56さんくすこ!!
検索文字列すら思い浮かばなかったんだ・・・
0091デフォルトの名無しさん
05/01/27 02:41:18キャレットも('A`)マンドクセつーかShowCaret読んでも表示されませんヽ(`Д´)ノウワァァン
0092デフォルトの名無しさん
05/01/27 09:43:48ここにまとめられてる。
本文が下の方になっちゃってるので注意。
http://shinshu.fm/MHz/95.83/archives/0000025041.html
0093デフォルトの名無しさん
05/01/27 10:51:35ありがとです。みてみます。
何で最初っからFormsにないんだ( ゚Д゚)ゴルァ!!
0094デフォルトの名無しさん
05/01/27 12:40:45i tried [http://ukamen.hp.infoseek.co.jp/Programming1/HTMLPost/]
then i found the webRes throw exception,
"受信時に予期せぬエラーが発生しました"
WebResponse webRes = webReq.GetResponse();
meanwhile,
an warning occurs at
webReq.Proxy = System.Net.WebProxy.GetDefaultProxy();
it says this expression is an old style.
thereafter,
parameters += HttpUtility.UrlEncode( "111-");
Thereis no System.Httputility.urlenc in .NET2.0
Thank you.
webReq.Proxy = System.Net.WebProxy.GetDefaultProxy();
0095デフォルトの名無しさん
05/01/27 13:18:07だめですだ。文字コードの樹海にさまよいこみました・・・orz
009695
05/01/27 14:19:58Win98とかだとうごかねーんだろうなぁ・・・
0097デフォルトの名無しさん
05/01/27 14:48:21Win2000 + ATOK17だとそのままで動くな〜。
0098デフォルトの名無しさん
05/01/27 17:38:46バックグラウンドで動き続けて、数秒単位であるフォルダを監視します。
その時、そのフォルダにファイルが存在した場合、そのファイルを読み込み
適宜処理します。
という感じなのですが、上記のような処理を行なうには、
スレッドにて処理を行なうほうがよいのでしょうか?
(スレッドを勉強する所から入らないといけませんが)
それとも Timer コントロールの Tick イベントで処理する方法でも
問題ないのでしょうか?
いまいち、スレッドというものの概念というか使うべき所が理解できません。
上記、アドバイスを頂けますとうれしいです。
0099デフォルトの名無しさん
05/01/27 17:51:08System.Timers.Timerで定期処理すれば?
0100デフォルトの名無しさん
05/01/27 18:38:17derige-to,BeginInvoke あたりを押さえておけ。FileWatcherにはUI用のコールバック考慮されてるからそこも見るべし
0101デフォルトの名無しさん
05/01/27 19:00:050102デフォルトの名無しさん
05/01/28 01:03:40hiddenタイプはどう設定するんですか?エロいひと。
0103デフォルトの名無しさん
05/01/28 04:29:510104デフォルトの名無しさん
05/01/28 04:34:12ドキュメント読んでるけど脳が腫れそうだ
0105デフォルトの名無しさん
05/01/28 10:37:53何ツーかこの業界、人の作ったルールばかり読まされて自分で考えることしない人にはある意味天国(後で取り返しのつかないことになるんだが)、な世界だな。
そうやって廃人になったひとも多いいんじゃなかろうか。
そこらへんがスーパープログラムーとVB厨の違いなんだろうな。
0106デフォルトの名無しさん
05/01/28 14:23:07自分で考えてたら、規格統一がままなりませんからね。
向き不向きが強く現れるのでしょうね。
0107デフォルトの名無しさん
05/01/28 15:55:44104ですが一応自分でも考えてるんですよ
でも馬鹿なんでドキュメント以外の言葉でも書かれている物読んだり
単刀直入な部分から入っていったり他の人がどう考えてるか知りたいんですよ
自分が無能だと分かってるから自分の考えだけで走ると取り返しに付かなくなることの方が多いから
「手っ取り早く解説してる」という表現は間違ってました
入り口の違う解説書がもしあったら紹介して欲しいなということです
0108デフォルトの名無しさん
05/01/28 19:51:37.Value には 空白を設定できないし、どのようにやればいいのかわかりません。
DateTimePicker に日付が表示されていない状態を作る方法を教えて
いただけないでしょうか?
0109デフォルトの名無しさん
05/01/28 19:57:240110デフォルトの名無しさん
05/01/28 21:23:45'System.Net.WebProxy.GetDefaultProxy()' は古い形式です :
'This method should not be called, please rely on the
proxy selected for you by default.'
C:\Documents and Settings\Administrator\Local Settings
\Application Data\Temporary Projects\ConsoleApplication1\Program.cs
3331
といわれてしまいます。代替メソッドとかございませんか?
参考サイト
http://ukamen.hp.infoseek.co.jp/Programming1/HTMLPost/
0111デフォルトの名無しさん
05/01/28 21:26:19以下のように文字化けしてします。
<HTML><HEAD>
<meta http-equiv="content-type" content="text/html;charset=SHIFT_JIS">
<title>郵便番号 [111-] の検索結果</title>
<style TYPE="text/css">
ともって貼り付けたら、文字化けしてませんでした。
なぜ、僕の2005のコンソール画面だけ
<HTML><HEAD>
<meta http-equiv="content-type" content="text/html;charset=SHIFT_JIS">
<title>□□□□ [111-] □□□□□</title>
<style TYPE="text/css">
になってるんだろう・・・
そもそもこの[111-]ってなんですか?
参考サイト
http://ukamen.hp.infoseek.co.jp/Programming1/HTMLPost/
度々すみません。緊急の宿題なんですが、
かれこれ数時間悩んでいます・・・・丸rz。
0112105
05/01/28 21:34:24ごめんなさいそういう意味じゃないの・・・一般論です・・・
いやなんかこの業界(いやどこでもそうかもしれないが)技術の進展が早くて、無駄になる知識も多いかと。
この業界廃人になる人が多いのもそういうのが関係してるんじゃないかと。
0113デフォルトの名無しさん
05/01/28 21:50:42WebRequest.ProxyはデフォルトでIEのプロクシ設定になってる。
2005のコンソールって、.NET Framework SDK コマンドプロンプトだよね?
別に文字化けはしないなー。
0114デフォルトの名無しさん
05/01/28 21:56:11VC#2005です。
0115デフォルトの名無しさん
05/01/28 22:02:50ここのウェブフォームに名前入れて、
送信したいんですが、
http://ukamen.hp.infoseek.co.jp/Programming1/HTMLPost/
で紹介されている文のどこを変えればいいのですか?
今、知りえた情報として、
�@.Zip2AddressURL を
http://www.occn.zaq.ne.jp/cueay508/cgi-bin/tools/formdecodeに変える。
�A.webReq.Proxyをコメントアウト(デフォルトですでに設定されているから)
�B.string parameters = "name1=George";
parameters +=
"[email protected]" +
"&.subject=mailsubject"+
"&.thanks=http://www.yahoo.co.jp";
ほかはいぢらずに、F5.
↓
受信時に予期しないエラーが発生しました。
そして、メール(自分の)も受信されてません。
(メールを送れていないだけかもですが)
0116デフォルトの名無しさん
05/01/28 22:03:480117デフォルトの名無しさん
05/01/28 22:04:22連続投稿で申し訳ございません」。間違えてボタン押してしまいました。;
0118デフォルトの名無しさん
05/01/28 22:14:02ttp://www.occn.zaq.ne.jp/cueay508/test.html
でUriクラスのインスタンスAを作って、
もう一つUriインスタンスBをnew Uri(A, [action=に書かれてる文字列])で作ってみ。
0119デフォルトの名無しさん
05/01/28 22:15:430120デフォルトの名無しさん
05/01/28 22:24:38{
System.IO.Stream stream = null;
System.IO.StreamReader sr = null;
Uri uri1 = new Uri("http://www.occn.zaq.ne.jp/cueay508/test.html");
Uri uri2 = new Uri(uri1, Action<"/cgi-bin/tools/formdecode">);
try
{
System.Net.WebRequest webReq = HttpWebRequest.Create(uri2);
webReq.Method = "post";
うまくいきません(T_T
0121デフォルトの名無しさん
05/01/28 22:27:49うー・・・。
[action=...]ってやると、最初の"["でエラーが起こります・・・。;
0122デフォルトの名無しさん
05/01/28 22:28:15Uriクラスのコンストラクタを調べる事すらしないのか。
0123デフォルトの名無しさん
05/01/28 22:30:34<form ......>の中で実際にUriを指してるのはどの部分よ。
0124デフォルトの名無しさん
05/01/28 22:32:25これだと、エラーが出るんです・・・
で、ActionっていうクラスのSummaryにAction<>って書いてあったから
<>ってGenerics?とりあえず、書いてみたのが、120でした。
0125デフォルトの名無しさん
05/01/28 22:39:43フルスペル : Uniform Resource Identifier
インターネット上に存在する情報資源の場所を指し示す記述方式。インターネットにおける情報の「住所」にあたる。URIは包括的な概念であり、現在インターネットで広く用いられているURLはURIの機能の一部を具体的に仕様化したものである。
〇rz。。。わからん。。。
0126デフォルトの名無しさん
05/01/28 22:45:29" "の前になんか変な文字がくっついてたりしたら当然エラーだよな?
0127デフォルトの名無しさん
05/01/28 22:45:33Uri uri2 = new Uri(uri1, "/cueay508/cgi-bin/tools/formdecode");
どうひねっても、うまくいかん・・・
http://www.infoseek.co.jp/OTitles?col=OW&qt=Uri%A4%C8%A4%CF&svx=901908
http://www.kanzaki.com/docs/html/htminfo-uri.html
http://www.infoseek.co.jp/OTitles?col=OW&qt=Uri+action+post+form&svx=901908
〇rz...どこにも書いてないです・・・
0128デフォルトの名無しさん
05/01/28 22:48:27なんかデリゲートみたいですね。なんだろう・・
0129デフォルトの名無しさん
05/01/28 22:48:42はい、そうです。
文字列は、""でくくるか、
文字列を返り値とするメソッドを利用します。
例えば、"mytext"や、String.vbConv(string str,vbConv.Narrow,0x0411);
や、mynumber.ToString()などです。
0130デフォルトの名無しさん
05/01/28 22:55:25<form>のactionの対象Uriは"/cgi-bin/tools/formdecode"だよな?
0131デフォルトの名無しさん
05/01/28 22:56:45Uri uri2 = new Uri(uri1, "/cgi-bin/tools/formdecode");
〇rz。。。試行錯誤でなんとか・・・。
0132デフォルトの名無しさん
05/01/28 22:58:310133デフォルトの名無しさん
05/01/28 23:00:16あえて、すぐに答えを教えずに
考えさせよう、という教育的な姿勢を感じました。
おかげで、さまざまなサイトを訪問し、
ちょっと知識もつきました。ありが10.
そして、最後の最後に教えてくれましたね!でも
試行錯誤でなんとか・・
というか、試行錯誤の前に
[action="文字列"]ってそのまま書くっていう意味じゃなかったのね・・・
〇rz。。。
0134デフォルトの名無しさん
05/01/28 23:01:47たまに[ ]ってみかけたから、例外的にStringなのかと
思ってた。(ぜんぜん意味わかんないけど)
[DllImport **]も、[]だし。
だからといって、[]がStringだとは思わなかったけど、
交錯していました。すみません。そして、ありがとう、みんな。
0135デフォルトの名無しさん
05/01/28 23:06:29.NET2.0のC#をみてたらyieldって命令が増えてますが、
これって内部でスレッド使ってるのかコンパイラが賢いことしてるのか気になります。
public System.Collections.IEnumerator GetEnumerator()
{ foreach (string day in m_Days) yield return day; }
どうなのでしょう?
0136デフォルトの名無しさん
05/01/28 23:08:20parameters += System.Web.HttpUtility.UrlEncode("111-");
parameters += "&new=on";
これなんですか?必要なのでしょうか。
http://ukamen.hp.infoseek.co.jp/Programming1/HTMLPost/index.htm
0137sage
05/01/28 23:12:36でしょうか?
例えばListViewに新規項目が追加された場合は一番したまでスクロールし
再描画をするという処理を実現したいです。
0138デフォルトの名無しさん
05/01/28 23:17:42myListView.Item[myListView.Count-1].Select();
myListView.Invalidate();
0139デフォルトの名無しさん
05/01/28 23:19:07ttp://www.atmarkit.co.jp/fdotnet/special/cs20review02/cs20review02_02.html
このページと次のページがイテレータの内部動作の解説。
>>136
httpに関する知識を増やせ。
>>137
EnsureVisibleメソッドで指定項目を必ず表示できるところまでスクロールさせる事はできる。
0140デフォルトの名無しさん
05/01/28 23:19:56Unix でいう mktemp のような事を行ないたいのですが、方法があれば教えてください。
0141デフォルトの名無しさん
05/01/28 23:35:530142デフォルトの名無しさん
05/01/28 23:38:50任意のディレクトリに、ってなのはクラスライブラリには無いようだね。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/230tempdir/tempdir.html
これは環境変数で強制的にディレクトリが決められるし。
適当に8文字+"."+3文字のランダムな文字列を作って、既存チェックで存在しないのを返す関数でも作るくらいか。
0143デフォルトの名無しさん
05/01/28 23:44:06情報ありがとう。コンパイラが賢いことをしてたのですね、安心しました。
スレッドが変わってないのは確認してたのでもしかしたら
あのレア機能のNT Fiberを使ってるのかとあらぬ想像をしてたのです(笑)
0144デフォルトの名無しさん
05/01/29 02:39:10Point p = { 0, 0 };
これが使えないですよね?
Point p;
p.x = 0;
p.y = 0;
こう書くように解説してる人が多いけど、
やっぱコンストラクタを使いたいので
Point p = new Point( 0, 0 );
こう書くと、スタック上に未初期化のpを作って
コンストラクタで作った{ 0, 0 }なPointを
コピーするみたいですが、激しく無駄が気持ち悪いです。
C++みたく
Point p( 0, 0 );
って書ければいいのにって思います。
お前らは構造体の初期はどうやってますか?
C#のコンパイラが、
Point p = new Point( 0, 0 );
これをきちんと、無駄なコピーをしないように
最適化してくれればいいのに。
0145デフォルトの名無しさん
05/01/29 02:49:03ここはお前の日記じゃ(ry
0146デフォルトの名無しさん
05/01/29 03:29:43join()でスレッドが終わるまで待つようにしたところフォームが応答なし状態になってしまいます。
こんな感じです
↓
Thread ThreadTest = new Thread(new ThreadStart(ThreadTestMethod));
ThreadTest.Start();
ThreadTest.Join();
MessageBox.Show("end");
これでは何のためにスレッドを立てたのか分かりません。
回避方法はありますか?
0147デフォルトの名無しさん
05/01/29 03:54:02Joinしなきゃいいじゃん。
コールバックメソッド使え。
0148デフォルトの名無しさん
05/01/29 05:10:29> Point p = new Point( 0, 0 );
ILを見ればわかるけどこれでコピーもポインタの代入も発生してないから安心していい。
固定の領域に対してコンストラクタを呼んでるだけ。値をそれぞれ代入するのと
コンストラクタを呼ぶのにそんなに差はないと思うからどっちでもいいのではないかな。
ついでだけどSystem.Drawing.Pointがnewでないと使えないのはX, Yがプロパティの
せいだろうか。
0149デフォルトの名無しさん
05/01/29 14:24:36ザンクス
あとは、自作のメソッドで構造体を頻繁に引数にする時は
ref渡しにすればいいのかな。
0150デフォルトの名無しさん
05/01/29 15:04:07ListViewに2つのListViewItemを配置します。これを A, B とします。
あるファイルXをドラッグして、A 、B どちらかにドロップさせます。
A、Bどちらにドロップされたかによって、ファイルXへの処理を決定します。
explorerなんかで、ファイルをつかんで、フォルダツリーにもっていくと、
マウスが乗ったフォルダのフォルダ名の色が反転して、
ファイルを離すと、そのフォルダにファイルがコピー or 移動されますよね。
見た目的にはああいうことをやりたいんですが、よくわかりません。
ListView にたいしてのDrag&Dropの通知はわかるんですが、
ListViewItemへの通知の仕方がわかりません。
やりかた、参考になるサイト等あったら是非教えてください。
よろしくお願いします。
0151デフォルトの名無しさん
05/01/29 15:11:41//PointToClientも必要かな?
0152デフォルトの名無しさん
05/01/29 15:52:24やってみればわかるがstructの参照渡しはできない。
void sub1(ref Point p)はエラーになる。
void sub2(object p)ならできそうに見えるが、実はbox, unboxが発生していて
やっぱりできてない上にもっと効率が悪い。
値渡しで効率が悪いような大きなデータはclassにするべきということだ。
c#のstructはvaluetypeと呼ばれるものでc++のそれとはだいぶ違うということを心得るべし。
0153デフォルトの名無しさん
05/01/29 15:59:05意味がわからんのだが。
static void sub1(ref Point p) {
p.X = 123;
}
static void Main() {
Point p = new Point(12, 12);
sub1(ref p);
Console.WriteLine(p.X); // 結果は123
}
普通にできますよ?
まあ大きなデータはクラスにすべきなのは間違いないけど。
0154150
05/01/29 15:59:11ありがとうございます。
DragEventArgs が e として、ListView( listView )のDragDropイベント中で、
ファイルXがドロップされたItemを下記コードで無事取得できました。
Point point = listView.PointToClient( new Point( e.X, e.Y ) );
ListViewItem item = listView.GetItemAt( point.X, point.Y );
if ( item != null )
{
textBoxLog.Text = item.Text;
}
ドラッグ中のListViewItem名の色の反転はまだできてませんが、
ここまでこれればなんとかなりそうです。
DragOver でするのかなぁ?とか思ってます。
サーバサイドなJavaコーダで食ってるんだけど、
VSゲットでなんとなくC#勉強し始めてみた。
Windowsアプリは面白い!と結構感動中。
0155デフォルトの名無しさん
05/01/29 16:18:22むむ、System.Drawing.Pointだとできますね。もっちと調べてみます。
スレの流れ的にはマニュアルの例題にあるこれを使ってると思う。
struct Point
{
public int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
0156デフォルトの名無しさん
05/01/29 16:24:44どのアセンブリのものかによって動作が変わったら困る。
ref/outが参照渡しにならなかったらP/Invokeがめんどくさいし。
0158136
05/01/29 22:34:17>>141
HTTPの勉強がしたいです。
ばかな質問をしてすみません。
「とりあえず、ここでも読んどけ、あふぉ!」といったような
サイトをご紹介願えませんでしょうか。
重ねてお願いします。
0159デフォルトの名無しさん
05/01/29 23:57:19http://www.faqs.org/rfcs/rfc2616.html
後は適当にぐぐ。
0160136
05/01/30 02:05:20日本語サイトで推奨はないですか?
0161デフォルトの名無しさん
05/01/30 03:38:47Exe直接起動すると出ないってどういうことなんでしょう?
デバッグで走らせてても位置特定できないし。
ContextMenuが出そうになると固まります。その後'System.NullReferenceException' エラーが出て、その後は別に続けても問題なし・・・・
ワケワカメ
0162デフォルトの名無しさん
05/01/30 11:02:41されてるんだろうから、別にいいんじゃない?
場所の特定は非マネージドコードのデバグをonにすれば可能だと思う。
0163デフォルトの名無しさん
05/01/30 13:09:37Positionを直接設定するのとSeekメソッドを使用するのでは
何か速度的な違いがあるのでしょうか?
0164デフォルトの名無しさん
05/01/30 13:12:460165デフォルトの名無しさん
05/01/30 13:57:370166デフォルトの名無しさん
05/01/30 18:29:35ttp://www.studyinghttp.net/rfc_ja/rfc2616.ja
0167160
05/01/30 19:22:02それにしても、すごい分量ですね。
僕は ただ、FormのPostで全角な文字列を
僕のメールに送りたいだけなのですが・・。
あぁ、すごい量だ。
0168デフォルトの名無しさん
05/01/30 20:17:49ボタンをマウスでクリックした時のイベントつかまえて処理をしています。
この時マウスを連打するとクリック回数分連続でイベントが走ってしまいます。
最初の一回のイベントのみ実施してその後のイベントをキャンセルしたいのですが、
いい方法ありませんか?
マウスポインタを砂時計にしてもだめでした。
それなりに重たい処理を行うので連打を許したくないのです。
クリックイベントの中でボタンのEnabledをfalseにすればいいと思っていましたが、
それではうまくいきません。
.netではイベントの開始から終了までの間にクリックしても前回のイベントが終了しないと
次のイベントが発生しないようなので。
Windowsのメッセージを捕まえて何とかしないとだめなんですかね。WndProcとかで。
0169デフォルトの名無しさん
05/01/30 20:20:06Form云々はHTTPでメール云々はSMTPだが、大丈夫か?
0170デフォルトの名無しさん
05/01/30 20:21:55フラグ持てば?
0171168
05/01/30 20:25:06ボタンのクリックイベントの中でフラグ持っても結局
イベントの最初でフラグをチェックしてONなら抜けてOFFならONにするって
やり方はVB6.0とかではできましたが、.netでは無理でした。
0172デフォルトの名無しさん
05/01/30 20:28:39UIスレッドはワーカスレッド起動するだけですぐ解放されるわけだから、ボタンをEnabled=falseにすればいい。
ワーカスレッドが終了時にInvokeでボタンのEnabled=trueを実行する。
0174160
05/01/30 22:16:31プロバイダから提供されているPostにおいて、
投稿内容送信先に僕のEメールを設定するだけです。
だいじょうぶです。なんとか理解しています。
ただ
HttpUtility.UrlEncode
がよくわかりません。
StreamWirteとか、Streamreaderとかで
Encoding.getEncodeing("shift\jis")とか("EU_**")とか
適宜設定してやれば、文字化けが回避できることは
わかたんですが、
0175デフォルトの名無しさん
05/01/30 22:21:24http に関する知識を増やしてくれ
なんでそこで躓くのかよく分からん
0176デフォルトの名無しさん
05/01/30 22:23:34つかちょっとは自分で調べろ。
UrlEncodeでぐぐっただけでもトップ20以内に有用な情報が見つかったっての。
0177160
05/01/30 23:32:28ようは円コードすると、
スペースが+になったり、
漢字が2バイト(16*4)になったりするんですね。
で、フォームのテキストボックスに
「渡辺」とではなく「%4b%80」なんて入れたら、
当然、そのまま「%4b%80」と解釈されるわけだから、
渡辺っていう漢字は消えてしまうのね。
で、URLEncodeは、URLに対してのみ利用されるものなのね。
当然、そのEncoding.GetEncoding()も、
サイトによって異なるけど、少なくともFormのActionを使って
送信する分には、エンコードする必要はないのね!!
0178デフォルトの名無しさん
05/01/31 02:16:39http://www.amazon.co.jp/exec/obidos/ASIN/4798108200
おまえは本をもっと読んだ方がいい
0179デフォルトの名無しさん
05/01/31 10:22:04せめてとほほのWWW入門ぐらいは(ry
0180160
05/01/31 10:46:12>>178さん申し訳ない。
0181デフォルトの名無しさん
05/01/31 18:55:27FlatStyle を System に変更し、XP スタイルで表示させると、
内側の GroupBox の Text のフォントが指定した値より大きく表示
されてしまいます。
この現象を御存知の方、回避する方法を御存知の方がいらっしゃいましたら
方法を教えて頂けないでしょうか?
0182デフォルトの名無しさん
05/01/31 19:10:25ttp://weblogs.asp.net/fbouma/archive/2005/01/21/358006.aspx
ttp://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=31fe5781-fa8f-410d-8177-7977311094b6
MSがバグとして調査中。
1.1のSP1からの症状のようだ。
0183デフォルトの名無しさん
05/01/31 19:40:40Resolved as Fixed by Microsoft on 2004-12-10 at 02:53:10
となっているので次期では解決するんでしょうね。
教えて頂いた先に解決させるコードがあったので頂きました。
助かりました。どうもありがとうございました。
0184160
05/01/31 22:36:19前から思ってたんだけど、その最後の)ryってなに?
0185デフォルトの名無しさん
05/02/01 01:50:08お前はまず自分で考え自分で調べると言う事を
身に付けたほうがいい
0186デフォルトの名無しさん
05/02/01 03:51:020187160
05/02/01 12:17:52僕もそう思った。
ryってぐぐったら、すぐに出てきたよ。
どうしていつも僕って(ry
0188デフォルトの名無しさん
05/02/01 14:11:57TreeNodeをコピーしたいのですが、
TreeNode ClonedNode = (TreeNode) treeView.SelectedNode.Clone();
とすると
'System.MissingMethodException' のハンドルされていない例外が mscorlib.dll で発生しました。
追加情報 : このプロジェクトで、引数なしコンストラクタは定義されていません。
と例外が発生して、うまくいきません。
どのようにすればいいのでしょうか?
0189デフォルトの名無しさん
05/02/01 15:32:47引数に指定した構造体内の値(配列やポインタ)がうまく
ひきつげません。
どうしたらよいのでしょうか?過去にも同様の質問やサン
プルコードがあればどのあたりを参考にすればよいか教えて
下さい。
0190160
05/02/01 16:26:14検索能力0か?(ry
0191デフォルトの名無しさん
05/02/01 17:59:21Clone は出来ないってことです。新しく作ってアレコレ設定しましょう。
0192デフォルトの名無しさん
05/02/01 20:35:28お前に言われたくねーよ。
0193160
05/02/01 22:55:38○rz...(ry
0194デフォルトの名無しさん
05/02/01 23:27:31>>160 VS >>189
0195デフォルトの名無しさん
05/02/02 00:34:510196デフォルトの名無しさん
05/02/02 00:35:10逆ギレ?池沼?
MSDN 読めば実例付きで載ってるだろ。
Web で検索するまでも無い。
Windows Media Format SDK 最新版も Managed コードとの
相互運用サンプル付いてるし。
0197デフォルトの名無しさん
05/02/02 01:57:140198デフォルトの名無しさん
05/02/02 03:00:230199160
05/02/02 09:01:490200デフォルトの名無しさん
05/02/02 09:39:21「コードの表示」と「デザイナの表示」を切り換えるタブがいつの間にか表示されなくなってしまいました。
再表示させる方法を教えてください。
0201デフォルトの名無しさん
05/02/02 09:42:01知障
0202デフォルトの名無しさん
05/02/02 10:27:53TextBoxでコピーや貼り付けなどを行わせないようにし、
通常の入力は行えるようにしたいのですが
どのようにすればいいでしょうか。
0204デフォルトの名無しさん
05/02/02 10:52:50C#.NETじゃWin32APIは使えんのかね?
質問2
WebFormでフレーム組む方法はわかる。で、
2ちゃんねるの左の窓で「プログラマー」をクリックすると
右の窓が他のURLへ飛ぶだろ
これどうやるの?
0205デフォルトの名無しさん
05/02/02 11:02:58DrawStringは描画のメソッドだとおもうのですが。
通常の入力はさせたいのです。
0206デフォルトの名無しさん
05/02/02 11:09:111)できる。DllImportAttribute属性を調べてみな。
2)name属性とtarget属性で指定するものだが。
>>205
コンテキストメニューを空のContextMenuにして、
Ctrl+VとShift+Insを殺せば良いんでない?
……WindowsFormsの話だよな?
0207デフォルトの名無しさん
05/02/02 11:27:59ふむふむ。ありがとうございました。WindowsFormsです。
0208デフォルトの名無しさん
05/02/02 12:15:42195さん、丁寧にありがとうございました。
質問の意図はマーシャリングすればなんとか取得出来ると
思ったのですが、うまく行かなかったので同様の議論が
あればさくっとルーティングしていただけたらと思ったので。
C#初めてでどうにもやっていることの方向性が合っている
かもわからずだったので質問してしまいました。
自力でやってみます、ありがとうございました。
ちなみに192は自分ではありません。でも探索能力0は当
たっていますね(汗)。
0209デフォルトの名無しさん
05/02/02 17:09:23http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconmarshalingclassesstructuresunions.asp
ここらへん読めばいいような気がします。
0210デフォルトの名無しさん
05/02/02 17:21:490211デフォルトの名無しさん
05/02/02 17:45:21class Class1 {
public Test PublicField = new Test();
public Test Property { get { return PublicField; } set { PublicField = value; } }
[STAThread]
static void Main(string[] args) {
Class1 class1 = new Class1();
class1.Property.Data = 1;
class1.PublicField.Data = 1;
}
}
struct Test {
public int Data;
}
0212デフォルトの名無しさん
05/02/02 18:34:39それだと違いがわからないと思うが。
典型的には get しかない property なんかは、public field じゃ実現できない。
0213デフォルトの名無しさん
05/02/02 18:58:37プロパティだと例えば public string Value { get; set; } とかで
setする時に決まった入力文字列以外はthrowするとかの処理が挟めるし、
getするときも適当に整形して返せたりします。
0214デフォルトの名無しさん
05/02/02 19:02:58一言でいえば全然違うとしかいいようがない。
アクセスするときのシンタックスが似てるだけで。
全然違うものだから
>>211 とか
リフレクション時動作の違いとか
あげればきりがないだけの違いが出てくるし。
その質問は「メソッドとフィールドってどう違うんですか」っていうのと
同じぐらい変な質問に思える。
ただ、publicフィールドを使わないほうがいいと思う。
0215211
05/02/02 19:09:08すまぬ
public field と、変数のエイリアスとしての public property の違いを聞いているのかと思ったよ
昨日、後輩から普通に聞かれたもんで
っていうか、property って、内部的には set_ or get_ メソッドを作っているんだよなぁ
メソッドと変数の違いに近いかもしれない
0216デフォルトの名無しさん
05/02/02 19:26:29readonly...
0217デフォルトの名無しさん
05/02/02 19:32:04いや、それでも実現できないやん
公開するプロパティは弄らせないが、自分だけは弄りたい場合とか
0218デフォルトの名無しさん
05/02/02 22:57:53EOFとかCRLF等を描画しようと思いますが、どうにも行の終端の位置座標が
取れないため苦戦しています。
0219デフォルトの名無しさん
05/02/02 23:09:40プロパティのほうが速度が速いみたいですね!!
0220210
05/02/02 23:14:24>>214
publicフィールドなんて使いません。
>>215
内部的にgetter、setter作ってるならますます違いが分からない…orz
ま、便利なメソッド=プロパティってことにしときます。
ありがとう。
0221デフォルトの名無しさん
05/02/02 23:20:33俺は public readonly のフィールドは頻繁に使うけどな
状態変化するオブジェクトは余り作りたくない性分なんで
(けどそうするとプロパティにして内部へのアクセスを >>211 みたいに禁じたほうが確実か?)
プロパティはコンポーネント指向で出てきた概念
ほら、フォームデザイナで編集するときに色々と便利やん
0222210
05/02/02 23:28:20漏れはもともとJavaやってたんでgetter、setterをしこしこ書く派。
プロパティはコードが見にくくなるんで使いたくないなぁ。
ま、アクセサ書いても一緒なんだけどね…。
0223デフォルトの名無しさん
05/02/02 23:36:55public struct Square
{
public double Width = 0;
public int Area
{
set
{
Width = System.Math.Sqrt( value );
}
get
{
return Width * Width;
}
}
}
Widthがpublicフィールド、Areaがプロパティ。
Square square;
square.Width = 2.0;
Console.WriteLine( square.Area.ToString() );
square.Area = 9.0;
Console.WriteLine( square.Width.ToString() );
実行結果
4.0
3.0
0224デフォルトの名無しさん
05/02/02 23:37:56×public int Area
○public double Area
0225210
05/02/02 23:38:15たしかに、
obj.setFoo(obj.getFoo() + bar)
より
obj.Foo += bar
の方が便利だ。
0226デフォルトの名無しさん
05/02/02 23:43:44俺ももともとJavaやってたけど、プロパティアクセサを
言語機能でサポートしてるのはJavaよりC#が明らかに優れている点だ。
もともとpublicフィールドなんて使わんし。
読み出しと書き込みのシンタクスや型を自動的に統一してくれるから
本来は不要なコーディングの手間が大幅に削減される。
0227デフォルトの名無しさん
05/02/02 23:47:40余談だが、MSDNではconst付きpublicフィールドも
パブリックプロパティとしてメンバリストに載ってるな。
0228デフォルトの名無しさん
05/02/02 23:49:250229デフォルトの名無しさん
05/02/02 23:50:17そりゃconstならフィールドでもプロパティでも同じだからな。
タイプセーフなマクロ扱いだし。
0230デフォルトの名無しさん
05/02/03 00:31:420231160
05/02/03 00:42:52iphlp.dll
string[] str = myiphlp.GetGlobalAddress()
0232デフォルトの名無しさん
05/02/03 01:52:22せめて、propertyだったら互換性を維持したまま手を加える余地があるのに……
0233デフォルトの名無しさん
05/02/03 02:08:24MouseDownからやると、1クリックの後に矩形の範囲選択が出てきてしまうんですが、
これを回避する方法って何かないでしょうか?
0234デフォルトの名無しさん
05/02/03 02:15:36そのフィールド自体を、同じ名前のプロパティに書き換えればいいじゃんw
フィールドにできてプロパティにできない事って
unsafeコンテクスト内での&によるアドレス取得くらいのもんだろ
0235デフォルトの名無しさん
05/02/03 10:08:10public constはできるだけ使わないで。
ILをみるとわかるがconstの場合コンパイル動作が埋め込みになるので
アセンブリのバージョンリダイレクトで不整合が発生したり問題あり。
>>234
静的にアクセスしているのだと問題ない場合も多いのだけども、
リフレクション時の動作も違う。例えばDataBinding系の処理で
publicフィールドとpublicプロパティはまったく違う動作をする。
簡単な実験は、ListBoxのDataMemberにpublicフィールドと
publicプロパティを指定してみればわかる。
結局のところコンポーネントの基本要素が
プロパティとイベントのみとして設計されているので、
どっちにしろpublicフィールドは作るべきでない。
getter/setterメソッドも同じ理由でだめ。
0236232
05/02/03 11:18:09取り合えずそのDLLを参照しているアセンブリ全てリビルドが必要になる。
refやoutの引数として直接渡されてたりする。
リフレクションをくらって挙動が変わったりする。
publicなフィールドを宣言してる時点で他にもいろいろとまずいことやってる。
0237160
05/02/03 13:19:36先行してどのサイトをCHKしたか示すべきなのでしょうか。
例えば、
「〜がわかりません。
CHK済みサイト:httq://www.yahoo.ne.jp/
とか」
0238デフォルトの名無しさん
05/02/03 13:24:530239デフォルトの名無しさん
05/02/03 13:33:22CHKなんていう意味不明な略語(?)を使うのはやめましょう。
質問は平易な日本語(+正しい技術用語)で具体的に。
姉妹スレの↓もよろしく。
ふらっとC♯(Part5)
http://pc5.2ch.net/test/read.cgi/tech/1065196964/
>このスレッドは
>
>「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
>
>ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
>
>少しずつC#プログラマを名乗るものが現れました。みなさん一緒に勉強しましょう。
0240デフォルトの名無しさん
05/02/03 15:31:36CHK
w
0241デフォルトの名無しさん
05/02/03 17:10:210242160
05/02/03 17:55:120243160
05/02/03 17:55:51そうそう、それだよ、それ。ないすFLW
0244デフォルトの名無しさん
05/02/03 18:11:200245デフォルトの名無しさん
05/02/03 18:49:50http://www.infoseek.co.jp/OTitles?col=OW&qt=printdialog&svx=901908
ここはだいたい見ました。
RPCサーバに関するエラーが出て、印刷できません。
印刷環境は以下の通り。
Aパソコン(僕のPC)
|
Bパソコン(隣の先輩のPC)
|(usb)
Brotherのレーザプリンタ。
0246デフォルトの名無しさん
05/02/03 19:18:00エラーメッセージでぐぐってみたらどうだ。
0247デフォルトの名無しさん
05/02/03 19:41:42main(){
printf("Hello!");
rewind(stdin); //追加行:標準入力を初期化する
getchar(); //追加行:1文字入力を待つ
return0;
}
実行すると
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 6: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2206 sample2.c 7: 不正な文字 ' ' (0x8140)(関数 main )
エラー E2451 sample2.c 7: 未定義のシンボル return0(関数 main )
警告 W8070 sample2.c 8: 関数は値を返すべき(関数 main )
*** 15 errors in Compile ***
と表示されてしまい、実行できません、ずーっとやり直していますが
何処がどう違うか解らないんです、ご教授お願い致します。
0248全角空白は使えない・returnの後にスペースをひとついれる
05/02/03 19:48:55すれ違い。これ以上は他所で聞け。
0249デフォルトの名無しさん
05/02/03 19:49:42main(){
printf("Hello!");
rewind(stdin); //追加行:標準入力を初期化する
□□□□□getchar(); //追加行:1文字入力を待つ
return0;
}
0250デフォルトの名無しさん
05/02/03 19:52:000251160
05/02/03 22:16:57何が違うのですか?
0252デフォルトの名無しさん
05/02/03 22:23:40上記ページにおいて掲載されているC#ソースを実行。
//OKがクリックされた時は印刷する
pd.Print();
上記ステイトメントでエラー発生。
エラー内容は以下の通り。
RPCサーバーを利用できません。
0253デフォルトの名無しさん
05/02/03 22:26:10http://www.microsoft.com/windows2000/ja/server/help/default.asp?url=/windows2000/ja/server/help/sag_ADtrouble_1.htm?id=366
(↑意味不明)
http://www.ricoh.co.jp/support/faq/ipsio/IP04183.html
ここを熟読し、OKです。(mypcはxpsp2)
0254デフォルトの名無しさん
05/02/03 22:30:54iphlp.dllとは?MSのサイト(米)で検索しても出てこなかったんですが・・・
ぐぐったらWinsockの一部みたいな感じだとわかったんですが。
Interopなしではできないんでしょうか?
0255デフォルトの名無しさん
05/02/03 22:31:55ttp://www.google.co.jp/search?q=C%23+%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%97%E3%83%AA%E3%83%B3%E3%82%BF&lr=lang_ja
0256デフォルトの名無しさん
05/02/03 22:33:41グローバルIPを取得する統一的な手法は、外部(確認くんとか)に問い合わせるしかないよ。
0257デフォルトの名無しさん
05/02/03 22:47:31100% Pure .Netでやるには、これしか方法はない。
IPHostEntry entry = Dns.GetHostByName( Dns.GetHostName() );
foreach( IPAddress address in entry.AddressList )
{
byte[] addr = address.GetAddressBytes();
if ( addrがプライベートIPじゃない )
{
return address;
}
}
0258245
05/02/03 22:52:32GJ!
0259デフォルトの名無しさん
05/02/03 22:55:04>>254
間違えた。
0260160
05/02/03 23:11:15http://www.vector.co.jp/soft/win95/prog/se095037.html
0261デフォルトの名無しさん
05/02/03 23:22:35ご紹介いただいたリンクを確認いたしましたが、
該当するソースあるいはTIPが見当たりません
やはり、GetPrinter PRINTER_INFO_5 PRINTER_ATTRIBUTE_NETWORK PRINTER_ATTRIBUTE_LOCAL
を使わなくてはならないのでしょうか。
http://216.239.57.104/search?q=cache:R47ncsjOPlYJ:vbvbvb.com/jp/gtips/0351/gGetPrinterAttributesNetworkLocal.html+C%23+%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%97%E3%83%AA%E3%83%B3%E3%82%BF&hl=ja&lr=lang_ja
「おまえ、あほか?こことここを読めば、わかるだろ!」
みたいなサイトあれば、あとは自分でやります。
重ねてお願いいたしまq。
0262デフォルトの名無しさん
05/02/03 23:31:45スタート→設定→プリンタ
に登録されているプリンタを取得する
public CPrinter[] GetResisterdPrinter()
printer.GetResisteredPrinter().Names[0].ToString()
のようなものがてっきりあるのかと思っていました(気体していました)
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9568&forum=7
こちらの例を呼んでちんぷんかんぷんな人はあきらめたほうがいいでしょうか。
0263デフォルトの名無しさん
05/02/04 00:16:03Class A ×1 10.0.0.0〜10.255.255.255
Class B ×16 172.16.0.0〜172.31.255.255
Class C ×256 192.168.0.0〜192.168.255.255
が出てきたので、>>257をもとにできました。
0264デフォルトの名無しさん
05/02/04 00:56:07カスタムセーブファイルダイアログを作成にするにはどうすればよいでしょうか。
OpenFileDialog/SaveFileDialogを継承して作るのは無理そう。
0265デフォルトの名無しさん
05/02/04 01:21:440266デフォルトの名無しさん
05/02/04 01:24:170267デフォルトの名無しさん
05/02/04 03:37:250268デフォルトの名無しさん
05/02/04 09:32:280269200
05/02/04 13:27:40Cntl = Ctrl ですよね?
0270160
05/02/04 17:59:56F7おすと、コードがあらわれて
Cntoオスと、デザイナが現れて、
デザイナの詳細なバーチャルクラスは、
ソルートンウィンドウから、適宜探す。以上 がんがーら。
0271デフォルトの名無しさん
05/02/05 00:45:470272デフォルトの名無しさん
05/02/05 01:07:15できないよ。
利用者には、再頒布版を印すコしてもらえるようにお願いしてね。
0273デフォルトの名無しさん
05/02/05 01:24:12でしょうか?
DLL から .config を読み込ませようとしているのですが、
キーが見つからない、といってどうしても読み込んでくれません。
同じコード、同じ内容の .config で Exe ファイルから読み込めましたので
DLL の場合だと駄目なのかな、とおもいまして。
もし DLL では駄目な場合、DLL で外部の設定ファイルの扱いは
自分で XML を読み込むなり、独自に実装するしかないでしょうか?
アドバイスよろしくお願いします。
0274デフォルトの名無しさん
05/02/05 03:31:07ファイル保存のダイアログで、保存するファイルの種類変えると、ファイル名にくっついてる拡張子
がその場で変更されるのって、ごく当たり前の処理だと思うんだけど、.NETのダイアログだとこれが
できなくない?
0275デフォルトの名無しさん
05/02/05 03:44:12今でもできる?
0276デフォルトの名無しさん
05/02/05 17:53:08それはできるよん。
0277デフォルトの名無しさん
05/02/05 21:23:11プリントに関して入門者向けのサイトご紹介賜りたく存じます。
microfostのサイトはすでにCHKしました。
0278デフォルトの名無しさん
05/02/05 21:35:000280デフォルトの名無しさん
05/02/05 23:36:01ばれたか・・・〇rz..=3
0281デフォルトの名無しさん
05/02/05 23:39:56タブコントロールのプロパティ tabControl.SelectedTab は、
TabPage型しか返してくれず、
継承したクラスで追加した機能が使えず困ってます。
ヘタレな質問ですが、何かアドバイスをください。
0282デフォルトの名無しさん
05/02/05 23:43:50senderはToString以下5つぐらいしかメソッド・プロパティを扱えないから役に立たない?
それじゃイベントハンドラの共有もできないじゃないか。
このsenderはMenuItemだったりFormだったりForm1だったりTabPageだったりするんだから……
0283デフォルトの名無しさん
05/02/05 23:49:17void OnMenuItemClick( object sender, EventArgs e ) {
MenuItem mi = (MenuItem)sender;
 // 以下略
}
0284281
05/02/05 23:50:16た、たしかに。。
senderをどうにか使えばいいのですね。
だほぁぁー。。VB6房の俺にはオブジェクト指向はムズすぎる・・。
0286281
05/02/06 00:01:09キャストする部分で例外がでてしまう・・。
もっと基礎的な部分から出直してきます。
すみませんでした。
0287デフォルトの名無しさん
05/02/06 00:06:52その方法を教えてください。
0288デフォルトの名無しさん
05/02/06 00:51:55ようなスレッドではwhileループを使わないほうがいいのでしょうか?
すぐにCPUが100%になり困り果てています。
0289デフォルトの名無しさん
05/02/06 00:58:330290デフォルトの名無しさん
05/02/06 01:09:12応答無しになるのでコーディング悪いと思うのですがどうなんでしょうか?
0291デフォルトの名無しさん
05/02/06 01:12:23C#で作ったプログラムをVectorなどで配布する場合は、.net frameworkも添付すべきなのでしょうか?
なんせ重いモノなので・・・使うDLLだけで良いのでしょうか?
あと、C#のプログラムをLinux上で動かすmonoというソフトを聴いたのですが、
実際、どのようなくらい互換性があるのでしょうか?
先輩方、どうかご教授宜しくお願い致します。
0292デフォルトの名無しさん
05/02/06 01:23:02この設定って変える方法ありますか?
0293デフォルトの名無しさん
05/02/06 01:28:22まあその辺はバランス感覚。
ポーリング作業そのものにどれくらいかかるのか、ポーリング以外の負荷はどんなモノなのか。
どれくらいの分解能でポーリングしなければならないのか。
そもそもポーリング以外で解決できないのか。
ポーリングするなら結局ループは必須なんだし。
>>291
.NET Frameworkのインストールは必須なので、再頒布ファイルへのリンクを張っておくのが基本か。
ノータッチデプロイメントで.NETが入ってるかのチェックをしてもらって、
入ってなかったら.NET Framework付きインストーラをダウンロードして貰うとか。
Monoは.NET Framework互換のフリーなCLI実行環境であって、必ずしもLinux上って訳ではないよ。Windows版の環境もある。
まあ最新の情報は公式読め、というところだが
ttp://www.mono-project.com/about/index.html
1.0直前時点での互換性はここが割とまとまってるっぽい。
ttp://www.itmedia.co.jp/enterprise/articles/0406/24/news087.html
0294デフォルトの名無しさん
05/02/06 01:52:52senderやキャストでどうにかなることかな?
結論から言うと、”無理”でFA
0295デフォルトの名無しさん
05/02/06 01:56:58……ひょっとして例をそのまま受け取った勘違い?
実はTabControl辺りのsenderをTabPage1にキャストしちゃった?
senderはあくまで見た目の型と実際の型は違う場合があるって例だったんだが……。
0296デフォルトの名無しさん
05/02/06 02:48:05まさかとは思うが、メッセージのあるなしに関わらず
ループが動いてたりしないよな?
while( true )
{
if ( メッセージがある )
{
メッセージを処理;
}
}
こんなループだったら、利用率が100%になるのはアタリマエ
0297デフォルトの名無しさん
05/02/06 02:54:06Monitor.WaitとMonitor.Pulseを使ってメッセージ処理を同期させろ。
0298デフォルトの名無しさん
05/02/06 06:41:46senderがFormになっているとかいうオチは?
そうならFormのControlsから該当のコントロール引っ張り出すとか
色々方法はありそう。
ちなみに
if (sender is MenuItem) { MenuItem mi = (MenuItem) sender; }
とか
MenuItem mi = sender as MenuItem;
とかやっておけば例外出さずに済むかも。
ただし後者はsenderがMenuItemクラス(あるいはその派生)じゃなければ
nullが返るからチェックの手間が増えることがあることも注意。
0299デフォルトの名無しさん
05/02/06 09:48:120300デフォルトの名無しさん
05/02/06 09:55:16キャストの正否を確かめるのはasが一番早い。
0301デフォルトの名無しさん
05/02/06 10:35:20例えばBSPlayerというソフトの再生リストを作ろうと思ったとき、このソフトはExe本体へのファイルドロップだと
再生に適応してくれないんですが、ウィンドウへのドロップだと再生してくれます。
GetProcessesByNameとか使ってみてるんですが、ウィンドウが前面に出るだけで再生が始まりません。
何か方法はないでしょうか。
0302デフォルトの名無しさん
05/02/06 10:52:04ネットワークゲームなどをやる場合やMessengerなどもポートを空けないでファイルを送受信している訳ですが、
ポートを空けないでファイルのやりとりをする方法はあるのでしょうか?
もしくは、C#上からポートを空けることは可能でしょうか?
0303デフォルトの名無しさん
05/02/06 10:53:27http://tmp4.2ch.net/test/read.cgi/download/1107615976/
犯罪予告キターーーーーーーー(・∀・)ーーーーーーーーー!!
0304デフォルトの名無しさん
05/02/06 11:23:47ある文字列をある矩形に描いたとき、そのうちの一部の文字を色を変えて描画する際の位置はどのようにしたらいいんでしょうか?
いま下のようにして試してみたのdせうが、2ピクセルほど右に色つき文字がずれてしまいます。
FormatFlagあたりがくさいんでしょうか?
Graphics g = Graphics.FromImage(m_buffer);
g.FillRectangle(whBrsh, ClientRectangle);
SizeF size = g.MeasureString(sb.ToString(), font, 500);
Rectangle rect = new Rectangle(0, 0, (int)size.Width, (int)size.Height);
StringFormat format = new StringFormat();
//draw string
g.DrawRectangle(pen, rect);
g.DrawString(sb.ToString(), font, brbrsh, rect, format);
CharacterRange[] crArray = new CharacterRange[1];
for (int i = 0; i < sb.ToString().Length; i++)
{
crArray[0] = new CharacterRange(i, 1);
format.SetMeasurableCharacterRanges(crArray);
Region[] rgns = g.MeasureCharacterRanges(sb.ToString(), font, rect, format);
Rectangle crect = RectFToRect(rgns[0].GetBounds(g));
g.DrawRectangle(redpen, crect);
}
for (int i = 0; i < sb.ToString().Length; i++)
{
crArray[0] = new CharacterRange(i, 1);
format.SetMeasurableCharacterRanges(crArray);
Region[] rgns = g.MeasureCharacterRanges(sb.ToString(), font, rect, format);
Rectangle crect = RectFToRect(rgns[0].GetBounds(g));
g.DrawString(sb.ToString().Substring(i, 1), font, brushes[i % 3], crect, format);
}
0305デフォルトの名無しさん
05/02/06 12:11:41追加-新しい項目の追加-Windowsフォームとして、新しいフォームを
追加しようとすると、
'C:\Program Files\Microsoft Visual Studio.NET 2003\VC#\CSharpProjectItems\LocalProjectItems\..\CSharpAddWinFormWiz.vsz'ウィザードを実行できません。
と表示され追加できなくなってしまいました。
これを回避する方法を御存知の方、教えていただけないでしょうか?
0306デフォルトの名無しさん
05/02/06 13:06:005時間悩む前に、
3時間で2003を再インストしてください。m(_ _)m
0307デフォルトの名無しさん
05/02/06 14:36:26実現したいことは、スクロールバーのような機能をボタンに持たせる事です。
今、フォームに等間隔に3個の画像を配置しています。実際にフォームを表示
した時にはフォーム上には画像が1個だけ表示されていて、他の2個は見切れ
させている状態です。AutoScrollはfalseにしているので、スクロールバーは
表示させていません。このフォームにボタンを用意して、このボタンを押す度に、
スクロールバーをある程度移動させたのと同じといった効果を持たせたいのです。
が、これがどういった風にコードを記述したらいいのか分かりません。
実現方をご存知の方がいましたら教えてください。よろしくお願いします。
0308デフォルトの名無しさん
05/02/06 14:40:333つのPictureBox?
ならボタンが押されるごとにそれぞれの座標をずらしていけば良いだけだけど。
0309デフォルトの名無しさん
05/02/06 15:38:55書き換えるとどうなるのですか?
private void ListenStart()
{
TcpListener listener = new TcpListener( IPAddress.Any, 10000);
listener.Start();
bAlive = true;
while( bAlive){
if( listener.Pending() == true){
TcpClient tcp = listener.AcceptTcpClient();
System.Diagnostics.Debug.Write( "接続!!");
}
Thread.Sleep( 100);
}
}
0310デフォルトの名無しさん
05/02/06 16:05:56Pendingを使うのは、接続を待たずに何かやりたい場合だけ。
whileループを使って接続を待つのなら、Pendingなんか使わずに
AcceptTcpClientをひたすら実行してればいいだけ。
これなら、接続があるまでスレッドが止まるから、
CPUを無駄にまわさない。
アホですか?
0311デフォルトの名無しさん
05/02/06 16:36:53Σ(゚Д゚ )その発想が自分にはなかったです。
ありがとうございます!!
0312デフォルトの名無しさん
05/02/06 16:48:40デフォルトでポートは開いてるし、
閉じてるって事は他のファイアウォールソフトで閉じられてるって事なんだから、
利用者に***番ポートを開ける必要があるとお知らせすればいい。
閉じてるポートを勝手に開けられちゃたまらん。
0313デフォルトの名無しさん
05/02/06 18:40:09あ、けど、実際私の環境だとポートはしまっているのですが、
ネトゲーなどは普通にできるんです。
どうなってるのかなぁって・・・
本当にすみません。
0314デフォルトの名無しさん
05/02/06 18:55:53ポートは向こうからつないでくるのに必要でこちらから接続するには関係ないぞ。基本的に
0315デフォルトの名無しさん
05/02/06 18:57:59必要だよ。起点を指定する必要がないというだけで
0316デフォルトの名無しさん
05/02/06 20:10:03必要だと思われw
0317デフォルトの名無しさん
05/02/06 21:00:31゚・ 。 ・。
チャーハン! 。・゚・⌒)
チャーハン! _ _ o━ヽニニフ ))
(゚∀゚ )彡。・゚。・⌒)
⊂ o━ヽニニフ )
( ⌒) ≡=−
し'c ≡=−
スレですね
0318デフォルトの名無しさん
05/02/06 21:01:17[STAThread]
static void Main()
{
TestForm c = new TestForm();
c.TopMost = true;
c.ShowDialog();
のように、アプリケーションのメイン エントリ ポイント?で
別の From を表示させようとしているのですが、
上記のようにした場合、フォーム自体は表示してくるのですが
そのフォームがアクティブになりません。
これをアクティブにするにはどうしたらよいでしょうか?
Main でわざわざ別のフォームを表示させるのは、アプリケーション起動時に
あるファイルの存在の有無を調べて存在しない場合、そのファイルを
作成するフォームを表示させたいからです。そのファイルが存在した場合
その画面の表示を行なわずに自分自身を起動してきたいからです。
よろしくお願いします。
0319デフォルトの名無しさん
05/02/06 21:02:24WebBrowserコントロールからPOSTされるデータを取得したいのですが、どうすればいいのでしょうか?
BeforeNavigate2イベントでe.postDataをstringにキャストしようとしたのですが、できませんでした。
0320デフォルトの名無しさん
05/02/06 21:27:53バイト配列
0321デフォルトの名無しさん
05/02/06 21:34:01必要ないだろ??
0322デフォルトの名無しさん
05/02/06 21:36:12ありがとう。
System.Byte[] bytesPostData = (System.Byte[])e.postData;
とすればいいんですよね?
この場合、bytesPostDataをstringにするにはどうすればいいんでしょうか?
0323デフォルトの名無しさん
05/02/06 21:38:13私の所では普通にアクティブになるが、
まあVisibleChangedでSetForegroundWindowをしたらどうだ。
0324315
05/02/06 21:56:35わるい。もしかしたら必要ないかも知れん。
家に帰ったら Socket.LocalEndPoint の Port に何が入るか調べてみるよ。
0325デフォルトの名無しさん
05/02/06 22:10:32SysSystem.Text.Encoding.GetEncoding(932).GetString(bytesPostData);
ってやれば任意のエンコーディングで文字列が取得できるからためしてちょ
932とかは文字コードの指定方式でたしか””で囲まれた方法で指定もできたはず。
がんばってみてちょ。
ところで、C++のアンマネージドにByte型の配列を渡す場合のサンプルって
どこかいいとこ知りませんか?
0326デフォルトの名無しさん
05/02/06 22:23:07> ところで、C++のアンマネージドにByte型の配列を渡す場合
普通にbyte[]を渡してやれば良いんだが。
渡した先で書き換えられる場合は[In, Out]の2つの属性をつける。
0327318
05/02/06 22:28:06アクティブになりますか…。私の所では全面に表示されますがアクティブに
なりません orz.
SetForegroundWindow も考えましたが、呼び出し先の Form は
自身の Exe から呼ばれるので同一プロセスになりますよね?
どうやって SetForegroundWindow すればよいのでしょう?
すみませんがアドバイス頂けるとうれしいです。
0328デフォルトの名無しさん
05/02/06 22:30:58public static extern int receive(
IntPtr handle,
[MarshalAs(UnmanagedType.LPArray)] byte[] buffer ,
);
byte[] byteArray = new byteArray[1000];
receive(handle,buffer);
System.Text.Encoding.GetEncoding(932).GetString(byteArray);
これでいいみたいだけどfixedはかけたほうがいいのでしょうか?
0329デフォルトの名無しさん
05/02/06 22:45:40普通に自身のハンドルをSetForegroundWindowする。
>>328
固定はマーシャラが上手い事やってくれるから別に要らない。
Out属性が無くてもbyte[]の内容が書き変わってる?
0330デフォルトの名無しさん
05/02/06 22:53:060331318
05/02/06 23:34:22むは、そういう事ですかー。とやってみようとしましたが、
static void Main()
{
の中で処理する必要があるのですが、this.Handle のように、
自身のハンドルを取得する事ができません。
何度もすみませんが、上記状態で自身のハンドルはどのように
取得すればよいのでしょうか? よろしくお願いします。
0332デフォルトの名無しさん
05/02/06 23:35:150333デフォルトの名無しさん
05/02/06 23:44:45c.Handle
0334318
05/02/06 23:52:41c.Handle は気付きませんでした OTL
ばっちりできました。ありがとうございました。
0335デフォルトの名無しさん
05/02/07 06:08:23変数だとstaticにする意味は分かるんですが・・・
例えば、インスタンス変数をstaticにした場合、
そいつのメソッドはどういう扱いになるんでしょう?
0336デフォルトの名無しさん
05/02/07 06:53:54そのメソッドの内部で this を使用しないのなら、
そのメソッドは static になれる。
具体的には System.Math クラスなど。
FxCop を導入すれば機械的に調べることができる。
> static インスタンス変数のメソッド
基本的には、インスタンスの所在によって、
そのインタフェイスが変化することはない、と考えよ。
0337デフォルトの名無しさん
05/02/07 07:31:460338デフォルトの名無しさん
05/02/07 07:33:490339デフォルトの名無しさん
05/02/07 07:53:04なんか対策ないのでしょうか?
シリアルナンバーを入れるようにしたんですが、半日でシリアルが掲示板に晒されました・・・
0340デフォルトの名無しさん
05/02/07 08:01:14http://www.atmarkit.co.jp/fdotnet/tools/dotfuscator/dotfuscator_01.html
こことか読もう。ただ、根本的な対策は難しいかな。
シリアル関係のロジックのみCで作るとか。
0341デフォルトの名無しさん
05/02/07 08:24:41あ、ソレは既に使っています。
ただ、製品版で暗号化までしないと余り意味がないんですよね・・・
製品版が商用利用可能なら製品版を購入しようかとも思っています。
一応、以前C++をかじったことがあるので出来ると云えばできるのですが、
他の部分をC#で作る為に、全体を難読化した方が手っ取り早いかなっと・・・
有り難う御座います。
0342340
05/02/07 09:13:38既に使ってるのか。
俺は製品版使ったことがないからわらかないや。個人で買うには高すぎて買えし。
MSがVSに同じような機能をつけてくれればいいのに。
丸見えになるのは本当にどうにかならないものか。
0343デフォルトの名無しさん
05/02/07 10:10:14友達のスーパーハッカーに頼めばこれぐらい朝飯前だぞwwwwww
ildasmで逆アセンブルする
↓
ILコードを読んでシリアルナンバー関連のコードを探す
↓
ちょこっと書き換える
↓
書き換えたILをコンパイルする
↓
(゚Д゚)ウマー
0344デフォルトの名無しさん
05/02/07 10:19:51まぁ限度があるしパフォーマンスも落ちるだろうけど。
0345デフォルトの名無しさん
05/02/07 11:01:24ミ∠_)
∧_∧/ \\
(,, ・∀/) | |
( つつ | |
Y /ノ 人
/ ) < >_∧∩
_/し' //. V`Д´)/
(_フ彡 / ←>>343
0346322
05/02/07 12:50:00ありがとうございます。
そのようにしてEUC-JPでエンコードされたページでテストしてみましたが、日本語が化けてしまいます。
(まだShift_JISなどではテストしていません)
対処法を教えてください。
0347デフォルトの名無しさん
05/02/07 13:12:20>>325を読んだりテストしてみたりしている間に、ドキュメント等で
Encoding.GetEncoding の説明を見ようという気は全く起きなかった?
0348デフォルトの名無しさん
05/02/07 13:14:28ドキュメントのcharsetのEncoding (GetEncodingメソッドは文字列もOKだ) を使って
System.Web.HttpUtility.UrlDecodeしな。
0349デフォルトの名無しさん
05/02/07 15:27:07いや、それはやりました。
>>347
UTF-8にしてもEUC-JPにしてもだめだったんだすけど。。。
0350デフォルトの名無しさん
05/02/07 15:46:340351デフォルトの名無しさん
05/02/07 15:59:400352デフォルトの名無しさん
05/02/07 16:42:19System.Byte[] bytesPostData = (System.Byte[])e.postData;
string strData = System.Web.HttpUtility.UrlDecode(System.Text.Encoding.GetEncoding("EUC-JP").GetString(bytesPostData));
これです。
EUC-JPをSHIFT_JISやUTF-8にしてもだめでした。
(自動変数では豆腐に、シフトJISでファイルに書き込んだらに?になる)
0353デフォルトの名無しさん
05/02/07 16:44:40label1.Text = Encoding.ASCII.GetString(bytes);
label2.Text = HttpUtility.UrlDecode(bytes, Encoding.GetEncoding("shift-jis"));
0354デフォルトの名無しさん
05/02/07 16:57:42> ドキュメントのcharsetのEncoding (GetEncodingメソッドは文字列もOKだ) を使って
も。
0355デフォルトの名無しさん
05/02/07 17:46:28>label2.Text = HttpUtility.UrlDecode(bytes, Encoding.GetEncoding("shift-jis"));
これは常にshift-jisでいいんですか?
0356デフォルトの名無しさん
05/02/07 17:50:10> ドキュメントのcharsetのEncoding (GetEncodingメソッドは文字列もOKだ) を使って
は無視かよ。
0357341
05/02/07 19:32:02やはり根本的解決法はないですか・・・
そうですね、折角VS2003なのでシリアル関係の部分だけC++で書いてみることにします。
本当に有り難う御座いました。
0358デフォルトの名無しさん
05/02/07 19:34:070359デフォルトの名無しさん
05/02/07 20:08:25が、
Attempted to read or write protected memory. This is often an indication that other memory has been corrupted.
を返しました。
AccessViolationException
どうすればよいのでしょうか。
str[0]="34";
str[1]="復水器34";
0360デフォルトの名無しさん
05/02/07 20:09:01すいません。見てませんでした。
ありがとうございました。
0361デフォルトの名無しさん
05/02/07 20:36:40buffers[0].Styleがあり得ない数字を指してるか、
既に登録済みか、
をまず疑うかな。
ところでCIMMってなに?
0362359
05/02/07 20:39:04レスさんくす。
IMMは、すでに登録済みの単語でもばぐらずに重複登録を自動で回避できるように設計されているみたい。
styleがありえない数字・・・そんなことってあるんですか?
今まで、うまくいってたんだけど、急なことで、びびってます。
CIMMは、imm.dllAPIが有するメソッドや、それらメソッドを容易に利用できるstatic methodを含む自作クラスです。
0363322
05/02/07 20:45:16>>356氏の方法というのはWebBrowserのcharsetを取得して
それをGetEncodingに渡して、UrlDecodeをするということでしょうか?
WebBrowserにそれらしきプロパティが見つからなかったもので。
0364デフォルトの名無しさん
05/02/07 20:50:23検索能力0か?
0365デフォルトの名無しさん
05/02/07 20:52:06ドキュメントの、っていってるだろが。
0366デフォルトの名無しさん
05/02/07 21:36:14ドキュメントというのは何を意味しているのでしょうか?
0367デフォルトの名無しさん
05/02/07 21:46:210368359
05/02/07 21:49:24>>>>359
>>buffers[0].Styleがあり得ない数字を指してるか、
>>既に登録済みか、
>>をまず疑うかな。
>>
buffers[0].Styleは正常値(名詞)
登録済みではない。
str1が"34"の時だけ、なぜかエラー
Attempted to read or write protected memory. This is often an indication that other memory has been corrupted
0369デフォルトの名無しさん
05/02/07 21:56:19すいません。
Documentをどのようにすればいいんでしょうか?
0370359
05/02/07 21:58:24なんでだよ、ぐすん。
C#とか関係ないよ、IMEだよ
0371デフォルトの名無しさん
05/02/07 22:00:19いまさらだが。
シリアルナンバーのMD5ハッシュとかだけをコード埋め込みにして、
ユーザーの入力のハッシュ値と見比べればいいんでないかい?
0372デフォルトの名無しさん
05/02/07 22:02:37今事件のことTVのニュースでやってるぞ!!!
0373359
05/02/07 22:03:40広告かよ
0374デフォルトの名無しさん
05/02/07 22:07:36うん、もうコーディングでどうこうできるエラーじゃないと思う。
せいぜい例外を捕まえてユーザにメッセージを出しとくぐらいだね。
//私の環境(IMEはATOK15)で同様の事をやっても例外は投げられないし。
>>371
ハッシュ演算部分をディスアセンブルすれば一目瞭然。
0375デフォルトの名無しさん
05/02/07 22:31:05お前バカだろ。
ハッシュコードがわかったって、そのハッシュコードを生成できる
元のデータを知る方法はこの世に存在しないんだよ。
0376デフォルトの名無しさん
05/02/07 22:34:16自分の入力した値が生成するMD5に埋め込みなおしておく。
0377デフォルトの名無しさん
05/02/07 22:34:57・パスワードを埋め込むのではなく、パスワードのハッシュを埋め込む
・パスワードを比較するのではなく、パスワードのハッシュを比較する
・プログラムの.exeファイル自体のハッシュコードを記録しておき、
実行時に.exeファイルのハッシュコードを計算し、改竄されていたら実行しない
以上。
0378デフォルトの名無しさん
05/02/07 22:36:33埋め込まれたハッシュを書き換えれば……。
0379デフォルトの名無しさん
05/02/07 22:37:31やっぱアホだなお前。
改竄前提なら、C++で書いたってチートされて終わりですよ
0380デフォルトの名無しさん
05/02/07 22:39:27そういうのを突き詰めていくと、難読化だって何の解決にもなってないんだがな。
ダイジェスト認証と、プログラム改竄チェックを組み合わせれば
難読化の必要すらない。
0381370
05/02/07 22:57:03僕のソフトは、あらかじめ偽シリアルをネットにさりげなく流しておいて、
正規の手順で手に入れたシリアル以外を入力したと同時に、
あぼーんするように配布してるよ。
今のところ、表立った苦情はない。あたりまえか・・・w。
0382デフォルトの名無しさん
05/02/07 23:24:55WinGr00ve事件
0383デフォルトの名無しさん
05/02/07 23:25:460384370
05/02/07 23:38:56マイドキュのファイル焼失とか、そのくらい。
0385デフォルトの名無しさん
05/02/07 23:41:07google Deskbarみたいにタスクバーにアプリを埋め込みたいんですが可能ですか?
ぐぐったんですけど見つけられません
タスクトレイばかり引っかかってしまいます
ヒントをキボンヌ orz
0386370
05/02/07 23:44:37IEを逆アセンブリしろ。
0387デフォルトの名無しさん
05/02/07 23:54:26これのことか?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_adv/bands.asp
0388デフォルトの名無しさん
05/02/07 23:56:40http://www.codeproject.com/csharp/dotnetbandobjects.asp
0389デフォルトの名無しさん
05/02/08 00:32:27範囲が色突きで反転すると思いますが、あれを不要なので無効化したいのですが
SendMessage(richTextBox1.handle, EM_SETSEL, -1, -1)とやっても
色が変わってしまった困ってるのですがうまい方法ご存知ないでしょうか?
最後にもう1つ、<aaa>test</aaa>という文字列をRegexをしようして
string[0] = "<aaa>" string[1] = "test" string[2] = "</aaa>"
という風に分割することのできる正規表現を教えてくれませんか?Perlの正規
表現でやると括弧がとれたはちゃめちゃな産物ができて困っています。
0390デフォルトの名無しさん
05/02/08 00:42:46現在ProjectAから、ProjectDLLで作ったDLLを使用するとして、
DLL側でProjectDLL自身のアセンブリのリソースを使用したいです。
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();
System.IO.Stream stream;
stream = assembly.GetManifestResourceStream("ProjectDLL.hoge.txt");
このようなコードなのですが、間違いないでしょうか?
リソースにしたいファイルは「埋め込まれたりソース」にしております。
しかし、いつもNullが返って来る状態です。
DLLにしてしまうとデバッグなどが大変でして・・・どうかご教授ください。
0391デフォルトの名無しさん
05/02/08 00:46:22君の文章が一番はちゃめちゃだな。
> 範囲が色突きで反転すると思いますが、あれを不要なので無効化したいのですが
要するに選択範囲をなくすって事? Cutメソッドを使っても実際にはカットしない状態にしたいと?
ならSelectionLength = 0;だが。
> 最後にもう1つ、<aaa>test</aaa>という文字列をRegexをしようして
なんとなく.NET Frameworkにおける正規表現ライブラリの使い方を分かってないような気がするが……。
System.Text.RegularExpressions.Match match = System.Text.RegularExpressions.Regex.Match("<aaa>test</aaa>", "(<[^>]+>)([^<]+)(</[^>]+>)");
// match.Groups[0].Value == "<aaa>test</aaa>"
// match.Groups[1].Value == "<aaa>"
// match.Groups[2].Value == "test"
// match.Groups[3].Value == "</aaa>"
0392デフォルトの名無しさん
05/02/08 01:00:54this.richTextBox1.SelectAll();
this.richTextBox1.SelectionColor = Color.Black;
this.richTextBox1.SelectionLength = 0;
これなんてやるとピカピカ光ってちらつく以上のすごいものが見れてしまいます。
WM_PAINTで抑制すれば収集つくでしょうか?ResumeLayout SuspendLayout
を使用しましたが無意味なようでした。
0393デフォルトの名無しさん
05/02/08 01:12:57リソースはアセンブリに埋め込むモノってのは当然だよね?
アセンブリとは要するに.exeまたは.dllである、と言うのも分かるよね?
> System.Reflection.Assembly assembly = System.Reflection.Assembly.GetEntryAssembly();
エントリポイントがあるアセンブリを取得してるって事は、
実行時にエントリポイントとなるMainメソッドを含むアセンブリを取得するって事で、
通常プロセスを開始した.exeのアセンブリを指すよね?
リソースを持ってる、.dllのアセンブリを取得しないといけないのに。
typeof(*.dllで定義してる何らかのクラス*).Assemblyとやると.dllのAssemblyインスタンスを簡単に取得できる。
> stream = assembly.GetManifestResourceStream("ProjectDLL.hoge.txt");
ProjectDLLってのは、さてどこから出てきたのかな?
名前空間がって言ったって、一つのアセンブリ、一つのファイルに複数の名前空間を持たせる事もできるよ?
リソースファイルの名前が実際にProjectDLL.hoge.txtだったら正しいけれど、多分単にhoge.txtでしょ。
GetManifestResourceStreamメソッドの解説に
> type の完全名が "MyNameSpace.MyClasses" で、name が "Net" の場合、
> GetManifestResourceStream は、MyNameSpace.Net という名前のリソースを検索します。
って書いてるけど、オーバーロードを良く読むとこれはGetManifestResourceStream(Type, string)限定の解説なんだよね。
0395390
05/02/08 01:27:31ありがとうございます。リソースを取得することができました(^^;
ファイル名は単にhoge.txtですね。
ちなみにProjectDLLはプロジェクト名です。
いろいろ検索して探していたら、リソースの取得は
stream = assembly.GetManifestResourceStream("<プロジェクト名>.<ファイル名>");
で行うと書いてあったので、そちらを参考にしていました。
まだまだAssemblyあたりになると弱いですね。。。
最後の文章が理解できなかったり(^^;
ヘルプをもうちょっと見てみたいと思います。ありがとうございました。
0396デフォルトの名無しさん
05/02/08 01:30:010397335
05/02/08 02:52:37レスありです!
> そのメソッドの内部で this を使用しないのなら、
> そのメソッドは static になれる。
言い変えれば、thisを使用しないのなら
staticにすべき、ってこと?
それともしたければしてもいいよ、ってこと?
> FxCop を導入すれば機械的に調べることができる。
ほぉ。ちと試してみます。
> 基本的には、インスタンスの所在によって、
> そのインタフェイスが変化することはない、と考えよ。
すいません、書き方が悪かったです。
知りたかったのは、インスタンスをstaticにして呼び出したメソッドは
static扱いになってしまうのでしょうか?
共通部品の中で、あるクラスのインスタンスを(private)staticで定義してまして、
そのインスタンスのメンバを呼んで処理を行うメソッドを実装してるんですが、
そのメソッドを別々な画面から同時に呼ぶとどうなるのかな、と思いまして。
分かり難くくてすいません。。
0398デフォルトの名無しさん
05/02/08 10:06:36thisを使わないからstaticにするものではない(staticにすることはできる)
インスタンスがstatictoメソッドのstaticは別物です。
>別々な画面から同時に呼ぶと
おそらく"同時に"は呼んでません。同時かどうかはスレッドの問題だし
複数の場所からというならそれはstaticなインスタンスが複数の場所から扱われるので片一方の変更が影響するということです
class NankaKurasu{
class StaticNaKurasu{
static int s_value;
int m_value;
static void ChangeValue(){s_value++}
public void ChangeValue(){m_value++;}}
static StaticNaKurasu s_staticKurasu=ne=new StaticNaKurasu();
void main(){
StaticNaKurass stackStaticKurasu=new StaticNaKurasu();
s_staticKurasu.ChangeValue();
stackStatickKurasu.ChangeValue();
}
void HokanoMethod(){
StaticNaKurass stackStaticKurasu=new StaticNaKurasu();
s_staticKurasu.ChangeValue();
stackStatickKurasu.ChangeValue();
}
}
でおのおの値見て見れ。コンパイルと押してないので動くか知らん。
0399デフォルトの名無しさん
05/02/08 10:07:43二変更
0400デフォルトの名無しさん
05/02/08 11:37:230401369
05/02/08 15:38:12>>367
できました!
mshtml.HTMLDocument myDocument = (mshtml.HTMLDocument)axBrowser.Document;
strCharset = myDocument.charset;
ということだったんですね!
本当にありがとうございました(゚∀゚)!
0402336
05/02/08 18:20:00一応、補足しておくと…
ここでいう this とは、例えばインスタンスフィールドへのアクセスを含みます。
class Item
{
private int value;
public void Hoge()
{
value = 100; // this.value = 100; と同義。
}
}
上記 Hoge() メソッドは static には成り得ない。
static メソッドは this にはアクセスできないため。
(Hoge() はステートを持つ。)
「this にアクセスしないのであれば、
それは(実装・設計の両面から見て)静的メソッドであるはずだ」という発想。
インスタンスが static フィールドであったとしても、
その(非 static)メソッドは、やはり自身へのアクセスを持ち続けるので、
「static 扱い」とはいえない。
メソッド(の呼び出し)はインスタンスの状態を変更する“可能性”がある。
クラスの使用者から見て、メソッドが static であるか否かは重要な意味を持つので注意。
0403デフォルトの名無しさん
05/02/08 18:42:02こちらのサンプル「FtpClient.exe」について、
ユーザー認証するサイトからのダウンロードは問題ありませんが、
anonymousログインした場合、無反応になるのですが、どうしてでしょうか?
0404デフォルトの名無しさん
05/02/08 21:20:05非常に初歩的かもしれない質問で申し訳ないのですが、
普段は画面右下のところに駐屯していて、設定したキーを押すとフォームが現れて色々操作
するってのを作りたいのですが、
他のソフトなどを操作している時でも、プログラムがキー操作を受け取ることは可能なのでしょうか?
0405デフォルトの名無しさん
05/02/08 21:22:10可能です。
0406デフォルトの名無しさん
05/02/08 21:22:51特殊キーは可能でふ、Windowsとかアプリケーションキーとか
のコンビネーションか、若しくは、デスクトップでのイベント
0407デフォルトの名無しさん
05/02/08 21:24:01駐屯じゃなくて常駐。
画面右下(というかタスクバーの端)のアイコン群部分はタスクトレイ。
キー入力を受け取るのは無理。
Win32APIのRegisterHotKeyでホットキーを登録する必要がある。
0408404エラーw
05/02/08 21:24:25即レス激しくThx!
例えば、Shift+Ctr+Tとかって可能ですか?
0409404エラーw
05/02/08 21:25:39キー入力を受け付けるのは無理なんですか?
世の中にはキーロガーみたいなものがあるので、意外に簡単にできるものかとおもってました。
0410デフォルトの名無しさん
05/02/08 21:34:59簡単だよ。
0411デフォルトの名無しさん
05/02/08 21:36:140412デフォルトの名無しさん
05/02/08 21:42:42なんで?
0413404エラーw
05/02/08 22:02:06え〜っと、結局どうなんでしょう?
キーロガーみたいに入力されたキーを監視していて、例えば指定されたキーが押されたら
ソフトを起動するとか、そういうことも無理ではない気がするのですが・・・
特に.netでは無理というのが非常に気になります。
0414デフォルトの名無しさん
05/02/08 22:11:250415デフォルトの名無しさん
05/02/08 22:44:33SetWindowsHookEx(WH_KEYBOARD_LL)
UnHookWindowsHookEx()
で終わりじゃんか。
0416デフォルトの名無しさん
05/02/08 22:51:21ListViewにアイコンを複数表示したり、ボタンを入れたりってことは無理でしょうか?
ListView純正でできなかったとして、ListViewを継承して自力でなんとかするというのは無理なんでしょうか?
0417デフォルトの名無しさん
05/02/08 23:34:14それC#だと無理ぢゃない?
0418デフォルトの名無しさん
05/02/08 23:36:38C#でもdelegateでWindowProcが書けるから実はサブクラス化なんかもできるんだけど、
んでも>>416が言うように簡単にはできないなぁ。
普通のUserControlとして自前で実装した方が何かと楽だと思う。
0419デフォルトの名無しさん
05/02/08 23:45:54詳しく教えていただきたい。
普通にやるとGCでアドレス換わるみたく
うまくいきませんでした。
WndProcのOverrideとかじゃなく気楽にサブクラス化したい
0420デフォルトの名無しさん
05/02/08 23:53:33http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vclrffixed.asp
0421デフォルトの名無しさん
05/02/08 23:57:34特に特別なことはしてません。
delegate自体への参照を保持していなくて、開放されちゃったりしいませんか?
MyWin32ApiHelper.SetWindowLongAsWndProc(hWnd, GWL_WNDPROC, new delegate hoge( foo.bar ) ); とかして。
0422デフォルトの名無しさん
05/02/09 02:02:48aaaaaaa
bbbbb
cccc
などとあった場合、描画された最後の文字がWndow左端から数えて何ピクセル目
もしくは(x,y)座標を知るようなことができるのでしょうか?
0423335
05/02/09 02:09:30>>398
やはり「片一方の変更が影響する」ということですね。
>>402
>「this にアクセスしないのであれば、
>それは(実装・設計の両面から見て)静的メソッドであるはずだ」という発想。
なんかすげー分かったような気がします!なるほど〜
0424デフォルトの名無しさん
05/02/09 03:55:03C#ではどうやるんですか教えて偉い人
0425デフォルトの名無しさん
05/02/09 04:16:24http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfsystemdrawinggraphicsclassmeasurestringtopic.asp
これが使えるかな?
0426デフォルトの名無しさん
05/02/09 05:10:42.NETじゃグローバルフックは無理なのよ。
0427デフォルトの名無しさん
05/02/09 05:19:460428デフォルトの名無しさん
05/02/09 08:17:20試してないんで悪いが、これで行けないのか?
ttp://support.microsoft.com/default.aspx?scid=kb;ja;318804
0429デフォルトの名無しさん
05/02/09 08:50:03無理だよ。
常にフックできるのはグローバルフックのみ。
.NETで出来るのはスレッドフックのみ。
その例のマウスフックだって、自身のウィンドウ上にカーソルが来てる時しか監視できない。
WH_KEYBOARDなら自身のウィンドウがアクティブな時だけ。
ついでにWH_KEYBOARD_LLはグローバルフック専用。
0430デフォルトの名無しさん
05/02/09 09:40:460431デフォルトの名無しさん
05/02/09 10:01:530432デフォルトの名無しさん
05/02/09 10:15:53>>88さんが、やらない方がいいと仰っていますが、レジストリ以外でアプリケーションの設定を保存するには、
iniファイルで保存するという見解で良いのでしょうか?
よろしくお願いします。
0433デフォルトの名無しさん
05/02/09 10:38:540434デフォルトの名無しさん
05/02/09 11:05:03やっちゃいけないんだろうか…。特に問題はおきてないんですが…。
0435デフォルトの名無しさん
05/02/09 13:20:25ユーザー毎に設定できる上にレジストリも汚れないので重宝してます。
xxx.exe.configは動作環境の定義+簡易リソース的なファイルだから、
アプリで書き出すと必要な情報を壊してしまいそうで怖いです。
0436デフォルトの名無しさん
05/02/09 13:27:31そうすると今度は単純なXCOPYで環境の移行ができなくなる罠。
0437デフォルトの名無しさん
05/02/09 13:36:42だから「画面の座標や大きさといった状態」といったのですよ。
移行の時は持っていかないのが原則。
そうする必要のあるデータは独自にxmlなどのファイルを作るということで。
0438デフォルトの名無しさん
05/02/09 14:36:47同じく編集するにはどうしたらいいのですか?
0439デフォルトの名無しさん
05/02/09 14:40:290440デフォルトの名無しさん
05/02/09 14:46:080441デフォルトの名無しさん
05/02/09 17:09:48ってことは同人ゲーとして売っても良いの?
0442デフォルトの名無しさん
05/02/09 18:03:00カレンダーを表示させたあと、別のコントロールをマウスでクリックして
そのコントロールへフォーカスを移動します。
その後、TAB キーで先程の DateTimePicker へフォーカスを移動すると
2005/02/09 の部分にフォーカスが移動せず、どうやら ↓ボタンが
フォーカスを取得しているようです(F4でカレンダーが表示しましたので)
DateTimePicker の yyyy の部分にフォーカスをあてる方法があれば
教えてください。
0443デフォルトの名無しさん
05/02/09 18:28:25オブジェクト指向を使用している以上、出来ることはリファレンスに全て書いてある
逆に言うと、リファレンスに書いていないことは出来ない
「これこれこんな裏業を使えばできます」っていう答えを期待しているのかも試練が、
そんなものあったとしてもロクなもんじゃない
>>442
DateTimePicker に該当機能が無ければ、自分で自作したほうが早いっスよ
0444デフォルトの名無しさん
05/02/09 21:49:590445デフォルトの名無しさん
05/02/09 22:08:350446デフォルトの名無しさん
05/02/09 22:13:41この意味がわかりませんが。
0448デフォルトの名無しさん
05/02/09 22:26:15M$はそんなこと考えていないよ、
オブジェクトとか関係ないw
0449デフォルトの名無しさん
05/02/09 22:28:04でしょうか?Paintメソッドの中身やUnManagedMethodの呼び出し部分を見ましたが
どうにもそのような機構になってないように思います。
1Mのデータを読み込み、可視範囲のみを描画するRichTextExを自作している
のですが、この辺りの情報について詳しい方いらっしゃいませんか?
0450デフォルトの名無しさん
05/02/09 22:38:33C#というかWindowsの描画の問題だが。
0451デフォルトの名無しさん
05/02/09 22:41:56意味がよくわかりませんが、”すべてを描画しないで必要な部分だけ描画するようにする必要があり”ます。
0452デフォルトの名無しさん
05/02/09 22:45:42考えたことも無かったため全然閃かなくて助かります。
0453デフォルトの名無しさん
05/02/09 23:18:44そこらへんはC#によるプログラミングウィンドウズに詳しい描画関係はほぼ網羅されてマフ
0454デフォルトの名無しさん
05/02/10 00:34:280455デフォルトの名無しさん
05/02/10 00:40:04class A {}
class B : A {}
void C(ref A) {}
B b = new B();
A a = (A)b;
C(ref a);
ということ?
0456デフォルトの名無しさん
05/02/10 01:25:010457デフォルトの名無しさん
05/02/10 02:43:54void moge( ref tree ){}
これです。
ツリービュー自体を渡すときに(TreeView)と付けて明示的にする必要があるんですが、
ref(TreeView) とかじゃエラーになるんです。
やっぱりobjectとかからの変換になるんでしょうか。
0458デフォルトの名無しさん
05/02/10 02:58:20> void moge( ref tree ){}
メソッド定義が変(引数の型が不明)だが、void moge(ref TreeView tree) {} でいいのかね。
> ツリービュー自体を渡すときに(TreeView)と付けて明示的にする必要があるんですが、
ツリービュー自体ってなに?
> ref(TreeView) とかじゃエラーになるんです。
A a = new A();
moge(ref (TreeView)a);
でエラーになるって事?
で、結局>>455じゃん?
0459デフォルトの名無しさん
05/02/10 03:18:35こっちで解決できました。
ありがとうございました。
>>455
こっちも考えたんですが、何か他の文法があるんじゃないかと思って。
というか this にrefつけられなかったんですね・・・しらなんだ。
0460デフォルトの名無しさん
05/02/10 08:19:330461デフォルトの名無しさん
05/02/10 08:34:28ぐうぐる先生に聞いてみた。
http://www.csharphelp.com/archives/archive228.html
これかしら。
0462デフォルトの名無しさん
05/02/10 09:09:27さっそくありがとうございます。
しかし、、、それはMicrosoft Agent APIのサンプルみたいですね。
Office製品に出てくるあのうざいマスコットどもを呼べるAPIらしいです。
それのSpeakメソッド内でSpeech APIが使われているみたいですが
Speech APIそのもののサンプルコードではないようです。
0463460
05/02/10 12:54:34Microsoft Speech Object Libraryに参照を通せば後は
SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;
SpVoice Voice = new SpVoice();
Voice.Speak("hello", SpFlags);
これだけで動作するというあっさりとしたものでした。
ということで事後報告。
0464デフォルトの名無しさん
05/02/10 21:11:54もしかしてXMLファイルとして自分で作るとか?
0465デフォルトの名無しさん
05/02/10 22:05:25さっきまで編集できていたフォームなのに、いつのまにか
,「'Location'の宣言が重複してます」とか「'Size'の宣言が重複してます」などのメッセージが表示され
デザイナ上で配置されていたコントロールがほとんど表示されないようになってしまった。
という症状の対処法を知ってる人はいないでしょうか?
0466デフォルトの名無しさん
05/02/10 22:26:46領域を作成し、そこに何らかの処理を描画したあと更新が必要でないので
さきほど作ったGraphicを流用し描画を行うということはできないのでしょうか?
描画毎にGraphicsを作成するのを止めたいです。
0467デフォルトの名無しさん
05/02/10 23:19:58一般的にはBitmap作って保持するわけだけれども、RichTextやTextBox相手に
それやるのは正直全くお勧めしません。
0468デフォルトの名無しさん
05/02/10 23:56:08勘弁してほしいんだが何かいい方法は無いものだろうかな
0469370
05/02/11 00:47:30いいか、よく聞いてくれ。
そのバグは、なおらない。
2時間悩むなら、30分で新規ウィザード。
4時間後に適切なレスついて、5分で直すより、
いますぐ、新規ウィザード。
くやしいが、有効な手立てはない。
バックアップとってるなら、それをつかえ。以上
(僕も被害者、これが一番の解決法)
0470デフォルトの名無しさん
05/02/11 03:05:33勝手に削除されるとかって言う現象には
遭遇したことがあるな。
0471デフォルトの名無しさん
05/02/11 05:40:06二重起動を抑制して起動状態のアプリで引数を取得する方法のようなものはありますか?
二重起動自体はミューテックスで抑制する方法はわかるのだけど、
引数をどうにかして取得したい。
0472デフォルトの名無しさん
05/02/11 09:58:300473デフォルトの名無しさん
05/02/11 10:34:38WORDの文書をクリックした場合にWORDが既に立ち上がってれば同じインスタンスで
文書が開く、といったことを実現したいということですよね?
あれはDDEとシェル登録機能を使ってるんだけど.NETじゃサポートしてなかったような。
あと使えそうなプロセス間通信手段は.NETリモート処理ですがポートをひとつ消費して
しまうのが難点です。
0474デフォルトの名無しさん
05/02/11 10:38:48自分で XML を更新するしか方法はないと思います。私はそうやっています。
0475デフォルトの名無しさん
05/02/11 10:41:19それって継承フォームや継承コントロールを使うとよく起きませんか?
コンストラクタやLoadイベントでいろいろな関数を呼んでると起きる感じで
いくつかコメントにしてリビルドすると治ることがあります。
0476デフォルトの名無しさん
05/02/11 11:05:01> あと使えそうなプロセス間通信手段は.NETリモート処理ですがポートをひとつ消費して
> しまうのが難点です。
プライベートに使えるポートが16383個ほどあるのに、それでも一つ使うのがイヤですかそうですか。
0477デフォルトの名無しさん
05/02/11 12:14:22これを適用し、OnPaintBackground、OnPaintをオーバライドしたとき
baseのメソッド呼び出しただけでは、画面がまっしろになってしまいます。
他に何か書かなければいけないのでしょうか?TextBoxでそうなってしまいます
0478デフォルトの名無しさん
05/02/11 12:30:08http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwinforms/html/reaworapps1.asp
の中ほどに single-instance application の話題が出てはいるけど、引数伝えるのは remoting 使ってて『object remoting が標準装備されてる環境なら、これが手っ取り早いのね…』と感心した記憶があります。
0480デフォルトの名無しさん
05/02/11 14:01:48神さま仏さま!
C#で簡易SMTPサーバーを作ってそこからメール送信ってことは可能でしょうか?
つまり自分のPC自体をSMTPサーバーにするというヤツです。
ソフトに自分へのメールを送る機能を付けたいのですが、C#だとソースを読まれる可能性が高くて
自分のSMTPサーバーを使うのは少し気がひけるので・・・
要は、C#でSMTPサーバーを立てるDLLかなにかありましたら御紹介頂きたいのです・・・
(前置きが長くて申し訳ありませぬ!
0481デフォルトの名無しさん
05/02/11 14:42:23「可能か」と言われれば、他の言語でできる事で、C#でだけ不可能な事なんか
1つもないと答えるしかない。
0482デフォルトの名無しさん
05/02/11 14:59:26自前のソフトにSMTP鯖機能なんかつけても、すぐに役に立たなくなるからやめとけば?
Outbound Port25 Blockingがあちこちのプロバイダで導入されつつあるよ。
C#と関係無い話でスマソ。
0483デフォルトの名無しさん
05/02/11 16:48:45そんなことを心配すべきだと思う今日この頃。
0484デフォルトの名無しさん
05/02/11 16:51:32??
0485デフォルトの名無しさん
05/02/11 18:26:34おまえ C# の前は HSP 使ってただろ
質問の仕方がソックリだ
0486480
05/02/11 18:33:39作ることができました。
確かに>>482さんの云うように使えないプロバイダもありますね。
友人に試して貰ったら、niftyは使えましたがOCNは無理でした。
>>484
自宅サーバーがあるので、そっちのサーバーを使えば簡単なんですが
(むしろHPにCGIに直接の方が・・・w)、C#はソースを見られるので
悪用されるかと少し心配でした。
>>486
C#の前はVB6.0でした、
HSPってもの自体知りません。
それにしてもOutbound Port25 Blocking・・・
恨めしいです。
0487デフォルトの名無しさん
05/02/11 18:39:01サーバーがどんなOSの元で動いてるのかは分かるかもしれないが。
意味不明
0488480
05/02/11 19:20:22http://b-51.hp.infoseek.co.jp/download.html
ここのSimpleMailServerってのがソースファイルも含まれてて、
これを参考にしました。
ちなみにC++です。
0489デフォルトの名無しさん
05/02/11 19:21:420490デフォルトの名無しさん
05/02/11 19:22:39言語にこだわるのはナンセンス
0491デフォルトの名無しさん
05/02/11 19:25:060492480
05/02/11 19:34:37一応、C#の勉強にもしたかったので・・・
まぁ結局C++で書いてしまったわけですがw
0493デフォルトの名無しさん
05/02/11 19:39:03読むだけだし。意味不明。
0494デフォルトの名無しさん
05/02/11 20:13:23http://www.gotdotnet.com/japan/student/column/firststep/firststep21.aspx
これを参考にタブブラウザもどきのものを作っているのですが、
this.SuspendLayout();
System.Windows.Forms.TabPage tabPage = new System.Windows.Forms.TabPage();
AxSHDocVw.AxWebBrowser axWebBrowser = new AxSHDocVw.AxWebBrowser();
axWebBrowser.BeginInit();
axWebBrowser.Dock = System.Windows.Forms.DockStyle.Fill;
axWebBrowser.EndInit();
tabPage.Controls.Add(axWebBrowser);
this.currentTabPage = tabPage;
this.currentWebBrowser = axWebBrowser;
object URIbuf = (object)strURI;
object o = null;
axWebBrowser.Navigate2(ref URIbuf,ref o,ref o,ref o,ref o);
this.ResumeLayout();
とすると、axWebBrowser.Navigate2(ref URIbuf,ref o,ref o,ref o,ref o);の部分で、
InvalidActiveXStateExceptionの例外が発生します。
なにがいけないのでしょうか?
0495デフォルトの名無しさん
05/02/11 20:25:50その例ならtabPageをTabControlのTabPagesに入れて、そのTabControlをFormのControlsに入れてからでないと。
0496デフォルトの名無しさん
05/02/11 21:01:44int[] list = {1,3,5,7,9,11};
と動的に宣言することはできますが、static constを付けるとエラーになります。
0497デフォルトの名無しさん
05/02/11 21:02:540498デフォルトの名無しさん
05/02/11 21:06:48これ定数の配列じゃないか?
static readonly int[] list = {1,3,5,7,9,11};
0499デフォルトの名無しさん
05/02/11 21:10:260500デフォルトの名無しさん
05/02/11 21:11:40ぉぃ
0501デフォルトの名無しさん
05/02/11 22:07:32ネットワークに接続されたプリンタを利用する方法を教えてください。
Webアプリケーションではなくて。
0502デフォルトの名無しさん
05/02/11 22:13:440503デフォルトの名無しさん
05/02/11 22:19:28System.IO.FileStream FS = new System.IO.FileStream(@"画像ぱす",System.IO.FileMode.Open, System.IO.FileAccess.Read);
this.pictureBox1.Image = System.Drawing.Image.FromStream(FS);
FS.Close();
this.pictureBox1.Image.Save(@"画像ぱす");
'System.Runtime.InteropServices.ExternalException' のハンドルされていない例外が system.drawing.dll で発生しました。
追加情報 : GDI+ で一般的なエラーが発生しました。
ハンドルされていない例外 : System.Runtime.InteropServices.ExternalException: GDI+ で一般的なエラーが発生しました。
at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
at System.Drawing.Image.Save(String filename, ImageFormat format)
at System.Drawing.Image.Save(String filename)
・
・
・
ずっと悩んでいます。
回避方法は無いものでしょうか。
宜しくお願いします。
0504デフォルトの名無しさん
05/02/11 22:22:46FS.Close(); // これ入れちゃ駄目なような気がする
0505デフォルトの名無しさん
05/02/11 23:33:22エクセルライクな家計簿ソフトを作ってみようかと思っとるんですが、
この場合セルってどうやって作ればいいんですかね
DataGridってやつ?それとも、テキストボックスを格子で区切るような
ことができるんでしょーか?
0506デフォルトの名無しさん
05/02/12 01:13:28別のアプリケーションを終了するにはどうすれば・・・
自分で起動したアプリケーションを終了させるのはできるのですが・・・
つД`) タスケレ !!
0507デフォルトの名無しさん
05/02/12 01:46:20ローカルで動かしてるもんとして
つhttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemDiagnosticsProcessClassTopic.asp
0508フナ太郎
05/02/12 04:41:17あるフォームにクリックイベントハンドラを登録して、
そこに処理を書くのと、
フォームのOnClickイベントをオーバーライドして、
そこに処理を書くのと、
どこが違うんでございましょうか?
0509デフォルトの名無しさん
05/02/12 05:32:00Form上のコントロールだと継承することが少ないから外部から使えるのはありがたい。
あとイベントは複数のハンドラを登録できるのが特徴かな。
0510デフォルトの名無しさん
05/02/12 09:07:19仮想kんすうとで利ゲート。まったく異なる
0511デフォルトの名無しさん
05/02/12 09:47:48{
if(e.KeyChar==(char)Keys.Enter){button1_Click(sender,e);}
}
テキストボックスに入力した後Enterを押すとビープ音が出るんですが、これを鳴らさないように
するにはどうしたらいいのですか?
0512デフォルトの名無しさん
05/02/12 09:53:33でいけるんじゃなかったっけ。
0513デフォルトの名無しさん
05/02/12 10:37:07そういうことだったんですか!
ありがとうございました!
0515503
05/02/12 17:30:44アドバイスありがとうございます。
System.IO.FileStream FS = new System.IO.FileStream(@"画像ぱす",System.IO.FileMode.Open, System.IO.FileAccess.Read);
this.pictureBox1.Image = System.Drawing.Image.FromStream(FS);
//FS.Close();
this.pictureBox1.Image.Save(@"画像ぱす");
でも駄目ですた。
なんでだなんでだろう
0517デフォルトの名無しさん
05/02/12 19:16:570518517
05/02/12 19:17:270519デフォルトの名無しさん
05/02/12 19:28:440520デフォルトの名無しさん
05/02/12 19:33:48確実を期すならBitConverter.IsLittleEndian静的フィールドでチェックだ。
がまあ、リトルエンディアンでいいだろうなぁ。
0521デフォルトの名無しさん
05/02/12 19:49:20this.pictureBox1.Image = System.Drawing.Image.FromStream(FS);
this.pictureBox1.Image.Save(FS,System.Drawing.Imaging.ImageFormat.Bmp);
これじゃだめか意図が違うって?
0522デフォルトの名無しさん
05/02/12 20:11:29一度 FileStream から MemoryStream に転送し、そこから Image.FromStream というのはどうだろう
コレならば最初の FileStream は閉じられるし
0523デフォルトの名無しさん
05/02/12 21:21:590524デフォルトの名無しさん
05/02/12 23:06:15クラス内のブレークポイントで止まってくれません。
どうすればクラス内のブレークポイントで止める事が出来ますか?
0525デフォルトの名無しさん
05/02/12 23:37:00Release ビルドで実行してるとか言うオチじゃねぇだろうな。
もしくは、クラス内ってのは、
class AAA
{
static int hoge = 0; // ← こことか?
}
確認面倒だからやってないけど、これは止まらない気も。
初期化コードは static コンストラクタの中にでも書け。
0526503
05/02/13 00:08:25>>521
>>522
皆さんのご意見を参考にしたら上手く行きました。
どうもありがとうございました。
↓こうなりました。
System.IO.FileStream FS = new System.IO.FileStream(@"画像ぱす",System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] BT = new byte[FS.Length];
FS.Read(BT,0,BT.Length);
FS.Close();
System.IO.MemoryStream MS = new System.IO.MemoryStream(BT);
this.pictureBox1.Image = System.Drawing.Image.FromStream(MS);
this.pictureBox1.Image.Save(@"画像ぱす");
MS.Close();
0527デフォルトの名無しさん
05/02/13 00:37:53遅いのですが、このような場合どのようにすれば高速化できるのでしょうか?
今のところ1Mで100秒ぐらいかかり使い物になりません。
0528デフォルトの名無しさん
05/02/13 01:20:40テーブルを作成するようなメソッド、もしくはCreateTableを行うSQLを出力する
などの機能はないんでしょうか?
0529デフォルトの名無しさん
05/02/13 04:41:460530デフォルトの名無しさん
05/02/13 05:21:49またGraphicsPathをMergeすることはできますか?丸と丸が少し重なっていたら雪だるまのようなpathになってほしい。
0531デフォルトの名無しさん
05/02/13 06:00:53環境にもよるけど100秒はかかりすぎ。こちらの環境では、Wordpadで作った1.7Mの
rtf形式ファイルをPentiumII級のマシンで読み込むのに8秒くらい。
Wordpadで読んでも時間がかかりますか?
0532デフォルトの名無しさん
05/02/13 11:22:28C#って.Net Framework入ってないと動かないんでしょうか?
普通のC、C++のようにランタイムに左右されず単体で動く
exeを作りたいんですが可能でしょうか?
0533デフォルトの名無しさん
05/02/13 11:31:050534デフォルトの名無しさん
05/02/13 11:39:080535デフォルトの名無しさん
05/02/13 11:41:320536デフォルトの名無しさん
05/02/13 11:51:00シリアライズ
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, obj);
>>530
Regionと組み合わせればいろいろできます。
0537デフォルトの名無しさん
05/02/13 11:53:55標準ではないと思います。ただ、XMLスキーマの情報があれば実現できそうな感じの機能ですね。
0538デフォルトの名無しさん
05/02/13 14:54:55まず最初にいつもの「こんにちわ世界」を・・・
試しにタスクマネージャーを開いたら・・・
なんでこんな単純なプログラムがメモリを10Mも!!
これって正常なのでしょうか?
0539デフォルトの名無しさん
05/02/13 15:16:04最小化すれ
0540デフォルトの名無しさん
05/02/13 15:22:57メモリ使用量は虚像に過ぎないから
気にしなくていいよ
0541デフォルトの名無しさん
05/02/13 15:24:18とやるとすごい時間がかかるみたいなだけした。この方法がいけないよう
でした。
0543デフォルトの名無しさん
05/02/13 16:35:42ついでに別に面倒じゃないよ。
はじめに理解するのはちと困難だが、一度理解すればすごく簡単。
コーディングも長くならない。
0544デフォルトの名無しさん
05/02/13 17:59:44どのDataAdapterを使えばよいのでしょうか?
0545デフォルトの名無しさん
05/02/13 18:21:14XPathNavigatorとか使って処理するんじゃね?
0546デフォルトの名無しさん
05/02/13 18:56:12自分のアプリではAPIのSendMessageでやってるけど、やっぱり邪道?
0547デフォルトの名無しさん
05/02/13 19:18:32そっか、どうしてもDataSetを使いたいのでDataView使います。
0548デフォルトの名無しさん
05/02/13 19:43:50開始ボタンをクリック→キャンセルボタンを有効→時間のかかる処理→キャンセルボタンを隠す→処理完了
という部分で、処理の途中でキャンセルボタンを押すと処理を止めるってのを作りたいのですが、
キャンセルボタンを有効にしても処理の方が優先されるのか、処理をしている間、キャンセルボタンが有効にならないんです。
試しに、処理が終わった後にボタンを隠す部分をなくしてみたら、
処理が終わった段階で初めてボタンが有効になるという様でした。・゚・(ノ∀`)・゚・。
Application.DoEvents();
を処理のループの中に入れても無理でしたし・・・
このような場合はどのようにすべきなのでしょうか??
0549デフォルトの名無しさん
05/02/13 19:45:52>>168-172
0550デフォルトの名無しさん
05/02/13 20:26:25激しくThx
やっぱ別スレッドにすべきか・・・
ありがとうございました。
0551デフォルトの名無しさん
05/02/13 20:34:00どんなコードだったんだろうか
0552デフォルトの名無しさん
05/02/13 20:59:45メッセージキューをデリゲートに分配する部分がスレッドじゃないから
メソッド内で排他してもキューはたまりっぱなしだったかと
0553デフォルトの名無しさん
05/02/13 22:26:570554デフォルトの名無しさん
05/02/13 22:29:330555デフォルトの名無しさん
05/02/13 22:32:50各要素はint型、つまり構造体です。察して下さい。
0556デフォルトの名無しさん
05/02/13 22:32:54#ColumnNameが直接反映されてしまってローカライズできずに困っています
0557デフォルトの名無しさん
05/02/13 22:38:070559553
05/02/13 23:22:57>>558
どうもありがとうございます。
MSDNのサイトでスタックとヒープの説明を見つけました。
配列の実体はヒープみたいです。
http://www.microsoft.com/japan/msdn/library/ja/jpdnbcsharp/htm/csharp2-4.asp?frame=true
0560デフォルトの名無しさん
05/02/14 00:04:20richTextBox1.Select(0, 10);
richTextBox1.SelectedLength = 0;
と行っても、最終的に自動的に画面スクロールが発生しますがこれを
上記の2つの操作を行っても発生させないようにするのにどのようにすれば
いいでしょうか?
0561デフォルトの名無しさん
05/02/14 00:56:29RichTextBoxの継承クラスを作って、スクロールさせないフラグを用意する。
WndProcをオーバーライドし、フラグが立ってる時にWM_PAINTが送られた時は基底クラスのWndProcを呼ばないようにする。
後はフラグ立ててSelectionStartを保存してSelectしてSelectionLengthを0にしてSelectionStartを元に戻してフラグをおろす。
0562532
05/02/14 03:47:18すいません、質問を改めます。
C#で出来たプログラムをバイトコードではなく、
CやC++のようにnativeコードにコンパイルしたいの
ですが、そんなコンパイラは付属してますか?
0563デフォルトの名無しさん
05/02/14 03:50:580564デフォルトの名無しさん
05/02/14 04:35:03そのつもりはないのだと思うが、それはFAQすぎて煽りと取られかねない質問なのですよ。
javaスレにいって同じ質問をしても同様の反応があると思います。
結論から言えばそんなものはないし、あったとしてもそれはかなり邪道な存在です。
.NET Frameworkとは何か、何を目標にして作られたのかといったあたりを調べてみましょう。
0565デフォルトの名無しさん
05/02/14 06:16:52>.NET Frameworkとは何か、何を目標にして作られたのかといったあたりを調べてみましょう。
別にそこにとらわれることないとおもうが・・・
.NET環境で動くものとしてもいいし、そこからアンマネージ生成して使えるようにできると幅も広がると思うが。
0566デフォルトの名無しさん
05/02/14 08:05:54利点もねーだろうし幅も広がらんと思うぜ?その上技術的にも相当厄介だし。
0567デフォルトの名無しさん
05/02/14 08:52:310568デフォルトの名無しさん
05/02/14 10:49:580569デフォルトの名無しさん
05/02/14 10:55:460570デフォルトの名無しさん
05/02/14 11:18:23SQLだとこんな感じですが、複数のDataTableからひとつのDataTableを作りたいんです
DataViewに結合のメソッドが見当たらなかったのですが、どのメソッドでしょうか?
0571デフォルトの名無しさん
05/02/14 14:14:42最初から、そのようなSQLを打ってDataTableを作れば良いのではなかろうか。
0572デフォルトの名無しさん
05/02/14 14:37:22XMLでやるのでSQLは使えません。
専用のテーブル作って保存の時だけ参照をはずす方法しないのかな。
0573デフォルトの名無しさん
05/02/14 15:37:20これを見るとdelegateの参照を保持していればアンマネージコードに渡した関数ポインタは有効みたいですが、
GCが動作してもdelegateのアドレスは変わらないという保証があるのでしょうか?
GCが動作したらアドレスが変わる可能性がありそうに思えて不安です。
0574デフォルトの名無しさん
05/02/14 15:38:50心配ならfixed
0575デフォルトの名無しさん
05/02/14 15:52:45関数ポインタはdelegateをmarshallした結果得られているわけであって、
もともとのdelegate のアドレスが変化するか、ということとはちょっと別の話だと思う。
マーシャラはCoTaskMemAllocとかその辺のレガシーAPIでメモリを確保するわけだから、
マーシャリングされた結果の関数ポインタとかTCHARへのポインタとかはunmannagedリソースで
ファイナライザで開放はされても、それまではアドレスは変化しないんじゅない?
0576573
05/02/14 16:37:18delegateもGCがメモリの再配置を仕掛けて
アンマネージコードに渡した関数ポインタが無効になるんじゃないかって思えます。
でも、
http://support.microsoft.com/default.aspx?scid=kb;ja;318804
この例でもそういうのは考慮していないみたいなので
何かdelegateからできた関数ポインタが無効にならない仕様とか決まってるのかなと思ったので。
でも、GCがdelegateをメモリ再配置の対象外にしているとしたら
それはそれでdelegateをメンバに持つクラスのメモリ再配置で困りそうに思えますし。
0577デフォルトの名無しさん
05/02/14 23:51:240578デフォルトの名無しさん
05/02/14 23:54:55DataTableをClear()したあと、DataColumn#AutoIncrementSeetを0に設定しなおしても連番は残ってしまいます。
うまく初期値に戻せる方法をご存知でしたら教えてください。
0579562
05/02/14 23:57:12ありがとうございました。
.NETという前提をおいといて、C#という言語だけを見たときに
私的にnativeのモジュールを作れれば、C、C++を完全に
捨てても良いのかなーと思ったりしたモノで聞いてしまいました。
お騒がせしました。
0580デフォルトの名無しさん
05/02/14 23:57:32ただの識別子。
0581デフォルトの名無しさん
05/02/15 01:17:45余りにも初歩的な質問なんですが・・・
別のフォーム(例えばForm2)からForm1でPublicで宣言された変数にアクセスするにはどうすればいいんでしょ??
普通に変数(例えばstring Error1)を出そうとして
MessageBox.Show(Error);
などとやっても無理ですし、
MessageBox.Show(Form1.Error);
とやっても無理です。
三 (lll´�D`)お助け願います・・・
0582デフォルトの名無しさん
05/02/15 01:25:370583581
05/02/15 01:32:13実際は、Form2の方からForm1で動いているスレッドthread1をキャンセル、一時停止、再開などを行いたいと思っています。
0584デフォルトの名無しさん
05/02/15 01:48:24Form2 form2 = new Form2();
form2.TargetThread = thread;
form2.Show();
-------------
public Thread TargetThread {get {return targetThread;} set {taragetThread = value;}}
private Thread targetThread;
スレッド操作専用フォームだというのならForm2のコンストラクタ引数にするのがベターだけど。
Form2 form2 = new Form2(thread);
form2.Show();
------------
public Form2(Thread thread) : this() {
this.targetThread = thread;
}
private Thread targetThread;
0585デフォルトの名無しさん
05/02/15 02:00:06スクロールで最下行の文字が半分だけ見える状態で、その最下行をクリック
すると自動的にスクロールするという仕様にあきれてスクラッチで実装したいと
思いました。よろしくお願いします。WM_PAINT等では制御は不可能でした。
SPY++ですべての発生イベント調べましたがスクロールイベントが発生していない
のに自動スクロールする糞仕様は勘弁して欲しい。
0586デフォルトの名無しさん
05/02/15 02:17:54Rich Edit コントロールの仕様だからして、RichTextBoxベースじゃどうにもならないだろね。
Controlを直接継承して書く事になるかな。
頑張れとしか言いようがないね。
ところでスクロールイベントがってのはRichTextBox.VScrollイベントの事かな?
これは
>ユーザーがコントロールの垂直スクロール バーをクリックすると発生します。
と書かれてるよ?
> スクロールで最下行の文字が半分だけ見える状態で、その最下行をクリック
> すると自動的にスクロールするという仕様
極めて真っ当な仕様だと思うけど。
0587デフォルトの名無しさん
05/02/15 02:30:46同じDataGridで別データの読み込みをするのでAutoIncrementのリセットは必須です。
現状わかってる一番の問題点は
旧DataTableをRemoveして同名を持つ新規DataTableをAddしてもDataGridは参照を変更しないこと。
それではと再度SetDataBindingしてやっても参照が外れたはずの旧DataTableを表示してしまう。
DataSet#Tablesのインデクサで確認する分には確かにテーブルは新しいものになってる。
この更新不可のなぞの現象に手詰まり状態です。
0588465
05/02/15 07:47:27コメントアウトでメソッド削って部分的に作り直したらなおりました。(クリックイベント消してやり直し)
.netで描画されるStringの送り幅を得る方法を知っている人はいますか?
Fontクラスにそれらしいメソッドがないのですが。
GetHeight()みたいなものはあるのですが
0589デフォルトの名無しさん
05/02/15 08:02:04Graphics.MeasureString
0590デフォルトの名無しさん
05/02/15 09:15:19つけたいのですが…。
コンポーネントの追加でアイコンを編集保存してもビルド時に
「見つからない」とエラーが出てしまいます。
0591デフォルトの名無しさん
05/02/15 10:56:35{
if (!ff.IsStyleAvailable(FontStyle.Regular))
{
continue;
}
comboBox1.Items.Add(ff.Name);
}
これで使用可能なフォント一覧を出しているのですが、大量にフォントが
あると使用メモリが一気に上がってしまいます。
これを回避するにはどうしたらいいのですか?
0592デフォルトの名無しさん
05/02/15 11:19:400593デフォルトの名無しさん
05/02/15 11:40:11普通にくっつけられますが。
アイコンをプロジェクトに追加
フォームのIconプロパティでアイコン指定
アイコンファイルのパスが間違ってるとか?
0594デフォルトの名無しさん
05/02/15 13:44:40フォント入れすぎによる弊害なんて10年以上前から言われてた事だし。
0595デフォルトの名無しさん
05/02/15 14:03:44プロセス終了まで使用メモリが減らないっていう話が出てたような気がする。
0596591
05/02/15 14:11:24これだと、大量にあるフォントの中から抽出する事はかなり困難になりそうです。
0597デフォルトの名無しさん
05/02/15 16:25:480598デフォルトの名無しさん
05/02/15 16:31:420599デフォルトの名無しさん
05/02/15 17:15:49((System.Windows.Forms.NativeWindow)(notifyIcon1.window)).Handle
だと怒られてしまって・・・。
0600デフォルトの名無しさん
05/02/15 18:07:30ここをみながら
ActiveX を使っているのですが、
時折異常にパフォーマンスが落ちて原因を探っていたのですが、
オブジェクトを生成したスレッドと違うスレッドから呼び出した時に起こっているような気がします。
これは、元々そういう物なんでしょうか?
それとも何か仕損じがあるのでしょうか?
0601デフォルトの名無しさん
05/02/15 18:21:07Spy++見れば分かるけど、NotifyIcon一つ一つにはウィンドウハンドル割り当てられてないよ。
タスクトレイの実体はToolbarだし。
notifyIcon1.windowってのが何を指すのか知らないけど。
0602デフォルトの名無しさん
05/02/15 18:28:57notifyIcon1.windowはNotifyIconがもつ内部のメンバ変数で
System.Windows.Forms.NotifyIcon.NotifyIconNativeWindowのようです。(デバッグ情報より)
Ballon Hintを表示させたいので、NotifyIconのhWndが欲しいのですが
window.Handleではとれないのでどうしたものかと。。。
0603デフォルトの名無しさん
05/02/15 18:57:48それはNotifyIconのハンドルじゃなくて
NotifyIconのメッセージを処理するウィンドウ。
601が言ってるようにNotifyIconはウィンドウハンドルを持たない。
0604デフォルトの名無しさん
05/02/15 19:07:24バルーンヒントならCodeCoreで見たけど
0605デフォルトの名無しさん
05/02/15 19:26:40なるほど
>>604
CodeCoreのやつは、うまくうごかなくて・・・。
リフレクションでとりあえずとることにします。
System.IntPtrhWnd = newSystem.IntPtr(0);
NativeWindownwwNativeWindow =
null;
System.Type typNotifyIconType = typeof(System.Windows.Forms.NotifyIcon);
System.Reflection.MemberInfo[] aryMemberInfo =
typNotifyIconType.GetMember(
"window",
MemberTypes.Field,
BindingFlags.NonPublic | BindingFlags.Instance);
foreach(
System.Reflection.MemberInfo mifMemberInfo
in aryMemberInfo){
FieldInfofifFieldInfo =
(FieldInfo)mifMemberInfo;
TypetypNotifyIconNativeWindow =
fifFieldInfo.FieldType;
nwwNativeWindow =
(NativeWindow)fifFieldInfo.GetValue(notifyIcon1);
hWnd =
nwwNativeWindow.Handle;
break;
}
0606デフォルトの名無しさん
05/02/15 19:38:51なぜFieldを取得するのにわざわざGetMemberを?
0607デフォルトの名無しさん
05/02/15 19:57:39コピペの関係で・・・
System.Reflection.FieldInfo fifFieldInfo =
typNotifyIconType.GetField(
"window",
BindingFlags.NonPublic | BindingFlags.Instance);
Type typNotifyIconNativeWindow =
fifFieldInfo.FieldType;
nwwNativeWindow =
(NativeWindow)fifFieldInfo.GetValue(notifyIcon1);
hWnd =
nwwNativeWindow.Handle;
0608デフォルトの名無しさん
05/02/15 23:17:06先に移動させてShowしても、うまく指定位置に出てくれません。
//* これだと移動してくれない
MyForm mf = new MyForm();
mf.Location = new Point(400,300);
mf.Visible = true;
//*/
//指定位置に出すことができるけど
//こうやると一瞬ヘンな位置にでてるのがユーザにばれてしまう。
MyForm mf = new MyForm();
mf.Visible = true;
mf.Location = new Point(400,300);
どなたか、解決方法を御存知ないでしょうか?
0609デフォルトの名無しさん
05/02/15 23:21:380610斉藤
05/02/16 00:43:35private void ABC()
{
・
・
・
}
private void HOGE()
{
DEF( ABC );
}
メソッドDEFは、メソッドABCの何を受け取るのでしょうか?
0611デフォルトの名無しさん
05/02/16 01:01:38遅レスごめんなさい!
ありがとうございました!
0612MSDN
05/02/16 01:20:07このページの左上隅にある言語のフィルタ ボタン▼ をクリックします。
そんなボタン、ねーぞ!
0613デフォルトの名無しさん
05/02/16 01:28:38DEF なんてないじゃん。
0614デフォルトの名無しさん
05/02/16 02:01:45関数ポインタみたいなことやらせたいんだろうか。
それともデリゲートのことをいいたいんだろうか。
0616デフォルトの名無しさん
05/02/16 02:08:250617デフォルトの名無しさん
05/02/16 13:39:250619デフォルトの名無しさん
05/02/16 15:30:250620デフォルトの名無しさん
05/02/16 15:56:34{
while(true)
{
System.Web.Mail.SmtpMail.Send(mm);
}
}
catch(System.Threading.ThreadStateException ez)
{
Console.Writeline("処理が中止されました。");
Console.Writeline(ez.ToString());
}
catch(Exception ex)
{
Console.Writeline("送信中にエラーが発生致しました。");
Console.Writeline(ex.Message);
}
こういう無限にメールを送る処理を別スレッドでやらせていて、
送信中にスレッドをAbortさせて終了させようとすると、
なぜかSystem.Threading.ThreadStateExceptionを捕らえられない・・・・
メール送信のスレッドを止めるとメールを送信する方のエラーが先に起きちゃうからかな??
お助け下さいませ。・゚・(ノ∀`)・゚・。
0621デフォルトの名無しさん
05/02/16 16:06:02プロジェクトをビルドするときには問題はないのに、実行すると
InitializeComponent()の中で以下のような例外がでてしまいます。
心当たりといえば昨日ソリューションエクスプローラの中で
ドラッグアンドドロップしてfrmMain.csのファイルを移動させましたが、
デザイナを表示させたとき、アイコンなどはきちんと表示されるので
resxファイルの場所が間違っているということはないと思います。
'System.Resources.MissingManifestResourceException' のハンドルされていない例外が mscorlib.dll で発生しました。
追加情報 : 指定されたカルチャ (またはニュートラル カルチャ) に必要なリソースがアセンブリに見つかりません。"frmMain.resources" が、アセンブリ "BlogWalker" に正しく埋め込まれているか、またはリンクされているかを確認してください。
baseName: frmMain locationInfo: RSS.frmMain resource file name: frmMain.resources assembly: BlogWalker, Version=1.8.1873.28742, Culture=neutral, PublicKeyToken=null
0622デフォルトの名無しさん
05/02/16 16:15:00なんか怪しいソフトだなぁw
まぁこのスレの住民はそういうの好きだから安心汁
キミの予想通り、恐らくSystem.Web.Mail.SmtpMail.Send(mm); の処理をしている最中にスレッドを止めようとすると
まず、スレッドのステータスがAbortRequestedになって、その後にAbortされる。
System.Threading.ThreadStateExceptionはスレッドがAbortRequestedぢゃなくて、完全にAbortされないと
反応しないから、恐らくAbortRequestedの段階でSystem.Web.Mail.SmtpMail.Send(mm); がエラーを起こしている
と思われ・・・
とは云っても対処法は・・・俺には解らぬ。
詳しい方、後はよろ
0623デフォルトの名無しさん
05/02/16 17:04:55親子関係を保持したポップアップはどうやって実装しているんでしょうか?
孫から子に戻ったとき、子だけ残して孫を消していたりとてもスムーズです
0624デフォルトの名無しさん
05/02/16 17:22:20言ってることからは具体的なものがよくわからないんだけど
Control(とかFormとか)のParentを指定しておいて、
子から親に戻ってきたときに親が子コントロールを消してあげれば。
0625デフォルトの名無しさん
05/02/16 17:58:01Mail 名前空間使った事無いから知らないけど
…… ThreadAbortException の間違い?
0626デフォルトの名無しさん
05/02/16 18:46:28ソリューションエクスプローラでfrmMain.csを例えば"FormClasses"フォルダに
入れたとするなら、リソースへの参照は "FormClasses.frmMain.resources"に
変更する必要があるような気がするけど。
0627デフォルトの名無しさん
05/02/16 18:58:48リソースへの参照はどうやって変更すればいいんですか?
0628620
05/02/16 19:16:24申し訳ない!書き間違いです。
try
{
while(true)
{
System.Web.Mail.SmtpMail.Send(mm);
}
}
catch(System.Threading.ThreadAbortException ez)
{
Cons("処理が中止されました。");
Cons(ez.ToString());
}
catch(Exception ex)
{
Cons("送信中にエラーが発生致しました。");
Cons(ex.Message);
}
でした。
>>622さんの云うとおり、やっぱり無理なんでしょうか?
0629620
05/02/16 19:19:15正しくは
try
{
while(true)
{
System.Web.Mail.SmtpMail.Send(mm);
}
}
catch(System.Threading.ThreadAbortException ez)
{
Console.Writeline("処理が中止されました。");
Console.Writeline(ez.Message);
}
catch(Exception ex)
{
Console.Writeline("送信中にエラーが発生致しました。");
Console.Writeline(ex.Message);
}
0630デフォルトの名無しさん
05/02/16 19:35:54http://www.unisys.co.jp/club/net_view/20030327.html
0632621
05/02/16 21:04:45プロジェクトに明示的にresxファイルを追加したら動くようになりました。
少し後味が悪いんですが、他に解決法はないですか?
0633620
05/02/16 23:18:30いえ、処理が中止されましたって表示されずに、
System.Web.Mail.SmtpMail.Sendの方のエラーを吐いています、
ですので
送信中にエラーが発生致しました
と表示されています。
0635620
05/02/16 23:37:53ThreadAbortExceptionではなくて
System.Web.Mail.SmtpMail.Sendの吐くエラーなのがどうも腑に落ちないのです・・・
0636デフォルトの名無しさん
05/02/17 01:00:450637デフォルトの名無しさん
05/02/17 01:09:42http://www.amazon.com/exec/obidos/ASIN/1555583156/httpnetwoprog-20/104-2195106-4109511
0638デフォルトの名無しさん
05/02/17 02:10:27でしょうか?印刷コントロールを作成しているのですが、表示の必要がない
オブジェクトの描画を省略したいと思います。、グローバル座標が
が解らないため現在どこからどこまでが表示すべきかの判別をどのように
行えばよいのか解りません。
0639デフォルトの名無しさん
05/02/17 05:16:05何を言いたいのかよくわからないけど、
スクロールとかは設計者の勝ってだっぺ。
ワールド座標は常に見えてる部分が基本だっぺ。
0640デフォルトの名無しさん
05/02/17 08:20:15宣伝乙
0641デフォルトの名無しさん
05/02/17 13:54:430642デフォルトの名無しさん
05/02/17 14:07:050643デフォルトの名無しさん
05/02/17 14:18:38例えばツリービューにそのDLLが持つクラスを表現するとかの方法です。
0644デフォルトの名無しさん
05/02/17 14:31:080645デフォルトの名無しさん
05/02/17 16:39:01Thxです。
インテリセンスで出る説明文等の表示が欲しくて、Xmlとか覗いてるんですが、これって入れ子になってるわけでもなく、上から順番にメンバ並べてるだけですよね・・・?
Xmlの意味あるんでしょうかこれ。
menbersの中に全部memberとしてプロパティからメソッドまで、まったいらで入ってるんですが。
0646デフォルトの名無しさん
05/02/17 20:05:59もっといい方法(本来そのために用意されているクラス)などがありましたら教えてください。
Form frm = new Form();
frm.FormBorderStyle = FormBorderStyle.None;
frm.ShowInTaskbar = false;
frm.TopMost = true;
frm.Show();
0647デフォルトの名無しさん
05/02/17 20:25:20Owner = thisか、Show(this)か。
0648デフォルトの名無しさん
05/02/17 23:23:44ってどうやんの?
C# 2003でWindows アプリケーションのプロジェクトを
作ってまってます。
0649デフォルトの名無しさん
05/02/18 00:12:15C#でスタンドアロン可能なソフトを作ることって不可能なんですか?
今までVB6.0だったので(ランタイムは必要でしたが)自分で作ったプログラムが
友人のPCでは動かないということが起きており結構困っています。
0650デフォルトの名無しさん
05/02/18 00:24:330651デフォルトの名無しさん
05/02/18 00:32:020652デフォルトの名無しさん
05/02/18 03:18:51コントロールライブラリが作れないと書いてあってしょんぼりしてます
・Windows コントロール/Web コントロール プロジェクトの作成
http://www.microsoft.com/japan/msdn/vstudio/productinfo/featurelist.asp
Standard だとユーザーコントロールが作れないって事ですか?
VisualC++は作れるみたいなので悩み中です
再利用しやすいユーザーコントロールを作りたいのですが
これは Professional を買えと言うMSの陰謀ですか?
0653デフォルトの名無しさん
05/02/18 07:14:49答え書いてあるじゃん
0654デフォルトの名無しさん
05/02/18 09:50:13子供の名前を使ってtheSpokeを買う
と言ってみるテスト
0655デフォルトの名無しさん
05/02/18 09:52:38VS,NETのIDEで作業してるときに、
クラスにインターフェースを継承させると、
自動的にインタフェースのメンバが付加されますよね?
それはいいんですけど、同時に#regionも付加されてしまうのが
わたし的にはウゼーんで、この機能をできれば無効に
したいのですが、そんな設定出来ますかしらん。
0656デフォルトの名無しさん
05/02/18 09:56:56何度も既出で少しごにょごにょすれば可だったと思う。
0657デフォルトの名無しさん
05/02/18 10:08:07いや、この場合RADで作成できないと言うのがネックだろ?
クラスライブラリの作成はStandardでもできるということらしいだし。
私は殆ど使わないのでどうでも良い機能だが。
0658デフォルトの名無しさん
05/02/18 10:23:47デザイナがないかもしれないのではっきりとは言えないが。
どちらにせよ一から手で書く場合は作れるはず。
手間はそんなに変わらないと思うがなぁ・・・
0659649
05/02/18 14:29:35「.net frameworkをインストールしてください」
とかいうメッセージボックスをC#で出すことは可能ですか??
もし無理ならC++で起動プログラムを書いて、
.net frameworkがインストールされているかC++で調べて、もしもインストールされているようなら
C++の起動プログラムからC#で書かれた本体を起動するっていう方法にしたいのですが・・・
すれ違いですが、C++で.net framewrokがインストールされているか調べる方法ってありますでしょうか?
0660デフォルトの名無しさん
05/02/18 14:38:240661デフォルトの名無しさん
05/02/18 14:44:35.NET Framework がインストールされているかどうかの確認方法
http://www.ailight.jp/blog/sha256/archive/2005/01/12/3667.aspx
0662デフォルトの名無しさん
05/02/18 15:27:46Thx!
0663デフォルトの名無しさん
05/02/18 16:34:42ぐぐってもでてこないヽ(`Д´)ノウワァァァン
0664デフォルトの名無しさん
05/02/18 17:14:080665デフォルトの名無しさん
05/02/18 18:36:30ネイティブコードから.NETのVersionを調べるのは、CorBindToRuntimeExと
GetCORVersionを呼び出してみるという方法もありますが、
.NETのまったく入ってない環境ではどうなるかは試せてないです。
エラーコードか補足できる例外が戻ってきてれば使えると思います。
0666デフォルトの名無しさん
05/02/18 19:53:41test2内のメソッドからtest1にあるフォームを新たに作成するメソッドをコールバックで呼ぶとモーダルダイアログにならない。
test1のフォームを新たに作成する関数
{
Form2 form = new Form2();
form.ShowDialog(this);
}
こんな感じなのだけど、この場合thisはtest2を指すのということでOK?
test1上のモーダルダイアログにしたい場合は、test2にtest1のインスタンスを渡してやらないダメってこと?
0667デフォルトの名無しさん
05/02/18 20:08:17文章がグダグダでひたすら把握しにくいな。
test1にあるフォームって何だ? test1の内部にネストクラスとしてForm2を定義してるのか?
> こんな感じなのだけど、この場合thisはtest2を指すのということでOK?
そりゃtest2の中で定義されてるメソッドではthisはtest2のインスタンスだろ。
> test1上のモーダルダイアログにしたい場合は、test2にtest1のインスタンスを渡してやらないダメってこと?
そう言う事になるな。
0668デフォルトの名無しさん
05/02/18 20:29:05すでに一行目から意味が分からないんだが・・・
0669デフォルトの名無しさん
05/02/18 20:53:05立てる形で実装しているのですが現状1700〜1800本同時につなぐと
OutOfMemoryで接続が出来なくなります。
スレッド毎で使うメモリを増やすとつなげられる本数が減るのでプロセスで確保してる
メモリの問題かなと思うのですが、この使用できるメモリを増やす方法は
無いのでしょうか。
マシンとしては搭載メモリはまだかなり余裕があります。
タスクマネージャで見ると1プロセス50〜60MBくらい食っているようです。
何かポインタでもいいので情報がある方がいらっしゃいましたら教えてください。
0670デフォルトの名無しさん
05/02/18 21:05:32スレッドA・・・メインのスレッド
スレッドB・・・一通り処理をした後終了(自殺)する
の2つのスレッドがあります。
スレッドBから同時にフォームを何個か表示する必要があるんですが、
Show()で表示するとスレッドBが終了した瞬間に消えてしまいますし、
ShowDialog()だとそのフォームが閉じるまで処理が戻ってこないので
複数同時に表示することができません。
どうかお知恵をかしていただけませんか?
0671デフォルトの名無しさん
05/02/18 21:19:22BeginInvoke使ってUIスレッドでShow()を実行させれば?
>>669
……1700?
0672デフォルトの名無しさん
05/02/18 21:41:26スレッドBからフォームを表示するのであれば、Invokeする必要は無いのでは?
>>670
流れをもう少し詳細に書いてみてください、消すタイミングが謎です。
0673デフォルトの名無しさん
05/02/18 21:54:25>test1のフォームを新たに作成する関数
これが test1 クラスのメンバなら、その関数内での
this は test1 クラスのインスタンス。
0674デフォルトの名無しさん
05/02/18 21:57:09その設計は少々マズイと思いますが、
とりあえずThreadPoolの方を使うとどうなりますか?
0675デフォルトの名無しさん
05/02/18 22:00:13>>671の言うようにBeginInvokeでメインスレッドに通知してそっちで表示しても良いし、
物事が良くわかっていて、かつスレッドB側で表示したいのなら、自殺前にスレッドB
側でApplication.Run()してあげれば良かったと思う。
この場合フォームが全部閉じられたら自前でApplication.Exitするようにする必要が
あったような無かったような・・・
0676デフォルトの名無しさん
05/02/18 22:17:40スレッドBは複数回の一連の時間のかかる処理を繰り返します。
で、その一連の処理が一度終わるごとに新しいフォームを数秒間表示して結果を表示したいんです。
1.スレッドA(メインのFormのスレッド)
↓
2.ボタンを押す
↓
3.スレッドB開始
↓
4.時間のかかる処理
↓
5.結果を新しいフォームに表示→続きがある場合は4.へ
↓
6.スレッド終了
という流れなんですが、
スレッドが終了すると表示する秒数が経過する前に消えてしまいます。
0677デフォルトの名無しさん
05/02/18 22:33:24単純にスレッド終了時にSleepで適当な秒数まったらOKでは?
0678デフォルトの名無しさん
05/02/18 22:38:420679デフォルトの名無しさん
05/02/18 22:40:13すでにApplication.Run()でUI完了を待てと結論が出てるわけだが。
0680デフォルトの名無しさん
05/02/18 22:43:36意味不明なまでに必死だな、何者だよお前?
0681デフォルトの名無しさん
05/02/18 22:44:34すいません。大事なことを書き忘れてました。
1.スレッドA(メインのFormのスレッド)
↓
2.ボタンを押す
↓
3.スレッドB開始
↓
4.時間のかかる処理
↓
5.イベントを発生させてスレッドAに通知
↓↓↓
↓↓└→続きがある場合は4.へ
↓↓
↓└→→続きがなければスレッドB終了
↓
6.スレッドAでイベント受信
↓
7.結果を新しいフォームに表示
でした。
複雑ですが、よろしくおねがいします。
0682デフォルトの名無しさん
05/02/18 22:49:59このフォームはどれですか?
メインのFormに表示するなら、メインにInvokeを使って通知する必要があります。
Bのスレッドで表示するなら、全てが終わった所でShowDialogでOKな気がします。
もし、そのFormが複数あるなら、複数のウインドウ全てが閉じるのを待つコードをスレッドの最後に入れることになります。
0683デフォルトの名無しさん
05/02/18 22:55:08全く別のフォームです。
6.で一回一回新しいフォーム(のインスタンスを作成して)表示したいんです。
0684デフォルトの名無しさん
05/02/18 22:58:366の段階という事は、処理は全て終わった後になると思うので、1回だけだと思いますが(^^;
5の最後ですよね。
それなら、単純に生成したウインドウをArrayListか何かに登録させておいて、
全部完了までスレッドの最後にまてば良いかと思いますが。
0685デフォルトの名無しさん
05/02/18 22:59:40イベントを受け取るのはオブジェクト(Form)であってスレッド(スレッドA)ではない。
スレッドBが通知したイベントのハンドラを実行するのはやっぱりスレッドB。
//そのためにInvoke/BeginInvokeが存在するわけで。
だから6.でイベントハンドラにてShowDialogで問題なし。
0686デフォルトの名無しさん
05/02/18 23:01:100687デフォルトの名無しさん
05/02/18 23:16:25そういうことですか!
ありがとうございました。
>>686
エスパーなのかもしれませんねw
ほんとに私の疑問に思っていたことの通りです。
もうひとつ質問なんですが、
例えば>>681の6.はスレッドBなんですよね?
ということはここから直接Formを操作するのはまずいってことですよね。
>>685氏のいうようにInvokeを使うべきというのは聞いたことがあるんですが、
実際にはどう使えばいいんですか?
また、直接操作するのは何がまずいんですか?
0688デフォルトの名無しさん
05/02/18 23:49:11Streamの途中から読み出したり、書き込んだりする方法ってないの?
Bitmap用にStreamを別に作成したり、2つのStreamの間でコピーするために
byte[]も用意しなければならなかったりして、面倒なんだけど…。
0689デフォルトの名無しさん
05/02/19 00:04:32ttp://dobon.net/vb/melma/dotnet25.txt
>>688
取りあえずPositionを事前にいじってみたらどうだと言ってみる。
何がしたいのか掴めないが。
0690688
05/02/19 00:36:11やりたいことは、1つのファイルの中に複数の画像データを保存すること。
Bitmapクラスでは、通常の「画像ファイル」への読み書き以外に、
Streamへの読み書きができるが、Positionが0から読み書きしてしまって
不便に感じている。
Positionを意図的に変えてやっても駄目。
いい方法ないかなと思って。
取り敢えずは、ファイル読み書き用のFileStreamに加えて、
Bitmapのデータを仲介させるMemoryStream、
並びに、これら2つのStreamを仲介させるbyte[]を使っているが、
コードが冗長になる上に、
実行時のパフォーマンスも低下させている。
当然あってもいいメソッドだと思うのだが…。
0691デフォルトの名無しさん
05/02/19 00:42:53したいのですが、画面より大きなサイズの描画領域のときにスクロールバー
を出したいのですが、スクロールバークラスのインスタンスをもつだけでよいの
でしょうか?
0692デフォルトの名無しさん
05/02/19 00:50:40僕の好みはSystem.Windows.Forms.UserControlのAutoScrollプロパティーをtrueにして
中にパネルとかを放り込んで、そこに書くのが好みかな。
0693デフォルトの名無しさん
05/02/19 01:20:57吹き出しの形したバルーンヘルプを出すにはどうすれば良いんですか?
0694デフォルトの名無しさん
05/02/19 01:40:39いや、あんまり普通じゃない。
Image.Saveは画像ファイルを作るのが目的なわけで、画像2つ分のファイルデータを並べたらそれはもう画像ファイルでなくなるから。
//tiffなら複数画像を収めるSaveAddメソッドがあるけどね。
//あと、リソースにしたいというなら別の解法があるけど。
試してはないけど、Streamを継承した、指定範囲だけを返す(操作できるようにした)ストリームバッファクラスを作ってみるとか。
0695688
05/02/19 02:29:17やりたいのは汎用の画像ファイルの読み書きではなくて、
画像データを内包した独自のフォーマットのファイル。
無圧縮のRGBのラスタデータでは無駄にファイルサイズが大きくなるので、
ラスタデータをPNGなりJPEGなりの圧縮された形で独自のファイルの中に取り込みたかったのである。
Streamクラス調べた方がいいのかな。
ということで、レスありがとう。
0696デフォルトの名無しさん
05/02/19 03:37:35比較するより Length == 0 のほうがいいんでしょうか?
0697652
05/02/19 03:49:26サンクス!過去ログ調べてみるよ
>>657
まあそんなに使わないんだろうけど
やっぱりコントロール作れると便利だしね
ライブラリに出来ればもっと(・∀・)イイ!!
>>658
あんがとー
テンプレート確保しればいいのか
0698デフォルトの名無しさん
05/02/19 03:55:22str == ""
これが一番自然だと思うがどうか。
0699デフォルトの名無しさん
05/02/19 08:07:490700デフォルトの名無しさん
05/02/19 11:12:430701デフォルトの名無しさん
05/02/19 12:00:31{
static void Main
{
Hoge obj = new Hoge();
obj.show(this);
}
}
class Hoge
{
public void show(Form1 fm1)
{
Form2 fm = new Form2();
fm.ShowDialog(fm1);
fm.Dispose();
}
}
大まかにはこんな感じのアプリを作ってみたが、Form2がモーダルにならない。どうしたものか。
0702デフォルトの名無しさん
05/02/19 12:08:240703デフォルトの名無しさん
05/02/19 13:48:14一応、単純なDLで十分なので
http://dobon.net/vb/dotnet/internet/downloadfile.html
こちらにある方法で実装してみました。
ただ、ダウンロードが完了したサイズはSystem.IO.FileInfoから毎秒ごとに取得できるのですが、
ダウンロードするファイルのサイズの取得方法がイマイチ解りません。
5MBほどのファイルなので、プログレスバーで進行状況を表示しないと
流石に不便かと思いまして・・・
どうか宜しくお願い致します。
0704デフォルトの名無しさん
05/02/19 14:09:20HttpWebResponse.GetResponseStream
0705デフォルトの名無しさん
05/02/19 14:18:460706デフォルトの名無しさん
05/02/19 14:20:500707デフォルトの名無しさん
05/02/19 14:42:33よくわかりました。
本当にありがとうございました。
//Invokeを使うように修正したら心なしかレスポンスが良くなった感じがします。
0708デフォルトの名無しさん
05/02/19 15:24:20生成している)
GetRequestStreamがnullになるんだな。どうすりゃいいべ?
0709デフォルトの名無しさん
05/02/19 15:59:15うそーん(笑)
0710デフォルトの名無しさん
05/02/19 16:07:24C#のSMTPサーバーが全然ないから参考にするものがないヽ(`Д´)ノウワァァァン
0711デフォルトの名無しさん
05/02/19 16:10:51やることは C++ 製の鯖でも Delphi 製の鯖でも etc.............. でも変わんないよ
コードの丸写しになるから C# のサンプル探すの止めたほうが
0712703
05/02/19 16:37:40>>704さんの云うように
http://dobon.net/vb/dotnet/internet/webrequestsavefile.html
こちらの方法でプログラムを作ったのですが、動作のほうはするのですが
異常なくらいDLの速度が遅くなってしまいました。
タイマーで毎秒ごとにファイルサイズなどを確認している為だと思って、
その機能を消したのですが、単純なファイルのDLにしても毎秒20KBくらいしかでません。
System.Net.WebClientのDownloadFileを使うと普通に毎秒300KBくらいは出るのですが・・・
これは仕方がないことなのでしょうか?
0713デフォルトの名無しさん
05/02/19 16:41:28http://cdrtest.hp.infoseek.co.jp/cgi-bin/snup/src/VisualVision0048.txt
Perlではこんな感じになるんですが、C#に移植できませんでしょうか・・・
このスレの住民の方々の力量なら余裕なのでしょうが、
Socketとかも熟知していない人間なので・・・
0714デフォルトの名無しさん
05/02/19 16:43:45……って、なんでバイト単位で読み書きしてるんだ >dobonのサンプル
byte配列のバッファを使ったRead/Writeに書き直せば随分変わるはず。
バッファサイズは4kbyteくらいがいいぞ。
0715デフォルトの名無しさん
05/02/19 16:44:34遅い原因は、ReadByte を使っている事
Read を使ってまとまった量のデータを取得した方が早いよ
5MB 程度ならば、5kB ずつ取得すれば良いのでは?
それから、ダウンロード済みのサイズは取得した量から大まかに測れるから、それの方が良いかと
0716デフォルトの名無しさん
05/02/19 16:49:35perl よく分からんが、NET Framework には Net::SMTP モジュールに該当するのが無かったような気がする
(System.Web.Mail が使えるかもしれんが)
この際だから、SMTP プロトコル周辺も含めて勉強してみては?
0717デフォルトの名無しさん
05/02/19 17:10:250718デフォルトの名無しさん
05/02/19 17:13:23System.Web.Mailは流石に無理だろw
Perl最強説ヘ(゚∀゚ヘ)アヒャ(嘘
0720デフォルトの名無しさん
05/02/19 17:35:29Point p = new Point(Cursor.Position.X - this.Location.X,
Cursor.Position.Y - this.Location.Y);
だとどうしても右下へずれてしまうようです。
うまくいく方法はありませんか?
0721デフォルトの名無しさん
05/02/19 17:37:38境界線なんかを考慮しないといけないんじゃないかな
0722デフォルトの名無しさん
05/02/19 17:38:08this.Location.Y - Cursor.Position.Y);
こうだった・・・。つまりクライアント領域の0,0を求めたいのです
0723デフォルトの名無しさん
05/02/19 17:42:370724デフォルトの名無しさん
05/02/19 17:47:02>>723
ありがとう。めっさ素敵メソッドです。
0725666
05/02/19 18:38:54>>668
意味不明で申し訳ない。書き直してみた。
メインフォーム上から作成したスレッド上で新たにフォームを作りたい。
そのフォームはメインフォームのモーダルダイアログにしたいが、ただShowDialogするだけでは表示はするがモーダルになってくれない、ってこと。
メインフォームを表示しているスレッドと新たに作成したスレッドが別物なので、単純にShowDialogしただけではダメってことは何となくわかるのだが、
どうやって目的を果たせばよいのかが分からない。
0726デフォルトの名無しさん
05/02/19 18:46:00空文字のチェックは a.Length == 0 が一番速い。
null や同一インスタンスの場合は String.Equals(a, b) が一番速い。
別インスタンスの文字列の比較は a.Equals(b) が一番速い。
a == b は一番遅い。
0727デフォルトの名無しさん
05/02/19 18:48:20>>670-690辺りのと殆ど同じだなオイ。
メインフォームのInvoke使って、メインフォームのUIスレッド上でShowDialogすればいい。
>>726
そんなのがボトルネックになることなんてまずないと思うんだが。
ボトルネックにならない限り、str.Length == 0なんて直感的でないコーディングはどうかと思う。
0728デフォルトの名無しさん
05/02/19 18:52:25a ^= b; b^=a; a ^=b; よりも c = a; a = b; b = c; の方が速かったよ
CPU は Pentium III
0729デフォルトの名無しさん
05/02/19 18:52:50String.Empty.Equals(a) ってのはどうだろうか
0730デフォルトの名無しさん
05/02/19 18:54:54あたりまえだw
0731デフォルトの名無しさん
05/02/19 19:01:50確かに。100万回繰り返してもたいした差がないな。
でもLength == 0ってそんなに非直感的かなぁ。
0732デフォルトの名無しさん
05/02/19 19:28:28気にしすぎだろ、どっちでも十分直観的、これが直感的でないというなら言う奴が池沼だよ。
0733デフォルトの名無しさん
05/02/19 19:36:10□←アイコン
x ←文字列 で
□xxxxxxx
□xxxxxxx
□xxxxxxx
□xxxxxxx
というようにある行だけをインデントさせたいんだけど
どうやればいいのでしょうか?
0734デフォルトの名無しさん
05/02/19 19:38:27インデントというか逆インデントというか
0735デフォルトの名無しさん
05/02/19 19:38:48[ ]←空白とみて下さい。
□xxxxxxxxxx
[ ]□xxxxxxxxxx
[ ]□xxxxxxxxxx
□xxxxxxxxxx
0736デフォルトの名無しさん
05/02/19 19:44:46ListViewItem には該当プロパティは無かった
独自に描画すれば何とかなるかもしれないけど、TreeView に切り替えた方がいいかもしれん
線なし・田なし、クリック時に縮小を禁止にすれば、それらしくなるんじゃないか?
それから、半角スペースは & な
0737デフォルトの名無しさん
05/02/19 19:45:330738デフォルトの名無しさん
05/02/19 19:51:19アドバイスどうもです。
実際には
□xxxxxx AAA BBB CCC
という風にあとに列が続くんだけどそれも
TreeViewで実現可能ですかね?
0739デフォルトの名無しさん
05/02/19 19:54:45そいつは無理だわ
オーナードローで何とかすべし
0741デフォルトの名無しさん
05/02/19 20:02:50オーナードローって自分でオーバーライドして作りこむってことですよね?
なんとかがんばってみます。ありがとうございました。
0742669
05/02/19 20:16:03ThreadPoolは使った事なかったのですが試しにやってみたところ
今の作りだと1プロセスの上限25というのに引っかかっちゃうみたいで
逆に接続数が減る形になってしまいました。
目標値としては2000人同時接続のサーバとして考えていたのですが
この規模になってくると確かに設計をしなおさないといけないようですね
0743デフォルトの名無しさん
05/02/19 20:20:53それだけの量を捌くのならば、鯖を複数台にした方が簡単かと思う
あと、どんな事をやりたいかによって変わるけど、接続後即切断とか
0744デフォルトの名無しさん
05/02/19 20:21:18ガリガリ受信して計算すればいいんじゃね?
ネットワークゲームとかはそうやってやってるよ。スレッド2000個とか
恐ろしいことはしないですよ。マスタリングTCP/IPとか海外の.NETのネットワーク
プログラミング系の本にネタのってるから見てみぃや
0745長文失礼
05/02/19 22:04:27SMTPやTCPの勉強も兼ねて敢えてTcpClientにしようと思います
Telnetと同じように送りたいのですが、初心者故にどうもうまくいきません。
プログラムが起動されると自動的にSMTPサーバーに接続してListenerを別スレッドで開始します。
tcpcl = new TcpClient();
tcpcl.Connect("localhost", 25);
strm = tcpcl.GetStream();
trdListener = new System.Threading.Thread(new System.Threading.ThreadStart(Listen));
trdListener.Start();
そのListenerのスレッドというのは
String strmtxt;
int blen;
while(true)
{
while(true)
{
byte[] bread = new byte[4096];
blen = strm.Read(bread, 0, bread.Length);
strmtxt = Encoding.ASCII.GetString(bread, 0, blen);
if (blen < bread.Length)
{
break;
}
}
Console.WriteLine(strmtxt);
}
っとやってみたのですが・・・
0746長文失礼
05/02/19 22:06:12byte[] bsend;
bsend = Encoding.ASCII.GetBytes(txtSend.Text + "\n\n");
strm.Write(bsend, 0, bsend.Length);
strm.Flush();
というようにやっています。
こっちの方は間違いないと思うのですが・・・
0747デフォルトの名無しさん
05/02/19 23:26:210748長文失礼
05/02/19 23:33:590749デフォルトの名無しさん
05/02/19 23:39:400750デフォルトの名無しさん
05/02/20 00:14:20Googleとか面倒なので誰か手っ取り早く教えてください。
0751デフォルトの名無しさん
05/02/20 01:55:250752デフォルトの名無しさん
05/02/20 04:06:45翻訳してスレに転載したらウケるかな?
1日20ページくらいならわりと楽にイケるけど。
0753デフォルトの名無しさん
05/02/20 04:16:03見たいとは思うけど著作権侵害。
やめておいた方が無難。
0754デフォルトの名無しさん
05/02/20 07:22:06↑こういうHTML文書をWebブラウザで開いたときに表示されるであろうイメージを印刷するにはどうしたらよいですか?
Processクラスで外部IE起動するのは無しの方向で。
0755デフォルトの名無しさん
05/02/20 07:46:11デバイスコンテキスト取得してBitmapに保存する。
P/Invoke使えばできましょう。
0756デフォルトの名無しさん
05/02/20 12:49:15外部起動は無しだって書いてあるジャン
0757デフォルトの名無しさん
05/02/20 14:21:050758デフォルトの名無しさん
05/02/20 16:26:470759デフォルトの名無しさん
05/02/20 17:42:130760デフォルトの名無しさん
05/02/20 18:06:250761デフォルトの名無しさん
05/02/20 19:23:45なんのDCを取得するのだ?
0762デフォルトの名無しさん
05/02/20 23:07:50どのようにスクロール処理をするのでしょうか?
Graphics.DrawImageであれば範囲描画ができるのですがどのように考えれば
いいのかGraphics.DrawStringの場合わかりません。
0763デフォルトの名無しさん
05/02/20 23:10:450764デフォルトの名無しさん
05/02/20 23:11:45GetGraphics で取得した Graphics には最初から設定されているだろうから
別に気にしなくても良いかもしれないけど
0765デフォルトの名無しさん
05/02/21 00:59:49気がするのですがみなさんはどのようにしているのでしょうか?
OnVScrollが見当たらないような気がします。
0766デフォルトの名無しさん
05/02/21 06:48:450767デフォルトの名無しさん
05/02/21 07:05:40MeasureStringであらかじめ大きさを調べておくとかどうかな
0768デフォルトの名無しさん
05/02/21 07:12:59.NET2.0でScrollableControlにScrollイベントが追加されるのでそれまでは涙をのんでWM_VSCROLL & WM_HSCROLL。
0769デフォルトの名無しさん
05/02/21 21:25:39時間を短縮するコツみたいなものありますか?
0770デフォルトの名無しさん
05/02/21 21:37:34コード見てみないとな
0771デフォルトの名無しさん
05/02/21 21:58:49お互いのWeb.configを参照するような方法は無いのでしょうか?
相手側のプロジェクトを[参照の追加]で参照設に入れて、
相手側のWebコンフィグ読み込みクラスを呼びだしてみたのですが、
上手く読み出せません。
IConfigurationSectionHandlerを継承する方じゃなくて、
単純なConfigurationSettings.AppSettingsを使ってます。
0772デフォルトの名無しさん
05/02/21 22:06:05自分のweb.configの情報を公開するプロパティを作ればいいんじゃね。
0773デフォルトの名無しさん
05/02/21 22:18:150774デフォルトの名無しさん
05/02/21 22:28:490775771
05/02/21 22:34:16Web.config読み出すときに、下のようなコード使うんですが、
System.Configuration.ConfigurationSettings.AppSettings[キー]
これを公開するためのクラスを作って関数呼んでも、
値が取れないんです・・・
Web.configを読み込む関数から自作すれば、あるいはなのかも・・・
でも、Web.configってキャッシュとか良きに計らってくれるんですよね・・・
だから、関数自作するって言うのも・・・
正直、よくわかりません。
0776デフォルトの名無しさん
05/02/21 23:19:05ColumnHeaderのHeightをとる方法って誰かわかりませんか?
コンポーネントのヘッダ部分だけ使いたいんですけど
0777デフォルトの名無しさん
05/02/21 23:38:49おぉ神よ!罪深き我にC#を用いてパソコンのボリュームを変更する方法を享受して下さい!
っとふざけた言い方になってしまいましたが・・・どうかお願い致します。
0778デフォルトの名無しさん
05/02/21 23:56:39直接取れる方法はなかったと思う。
強引に行けばLVM_GETHEADERでハンドルとってGetWindowRect()やれば取れる筈。
ただ、ヘッダだけ使いたいのならヘッダーコントロールを作るべき。
0779デフォルトの名無しさん
05/02/22 00:36:47ListViewが独自コンポーネントで流用して さっくり仕上げたかったんですけどね
>LVM_GETHEADERでハンドルとって
ちょっと、きれいじゃないみたいですね・・・
多少関連Ref 列ヘッダの順番を得る方法
http://backno.mag2.com/reader/BackBody?id=200411230600000000104516000
0780デフォルトの名無しさん
05/02/22 00:36:49「享受」してくださいって言われても・・・
0781デフォルトの名無しさん
05/02/22 00:42:29ソフトで画像を作り出して、送信ボタンを押すと
同じフォルダにbanner.jpgというファイルを作り、それをSystem.Web.Mailで送信しようと思っています。
作った画像を保存するところまではできるのですが、どうも正常にメールを送信できないのです。
画像を添付するところを外すと正常にメール送信できますので、恐らく、banner.jpgというファイル名で保存したあとに
アクセス権みたいなものが残ってしまっていて、巧く添付できないのだと思っています。
一応、画像の保存は
bmp.Save("banner.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
という方法で行い、直後に
bmp.Dispose();
とやって開放してあげているのですが・・・
やはり、プログラム自体を再起動しないと無理なのでしょうか?
0782デフォルトの名無しさん
05/02/22 00:43:36そんなことするくらいなら、ユーザーにメッセージボックスで「ボリュームを大きくして下さい」とか
「ボリュームを小さくして下さい」なんて出した方がてっとりばやいさぁ!オイオイ
0783デフォルトの名無しさん
05/02/22 00:48:03FileStreamだかなんだかを開いて、そこにSaveしたあとCloseすると良いよ。
0784デフォルトの名無しさん
05/02/22 00:52:56正常に送信できないってのは具体的にどうなるの?
//Saveメソッドはファイルをクローズするところまできっちり面倒みてくれるよ?
0785781
05/02/22 00:57:34〜略〜
bmp.Save(@"banner.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
bmp.Dispose();
System.Web.Mail.MailMessage mm = new System.Web.Mail.MailMessage();
System.Web.Mail.MailAttachment attachment;
//送信者
mm.From = "";
//送信先
mm.To = "";
//題名
mm.Subject = "掲載申請";
//本文
mm.Body = time.ToString();
//JISコードに変換する
mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220);
//SMTPサーバーを指定する
System.Web.Mail.SmtpMail.SmtpServer = "";
//添付ファイルに追加
attachment = new System.Web.Mail.MailAttachment("banner.jpg");
mm.Attachments.Add(attachment);
//送信する
System.Web.Mail.SmtpMail.Send(mm);
というようなソースです。
0786デフォルトの名無しさん
05/02/22 00:58:03なんでわざわざふざけるの?
まあこの辺でも見ときな。
ttp://www.terra.dti.ne.jp/~vivas/delphi/mixerapi.html
0787781
05/02/22 01:00:33CDO.Messageオブジェクトにアクセスできませんでした。
というものです。添付ファイルを全く別のファイルにすると正常に送信できますので…
0788デフォルトの名無しさん
05/02/22 01:06:14信用されてないようなのでもう一度書くけど(w
「FileStreamだかなんだかを開いて、そこにSaveしたあとCloseすると良いよ。」
こういう感じ↓
FileStream out_stream = new FileStream( out_file_name, FileMode.Create, FileAccess.Write);
out_bitmap.Save( out_stream, System.Drawing.Imaging.ImageFormat.Jpeg );
out_bitmap.Dispose();
out_stream.Close();
0790781
05/02/22 01:36:28以前は、保存するためだけのソフトを別に動かして
保存ソフトを起動→保存→保存ソフトを終了→メールで送信
という無理矢理な方法をしていたんですが、やはり無理矢理なので。。。
試しに保存の方をメール送信とは別スレッドにしてみますね。
試行錯誤せねば・・・
0791781
05/02/22 01:47:56単純にThread.Sleepで500ms眠らせたらOKでした。
おぉぉ!っと思い、200msにしてもOK、50msにしてもOK、
試しにThread.Sleepを外してみましたが、こんどはエラーが起きませんでした・・・・
一体なんだったんでしょう(涙)
本当に皆様、お騒がせ致しました。
0792デフォルトの名無しさん
05/02/22 01:48:51で。それで本当にバグ取れたと思ってんの?
0793デフォルトの名無しさん
05/02/22 05:55:260794デフォルトの名無しさん
05/02/22 16:20:010795デフォルトの名無しさん
05/02/22 19:57:43おぉぉ!っと思い、200mgにしてもOK、50mgにしてもOK、
試しに投与を中止してみましたが、こんどは症状が起きませんでした・・・・
一体なんだったんでしょう(涙)
0796デフォルトの名無しさん
05/02/22 20:26:15想像妊娠
0797デフォルトの名無しさん
05/02/22 20:27:450798779
05/02/23 00:32:48FlowLayoutでButtonとSplitter並べていけば終わるのではと思ったのですが
FlowLayoutはないのでしょうか?
コントロールの上に、Unit := (Left (| Unit)?)
「Left := Button、|:= Splitter」 Dock.LeftとDock.Fillの入れ子にしていく
と線形リストにするのも変な気がするし、どうしようかなぁ。と思っています
いいお知恵はないでしょうか?
0799デフォルトの名無しさん
05/02/23 01:02:40SysHeader32クラスでコントロールを作れば一発
0800デフォルトの名無しさん
05/02/23 11:44:21使うとしたら商用OK&フリーのDLLとかありますか?
0801デフォルトの名無しさん
05/02/23 12:13:57Dock.Left で並べていけばよかったような気がする。
0802デフォルトの名無しさん
05/02/23 16:23:480803781
05/02/23 19:41:40簡単な再生だけならWindowsMediaPlayerを追加するのが一番ラクダと思う。
0804デフォルトの名無しさん
05/02/23 19:53:09一斉に切り替えて表示/非表示を切り替えるWindowsフォームを作って
いるんですけど、visibleプロパティをfalseにした際、puctureBoxが一斉
に消えず、コードの上にある順にぞろぞろと消えていきます。
trueの場合は一斉に消えるんだけど。
一斉に同時に消すにはどんな技を使えばいいか知ってる香具師いませんか?
0805デフォルトの名無しさん
05/02/23 19:54:59 ̄
こういうショートカットキーをボタンに設定するにはどうしたらいいのですか?
0806デフォルトの名無しさん
05/02/23 19:56:490807デフォルトの名無しさん
05/02/23 20:07:07「panel」使うとどう?
0808デフォルトの名無しさん
05/02/23 20:38:45FormのSuspendLayoutとResumeLayoutならどうか。
0809デフォルトの名無しさん
05/02/23 21:39:51要望としては、
・ダブルクォーテーション内のカンマを意識してくれる
・項目の数を指定しなくても適宜読み込んでくれる
このくらいでいいのですが…。何かよい CSV クラスを御存知であれば
URL を教えて頂けないでしょうか?
よろしくお願いします。
0810デフォルトの名無しさん
05/02/23 21:46:54何を見つけてどう不満だったのかね。
0811デフォルトの名無しさん
05/02/23 21:53:52新しいものをロードさせる例は大量に見つかったのですが……
0812809
05/02/23 22:02:23CSV の項目数をあらかじめ指定しなければならなかったり、
ダブルクォーテーションの中のカンマを無視して .split(",") 的な
パースしかしてくれなかったり、という事です。
具体的に何を見つけたかってのは、それを公開している方に申しわけないので
あえて書かないようがよいかと思いました…。
0813デフォルトの名無しさん
05/02/23 22:06:450814最凶VB厨房
05/02/23 22:09:010815809
05/02/23 22:09:38がんばって書いたんですけど、速度がめっちゃくちゃ遅かったんですよ…。
ですので、コードを参考にしたくて何かよいコードはないかなと探してみたん
ですが、要望の事を行なえるコードがみあたらなかったもので…。
0816最凶VB厨房
05/02/23 22:16:340817デフォルトの名無しさん
05/02/23 22:17:53真性?
0818最凶VB厨房
05/02/23 22:25:09コワガリスキーってだれや?
はい、まさがです。
0819デフォルトの名無しさん
05/02/23 23:35:11StringBuilderを使ってますか?
これを使ってないことが文字列操作が遅い原因になってるケースが多いです。
0821779
05/02/24 00:26:14FlowLayout普通にできたんですね。
SysHeader32を使うとXpでのExploreにおいての詳細表示のヘッダみたいなのが簡単にできるのかな
ヘッダコントロールで実現したいことは
スプリッタが動いているときにイベントが取れることと、
Columnの順番の取得(Reorderが終わったらイベント発行とかも)なんですけど。
・ ListViewを継承し、WinProcオーバーライドしてイベントをディスパッチ (それって、できるのか?)
・ 独自にButtonとSplitなどからがんばって作る (Exploreみたいにかっこよく作るのは大変そう)
・ SysHeader32を使ってがんばる (難しそう)
どれがいいのだろうか。。どうか、詳しい人お勧めを教えて下さい
0822C♯しようかな
05/02/24 04:04:390823デフォルトの名無しさん
05/02/24 04:09:14string s2 = "一行目\\r\\n二行目\\r\\n";
エスケープの話じゃない?
0824デフォルトの名無しさん
05/02/24 06:27:42""内のカンマ許可、\,でカンマをエスケープして
csvファイルの1行を分割
Regex csvRegex = new Regex("[^,\"\\\\]*(?:(?:\\\\.|\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\")[^,\"]*)*,?", RegexOptions.Compiled);
private string[] SplitValues(string line) {
MatchCollection mc = csvRegex.Matches(line);
string[] values = new string[mc.Count - 1];
for (int i = 0; i < mc.Count - 1; i++) {
values[i] = mc[i].Value.TrimEnd(',');
}
return values;
}
0825デフォルトの名無しさん
05/02/24 08:09:16使い物にならんだろ・・・
0826デフォルトの名無しさん
05/02/24 08:12:200827デフォルトの名無しさん
05/02/24 10:29:330828デフォルトの名無しさん
05/02/24 11:14:540829デフォルトの名無しさん
05/02/24 11:25:02それから参考までに。
【C++】マイナーGUIツールキット
http://pc5.2ch.net/test/read.cgi/tech/1065627704/
【GUI】wxWidgets(旧wxWindows) その2【サイザー】
http://pc5.2ch.net/test/read.cgi/tech/1097524712/
[KDE/QT]QTについての疑問を教えあうスレ
http://pc5.2ch.net/test/read.cgi/tech/1047703594/
0830デフォルトの名無しさん
05/02/24 17:24:54>配列を返すプロパティは使用しない
>配列を返すプロパティは内部配列のコピーを返します。このためパフォーマンス上問題があります
って書いてあるんだけど、ほんと?
public IntPtr Ptr{get;}
public int[] Array{get;}
public int[] GetArray();
どれもint.MaxValue回繰り返して20秒程度で同じだったんだけど。
ReferenceEquals(target.m_testArray,target.Array)
もtrue返すし。
0831デフォルトの名無しさん
05/02/24 17:38:34それはクラスの設計上、
内部配列を返すプロパティは好ましくないので(値を外部から直接操作できるから)
通常はコピーを返す、って話じゃないのか。
0832デフォルトの名無しさん
05/02/24 18:06:45{
private ArrayList fieldArray = new ArrayList();
public void Add(string fieldName
{
Item i = new Item(fieldName);
this.fieldArray.Add(i);
}
public struct Item
{
public Item(string fieldName)
{
this.FieldName = fieldName;
}
public string FieldName;
}
}
こんな感じのクラスを作り、((Item)fieldArray[i]).FieldName を
クラスの外で得たい場合はどうやればいいでしょうか?
RootClass rootItem = new RootClass();
rootItem.Add("a");
rootItem.Add("b");
rootItem.Add("c");
としたあとに rootItem[i].FieldName のように値の取得を行ないたいのですが
どのように書けばいいのかさっぱり…。
0833デフォルトの名無しさん
05/02/24 18:13:40> rootItem[i].FieldName
となるとインデクサだな。
インデクサはプロパティの一種で、
class A {
public int this[int index] {
get {return index;} //これは意味がないが
}
}
みたいに記述すると
A a = new A();
Console.WriteLine(a[5]);
と使えるようになる。
0834デフォルトの名無しさん
05/02/24 19:14:18値を修正してもArrayList そのものに入っている値は変化しないのですが
これは構造体の値を変更したらその構造体を再度ArrayListにつっこみ
なおすって事が必要なのでしょうか?
struct test { public int a; }
ArrayList ary = new ArrayList();
test t = new test();
t.a = 100;
ary.Add(t)
Test t1 = (Test)ary[0];
t1.a = 10000;
↑ではだめ。
Test t2 = (Test)ary[0];
t2.a = 20000;
ary[0] = t2;
0835デフォルトの名無しさん
05/02/24 19:24:30まあそれは正しいが、それは本当に構造体にすべきなのかってのは常に考えとかないとダメだぞ。
0836830
05/02/24 19:45:40そういう意味なら納得だけど、
その本の例ではメンバの配列を直接返してるプロパティは悪くて、
メンバの配列を直接返してる関数はOKと書いてた
0837デフォルトの名無しさん
05/02/24 21:28:55たぶん、HttpWebRequestでページ丸ごとダウンロードして、
正規表現で<table>...</table>を切り出して、axWebBrowserに渡せばできると思うんですけど、
どうも、axWebBrowser.Documentプロパティーには代入できないみたいです。
こういう場合どうやってaxWebBrowserのデータを渡せばいいのでしょうか?
0838デフォルトの名無しさん
05/02/24 21:51:57about:blankにNavigateしてDocument.Writeで書き込む。
0839デフォルトの名無しさん
05/02/25 02:13:02できました。ありがとうございます。
IHTMLDocument2にキャストすることに気づかないで延々と悩んでしまっていました。
0840デフォルトの名無しさん
05/02/25 09:43:10クラスを呼び分けてます。
処理別だけど、共通して使いたい関数を作成するには
どうしたらいいんですか。
共通関数だけをまとめたクラスを作って、
使いたい場所で参照する、という形が一般的なんでしょうか
0841デフォルトの名無しさん
05/02/25 10:39:32ん?
抽象クラスなら実装を持つメソッドも定義できるけど?
0842デフォルトの名無しさん
05/02/25 11:30:31ありがとうございます。
抽象クラスに共通関数を書くのが、一般的なんでしょうか
0843デフォルトの名無しさん
05/02/25 11:41:17基底クラスで持つに相応しいメソッドなら基底クラスが持てばいい。
そうでないなら相応しいクラスに置いてそれを使えばいい。
0844デフォルトの名無しさん
05/02/25 13:27:23そうですか。ありがとうございます。
0845デフォルトの名無しさん
05/02/25 23:11:55の代わりに継承使うのはいくないとおもう。
0846デフォルトの名無しさん
05/02/26 04:25:13右クリックでマウスポインタ直下を自動的に選択してくれないんだね。
左クリック(アイテムの選択)→右クリックをする必要がある。
どうにかならないかな?
0847デフォルトの名無しさん
05/02/26 05:35:50MouseDownイベントでコードから選択。
0848デフォルトの名無しさん
05/02/26 07:06:36http://www.atmarkit.co.jp/fdotnet/dotnettips/230tempdir/tempdir.html
「これらの環境変数は、通常Windowsのインストール時に自動的にセットアップされる。
もし、これら3つの環境変数がどれも設定されていなければ、
一時フォルダはWindowsディレクトリ(通常は「C:\Windows」)となる。」
C:\Windows\Temp じゃなかったのか!?
0849デフォルトの名無しさん
05/02/26 07:51:05http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_gettemppath.htm
間違ってない模様。
0850デフォルトの名無しさん
05/02/26 07:57:13C:\Windows 以下にごみばら撒かれる可能性ありってことか。
とはいえ、通常 Administrator 権限で一般ユーザのプログラムが動いている
Windowsなら、何でもありだけどな。
0851デフォルトの名無しさん
05/02/26 08:12:42例えば、クラスAでstring Propertyというプロパティがあって
他のクラスからみると補完の項目リストがPropertyじゃなくてget_Propertyってなるんですけど
どなたか知りませんか?対処法とか
0852デフォルトの名無しさん
05/02/26 10:37:57何か方法があるんでしょうか?
例えば public enum EnumFields.... とある classX にて、
そのクラスを参照している別のクラスで classX. とピリオドまで入力しても
その列挙型が表示されてきません。
ただし、インテリセンスに表示されないだけで、手で列挙のフィールドを
入力してやるとコンパイルは正常に通ります。
インテリセンスに表示されないととっても不便なのですが
何か方法があれば教えてください。
0853デフォルトの名無しさん
05/02/26 12:19:41困ったことに、DataGridを継承すればスクロールバーのプロパティメソッド
自体はあるのですが、ShowやVisibleを有効にしても出現しない困ったチャン
なのです。
0854デフォルトの名無しさん
05/02/26 12:59:30>>852
せめてVSのバージョンくらいは明記すべきだと思うが。
0855デフォルトの名無しさん
05/02/26 16:18:09その逆にフルパスからTreeNodeを取得することはできますか?
0856デフォルトの名無しさん
05/02/26 16:36:32で
Splitして調べていく方法しか知りません。
0857デフォルトの名無しさん
05/02/26 16:37:040858デフォルトの名無しさん
05/02/26 16:41:590859デフォルトの名無しさん
05/02/26 16:43:58参照先で(B)が持つ(C)の内容を変更される可能性がある。
class A{
private B dataB;
public B DataB{ get{ return dataB; } }
}
class B{
private C dataC;
public C DataC{
get{ return dataC; }
set{ dataC = value; }
}
}
クラス(B)のメンバであるクラス(C)も読み取り専用すればいいのだろうが、
そうするとクラス(A)でも変更できない。
解決策として、クラス(B)を構造体にして、
外部にはインスタンスをコピーしたものを公開する、という方法は
構造体の使い方として間違っている?
メンバをコピーするメソッドを書かなくていいし、
データが軽ければ複製の負荷もわずかだろうし。
0860デフォルトの名無しさん
05/02/26 17:57:03すみません。
852 ですが、Visual Studio 2003 です。
アドバイスよろしくお願いします。
0861デフォルトの名無しさん
05/02/26 18:01:30良くあること。気にしない気にしない。
0862デフォルトの名無しさん
05/02/26 18:07:22string fileURLは"C:\sample.jpg"などの送信するファイルの場所、
string filenameは"sample.jpg"などのように送信するファイル自体のファイル名です。
ReadFile()はバイナリファイルを読み込みバイト配列を返すメソッドです。
System.Net.Sockets.UdpClient udp = new System.Net.Sockets.UdpClient(自分のポート);
byte[] sendBytes = enc.GetBytes(ファイル名 + "?" + Convert.ToBase64String(ReadFile(fileURL), 0,ReadFile(fileURL).Length));
udp.Send(sendBytes, sendBytes.Length, 相手のIPアドレス, 相手のポート);
ファイルをバイナリで読み込み、Base64に変換後、ファイル名を添付して再びバイナリに変換して送信しています。
この方法だと、軽いファイル(数十KBくらい?)なら問題なく送信できるのですが、
重いファイルはバッファが一杯になってしまい、送信できません。
パケットに分けて送信するのでしょうが、イマイチ方法が思いつかなく・・・
宜しくお願い致します。
0863デフォルトの名無しさん
05/02/26 18:11:45854じゃないけど2003もってるので試してみた。現象現れず。
(TestA.cs)
namespace test
{
public class TestA
{
public enum TestAEnum{maso, miso, muso, meso, moso};
public TestAEnum m;
(略)
}
}
(Form1.cs)
namespace test
{
public class Form1 : System.Windows.Forms.Form
{
(略)
private void Form1_Load(object sender, System.EventArgs e)
{
TestA a = new TestA();
a.m = TestA.TestAEnum.maso; //出たYO
}
}
}
0864デフォルトの名無しさん
05/02/26 18:14:04送信できません、ていうのはどういう現象が起こる?
何かエラーがでるってこと?
0865デフォルトの名無しさん
05/02/26 18:16:270866862
05/02/26 18:17:43そうです。今、スクリーンショットを撮ってきます。
0867862
05/02/26 18:20:26こういうエラーです。
恐らく、10KBづつくらいに区切って送信すれば良いのでしょうけど、
その方法が思いつかなく・・・
素直にTCPを使えばよいのかもしれないのですが(汗;
0868862
05/02/26 18:22:45最初はTCPにするはずだったのですが、某有名なファイル共有ソフトもTCPからUDPに切り替えるとのことだったので、
試しにUDPで作ってみようとチャレンジしてみました。
TCPのファイル転送ソフトは@markITなどに参考となるプログラムがあるので…
0869デフォルトの名無しさん
05/02/26 18:24:55死ねよ
0870862
05/02/26 18:30:020871デフォルトの名無しさん
05/02/26 18:35:000872862
05/02/26 18:37:32そもそも、UDPでファイル送信すらできない人間に大それたソフト作れるはずがないでしょうっとw
単に、UDPでファイルを送るだけなのに・・・
素直にTCP使うかなぁ
0873デフォルトの名無しさん
05/02/26 18:40:49ぢゃなくて
作りたいけど実力ぢゃ無理
ってことだろ?w
System.Net.Sockets.UdpClient udp = new System.Net.Sockets.UdpClient(自分のポート);
byte[] sendBytes = enc.GetBytes(ファイル名 + "?" + Convert.ToBase64String(ReadFile(fileURL), 0,ReadFile(fileURL).Length));
udp.Send(sendBytes, sendBytes.Length, 相手のIPアドレス, 相手のポート);
………
ループさせて分割しながら送信すればいいのに・・・
それが無理ならTCP使いなさい。そっちの方が良いぞ。
それにUDPなんて使う香具師いるのかと・・・
届く順番が入れ替わるかもしれんし、面倒きわまりないぞ。
0874デフォルトの名無しさん
05/02/26 19:08:52クラスライブラリのプロジェクトを作ってDLLを作成、xmlドキュメントも出力しておく。
そのDLLを参照する別のプロジェクトを開いているときに、DLLとxmlを更新するとインテリセンスは全く効かなくなる。
xmlを出力してないならDLLを入れ替えてもインテリセンスが効くが、当然コメントの表示はない。
ま、インテリセンスに表示されないだけでコンパイルとかは普通にできるから気にするな。
気になるならVisualStudioを立ち上げ直すが、参照設定を削除して設定し直すかあたりをすれば直るし。
それか、エディタの設定のパラメータヒントやインテリセンスを切っているとか?
パラメータヒントはオフにすることは多いけど、インテリセンスを切る必要はあんまりなさそうだけど。
0875デフォルトの名無しさん
05/02/26 19:22:04それは(自分じゃ)作れないと等価だろう
0876862
05/02/26 19:37:14その分割して送信する方法を具体的にお願いできませんでしょうか??
0877デフォルトの名無しさん
05/02/26 19:45:11普通に一部を取る→送信って繰り返すだけぢゃないの?
詳しくないから分からないけど・・・
0878デフォルトの名無しさん
05/02/26 19:47:420879デフォルトの名無しさん
05/02/26 19:53:20確実に相手にデータが届く保証ないのに。
0880デフォルトの名無しさん
05/02/26 19:54:46まて、UDP ってそこまで信頼性低かったっけ!?
0881デフォルトの名無しさん
05/02/26 19:55:590882デフォルトの名無しさん
05/02/26 19:58:070883デフォルトの名無しさん
05/02/26 20:01:01TCPが使えるならTCPが一番だと思うぞ、
>>862さんみたいな場合はまだ初心者のようだから(違ったらスマソ)なおさらTCPの方が良いと思われ。
某P2PソフトってShareでしょ?あの作者は糞だよ、ォ�hル
まぁUDPは早いけどねぇ、敢えてスピード重視でソフトを作るならUDPも悪くないと思うぞ。
0884デフォルトの名無しさん
05/02/26 20:01:48お 前 ら は T C P 信 者 か …
0885デフォルトの名無しさん
05/02/26 20:04:56ロスしても構わないデータ、あるいはリカバリの手間がかからないデータならUDPでいい。
でもファイルみたいな、それなりに大きくて、ロスを許すわけにはいかず、
整合性のチェックも難しい、なんてデータをUDPでやる気はおきんよ。
0886デフォルトの名無しさん
05/02/26 20:12:430887デフォルトの名無しさん
05/02/26 20:33:07Form1_Closing()の中で
Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
//タスクトレイアイコン化する処理
e.Cancel = true;
}
にしているんですが、
ttp://homepage3.nifty.com/midori_no_bike/CS/reference.html
ここをみるとe.Cancel=true;にしてはだめだと書いてありました。
どうやれば代替できますか?
0888デフォルトの名無しさん
05/02/26 20:42:00WM_CLOSEメッセージに応答する
0889デフォルトの名無しさん
05/02/26 20:46:20どうも
0890デフォルトの名無しさん
05/02/26 20:53:06ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfmicrosoftwin32systemeventsclasssessionendingtopic.asp
WM_CLOSEだとアプリの終了とシャットダウンとを区別できないような。
0891デフォルトの名無しさん
05/02/26 21:03:32そう言えば確かポートを2つ空けていたな。
同じポートでTCPとUDPの両方同時通信ってやっぱ無理なのかなぁ
0892854
05/02/26 21:24:06ありがとうございます。同じ事をしてみましたら、出ました。
あれ?と思い自分のプロジェクトを開いてみたらやはりインテリセンスに
出ません。
で、その列挙が定義してある DLL を参照する小さなプロジェクトを
作ってみましたがインテリセンスに出ます。
むー…。表示されない原因がわからない…。
0893デフォルトの名無しさん
05/02/26 21:46:37「TCP信者」とかアホかと・・・
0894862
05/02/26 22:03:00TCPを使ってもやはり重いファイルは送信できません。
http://cdrtest.hp.infoseek.co.jp/cgi-bin/snup/src/VisualVision0051.gif
このようなエラーです。
送信側ではファイルを開いてBase64でエンコード、これにファイル名と区切り文字として「?」を加えて一つのファイルにします。
つまり
ファイル名+"?"+Base64でエンコード済みの送信ファイルデータ
という形式になるなります。これをバイト配列にしてストリームに乗せてあげてるのですが、
どうも受信側で逆処理、つまりバイト配列からデコードして、これをファイル名とBase64のデーターに分けます。
そしてBase64にエンコードされたデーターをデコードするときに上のエラーがでるんです。
やはり長さが原因だと思うのですが・・・
0895デフォルトの名無しさん
05/02/26 22:08:52C#みたいな便利な超高級言語から入るとこういう頭悪いことに
なるんだろうね
0896デフォルトの名無しさん
05/02/26 22:21:230897デフォルトの名無しさん
05/02/26 22:24:36マウスクリックしている最中も
MouseHoverイベントを発生させるにはどーすればよいんでしょう?
0898デフォルトの名無しさん
05/02/26 22:53:45中間ファイルとか.suoファイルを一度消してみれば?
0899デフォルトの名無しさん
05/02/27 00:38:48WM_CLOSEメッセージとかってEnumになってないのでしょうか?
みなさん、自分でWindows.hからコピペで作ってますか?
0900862
05/02/27 00:39:38それにダウソ厨ではありませんよ、
0901デフォルトの名無しさん
05/02/27 00:46:33君のコーディングレベルが低いだけ。
0902デフォルトの名無しさん
05/02/27 00:49:04ゼロなんだろう
0903デフォルトの名無しさん
05/02/27 02:30:55Enumにはなってなかったと思われます。
必要な分だけコピペなんじゃないかな。
>>900
とりあえずTCPとUDPの利点欠点を調べるところから
はじめてみたほうがいいんじゃなかろうか。
あとBase64がどんな変換方式なのか、とかも。
それでも動かないときにまた聞いてみれ。
0904デフォルトの名無しさん
05/02/27 02:47:03(計算ソフトを使ってて、30分毎に乱数を生成する必要があるんですが、「乱数生成ボタン」を自動的に押したい)
0905デフォルトの名無しさん
05/02/27 02:51:07直接コードをさわれない他のアプリに対してってこと?
0906904
05/02/27 03:04:12そうです。
0907デフォルトの名無しさん
05/02/27 03:14:43「乱数生成ボタン」が普通のWindowsが用意しているボタンの場合
ボタンのIDを調べて親ウィンドウにWM_COMMANDメッセージを送る。
SendMessage( 親ウィンドウハンドル, WM_COMMAND,
ボタンID, ボタンウィンドウハンドル );
0908デフォルトの名無しさん
05/02/27 03:18:01.NETの範疇からは2/3くらいはみ出るが。
FindWindow/FindWindowExでボタンのウィンドウハンドルを見つけて、
PostMessageでBM_CLICKを送ってやる。
0909904
05/02/27 05:38:490910デフォルトの名無しさん
05/02/27 06:34:13よく聞こえねえなあ
0911デフォルトの名無しさん
05/02/27 14:04:45C#だと簡単な本しか邦書だとみつからん・・
マニュアルとかわらんことしかかいてないもんなあ。
0912デフォルトの名無しさん
05/02/27 14:05:26ぜんぜん聞こえない
0913デフォルトの名無しさん
05/02/27 14:53:17ちゃんとしたことが知りたければ洋書読む気力が要る
0914デフォルトの名無しさん
05/02/27 15:30:30http://www.unisys.co.jp/club/net_view/20030303.html に書いてあったコードを試したのですが、
同じプログラムからMyServerとMyClientを実行させるとうまくいかないんですけど
(MyServerを裏スレッドで実行した後で、MyClientを実行するようにした)
エラー「追加情報 : チャネル tcp は既に登録されています。」とでてしまいます。
なぜでしょうか、知ってる人いませんか
exeで2つ同時起動で、片方 Server実行、片方 MyClient実行ならばうまくいくのですが
0915デフォルトの名無しさん
05/02/27 15:49:330916デフォルトの名無しさん
05/02/27 15:50:45高度なことは、ほかの言語の本で読めばいいんじゃね?
0917デフォルトの名無しさん
05/02/27 15:52:26ボタンを二つ
1つにはServerStart、1つにはClientStartとしているので
それはないはずなんですが。。
で、二つ起動して、片方ServerStartをクリック、片方ClientStartをクリック
だとうまくいくんです。うーん。。
0918デフォルトの名無しさん
05/02/27 16:03:580919デフォルトの名無しさん
05/02/27 16:50:56C#で、テキストファイルを解析してその結果を画面に戻す処理で、読んだテキストファイルの中身が文字化けしてしまいます。
以下はテスト用に作ったソースです。
読み込んだテキスト文字列の内容(readBuff)によって、表示内容(ddt)を書き換えたいだけですが、以下のソースで、どこを変更すればいいでしょうか?
//表示用DataTableの作成
DataTable ddt = new DataTable("testdt");
ddt.Columns.Add(new DataColumn("name","".GetType()));
ddt.Columns.Add(new DataColumn("result","".GetType()));
//テキストファイル解析
string readBuff = "";
System.IO.StreamReader sr;
sr = new StreamReader( this.filename.PostedFile.FileName );
sr.BaseStream.Seek(0,SeekOrigin.Begin);
while( sr.Peek() > -1 )
{
readBuff =(new ut)sr.ReadLine();
if ( readBuff.IndexOf("ちゃねらー") != 0 )
{
ddt.Rows.Add(new string[]{ "ちゃねらーだった",readBuff } );
}
else
{
ddt.Rows.Add(new string[]{ "ちゃねらーじゃなかった",readBuff } );
}
}
sr.Close();
0920デフォルトの名無しさん
05/02/27 16:56:50× readBuff =(new ut)sr.ReadLine();
○ readBuff =sr.ReadLine();
です。
0921914
05/02/27 17:34:28//@class MyServer
//スレッド実行部分
private static void run(){
TcpChannel channel = new TcpChannel(16383);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(MyRemoteObject),
"MyRemoteObject",
WellKnownObjectMode.SingleCall);
Console.WriteLine("Listening for requests. Press Enter to exit...");
Console.ReadLine();
}
//@class MyClient
//登録されたリモートオブジェクト呼び出し部分
public void Execute(){
TcpChannel channel = new TcpChannel();
ChannelServices.RegisterChannel(channel);
MyRemoteObject remoteObject = (MyRemoteObject)Activator.GetObject(
typeof(MyRemoteObject),
"tcp://localhost:16383/MyRemoteObject");
if(remoteObject != null)
Console.WriteLine( remoteObject.ToString());
}
//class MyRemoteObject : MarshalByRefObject .....
>>919
エンコーディングではないですか?
つpublic StreamReader(Stream stream, Encoding encoding)
0922デフォルトの名無しさん
05/02/27 17:39:37今考えているのは乱数を発生して、暗号化すれば乱文字列として扱えると思うので・・・
C#はソースを見られてしまう為に出来ましたらソースを見られても大丈夫な文字列をランダムに生成したいのです。
どうかお願いします。
0923デフォルトの名無しさん
05/02/27 17:45:18元の乱数よりも精度の劣る乱文字列になるんじゃないかな
暗号化という何らかの規則に基づいて変換されるわけなんだから
0924デフォルトの名無しさん
05/02/27 17:46:57> ソースを見られても大丈夫な文字列
ってのがよくわからんが。
シード値を指定せずに(引数無しで)作ったRandomインスタンスをどこかで使えば、基本的に再現不能になるんじゃないか。
0925デフォルトの名無しさん
05/02/27 17:54:02void get_random_string(char *buf, int len) {
int a,b;
while (len > 0) {
a = rand();
b = len < sizeof(int) ? len : sizeof(int);
memcpy(buf, &n, b);
buf += b; len -= b;
}
}
0926デフォルトの名無しさん
05/02/27 18:04:01同じアプリケーションドメイン内でRegisterChannelを2回やっちゃダメ。
0927デフォルトの名無しさん
05/02/27 18:17:47919です。
初心者で申し訳ありません。エンコードは、何を設定したらうまくいくでしょうか?
デフォルトはUnicodeになっているようです。
UTF-8でも文字化けします。
0928デフォルトの名無しさん
05/02/27 18:33:02はげしくThanxです。
直りました。
ClientサイドではUriで指定されてるからRegisterChannelしなくてもわかるのか。。
仕組み今一わかってないみたいです。ご迷惑おかけしましたm(_ _)m
>>927
漏れに聞かれてもなぁ^^;
書かれたEncodingじゃないのかな。WindowsならS-JISとか
原因違ったらスマソ
0929デフォルトの名無しさん
05/02/27 18:39:09普通はShift_jisだな。
Encoding.GetEncoding("Shift_jis")とかEncoding.GetEncoding(932)とかOSの言語を日本語にしてるならEncoding.Defaultとか。
>>928
> ClientサイドではUriで指定されてるからRegisterChannelしなくてもわかるのか。。
Uriがどうこうじゃなくて、リモーティングはアプリケーションドメイン単位だから。
「このAppDomainはこのChennel使います」って宣言みたいなもんだと思えば。
0930デフォルトの名無しさん
05/02/27 19:48:25印刷関係のソース等を細かく公開しているHPはございませんか?
教えてください。
というか、
private void prndoc_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics;
Image image = Image.FromFile(fileinfo[number].FullName);
Rectangle rect = new Rectangle();
// myrect(image, rect);
g.DrawImage(image, 0,0, 667, 970);
// g.DrawImage(image, rect.X, rect.Y, rect.Width, rect.Height);
if (++number < _listFilenames.Items.Count)
e.HasMorePages = true;
else
e.HasMorePages = false;
}
ものすごく動作がとろいです。
Microfoft PhotoEditorで印刷するよりも
ものすごくとろいです。なぜでしょうか。
0931デフォルトの名無しさん
05/02/27 19:52:34919です。
いけました!!
ありがとうございました。
0932デフォルトの名無しさん
05/02/27 19:55:22VCなんかではSystem("cd")
でオケだったけど。。。
0933デフォルトの名無しさん
05/02/27 20:10:12System.Diagnostics.Process.Start("C:\\WINDOWS\\system32\\cmd.exe",arg);
0934デフォルトの名無しさん
05/02/27 20:32:21Thx!!!!
0935デフォルトの名無しさん
05/02/27 22:28:45それは実行ファイルにリソース(?)として埋め込まれるんでしょうか。
自動的にリソースファイルができるのかな、と思ってたんだけど、
それらしいものも見当たらない・・・。
0936デフォルトの名無しさん
05/02/27 22:36:240937デフォルトの名無しさん
05/02/27 22:36:58プロパティウィンドウのImageプロパティに設定した場合って事だよね。
hoge.csに対するhoge.resxファイルに埋め込まれるよ。
普段は#regionで隠されてる自動生成コードの該当コントロール部分を見てみればどういう風にリソースを呼んでるか分かるだろう。
0938デフォルトの名無しさん
05/02/27 22:43:120939デフォルトの名無しさん
05/02/28 02:00:04仕様書とか
0940デフォルトの名無しさん
05/02/28 02:13:180941デフォルトの名無しさん
05/02/28 02:47:00JavaScriptと何か関係が?
0942デフォルトの名無しさん
05/02/28 02:49:31CLIの仕様もECMA標準になってますが
0943デフォルトの名無しさん
05/02/28 02:53:22ワラタ
0944デフォルトの名無しさん
05/02/28 03:04:280945デフォルトの名無しさん
05/02/28 03:15:350946デフォルトの名無しさん
05/02/28 03:17:31http://msdn.microsoft.com/net/ecma/
0947デフォルトの名無しさん
05/02/28 03:22:37ISOなら、C#→ISO 23270、CLI→ISO 23271だぞ。
ECMAなら、C#→ECMA-334、CLI→ECMS-335
まぁISOに登録されたって事は、JISになるのは時間の問題さね。
0948デフォルトの名無しさん
05/02/28 03:28:160949デフォルトの名無しさん
05/02/28 03:31:44MSの中の人によるとJISになるらすぃよ。
0950デフォルトの名無しさん
05/02/28 04:23:130951デフォルトの名無しさん
05/02/28 07:07:20またソートされたとき内蔵してるDatatable(DataSet)を同じようにソートするにはどうしたらいいでしょう
0952デフォルトの名無しさん
05/02/28 21:22:12たとえば、SXGA(1280*1024)サイズの画像の、200*200座標から350*350座標の部分を切り取るとか。
0953デフォルトの名無しさん
05/02/28 21:27:280954デフォルトの名無しさん
05/02/28 22:07:53これはスレッドを使えばこの表示は出なくなるのでしょうか?
スレッドは関係ない場合(応答なし)の表示を出なくするには
どのようにすればよいでしょうか?
0955デフォルトの名無しさん
05/02/28 22:10:32非同期処理とかスレッド関連のドキュメントを読み漁ると吉
要はイベント処理スレッドを可能な限り早くスレッドループに戻してあげればいい
0956デフォルトの名無しさん
05/02/28 22:11:43スレッドループじゃなくてメッセージループでしたすまぬ
0957デフォルトの名無しさん
05/02/28 23:15:54今まではメッセージボックスでユーザーに状況などを表示していたんですが、
やはりメッセージボックスは目障りだとのことで、WindowsMessengaerのように
タスクトレイの↑からポコって表示させたいと思っています。
ただ、タスクトレイの↑の場所というのはどのように取得すべきでしょうか?
画面の解像度、Windowsのテーマによっても違ってきてしまいますので・・・
0958デフォルトの名無しさん
05/02/28 23:24:52VBPowerPack でぐぐってみ
NotificationWindow っていうズバリなコンポーネントがあるから
0959デフォルトの名無しさん
05/02/28 23:41:13もう一つ質問なのですが、NotifyIconでタスクトレイにアイコンを作るとアプリケーションを終了後もアイコンが残ってしまいます。
アイコンの上にマウスを持って行くと消えるのですが・・・
0960デフォルトの名無しさん
05/02/28 23:45:30それが既定の動作。
Application.ApplicationExitイベント当たりでVisible=falseにする。
0961デフォルトの名無しさん
05/02/28 23:58:09凄いですね、本当に便利です。
今までメッセージボックスで行っていた作業を全てこっちにしてしまおうかと・・・
アプリケーション終了後もアイコンが残ってしまう件ですが、
終了前にDisposeさせてもやはり無理でした。
引き続き宜しくお願い致します。
0962デフォルトの名無しさん
05/03/01 00:03:20あ!入れ違いになってしまいました。
さっそく試してみますね。
0963デフォルトの名無しさん
05/03/01 00:52:02またソートされたとき内蔵してるDatatable(DataSet)を同じようにソートするにはどうしたらいいでしょう
0964デフォルトの名無しさん
05/03/01 00:53:46入力されたときのエラー処理はみんなどうしてるのですか?
表示しようとするとGDI+エラー出るし、編集は重くて耐えられない
(Ahtlon64FXでも)何かいい知恵ください。
0965デフォルトの名無しさん
05/03/01 01:53:44> Datagridがソートされたのを知らせる方法はないでしょうか?
表示してるDataTableのDefaultViewのListChangedイベント。
> またソートされたとき内蔵してるDatatable(DataSet)を同じようにソートするにはどうしたらいいでしょう
DataTableはもとより行の並びに意味はないのでその質問はナンセンス。
表示されている行の並びを取得するなら
ttp://dobon.net/vb/dotnet/datagrid/currentrow.html
>>964
どうやったらそんな事態になるんだ? コントロールの選択を誤ってるとしか思えないが。
その列は非表示にしといて、別に用意したTextBoxに連結させるとかさ。
どうしても表示しなくちゃなんないのなら、
入力文字列のLengthがある程度大きくなったらSubstringすればいいんじゃない?
元文字列は列をキーにしたハッシュテーブルに格納するとか。
いずれ編集を直接行うわけにはいかないでしょ。ユーザからしても。
0966名無しさん♯
05/03/01 07:43:40http://pc5.2ch.net/test/read.cgi/tech/1109630502/l50
0967デフォルトの名無しさん
05/03/01 10:10:48前から疑問に思ってたんすけど、>>960みたいなアプリケーションを終了するときのイベントって
どうやって記述するんでしょう?
VBをやっていたときはコンボボックスから普通に選択すれば勝手に入力してくれたんですが、
C#だと全然わかりませぬ・・・
0968デフォルトの名無しさん
05/03/01 10:20:46云いたいことがよくわからんのだが、
Application.Exit()
ぢゃだめなの?
0969デフォルトの名無しさん
05/03/01 10:23:290970デフォルトの名無しさん
05/03/01 14:16:120971デフォルトの名無しさん
05/03/01 14:20:40それくらい自分で調べられるようにしておけ。
0972デフォルトの名無しさん
05/03/01 14:33:58Application.ApplicationExit +=
と書いてTabキー2回。
0973デフォルトの名無しさん
05/03/01 15:18:18激しくThx!
0974デフォルトの名無しさん
05/03/01 16:18:53リストビューの指定した位置にアイテムを追加する方法ってありますでしょうか?
Items.Addを使うとリストビューの末尾に追加されてしまうのです・・・
Insertを使うにしても、InsertできるのはStringなのでSubItemまでString[]で追加することができません。
Insertで追加したあとに、そのアイテムのサブアイテムを指定すると無論、存在すらしていないのでエラーを吐きます。
リストビューの指定したインデックスにアイテムをAddする方法をご存じの方がいましたら宜しくお願い致します。
0975デフォルトの名無しさん
05/03/01 16:21:12Insert(int, ListViewItem)すればいいじゃないか。
0976デフォルトの名無しさん
05/03/01 18:35:450977デフォルトの名無しさん
05/03/01 18:39:410978デフォルトの名無しさん
05/03/01 18:43:190979デフォルトの名無しさん
05/03/01 18:54:10こんなのお礼の仕方じゃないって。
匿名だからってマナーも守らなくて良いわけないだろ。
0980972
05/03/01 19:01:30まずかったか?
0981972
05/03/01 19:07:15973にはもの凄いムカついてます。
0983973
05/03/01 19:44:45ごめんなさい。以後、気をつけます。
ありがとうございました。
0984デフォルトの名無しさん
05/03/01 20:30:200985デフォルトの名無しさん
05/03/01 20:31:240986デフォルトの名無しさん
05/03/01 20:37:37・「初心者です」と前もってクギを刺しておくこと。
・「うまく行きません」「動きません」と症状は簡潔に。
・回答が来て解決にならなかったら、追加で質問をしましょう。
コミュニケーションをスムーズにするために、1からの解決手順を求めましょう。
・無事解決できたら、質問したことは忘れて自分の仕事を進めることに専念しましょう。
0987デフォルトの名無しさん
05/03/01 20:40:550988デフォルトの名無しさん
05/03/01 20:54:56「そんなことは知っています」
「聞き方が悪かったです。それじゃないです」
0989デフォルトの名無しさん
05/03/01 21:16:46エディタだけで書いてるっていう奇特な人います?
0990デフォルトの名無しさん
05/03/01 21:19:51ちょっとしたAPIの動作確認・実験程度ならエディタ+コマンドプロンプトも使うよ。
仕事のソースはもちろんVSだけど。
0991デフォルトの名無しさん
05/03/01 21:19:510992デフォルトの名無しさん
05/03/01 21:29:220993デフォルトの名無しさん
05/03/01 21:49:45GUIのコード書くの面倒くさくないんですか?
0994デフォルトの名無しさん
05/03/01 21:51:45お願いですからVS使ってください」
「バッキャロー!! そんなもんで魂のこもったコードが書けるかってんだ!」
0995デフォルトの名無しさん
05/03/01 21:56:290996デフォルトの名無しさん
05/03/01 21:56:38まあ多少は。
GUI部品の位置決めだけVSを使う事はあるな。
でもプロパティウィンドウからNameプロパティを変えて、Textプロパティを変えてってやる事を考えると
意外と差は付かないんだよね、私の場合。
0997デフォルトの名無しさん
05/03/01 21:57:010998デフォルトの名無しさん
05/03/01 21:57:560999デフォルトの名無しさん
05/03/01 21:58:531000デフォルトの名無しさん
05/03/01 22:00:0510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。