初歩的なことで質問なのですが、 アセンブリの「アンセーフコードの許可」をチェックすることのデメリットってなんでしょうか。
USBからOS起動されたらだめじゃん?
みなさんいろいろとありがとうございます。
ただ、有効・無効を簡単に切り替えれる必要があるので参考程度にさせていただきます。
現状は他の管理者に無理言って、レジストリエディタやタスクマネージャを制限することにしました
>>437 それのレジストリの書き換えを行うソフトをつくってました。
>>438 最終的にはこういうの使うかもです
ありがとうございました
446 :
420 :2006/07/14(金) 16:11:02
>>424 一通り調べてみましたが、System.Management名前空間に関係するいい情報が見つかりませんでした……。
一応、ポートを試しに開いてIO.IOExceptionで処理するようにしたのですが、
やはりスマートじゃないですね。
ManagementObject mo = new ManagementObject("Win32_〜〜.〜〜〜")
この部分が分からなくて困ってるんですが、もし参考資料などありましたら宜しくお願いします。
>>446 System.Managementってのは、WMIというシステム情報が格納されているデータベースみたいなもんにアクセスするためのインタフェース。
SQL Serverに対するSystem.Data.SqlClientみたいな感じ。
なので、WMIの構造を知ることと、System.Managementで問い合わせをする方法は別々に学習する必要がある。
前者はCOMとしてのWMIのサイトを参照すれば色々見つかるし、スクリプトならTechNetのスクリプトセンターにサンプルがゴロゴロしてる
後者はMVPの人とかがサンプルを沢山挙げてるから、それで勉強
450 :
440 :2006/07/15(土) 21:25:22
レスがない、ということはデメリットは特にないということでよいのでしょうか・・・
452 :
440 :2006/07/15(土) 22:29:05
それはおまえしか知らない
検証できないコードになる。
こんなこと言ってるようじゃ危ないな
456 :
440 :2006/07/15(土) 22:58:28
すみません、誤解があるようなのですが、アンセーフなコードの危険性は熟知しています。 アンセーフなコードのデメリットではなく、「アンセーフコードを許可する」をチェックすることのデメリットという意味です。 単にアンセーフコードをコンパイルできるかどうかという意味しかなく、実際のデメリットはないという理解でよいのでしょうか。
いやだから、なんでそれをしたいのかって話だよ。 アンセーフなコードの危険性を『熟知』してたらそんな質問は出てこないはず。
こんな風に気にする人たちがでてくる ってことじゃないか?
459 :
440 :2006/07/15(土) 23:18:03
>>457 別にそこまで深い意味はないのですが、「許可する」をチェックすることで
もし実行環境やプログラム配布の関係で何らかのデメリットが生じるのなら、無理をしてでもすべてセーフコードで書くべきかな、と思ったしだいです。
アンセーフコード自体の危険性は気をつけて書けば避けられるのに対しこういうのがあった場合どうしようもないので。
あと比較的どうでもいいのですが、たとえば今までアンセーフコードで書いていたコードをセーフコードで書き直すことができるようになった時に、
もし「許可する」のデメリットがないのなら、いちいちチェックをはずす必要もないのかな、と思いまして。
意味が分からんな。 チェックしなきゃコンパイルできないプログラム書いてんなら、 つけざるをえんだろ。 そしてそれは検証できないアセンブリになる。 「チェックをつけたことによって検証できなくなる」 のかどうかはよく知らないな でも普通はチェックする必要がないプログラムではチェックしないだろから そうだとしてもそれがデメリットというかは微妙
ん、話はもっと単純に 「例えばセーフコードのみのブツをアンセーフ許可してコンパイルしたら違うIL吐くのん?」 てことを聞いてるように見えるんだが、違うのかな。
463 :
440 :2006/07/15(土) 23:42:55
>>462 そういうことになりますかね。
ただ、実行コードだけでなく、アセンブリの諸々の情報(あまり詳しくないのですが)も同一である必要があると思います。
ちょっと手元で両方の設定でコンパイルしてみたところ、ハッシュの異なるアセンブリファイルが生成されました。
(同じ設定でもハッシュが異なるファイルが生成されたので、これだけでは何もいえませんが。)
コンパイルした日時が変わるだけでハッシュ変わる
>もし「許可する」のデメリットがないのなら、いちいちチェックをはずす必要もないのかな、と思いまして。 はずしとけ
デメリット: アンセーフコード自体の危険性は気をつけて書けば避けられるのに対しこういうのがあった場合どうしようもない
こういうのって何だよ
contextMenuStripにtoolStripMenuItemを追加したとします。 それをデザイナからLabelのContextMenuStripに設定したとします。 そしてtoolStripMenuItemをクリックしたときに、 クリックしたLabelのTextを取得したいのですがどうすれば出来るのでしょうか? string s = ((Label)sender).Textではダメでした。
検証できないアセンブリになる て何回言っても虫ですか。
もともと検証しないから、検証できないかどうかは関係ないってことでしょ
>>468 (ContextMenuStrip)(((ToolStripMenuItem)sender).Owner).SourceControl.Text
>>463 unsafe命令の有る無しに関係なく、/unsafeスイッチをつければ次の属性がONになってる。
assembly: System.Security.Permissions.SecurityPermissionAttribute(SecurityAction.RequestMinimum, SkipVerification=True)
473 :
440 :2006/07/16(日) 02:38:15
>>469 >>472 すみません。
検証についてちょっと調べてみたのですが、次のような理解であっていますか?
・「アンセーフコードを許可する」をチェックし、かつアンセーフコードが含まれているとと検証不可能なアセンブリしか生成できない。
・検証不可能なアセンブリは通常の方法では実行できず、実行環境でセキュリティポリシーの設定を変える必要がある。
>>472 アンセーフコードを含まず、「許可する」をチェックしてコンパイルしたアセンブリに対して peverify.exe を実行したところ
> All Classes and Methods in XXX.dll Verified.
と出ました。
これは検証可能なコードが生成されているということですよね。
>>473 >アンセーフコードを含まず、「許可する」をチェックしてコンパイルしたアセンブリに対して peverify.exe を実行したところ
ILは検証可能であるが、アセンブリがSkipVerificationを要求してる状態。
この状態のプログラムを \\server1\share1\prog.exe で実行するとSystem.IO.FileLoadExceptionで落ちる。
.NET的にはセキュリティ中立(つまりこの属性無しで)でUNSAFEなアセンブリは作れるのだが、
C#のコンパイラはそれを許していない。
>・検証不可能なアセンブリは通常の方法では実行できず、実行環境でセキュリティポリシーの設定を変える必要がある。
ローカルドライブからコマンドプロンプトやエクスプローラで起動した場合、
FullTrust(何でもあり)権限で起動されるので特にポリシーをいじる必要はない。
475 :
440 :2006/07/16(日) 05:03:44
>>474 なるほど、非常にわかりやすいレスありがとうございます。
つまり、まとめるとこういうことですね。
・「アンセーフコードを許可する」をチェックすると、アンセーフコードの有無に関わらず SkipVerification の許可が必要になる。
・ネットワーク経由で実行する場合、実行するにはセキュリティポリシーの設定が必要。
・ローカルで実行する場合、デフォルトで FullTrust の許可が与えられるのでこのような問題は一切気にする必要はない。
SslStream.AuthenticateAsServer が X509Certificate を要求するため、 適当にプログラム中で生成したいと考えています。 (暗号化のみでいいので認証処理は無視しています) X509Certificate.CreateFromFile は外部に証明書ファイルが必要になるので 使えない。同Import は渡す byte[] の構造が分からず利用不能。 X509Certificate#GenerateSessionCertificate みたいな感じで X509Certificateを作る方法はないでしょうか?
あります
>>471 ありがとうございます。
上手いこと出来ました。
479 :
476 :2006/07/17(月) 11:21:39
質問の語尾がまずかったですね。すいません。 X509Certificateをファイルを介さずオンメモリで生成する方法が知りたいです。 X509Certificate#Import が受け取ってくれるバイナリ配列の生成方法でもいい のですが
アッセンブリバージョンとファイルバージョンの違いって何? どう使い分けたらいいの?
482 :
480 :2006/07/18(火) 19:25:45
>>481 自分のような趣味で単体ツールを作っているモノとしては、
アッセンブリバージョンはあまり気にしなくても良さそうですね。
リンク先は少しずつ見ながら勉強していきます。
ありがとうございました。
> アッセンブリ という語句を聞きなれていないのは俺が無知だからですか
斡旋ぶり
アッセンブリをググると機械系のサイトばっかり アセンブリでググるとプログラミング系のサイトばっかり
PDM/PLMの用語だからな。
C#2005 EEでVS2003にあったクイックウォッチってないんかな?
Proをお買い求めください
アッセンブル・インサート ちゅうのは古いか
>>488 Pro買わないとダメなのかぁー
Standardに付いていたら購入するのに
C#だけつかうならEEもSTDも一緒?
んなわけない
どこが違うの?
MSはもっとC#布教頑張って欲しいな、どう頑張ればいいのか分からんが このままじゃ自然消滅だよ
.NetといえばC#かVB.NETって感じにはなってるけど 言語の普及以前に.Netをなんとかしないとどうしようもないよな
>>494 MS、結構いろいろやってるはずだけど。
オフィシャル情報多いし、日本語ドキュメントも充実してるし、
標準ライブラリも結構そろってるし、VS 使いやすいし、
コミュニティ支援とかまでやってるし。
これ以上、具体的になにやればいいと思う?
個人的にだけど、一応、C# 普及サイト持っててさ、
個人でもやれることあったらやろうかと。
.NETじゃないVBは消滅したんですか?VBAに含まれてるのかな
むしろVB.NETが消滅した。言葉だけは。
.NETとJavaが肉薄かぁ、これからはJ#の時代ですね
そりゃないだろ。 でももしもJavaの世界と.NETの世界を行き来できるのだったら、たしかにJ#はいけるだろうな。 ネイティブと.NETの世界を行き来できるC++/CLIのように。
先生、J#スレがありません
HTMLでいうと<hr>のような 水平線のみのコントロールはどこにありますか? ツールボックス内を探しても見つからないのですが…
GroupBox のTextプロパティを空にして、Heightを8くらいにして代用してるけど
>>506 おお、こんな方法があったとは…
ありがとうございます!
もしかして、みんなこの方法でやってるのかな?
自作して再利用してる 大した手間じゃないし
VC++のときはPictureBoxで代用してたけどC#ってできなかったっけ? 今自宅で開発環境ないからわかんない
>>509 が自作したのを公開してくれればいいんじゃないかな
ユーザコントロールに線2本引くだけだろ
513 :
287 :2006/07/21(金) 09:59:17
視覚スタイルへの対応はどうでしょう?
システムカラーで線描けばいいじゃない
515 :
デフォルトの名無しさん :2006/07/21(金) 13:54:36
テキストのログファイルを作成するに当たって、ファイルを回帰的に使用したいと 考えています。 指定行にテキストを書き込む方法(メソッド)を教えてください。
ない
無いな
>>515 ファイルポインタを指定行の先頭まで移動し、そこ以降を一旦メモリにバッファ
指定行の先頭から新しいテキストを書き込み、続けてバッファした内容を書き出す
以上をクラス化して再利用する
普通は固定長にする。
固定長にすると割り込みができるのか?
初心者にもほどがある。
523 :
515 :2006/07/21(金) 21:14:07
回答ありがとう御座いました。 VB6にあるようなPutステートメントがあるのかと思っていました。
>>519 お前の会社なり脳内の流儀はさておき、彼はログファイルをローテーションさせたいわけだ。
いや、そのために子低調にするのかと。
今時固定長にする利益を教えてください
同じファイルでサイクリックにしたいっていうから それなら普通固定長にする て言っただけなんだがなんかおかしかったか?
逆に固定長にできないなら、 それでもわざわざ同じファイルにして苦労する 価値があるかはあやしい。 固定長以外ではシンプルな方法は無理だからね。
サイクリックをlog rotationと間違えてる奴発見
ここはサイキックなスレですね
Regex.Replace( @"\abc\\def\\\ghi", "\\+", "\\" ) これで"\abc\def\ghi"が返ることを期待しているんだが 同じ文字列しか取得できない。なぜ?
第二引数、C# 文法におけるエスケープと正規表現におけるエスケープの両方必要。
>>536 回答ありがとう。
"\\+"ではなく"\\\\+"と指定しなきゃいけないのか。
第3引数は"\\"でいいのに。
>>537 第三引数は正規表現じゃないですから。
/\\+/,"\\"
TreeViewをプログラム上からスクロールさせたいのですがどうすればいいのでしょうか。 AutoScrollOffsetがそれらしいかと思って変更してみましたが変化がありませんでした。
node.EnsureVisible()
542 :
540 :2006/07/24(月) 05:38:07
>>541 ピクセル単位でスクロールする方法はないでしょうか?
VS2005を使用しています。コントロールの絶対座標を取得する方法はありますか?
あります
>>543 絶対の基準点はどれですか
以下は全て仕事で関わった「絶対座標」です
・ウィンドウ(視覚スタイルも考慮)
・クライアント領域
・デスクトップ(プライマリモニタの左上が基準点)
・特定のモニタの左上(マルチモニタを考慮)
・表示領域で最も左の上(マルチモニタを考慮)
・表示領域で最も上の左(マルチモニタを考慮)
・全モニタを合わせて矩形化した領域の左上
・上記のいずれかをベースとした任意の点
まあ、どれでも取れますが
クライアント領域
549 :
543 :2006/07/24(月) 14:50:37
if (s != ""){} if (s != string.Empty){} どっちを使った方がいいのかなぁ。 はどっちでも同じ?
初期化のやり方にあわせれば?
静的コード解析だと string.IsNullOrEmpty を使えって怒られるよね
>>552 静的コード解析なんてあんの?知らなかった。
if(s.length() != 0){}
>>552 それおかしい。
NULLじゃこまるがemptyで。ってとき対応できない。
>>554 Equals もそうだが s が null の時が怖い
フォーム上のWMPコントロールで ボリューム等が変更された場合それを知る方法はないでしょうか? AxWindowsMediaPlayer.setting が変更されるタイミングが知りたいのですが・・・
>>545 ちょびっとだけエスパーになって考えたら
デスクトップの左上を基準にした座標を言ってるんだと思う。
>>545 もいじわるだが、
>>549 がいたずらでなく本人ならちょっと笑える。いりません、って。
さすが夏休み。質問者も回答者も腐ってますね。
学校でC#やってるトコなんてあるのかね
あるよ
563 :
540 :2006/07/25(火) 08:32:46
無理なんですかね? AutoScrollOffsetっていうのはなんなんでしょう?
ピクセル単位は無理っぽいな 行単位ならできそうだが
>>563 AutoScrollOffset は MSDN2 に書いてるとおり。
スクロールは LVM_SCROLL を投げればいい。
SendMessage か派生クラスで WndProc の呼び出しかはお好みで。
パネルとかにGraphicsとかDirect3D.Spriteで描画した後、 描かれたものをBitmap型の変数に移す方法ってありますか?
逆に考えるんだ Bitmap に描画するようにすればいいんだ // D3D でできるかどうかは知らない
569 :
550 :2006/07/25(火) 21:38:26
なれてないので、ぱっと見は読みにくいけど、
>>555 に注意しながら
if (!string.IsNullOrEmpty(s)){}
を使うことにします。
>>552 さん、ありがとうございました。
なんかstaticメソッドだとStringと書きたくなる Int32も同様
572 :
540 :2006/07/25(火) 23:27:59
>>566 なるほど。やはりその辺りをしなければならないのですね。
どうもありがとうございました。
ボタンコントロールを動的に配置したのですが、ボタンクリック等イベントを作成できません Button btn = new Button(); btn.Location = new Point(250,220); this.Controls.Add(btn); どうすればクリックイベント等を作成できるのでしょうか? 助けてください・・・
MSDN でイベントとか調べればいいよ あと InitializeComponent メソッドの中調べるとか
>>573 OnClickとかのdelegateに代入すれば良し。
string二次配列使っているんですが、どうにも分かりづらいのでスッキリ代用できるクラスはありますか? 各要素数は不定です。
List<List<string>>とかは? 可能かどうかは知らん
580 :
576 :2006/07/26(水) 20:31:34
ジャグ配列でぐぐって自分が間違った宣言していることに気付きました。 string[,]でいいんですね。string[][]使ってました。 実際やりたかったことはListViewにアイテム追加するための表だったので どっちが行でどっちが列なのかハッキリ分かればいいのになぁと思ってました。 情報後だし申し訳ない。
ListView に追加するって目的がはっきりしてるんなら、端から ListViewItem[] 使えばいいような気がする
んな単純なことだったらここで質問しないだろ と思ったけどここ初心者スレだったな
句読点、書けない、バカを、サマージャンボする俺。
あぼーん推奨
587 :
573 :2006/07/27(木) 00:42:41
なんかデジャヴュ
なんか、何度も似たようなものを見ることをデジャヴュとか言う奴いるけど、 全くの間違いだから。
どう考えてもワザとだろ
2ちゃんで誤用を見つけたらどっかのスレで生まれた文化と思った方が良い 「ふいんき(←なこかへんかえできない)」とか「おながいします」とか
ちんちんおっきおっき
>>589 普通にそのままの意味じゃない?
既視感だろ
>>593 多分
>>588 は過去の投稿と同じことが繰り返された事をデジャビュと言ってる
本来のデジャビュは無かったことがあった事のように感じていること
だから微妙に違う
でも2ちゃんだからどうでもいい
くだらねぇ
2ちゃんらしい流れだ
.Net 2.0 の serialport クラスの private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { c = serialPort1.Read(r, 0, 32); } の終了はメインスレッドでどうやって待つ方法がいいでしょうか?
本来のデジャビュはフランス語で「もう見た」という意味なので 「無かったことがあった事のように感じている」という訳ではない
キスしてグッバイ☆ ありとあらゆるもの♪
で、お前らいつまでこの馬鹿話引きずるんだ?
.netが死滅するまで
次のネタふられるまで
じゃあ次は確信犯の誤用な
デリゲートで質問なのですが、 自己定義したイベントハンドラに += で2つ以上のメソッドを登録したあと BeginInvoke() を実行すると System.ArgumentException が出るんです。 BeginInvoke() を利用したい理由は、登録したメソッドの戻り値を1つ1つ判定したい為です。 通常だと最後のメソッドの戻り値で上書きされるため、BeginとEndInvoke を使ってみたのですが、まったくうまくいきません。 アドバイスや解説ページなどありましたら、どうかよろしくお願いします。
>>607 今は確信犯の誤用について語り合うのに忙しいから帰ってくれ
デリケートな質問かと思ったよ
流れ読めなくてすみませんでした。 とりあえず、GetInvocationList()を使い、目的である1つ1つの 戻り値判定はできました。 でもなんか、力業っぽいというか、、もっと勉強して調べたいと思います。 失礼しました。
つかイベントで返値使うな、と言うのが MS のガイドライン。 呼び出し元に情報を伝えたい時は EventArgs を派生させたクラスで。
イベントハンドラでないデリゲートならOK
614 :
607 :2006/07/27(木) 23:51:38
はじめはデイゲートインスタンス?を利用していたのですが、
メソッドの削除がちょっとうまく行かなかった為 event にしてみたんです。
delegate bool CheckDelegate( object value );
public class Sampel {
CheckDelegate checkDelegate;
public Remove( CheckDelegate check ) {
this.checkDelegate -= new CheckDelegate( check ); // ※1
}
※1で削除できなかったので event にしてみました。
インスタンス?が違うっぽいですから削除できないのは納得してました。
とくにメソッドの削除使う予定はないのですが。
単にデリゲートよいいいかな?と思って 簡単な event 使ってました。
もうちょっといろいろ読んで勉強していきます。
>>612-613 さんご指導ありがとうございました。
>>614 > public Remove( CheckDelegate check ) {
> this.checkDelegate -= new CheckDelegate( check ); // ※1
> }
うむ、全く意味不明なコードに仕上がってるな。
右辺は += のときと同じになるぜ?
+= のときの右辺はどうしてるよ。
>>615 さんこんばんは。
あれ?Addの場合は、Removeと同じく、
public Add( CheckDelegate check ) {
this.chekDelegate += new CheckDelegate( check );
}
です。※Remove の"-"が"+"になっただけです。
これでテスト動いてたのでいいと思ってたのですが。
もしよかったらご指摘お願いします。
delegateを勉強するよろし delegate void UnkoDelegate( string str ); void UnkoTest() { UnkoDelegate unko, unko2; unko = new UnkoDelegate( aho ); unko2 = new UnkoDelegate( aho ); unko -= unko2; unko += unko2; unko( "aho" ); } void aho( string str ) { MessageBox.Show( str ); }
イベントでずっと new してたので、意味もなく new が慣習になってました・・・ デリゲートというより、当たり前の事ですよね。インスタンス違うんだもん。 間抜けでした。 失礼しました。
new でも問題ない
620 :
デフォルトの名無しさん :2006/07/29(土) 14:00:59
質問です。 トラックバーを利用してシステムの音量を調整するのには どうしたらいいですか? また、音量の値も取得したいのですが…
すいません、ageてしまいました orz
別にsage必須スレじゃない
デリゲートは対象のインスタンスとメソッドが同じなら同じ扱い。
625 :
デフォルトの名無しさん :2006/07/29(土) 23:54:12
>>623 ありがとうございます。
Win32API使ったこと無いのでちょっと苦しそうですが
がんばってみます。
専ブラ使ってるのに何で設定が保存されないのだろう orz
627 :
デフォルトの名無しさん :2006/07/30(日) 16:55:00
>>627 live2chってのがとっくの昔にあるぞ。
live2ch は VB だったと思うが、最近変わったのか?
>>629 言語なんぞ些細なことで重要なのは要求する仕事をしてくれるソフトウェアです。
live2chはVBだよ、何が悪いの?
632 :
デフォルトの名無しさん :2006/07/31(月) 00:12:34
ちょっとお聞きしたい。 親子のフォームを作って、子でパラメータをいじれるようにして 親で子のパラメータをリアルタイムに反映させるようにするには どうするのが一番良いのでしょう? 親でstatic変数で管理? 子のイベントを親のクラスで作る? その他? C#が独学なんで、作ってて迷いが出てるんですよ 助言お願いします。
んん、要するに子にスライドバー置いて親に表示してる画像の拡大率変更、とかそんなんか。 イベント。 だが子のイベントを親のクラスで作るってのは意味不明。 子のイベントに親がイベントハンドラを登録する、だな。
プロパティでもイベントでもSendMessageでも。 やるとしたらイベントかな。
この場合、親は子の存在を知るべきか?子は親の存在を知るべきか?で話は違ってくる。 自分の理想では、親に子ウィンドウをインジェクション注入、子にはパラメータ変更時に呼び出すべき親のメソッドをデリゲートとして登録しておく。 これで、両者ともお互いの存在を知ることがない。
こんにちは。 stringの配列をプロパティにしたいのだけど、書き方がわかりません。 普通の変数であれば、わかります。 mohe.property[1] <= こんなふうにアクセスしたいです。 書き方を教えてくださいな。
637 :
デフォルトの名無しさん :2006/07/31(月) 11:55:41
できるんだっけ?
意味不明
>>636 string[] _aho = new string[30];
string[] Aho { get { return _aho; } }
>>639 ありがとう。むつかしく考えてたよ。
アホだ…。
え、まじでそういう話だったのか
質問です。 指定したアプリにVK_F1とかを送りたいです。 SetForegroundWindowしてからkeybd_eventで送れたことは送れたんですが、 タイミング?によってはうまく動きません。 (GetForegroundWindowで確認してからkeybd_eventをしてるのに) 代わりにPostKeybdMessageでアプリを直接指定して送りたいのですが、 FindWindowでとったハンドルを指定してもそこに送れてないし、 ハンドルを-1にしても、ASCII文字しか送れていないようです。 文字ではなくF1とかの仮想キーを、指定したアプリに送ることって出来ますか?
普通にSendMessageでWM_KEYDOWNじゃだめなのか? フォアグラウンドなんて関係ないっしょ
どこがC#の質問かと 百歩譲ってどこが.NETの質問かと Win32APIスレで聞け
646 :
642 :2006/07/31(月) 15:16:41
>643 なるほど、やってみます まだググって片っ端から試してみてる程度のレベルなので・・・ >644 うへ、これは別人ですけど このタイミングじゃどう思われても仕方ないですね・・・orz >645 コード自体はC#で書いてますけど、 改めてカキコ見直してみたら、確かにC#も何も関係ないですね スレ違い申し訳ない
キー送りたいという質問自体はよくあること
俺もよくやること
ダサいよなぁ。
651 :
632 :2006/08/01(火) 02:01:02
>>633-635 お答えありがとうございます。
なるほど、イベント登録がデフォなんですね。
子フォームにコントロールを追加していくと
勝手にイベントが追加されるのに、さらに
書かないと行けないのはめんどくさいなぁ・・・
http://sewig.jp/diary/?date=20060624 ↑のコードを元に以下のようなコードを書いたのですが、
unsafe public void Wave_generation(double f)
{
try
{
short* wave_data = stackalloc short[44100];
double dr = 2 * Math.PI / (44100.0 / f);
for (int t = 0; t < 11025; t++)
{
*(wave_data + t) = (short)(Math.Sin(dr * t) * 32767);
}
(中略)
wt.dwFlags = 1;
wt.dwLoops = 1;
wt.dwBytesRecorded = 0;
wt.dwUser = 0;
wt.lpNext = null;
wt.reserved = 0;
windows.waveOutPrepareHeader(hWOut, &wt, (uint)sizeof(wavehdr_tag));
windows.waveOutWrite(hWOut, &wt, (uint)sizeof(wavehdr_tag));
Thread.Sleep(300);
windows.waveOutClose(hWOut);
}
catch { }
}
このコードを連続実行するとtry〜catchで括っているにもかかわらず、何も言わずに
プログラム本体が落ちてしまいます。
これを回避するにはどうしたらいいでしょうか?
>>652 [ツッコミを入れる]
ツッコミ・コメントがあればどうぞ! E-mailアドレスは公開されません。
交流してやれよ
自分のコントロールでマウスをキャプチャするにはControl.Capture = true; とすればいいんですが、 キャプチャしているコントロールを取得するにはどうしたらよいのでしょうか?
MSDNライブラリの「Control.Capture プロパティ」の使用例のところにあるけど
>自分のコントロールでマウスをキャプチャするにはControl.Capture = true; とすればいいんですが、 本当か?
657 :
654 :2006/08/01(火) 20:24:34
>>655 使用例は「特定のコントロールがキャプチャしたとき」を判断するサンプルですよね。
>>656 失礼しました。Control.Captureプロパティを true に設定する、と言いたかったのです。
658 :
デフォルトの名無しさん :2006/08/02(水) 10:18:36
Control.Captureプロパティは読み込み専用ジャマイカ。
659 :
654 :2006/08/02(水) 18:56:42
>>658 いえ、そんなことはないはずです。
どうも無理なのですかね。
あきらめてP/Invokeでやることにします。
Form から Controls を再帰的に探していけば見つかりそうだが。
object obj = 1; int i = (int)obj; これは成功するのに IntPtr p = (IntPtr)obj; だと例外でるのはなんで? IntPtr p = (IntPtr)(int)obj; ってしなきゃいけないの?
数値リテラルは明示しなかった場合 int IntPtr じゃなくて long でも InvalidCastException だぜ
>>662 >>663 ありがとう
>互換性のない値型への参照をボックス化解除しようとすると、
>InvalidCastException が発生します。
ってことは、int と IntPtr は「互換性のない値型」ってこと?
(IntPtr)i
はできるのに?
>>664 だってObjectの中身が具体的に何かなんて知ったこっちゃないし。
IntPtr は Int32 からの型変換は定義してるけど Object からの型変換は定義していない
[Category("カテゴリ名")]のカテゴリ名一覧が知りたいんですが、どこかに載ってませんか?
ヘルプに載ってね?
671 :
668 :2006/08/04(金) 15:30:38
探したりなかったようで申し訳ない。
>>670 thx
C#で日付の差分をとる方法を教えてください。 VBでいうdatediffのようなものです。 宜しくお願いします。
TimeSpan span = date2 - date1;
>>672 C#にそういう機能はない
.NET Frameworkを使うしかない
∧_∧ / ̄ ̄ ̄ ̄ ̄ (ω・ )ゝ < なんだって? ノ/ / \_____ ノ ̄ゝ
.NET FrameworkもC#で実装されてる
,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; ヾ;;;ハ ノ .::!lリ;;r゙ `Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f. 俺にもありました ~''戈ヽ `二´ r'´:::. `!
ボクはVBer♪
axWindowsMediaPlayerを使ったプログラムを組んでいるのですが、 再生が終了したのを検出するにはどうしたらよいでしょうか? EndOfStreamイベントで検出出来るかどうか試したのですが、 検出できませんでした。 よろしくお願いします。
>>681 WMPPlayState.wmppsMediaEnded
>>682 うまく検出できました。
ありがとうございました。
684 :
デフォルトの名無しさん :2006/08/13(日) 12:18:25
ものっすごい見当違いな質問かもしれません。 Form1.csのイベントハンドラから、外部クラスのmethodに値を渡し、 そのmethod内で処理した結果をReturnで返すようにしているのですが、 それを受け取ってみてもフォームに反映されないのです。(正確には、反映はされる事があっても、その方法ではGUIがフリーズしてしまう) 外部クラスのmethodというのは、接続先とPortを渡されたら、TcpClientで接続し、ストリームから通信結果を受け取って、 stringとして格納していき、それをReturnするものです。 スレッドを使ってみたり、デリゲートを利用してみたり、backGroundWorkerを触ってみたりしたのですが、 どれも既にあるクラスをそのまま利用するというわけにはいかず、外部クラス内に手を入れなければいけないような感じですし… おそらく根本的に考えかたというか、GUIプログラミングの定石のようなものが理解出来てないせいだと思うのですが、 なかなか取っ掛かりが見えてきません…。 呼ばれたら一連の動作を実行して結果を返し、その結果をForm1.cs側で受け取ってUIに反映させるという流れで間違ってますでしょうか?
>>684 その方法で良いともうけど、なにが出来ていないのかよく分からない。
とりあえず、returnは止めて、Form1にstringを受け取れるフィールドとプロパティを作って、
そちらに送って、Form1で処理してみては?
要するにそのメソッドは同期的にある程度長い時間を食うものであると。 同期的なら当然そのメソッドを処理しているあいだ他の事ができないわけで、 この他の事というのに画面の再描画とかも含まれるから応答無しになるわけだな。 で、それを回避するには当然何らかの手法で別スレッドで処理させる必要がある。 .NET 2.0 なら BackgroundWorker だな。 で、何が分からないんだ?
>>686 普通にdelegateの非同期実行でええやん。
>>687 初心者は絶対 GUI とのやりとりでハマる。
逆にスレッドを使ってるせいでハングアップしてるんじゃないのかな? GUIを管理しているスレッド以外からはGUIの更新は直接は出来ない。Control.Invoke メソッドを参照。
>>688 はいはい、3組のパソコン博士君にはかなわないよ。
>>686 ,687
BackgroundWorker使ってみたと書いてあるやん。
デバックなら例外でるけど、 リリースバージョンならでないんじなかったっけ?
>>684 そのプログラムをどっかのアップローダに上げてみた方が解決は早いと思うよ。
695 :
デフォルトの名無しさん :2006/08/13(日) 12:40:16
>>685-686 そこまでが正しい考え方であるということは…。
別スレッドで処理した結果の受け取り方が鬼門になっていると言う事になるのですかね…多分ですが。
backGroundWorkerが一番手軽そうでしたので、それを例にして。
例えば、
string log;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Class1 cs1 = new Class1();
log += cs1.connect();
}
のようにDoWorkで外部クラスのメソッドを呼んで、結果をForm1.cs(public partial class Form1 : Form)の、
string log;に入れるようにして、
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
richTextBox1.Text += log;
}
という感じでスレッド側での処理が終わった時に通信結果を表示したいのですが、一向にフォームが書き換わる気配が無く…。
フォーム云々以前に値は帰って来てるのかい?
697 :
デフォルトの名無しさん :2006/08/13(日) 12:48:55
>>696 それがどうも、ブレークポイントを log += cs1.connect();の場所に仕掛けてみても、当然のようにlogはまだ何も入っていない状態で、
さらに、backgroundWorker1_RunWorkerCompletedのrichTextBox1.Text = log;にもブレークポイントを仕掛けてみたのですが
そちらは引っ掛かりもせずです。
ブレークポイントいれるなら log += cs1.connect();の次の行か閉じ括弧に。 それでブレークしないなら connect()でそっちのスレッドから返ってきてないんじゃ
まずシングルスレッドで Connect メソッドが成功するのかどうかから確認した方が良い気がする
日付型から和暦の年を最低1桁で取り出そうと思っています しかしこのコードだと1桁の和暦ではなく、例えば「平成 9年6月」という文字列が返ってきます この中の 9 という値だけが欲しいのですが、どうすればいいのでしょうか CultureInfo culture = new CultureInfo("ja-JP", true); culture.DateTimeFormat.Calendar = new JapaneseCalendar(); Label2.Text = date.ToString("y", culture); string.Format(culture, "{0:y}", date) でもだめでした ご存知の方教えてください
DION規制に引っ掛かってしまってレスが返せませんでした…orz
で、
>>698 氏の通りにブレークポイント位置を変えてみたら、
どうやら、DoWorkのlog += cs1.connect();で、logにはちゃんと結果が入ってる事が確認できました!
このブレークポイントの掛け方を知る事ができただけでも、かなり感謝です。
しかし、RunWorkerCompletedの方は、閉じ括弧のブレークポイントですら引っ掛からないので、
こちらは恐らく、使い方そのものがまずい悪寒。IRC等のチャットアプリケーション(通信を常に開いているようなもの)では、
TCPClientでの通信は避けて、Socketで非同期に通信するべきですかね…。
なにはともあれ、ありがとう御座いました。もすこし色々やってみます。
>>700 JapaneseCalendar cal = new JapaneseCalendar();
Label2.Text = cal.GetYear(date).ToString();
ちなみに書式指定は"%y"
703 :
デフォルトの名無しさん :2006/08/15(火) 13:50:55
IpcChannel を使ったアプリを WindowsMe で動かそうとすると PlatformNotSupportedException が出ます。 Me では使えないんでしょうか。
704 :
デフォルトの名無しさん :2006/08/16(水) 10:33:32
C#相談室から誘導されてきました リストビューからIEのお気に入りのショートカット(.url)をクリックして axWebBrowser1に表示させたいのですが、「ファイルのダウンロード-セキュリティの警告」 という画面が出て直接表示されません。 「開く」を押すと新しいIEが開いてそこに表示されてしまいます。 これをセキュリティ警告を出さず、直接表示させるにはどのようにすれば良いでしょうか。 お願いします。
>>704 URLファイルからURLを取ってきてWebBrowserのNavigateに放り込めいいじゃない
>>704 urlファイルからどうやってリンク先を取得してんの?
C#からやると結構面倒だけど。
ShellLinkObjectクラスとIShellLinkWインターフェイス実装してるの?
それともShell32を参照に追加?
urlファイルの中身は単なるiniファイルですが何か
知らんかった
709 :
704 :2006/08/16(水) 11:06:40
>>705-708 ありがとうございます。
>>705 URLの取り方はStreamReaderでurlファイルから読み込めばいいのでしょうか?
それとも日付とかサイズ取得するみたいになんか簡単に取得できるのかな
>>706 リンク先の取得をせずに直接ショートカット(URLファイル)にアクセスしています
>>709 url ファイル (下のは2chへのリンク) の中身をダンプするとこんな感じ (
>>707 の通り単なる ini ファイル)
[InternetShortcut]
URL=
http://2ch.net/ Modified=606955AF07C1C6015C
// だからかなり処理を省くとこんな感じのコードで読める。 (全角スペース → タブ / 未テスト)
StreamReader reader = new StreamReader("link.url");
string url = null;
string line;
while ((line = reader.ReadLine()) != null)
{
if (line.StartsWith("URL="))
{
url = line.Substring(4);
break;
}
}
もちろんWin32API を使って ini を読むのもアリ。
#
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/INIfile.aspx
Componentクラスの上にSqlConnectionとか置いておいたら ComponentクラスがDisposeされるときにに一緒にDisposeされる もんだと思ってたんだけど違うようだと気付いた あれは一個一個if (this.sqlConnection1 != null)sqlConnection1.Dispose みたいにやっていかないといけないの?
>>711 君がComponentクラスと呼んでるものが、
> System.ComponentModel.IContainer components = new System.ComponentModel.Container();
これのContainerクラスのことなら、これにAddされたコンポーネントは
componentsをDisposeすれば連鎖的にDisposeされる。個別にDisposeする必要はない。
>>710 横からですが、この
Modified=606955AF07C1C6015C
ってのはどういう値なんでしょうか?
>>713 epocのミリ秒版とかそんなんでしょう。
715 :
704 :2006/08/17(木) 02:17:21
>>710 さんのソースでやりたいことができました。ありがとうございます。
あとでWin32APIを使った方法も試してみたいと思います。
ありがとう。
C#相談室で回答を貰えなかったのでこちらでも質問させてください。 DataGridViewで列毎にCharacterCasingを設定することは可能なのでしょうか? 可能なら設定の仕方を教えてください
>>716 ぅぉ-ありがとう。
なぜにMSのサイトに載ってないんだろ。
>>719 うるせーバカ
わかんねんだろ?
もうどうでもいいよ!
721 :
デフォルトの名無しさん :2006/08/17(木) 21:35:15
プログラム初心者です。 C#相談室でこちらに行けといわれました。。。 掲示板の質問も取り消せないほどの初心者です。 WinCEでプログラムを走らせているのですが、 その時の文字のエンコードをUnicodeに変更しなくてはいけません。 Shift_JISからの変更だったので下のようなプログラムを書いて見ました。 StringBuilder _DataArry; string DataArry = _DataArry.Tostring(); byte[] test = Encoding.Unicode.GetBytes(DataArry); DataArry = Encoding.Unicode.Getstring(test); しかし、ビルドをすると 引数を'1'個指定できる、メソッド'GetString'のオーバーロードはありません。 とエラーが出てしまいます。 すみませんが、どなたか教えていただけませんか?
>>721 なぜコンパイルエラーが出るかといえば、
GetstringがVirtualだから。
やるとするなら
UnicodeEncoding unicode = new UnicodeEncoding();
unicode.GetString(buffer);
だけどそのコード意味ないよ。
#
>>721 じゃないけど。
>>721 を補足すると、
Encoding.GetString(byte[]) はWinCEじゃサポートされてないから、
Encoding.GetString(byte[], int, int) を使えって話ね。
この場合は、
Encoding.Unicode.GetString(test, 0, test.Length);
かな。ただsjis からだと前の行も
byte[] test = (new Encoding(932)).GetBytes(DataArry);
って変更が必要。
もっと単純な話じゃないの? >.NET Compact Framework によってサポートされています。 と書いてあるのはこの書式だけ。 >Encoding.GetString (Byte[], Int32, Int32)
726 :
724 :2006/08/17(木) 21:51:05
間違えた。こっちか。 byte[] test = Encoding.GetEncoding(932).GetBytes(DataArry);
>>712 いや、単にSystem.ComponentModel.Componentを継承しただけのクラスです
(メニューの「コンポーネントの作成」で作られるやつ)
なんかデザイナ上でSqlConnectionとか貼れるから、Disposeまで自動で
してくれるのかと思ったんだけど、実際Disposedイベントを監視してみると
自動ではDisposeされない、と最近知ったという、だめぽな俺。
よく見るとSqlConnectionのコンストラクタにIContainerを受け取るのが無いし。
自分で全部IContainerにAddしとけば? Disposing(bool)をオーバーライドしてまとめてDispose
Form1のDataGridViewをダブルクリックした時に Form2を開きDataGridの選択された行の内容をTextBoxに表示したいのですが TextBoxに表示する方法がわかりません どうすればいいのでしょうか?
DataGridView dgView=new DataGridView(); TextBox tb=new TextBox(); tb.Text=dgView.ToString();
DataGridViewをpublicにするなり Form1にpublic staticなフィールドもってそこにいれておくなり Form1にプロパティつくってForm2で読むなり Form2のコンストラクタに行の内容渡すなり お好きな方法でどうぞ
>>731 それのやり方がわからないので聞いたのですが?
どの方法かわかりませんが自己解決しました
ここは役に立たないインターネットですねw
/\___/\ / / ヽ ::: \ | (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ,,ノ(、_, )ヽ、,, | < まーた始まった | ,;‐=‐ヽ .:::::| \_______ \ `ニニ´ .:::/ /`ー‐--‐‐―´´\
「何となくだけどできちゃった。俺SUGEEEEE!!!」 は解決したとはいわない。 っていうかぶっちゃけ危険分子。
>>734 そういうことばっかり言って・・・
ちゃんと教えてくれないくせに・・・
本当に意地悪っ子だね・・・
×役に立たない ○レベルが高すぎて理解できない
737 :
デフォルトの名無しさん :2006/08/19(土) 12:02:17
用はソースコードを示さないと理解できないんだろうが、 情報が与えられていない以上あれ以上の教え方ができるやつはどこに行ってもいない
publicとstaticの説明からはじめろってことだろw
>>737 そうそう。コードないとわからないのよ。
で、あれ以上の教え方を得るためにはどのような情報を与えてやればいいんだ?
しっかし、質問しても人湧いてこないのに
少し煽るとわらわら湧いてくるんだなw
740 :
デフォルトの名無しさん :2006/08/19(土) 12:18:00
>>739 環境からやりたいことからプロジェクト名か何から何まで
思いつくもの全部書け
それでたりなかったら無理。あきらめろ。どこいってもだめ
ちなみに女子高生です
742 :
デフォルトの名無しさん :2006/08/19(土) 12:29:58
俺は年齢一桁が専門です
うわっ、キモ
ちなみにすぐ下の妹が女子中学生で、一番下の妹が年齢一桁です
住民票うp
>>739 必要な情報はあれだけで十分。あとは理解しなさい。
個人的には public string プロパティを Form2 に作るが。
それともプロパティの作り方から教えなきゃダメか?
748 :
デフォルトの名無しさん :2006/08/19(土) 12:44:49
>>747 そういう方法じゃなくて答えをもらわないといけないんだと
プロぐれマートしてはさいくあのにんげん
プロパティってなんですか?
>>747 いや、その方法で自己解決したので結構です
こういう流れのときはこの板にIDがあったらといつも思う
おまんこ
MSDataSetGeneratorを用いて <DataSet> <Table1> <name></name> </DataSet>
755 :
754 :2006/08/19(土) 19:52:14
ごめん間違えた、MSDataSetGeneratorで、 入れ子になったDataTableを作りたいんですがどうすればいいのでしょう? <dataSet> <table1> <name></name> <tables> <table2> <data></data> </table2> </tables> </table1> </dataSet>
まずは雛形的に簡単な DataSet 作ってそいつのスキーマ取得してみたらどうだ。
Visual C# 2005 Express Edition で質問です オプション → キーボード の「次の追加キーボード マップ スキーム を適用」に (既定) 以外がありません。 何か特別なことをしないと駄目なのでしょうか?
Standardを買ってください
760 :
757 :2006/08/20(日) 15:18:55
しまった orz こんなこと書かれてた orz (例えば Visual C# 単体をインストールしただけでは「既定」しか選択できません。 Visual C++ をインストールすると,Visual C# でも「既定」に加えてテキスト エディタ「Brief」と「Emacs」の操作方法を選択できるようになります)
using (A a = new A()) { ... } このとき、Aのコンストラクタで発生した例外をcatchするには、 usingブロック全体をtryブロックでくくらないといけないのですか?
>>762 using ブロックで例外を catch できるとでも思ってるの?
正直そう言う構文は有りだったとも思う。 using ( ... ) { ... } catch (HogeException ex) { } みたいなの。 そのうち採用してくれんかな。
あー、でも using ステートメントで宣言した変数のスコープの問題もあるか……。
766 :
762 :2006/08/20(日) 19:06:24
try using (StreamReader reader = new StreamReader(path)) { ... }
767 :
762 :2006/08/20(日) 19:10:43
すみません。 try { using (StreamReader reader = new StreamReader(path)) { ... } } catch (FileNotFoundException) { ... } みたいなことをするなら、はじめからusingを使わずにfinallyを使ったほうが 見た目がきれいなのではないかと思ったからです。 usingを使うようなクラスは、コンストラクタで例外を投げるものが多いように感じますし
FileNotFoundException なら先にファイルの存在をチェックしろといいたい
>>768 その理屈はおかしいよ。
存在チェックした後実際に触るまでのあいだに削除される可能性は常に考慮してないと行けない。
事前に存在チェックするのも大事だけど。
770 :
デフォルトの名無しさん :2006/08/20(日) 23:56:48
タブブラウザを作るときってaxwebbrowserをいくつも作るんですか? なんか違うと思うのですがどのように実装するのか分かりません。 ヒント頂ければ幸いです。
そのコントロールを使うかどうかは自由だが IEコンポーネントはタブの数だけ必要だろ
772 :
770 :2006/08/21(月) 00:06:37
>>771 タブだけ別に用意して、タブが切り替わったら axWebBrowser の中身を入れ替えるというのも
アリといえばアリ。
774 :
770 :2006/08/21(月) 00:21:06
>>773 そっちで想像していました。普通にいくつも作ればいいみたいですね。
ありがとうございました。
>>773 いや、なしだと思うぞ…
そんなブラウザ使えねーだろ…
質問です。 try-catch文でcatch出来ない例外や、catchし損ねた例外が発生した際、エラーログを出力するメソッドなどはありますか? また、そのメソッドがない場合、例外が発生した時に発生するイベントを自作することは出来ますか?
セキュリティとかステートとか履歴とかスクリプト処理とかゾーンとかあらゆることが無茶苦茶になるわな
ASP.NETならApplication_Error WindowsフォームならThreadExceptionとかUnhandledExceptionEventHandlerとか 「未処理の例外」でぐぐれ
780 :
776 :2006/08/22(火) 01:48:09
>>778 ヒントを元にググったら何とか目的が達成できました。
ありがとうございました。
ToolStripComboBoxには普通のComboBoxのように DataSource、DisplayMember、ValueMember等の設定は出来ないのでしょうか?
ToolStripComboBox.ComboBox プロパティ
日付や結果などのログを表示するのに ListViewの詳細表示とDataGridViewのどっちを使う方が良いと思いますか?
ログがDBやDataTableに格納されているならバインドが楽なDataGridView ログがリアルタイムに発生して単にコントロールに追記するだけならListViewで十分 軽さを求めるならListView アイコンを手軽に使いたいならListView その他判断基準は色々ある 自分で両方試して目的に合う方を使うのがおすすめ 比較することでそれぞれの特性も理解できるし
787 :
785 :2006/08/24(木) 03:33:17
>>786 目的的にはListViewで十分そうですが
せっかくですので今後の勉強のためにも
両方使ってみることにします
ありがとうございました
メインフォームから別のフォームを呼び出すときに、 データを渡して内容を変更したいのですが、 どうしたら良いのでしょうか?
別のフォームとやらにデータ渡し用のpublicなメソッドを実装して、そこ経由で渡す 渡すだけじゃなく参照もしたいならプロパティで実装すれば良い
[System.Windows.Forms.Design.ToolStripItemDesignerAvailability (System.Windows.Forms.Design.ToolStripItemDesignerAvailability.ToolStrip)] public class ToolStripDateTimePicker : ToolStripControlHost { public ToolStripDateTimePicker() : base(new DateTimePicker()) { } } のコードを記載してデザイナでDateTimePickerを追加したいのですが 追加をすると一瞬表示されるのですが消えてしまいます。 理由わかりますか? 同じコードでnumericUpDownとかMonthCalenderとかは表示できるのですが・・・
791 :
790 :2006/08/25(金) 11:49:41
どなたかお解かりになる方いらっしゃいませんか?orz
>>791 public ToolStripDateTimePicker()
: base( new DateTimePicker() )
{
this.Control.CreateControl();
}
で表示されたけど
>>792 表示されました!!
本当にありがとうございました!
794 :
790 :2006/08/25(金) 12:51:30
なんどもすみません・・・orz DateTimePickerは表示できたのですが、そのFormatの設定の仕方が分かりません・・・ 設定の仕方を教えて頂けないでしょうか?
InitializeComponent()の後で DateTimePicker dp = (DateTimePicker)this.toolStripDateTimePicker1.Control; dp.Format = DateTimePickerFormat.Custom; dp.CustomFormat = "yy/M/d/ddd"; など。
あと、ToolStripDateTimePickerクラスの定義で public DateTimePicker DateTimePicker { get { return (DateTimePicker)base.Control; } } みたいにプロパティでDateTimePicker にアクセスできるようにしておくと吉
HttpWebRequest を並列化するために、BeginGetResponse じゃなくて Thread + GetResponse で構成するのって邪道なんですか? なんか別々の URL にアクセスしたはずなのに、全く同じレスポンスが返ってきたっぽいんですが (;´Д`) 並列系のバグは再現性がなくて困るよ orz
べつに自前でスレッド使ってもいいと思うぜ。 でも俺はそんなバグに出会ったことはない。 なにか間違ってるんだと思うよ。
じぶんならMSの実装なんか当てにしないで別スレッドにしますが。
それもMSの実装だろ
いうと思った。
それなら.NET FrameworkやWindowsも(略
質問です。 プログラムAからプログラムBを起動するメソッドを書いていたのですが、 プログラムAにドロップされたファイルをプログラムBに渡すにはどうしたらいいでしょうか? 試しに以下のようなコードを書いてみましたが、プログラムBには渡せていませんでした。 private void Form1_Load(object sender, EventArgs e) { string file = ""; bool first = false; string[] args = Environment.GetCommandLineArgs(); foreach (string work in args) { if (first) file = work; else first = true; } Process p = Process.Start(testprogram.exe,file); p.WaitForExit(); } //テストプログラム側 private void Form1_Load(object sender, EventArgs e) { string[] args = Environment.GetCommandLineArgs(); foreach (string work in args) MessageBox.Show(work); }
突っ込みどころが多すぎて
806 :
804 :2006/08/26(土) 21:15:37
修正 起動するメソッドを→Form_Load時に起動するコード ドロップされたファイル→ドロップされたファイルのパス
>>799 いや、明らかな間違いはないと思う。
今までに何十回とテスト飛ばしているけど、1件しか発生してないし。
というより、別々のオブジェクトからリクエスト飛ばしているから、
共有オブジェクトは全部洗い出して、そういうのは自前のソース中に無いらしいことは確認しているからなぁ……。
むしろ、そういう簡単な間違いであって欲しかったんだけど orz
>>804 引数fileに空白が入ってると
複数の引数と認識される
ようするにダブルクォーテーションで括れってこった
ついでにそれだと複数ファイルをドロップしたときはどうすんの?
>>804 最初の foreach ループは何をしたいの?
GetCommandLineArgsで返ってくる配列の最初は自身のパスだから それを飛ばしてるみたいですよw
>>808 file = work;
のところを
file += "\"" + work + "\" ";
とすると複数ファイルでもうまくいきました。
ありがとうございました。
>>809 ,810
例文の
file = work;
が+=じゃなくて=だけだったから変な風に見えたのかもしれません。
それでも最初のは十分おかしいのかもしれませんが…
>>811 >>804 の書き方だと string file = args[args.length-1]; と同じことになるよ。
2番目以降の要素を結合したいんだったら
for (int i = 1; i < args.length; ++i) { file += "\"" + args[i] + "\" "; }
とすればいい。
得体の知れないフラグを導入する必要はない。
すみません。Yahooに自動でログインさせるメソッドを作っているのですが、(1)のあと
表示するのを待ってから(2)以降を実行させたいのですがどのようにすればいいのですか?
public void Login()
{
webBrowser1.Navigate("
http://login.yahoo.co.jp/config/login?.src=www&.done= http://www.yahoo.co.jp "); //(1)
HtmlDocument doc = webBrowser1.Document; //(2)
doc.GetElementById("login").InnerText = "ユーザーID";
doc.GetElementById("passwd").InnerText = "パスワード";
doc.GetElementById(".save").InvokeMember("Click");
}
DocumentCompleted とかのイベント使えば
815 :
デフォルトの名無しさん :2006/08/28(月) 06:17:33
WebBrowserであるwebサイトを表示 ↓ webページのリンクをクリック ↓ IEが開いてリンク先のページが開く このことを検出したいのですが WebBrowser.Navigatingを使えばできるんでしょうか?
Form1のDateTimePickerの日付をAccessのReportのTextBoxに表示して印刷したいのですが方法が分かりません どのようにすればよろしいのでしょうか?
そのまんま一つ一つやっていけば
あぁ、すみません。 印刷は出来るのですが、ReportのTextBoxに値を設定する方法がわかりません。 Accessを開いた後に何かをすればよろしいのでしょうか?
oleAccess.Reports!(ReportName)![テキスト1].ControlSource = "=111"をC#にするとどういう風になるんでしょうか?
Access知らんけど Accessを参照設定してるなら インテリポイントでなんか出てくるっしょ
>>819 ((Microsoft.Office.Interop.Access.TextBox)oleAccess.Reports[ReportName].Controls["テキスト1"]).ControlSource = "=111";
埋め込みリソースから取り出したexeをファイルとして書き出さずに MemoryStreamなどから起動する方法はないでしょうか?
ない
テキストボックスの書式って、どうやって設定すんの?
つMaskedTextBox
>>826 桁区切りを表示したいだけなんだよなー
データーを読み込むたびに書式設定してやれば出来るんだけど
もっと簡単にテキストボックス自体に書式設定できないのかなーと
簡単には出来ないんだね。ありがと
ドラッグ&ドロップされたテキストファイル名をTextBoxに表示するって難しい? 極意の本にも載ってないしアロウドロップtrueにしてもうまく行かない
>>829 はやい!!ありがとうございます!今から見てきますね
感謝
831 :
828 :2006/08/31(木) 21:38:45
エラー1名前 'ListBox1' は現在のコンテキスト内に存在しません。 なんて出ました。なんでだろ? DragEnterの方は正常に動いたのに ListBox1.Items.AddRange(fileName);のトコでエラーになります・・・
ちなみに namespace study1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void listBox1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; } private void listBox1_DragDrop(object sender, DragEventArgs e) { string[] fileName = (string[]) e.Data.GetData(DataFormats.FileDrop, false); ListBox1.Items.AddRange(fileName); } } } こんなです。
*** サンプルコードは、自分の作っているプログラムに即するように変更すること *** TextBox に表示するんなら、変数名が TextBox1 だとすると TextBox1.Text = fileName + "\n"; に変えなさいな ListBox1 を作ったのならばこのとおりじゃないけど。
まちげーた TextBox1.Text += filename + "\n"; これでおk
ListBox1 じゃなくて listBox1 じゃねえのか?
ありがとうございます。一応フォームにはリストボックスを貼り付けました。 どこか根本的な間違いを犯していると思います。 指摘お願いします。
あ、すみません。2005EXPRESS EDITIONです
>>836 D&Dの仕方を学ぶより、先ずはC#の基本を学びましょう。
ちなみに、煽りじゃなくて切実に言ってますんで (・ω・`)
>>836 コンパイルエラーのでた箇所が表示されてるだろうが。
そこで波線を付けてくれた部分をよく見ろ
>>838 そうですよね。判ります・・・
本も何冊か買ったんですけどクラスとか構造体とかよくわからなくて・・
んでサンプルをコピペ改変して遊ぶうちに見えてくるかなぁと
なんかお勧め本とかありませんか?お願いします
真剣に覚える気はあります
>>841 こんな感じですじゃなくて。
変数名は大文字小文字を区別します。
↑こんなことまで言わせるつもり?
´∀`)σ)´Д`;)
>>844 ま、基本は大事ですよーと (・ω・`)
昔を思い出すなぁ。
java の話だけど、int と Integer の違いがさぱーり分からなかったとか ( ´ー`)y-~~
847 :
844 :2006/08/31(木) 22:45:00
>>845 >>846 なんかム板は怖いとこだと感じてましたがココは優しい人が多いですね
デバッグ出来ましたが動作は成功しませんでしたなんて言えません・・・orz
教えて頂いたサイトで勉強します
またなんか判らなかったら宜しくお願いします
でもみんな良くこんな難しいことできるよなぁ・・・・・
>>847 ちゃんと貼り付けたlistBox1にDragEnterイベントとDragDropイベントを設定した?
>>832 のコード貼り付けただけじゃ駄目だよ
>>847 >ココは優しい人が多い
たまたまかもねー。
確かにム板は初心者にはきつい所もあるけど、尻込みせずに気楽にどうぞ。
プログラムは 【慣れ】 が重要だから、練習あるのみ、かな?
気づいたら何となく出来るようになってます。はい。
>>848 はい。プロパティのイベント(雷マーク)ですよね?
だとしたらOKです。そしてそこをダブルクリックしてコードエディタで埋め込みました。
これって変ですか?
>>849 わたしもバッチ、WSHとサンプル弄くりたおして覚えたクチでして・・・
でも今回ばかりはそうはいかないみたいです(笑)
ああああああああああ!判った!!
分かったんかよw
出来ました!!! 原因はフォームエディタでForm1のプロパティにイベント設定してました・・・・・orz アフォですね。アフォすぎますね・・(´Д`;) ポインタはプラスマークに勝手になるんじゃないんですね。設定の仕方は本に載ってました あああああ!なんかすごい嬉しい。こんな程度の事ですけど 本当にありがとうございました。これからも宜しくお願いします
あ、プラスマークになりますね。 もう、付き合ってられないですよね(笑) では、おやすみなさい
×ポインタ 〇カーソル 「ポインタ」はプログラムの話をするときは別の意味がある
856 :
854 :2006/09/01(金) 20:42:57
>>855 ひょっとして有名なぬるぽの「ぽ」ですか?
明日も会社にこっそり行ってC#勉強してきます!
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | unsafeを感知しました | |__________| / / / _ ビビビ /||__|∧ / 。.|.(O´∀`) / |≡( )) ))つ `ー| | | (__)_)
/unsafe+
ToolBar、アイコンの横にテキストを配置している状態で、ボタンごとにサイズを変えることは出来ないのですか? なんか全部同じ大きさにそろってしまうのですが……。
C#でテキストエディタを作ろうと思い、まずテキストビューワーを作っています。 タブや全角スペースに色をつけるため、DrawStringで一文字づつ表示をしているの ですが、実行速度が非常に遅いです。 TextOutなども試してみましたが、あまり変わりませんでした。 なにか良い方法はないのでしょうか?
改行ごとに分けた string をリストとかにぶち込むといった前処理はしているよな
まともなエディタ作りたいなら少なくとも今のところはネイティブな C++ で書くべきだがね。 ダブルバッファリングはしてるかい?
>>860 unsafeでポインタを使うといいかもしれない。
>>863 やはり、C++でやるべきですか…
描画をpictureBoxで行っているので、デフォルトでダブルバッファリングをしている
と思うのですが…
>>864 すでにやってみましたが、あまり大きな変化はありませんでした。
[1] picturebox 使わない [2] 画面外の文字はそもそも DrawString しない どう?
>>865 画像処理とか、計算とかのピーキーなチューニングが効果的な処理ならともかく、
GUI周りの処理で、C#をC++にしたところで、速度に実効的な差はでない。
「何で」書くかではなく「何を」書くかで決まる。
GDIリソースの取得タイミングとか、
>>866 の言ってるような、クリッピング処理とか、バッファリング処理とか。
何が重い処理なのかを体感して、その重い処理の実行回数を減らすアルゴリズム
を考える。
>何が重い処理なのかを体感して 「計測して」だろが。C#用のまともなプロファイラあるのかしらないが。
C#というよりWin32/64アプリとしての計測になるかと ユーザは言語やフレームワークなんて関係ないから
RichTextBox
>>867 いや、基本的に GDI+ を使う事になる .NET は GUI コンポーネント制作には向かんよ。
ヒント:Swing
VGAカードが正式にGDI+をサポートするようになったら考えてもいいな。
空白のテキストボックスをemptyじゃなくてnullにしたいんですけど どうすれば出来ますか?
意味が分からん
TextBox.Textはnullにはできません。 継承元のControl.Textが set { if (value == null) { value = ""; } ... } みたいにしてた記憶がありんこ
>>876 nullには出来ないのですね・・・残念です。
バインドしているデータなのでデータグリッドのセルやデーターテーブルをnullにして対処します。
ありがとうございました。
テキストボックスをコンテナとして使おうとしてたの?
>>878 コンテナというのが良くわかりませんが
データテーブルの内容をテキストボックスに表示してます。
空白のテキストボックスをデーターベースに戻すと空文字禁止のエラーが出るのでnullにしたかったのです。
描画処理は余計なところは描画しないようにすでにしてありました。 また、pictureBox以外に描画をしましたが余り変わりませんでした。 また、DrawString時に、フォントを常にnewで作っていたのを描画前につくって おくようにしたところ、若干向上が見られました。 C++で作り直すことも含め、まだ速くできないか検討してみます。 多くのご回答ありがとうございました。
>>880 まず1文字ずつ描くよりも、まとめられるところはまとめてやったほうがよいと思う。
あと、Control.WndProcをオーバーライドし、
WM_PAINTを捕まえ、GDIで描くというのはどうだろう。
そこまでやるんだったら、C++(/CLI)にすべきだろうけど。
C#固執で速度だけ求めるならManaged DirectXで描けばいいじゃない
>>882 どの処理に時間を割いているのか、調べる必要があるだろうよ。
あと MDX でもフォントの描画は GDI だな。
BindingNavigatorのボタンを押したときの処理ってのはどんなことをしているのですか? どこかにコードで書いてありますか?
>>885 >処理を実装するコードは一般に公開されていません
そうなんですか・・・。ありがとうございました
昨夜、テキストボックスをnullに出来ないかと相談したものですが データグリッドとかをnullにして出来たと思っていたのですが、いろいろな不具合が出ます ADO.NETでデーターベースはAccessなのですが、Accessで空文字を禁止にしているので 空欄のテキストボックスをアップデートするとエラーが出てしまいます。 こういう場合はどのような処理をするのが一般的なのでしょうか? Accessの空文字を許可するのが一番簡単なのでしょうか?
データベースにテキストボックスから戻すときに Length==0 なら nullを戻せばいいんじゃね?
>>888 行を追加する場合や訂正ごとに更新をする場合はそれで大丈夫っぽいのですが
数行を訂正してから更新する場合にどうすれば良いのか困っています
昨夜悩んでデータグリッドのCellEnterとテキストボックスのkeyPresイベントに
if (String.IsNullOrEmpty(TextBox.Text) == true)
{
this.DataGridView[0, this.DataGridView.CurrentCell.RowIndex].Value = null;
}
を書いて成功した!と喜んだのですが、行の追加をするとエラーが出ることが判明しましたorz
それと、数行を訂正してから更新するとエラーが出たり出なかったりします
もう少し悩んでみます・・・
if(hogehoge == true) って C ではやっちゃいけないし C# でもやるべきじゃねえだろ
>>890 そうなんですか?では==trueは消しますね
後、空文字禁止のAccessの場合の一般的な処理を教えていただけると助かります
なんかBindingSource.EndEdit()をするとnullに設定したものもstring.Emptyにされちゃうみたいですね・・・ 考えられるありとあらゆるところにnullに設定するコード書いてみました・・・ とりあえず大丈夫そうですが本当にこれでいいのか心配です・・・
>>890 よこレス失礼します。
なぜ駄目なのか後学のため、教えてください。
かっこ悪いから。 そういうしきたりだから。 読むときにif (obj.IsHoge)みたいに自然な感じになるから。 ==falseもやめとけ。if (!obj.IsHoge)にする。
ぷっ
C だと非0が true だから
論理型と整数の暗黙変換があるC/C++の場合とそうでないC#の場合は別に考えないと。 論理型の変数や関数は単体で論理式として成り立つので、 簡潔であることをよしとする人は if (hogehoge) を好むが、 if (hogehoge==true) こっちの方が見やすいという人もいる。 どっちにしても最適化でロードモジュールには差は出ないだろう。ただし・・ if ((hoge > 0) == true) これはさすがにやめろといわれる。 if (((hoge > 0) == true) == true) なめとんのか・・・
if( ( ( !( blFlag == true ) == false ) ? false : true ) != false ) { ... }
コンパイルすると == true は消えるよ。Debugでやっても消えた。
まあ、一生 C# で書くつもりなら == true つけてもいいと思うが、 その癖を持ったまま他の言語を使うと失敗することもあるから気をつけな。
if (x)よりもif (x == true)と書くほうがよいと思うなら、 なぜそれよりif ((x == true) == true)と書くほうがよいと思わないのか? なぜそれよりif (((x == true) == true) == true)と書くほうがよいと思わないのか? というのをどこかで見た気がする。
そもそもC#ではif文はboolしか受け付けないので(x == true)と明記する意味がない。 C++なら(x != FALSE)とか書くが。
まあ、なんだ、思うわけねーだろぼけぇ
if ステートメントは true であるか否かを判断するためのものだから == true というのは蛇足
==trueもまたbool値を返してるわけだしな
>>906 確かに蛇足なんだが、ブロックのインデントと同様に、
あくまでも個人のセンス(可読性)に任せるべきだと思う
おそらくコンパイラの吐き出すコードは一緒
可読性は他人も読めるかを問うもの 個人だけならどうでもいいわけで で、そのコードを共有する人々の多数が == true の方が良いというならそれで良いってだけ エラーにも警告にもならない以上は正しいことであり、あとは使う人の問題
C だと TRUE は non 0 だから、== TRUE だと 2 == 1 の比較みたいになりそうで怖い。 true は知らん。
>>903 何か凄い納得。
==trueってのは、数値に無駄に0足してるようなもんなのかな
a = 1 + 2 + 0
はエラーにはならないが「正しい」書き方とは言い難い。
まぁ、一見さんには意味が通りやすいってことだわな。 3a−2b=8 を 3×a−2×b=8 と書けば、確かに分かりやすいけど、慣れると上の方が見やすいことに気がつく。 条件文の中身はtrueを表す『式』を書かなくてはいけない、 って思ってたんで、自分も==を書いてたけど、面倒になって省略した。 誰に対する可読性かを考えて、どちらにするかを決めればいいんでない?
3a-2b ってのは単なる簡略表記であって 3 x a - 2 x b と同じ式だけれども == true ってのは式を評価すると結果として同じにはなれど式としては別の式だよ
式ばかりに目を取られて if ステートメントという大枠を見失っていないか? ifステートメントに限らず、制御構文の意義を理解すれば == true なんて書かなくても見やすいし意味が分かると思うんだが
結論でないんだからどうでもいいじゃん
どうでも良いならレスしたっていいじゃん
917 :
デフォルトの名無しさん :2006/09/06(水) 17:07:12
WebRequestでWEBページを取得したいんですが、
なぜか自分以外のPCへ要求するとタイムアウトが発生してしまいます。
関係あるかわからないけど
[プロジェクト]-[プロパティ]-[セキュリティ]は完全に信頼する・・・にしてます。
try{
WebRequest webReq = HttpWebRequest.Create("
http://yahoo.co.jp ");
webReq.Method = "GET";
webReq.Timeout = 1000;
WebResponse webRes = webReq.GetResponse();
}catch (Exception ex) {
Console.WriteLine(ex.Message);
}
URL間違ってるなw
>>917 .NET Framework クラス ライブラリ
WebRequest クラス のサンプルコード とよく見比べてください。
マルチかよ 教えてやるんじゃなかった。
構成ファイル(*.config)の内容をビルドの種類で変えることってできるのでしょうか? C#のコードであれば #if〜#else〜#endif で制御できるのですが、.configの中は同じ方法でできませんでした 実現する方法をご存知の方、教えてください
>>922 config ファイルをプロジェクトに登録せずに、直接 bin\Release とかに配置する
924 :
デフォルトの名無しさん :2006/09/06(水) 22:55:57
axWebBrowserで作ったブラウザのリンクをクリックすると InternetExplorerが新しく開いてしまうのですが、これを 自作のブラウザで開くようにするにはどうしたらいいでしょうか? お願いします。
>>922 前は構成ごとにビルドイベント作れてそれで別々のファイルをコピーとか出来たと思ったんだが
2005では構成で分けられないみたいだからdebugとreleaseそれぞれに別のファイルを別個でコピーしたら?
926 :
924 :2006/09/06(水) 23:53:52
質問訂正します。
ブラウザをタブブラウザに改造したいのですが、
新しい Window を開く場合にタブブラウザ内で開くにはどうすれば良いでしょうか?
下記に参考になるソースがあったのですが新しいウインドウを開いてタブブラウザで表示する動作に
関する記述がコードのどこにあるか分からなかったので・・
ttp://myanya.ifdef.jp/stb.html
shdocvwでやればNewWindow2ももれなくついてくるけどな
>>926 コメントに「新しいウィンドウを生成しようとしたら」って書いてあるのに…
.NETのありがたみが薄れる
つーかWebBrowser.NewWindow があるような気がするが
932 :
922 :2006/09/07(木) 00:24:24
>>923 >>925 レスありがとうございます
Windowsアプリは教えていただいた方法で対応できました
プロジェクトでの設定と同期しないのが不便ですが、手順書で何とかできそうです
ですが、ASP.NETアプリやWebサービスは Web.config の場所が変えられないために対応できません
こればかりはどうしようもないのでしょうか
934 :
デフォルトの名無しさん :2006/09/07(木) 10:15:50
サイドバーやタスクバーのようにデスクトップにドッキングできるようなフォームは どうすれば実現できるでしょうか。
自力でスナップさせる
938 :
934 :2006/09/07(木) 12:05:31
名前を忘れてしまったorz
940 :
924 :2006/09/07(木) 13:49:32
>>927-
>>931 ,
>>933 ありがとうございます。できました。
AxSHDocVw.AxWebBrowser axWebBrowser = new AxSHDocVw.AxWebBrowser();
e.ppDisp = axWebBrowser.Application;
941 :
934 :2006/09/07(木) 14:19:41
>>936 ,
>>939 なるほど、Win32APIですか。調べてみます。
ありがとうございました。
942 :
924 :2006/09/08(金) 11:45:08
すみません。また質問なのですが、タブページにタイトルを設定したいのですが、
うまくいきません。
例えばヤフーだったらYahoo!JAPANとタブページに表示させたいのですが、
現在のコードではURLがひょうじされてしまいます。
System.Windows.Forms.TabPage tabPage = new System.Windows.Forms.TabPage();
省略
this.tabControl1.Controls.Add(tabPage);
省略
axWebBrowser.TitleChange += new AxSHDocVw.DWebBrowserEvents2_TitleChangeEventHandler( SetTitle );
public void SetTitle( Object sender, AxSHDocVw.DWebBrowserEvents2_TitleChangeEvent e )
{
this.Text = e.text;
}
924のココ↓を参考にしてるんですが自クラスが多くて分からなくて・・・
ttp://myanya.ifdef.jp/stb.html お願いします。
943 :
デフォルトの名無しさん :2006/09/08(金) 11:45:51
あげ
944 :
デフォルトの名無しさん :2006/09/08(金) 11:55:22
perlでいうmapやgrepといったリスト処理を扱うクラスってありますか?
>>889 もう遅いかもしれないけど、DBに書き戻すときに
DBNull.valueを挿入するようにするとうまくいくんじゃないかとおもう。
>>942 よくわからんが
this.Text = e.text;
を
this.Text = this.browser.LocationName;
にしたらどうか。
>>942 >自クラスが多くて分からなくて
って、2つしかclassがないわけだが
>>944 つ System.Text.RegularExpressions.Regex
>>944 .NET2.0ならArrayまたはListクラスのConvertAllメソッドとFindAllメソッドがそれに近いかな
なるほど。逆にいえばそれに相当するものは、2.0じゃないとないということですか。 ご回答ありがとうございました。
ConvertAll や FindAll なら自前で作るのも簡単でしょ ジェネリクスなしだと使い勝手はよくはないけどさ
C#やってる 鬱だ 鬱だ 鬱だー
俺はCで他人が書いたもちふのコードをC++でWinに移植してる。 これは激しく欝だ。
すみません。EXCELのあるセルの文字を置き換えて保存したいんですが 参考になる所をどなたかご存知ないですか? いまから具具ってきます
ExcelのVBAを使ったほうが早いだろ
簡単ではないということですね。 ExcelVBAってわからないんですがC#からExcelシート立ち上げてマクロを動かすってことですか?
順番が逆 ぐぐって見つからなけりゃここで質問してよ
なんか厨ぽいですけど・・・ クリップボードとSENDKEYSでやってみます
馬鹿か! Visual C# で Excel を自動化して、配列による範囲内へのデータ入力 および範囲内からのデータ取得を行う方法
c# excel で検索すればいいものを…
962 :
924 :2006/09/09(土) 02:46:57
できましたーーーーーーーーーーー!!ありがとう!
かなり難しかった。
でもこんな簡単なことだったのか・・・
>>946 >>947 ありがとうございました
963 :
デフォルトの名無しさん :2006/09/09(土) 18:43:02
notifyIconをクリックでtrackBarみたいなのを出したいのですが どうすればいいのでしょうか?イメージはボリューム調整のnotifyIcon?みたいな 感じです。 マウスカーソルの座標取得してtrackBarのLocationを設定したら表示されなかった。
C#でx^2とかってどういう風に書くんでしょう? とりあえず整数乗したいんですが
>>964 1. 素直に x * x
2. 整数乗という制限を無視して Math.Pow(x, 2.0)
バカ Pow だ
Powはしってますが、実装は知らんけれどなんか遅そうな感じが。
>>963 その TrackBar を Form に載っけてないとか言わないだろうな?
>>968 何万回も呼び出すんで無い限り無意味な心配だがね。
まあ整数乗なら簡単にメソッド化できるだろ。
自作してコード量無駄に増やして面倒なことになるよりもよほど早い
大量データのNLogNアルゴなのでパフォ削れるところは削ろうとしてます。 表記ないならしょうがないですね。メソッド作りがてら試してみます。
972 :
963 :2006/09/09(土) 19:43:04
>>969 載っけてなかった・・・
だが、載せても表示されなかったです。
contextmenuをオーナードローするとか・・・?
>>972 のっけてそのFormをShowしたんだろうな?
974 :
963 :2006/09/09(土) 19:59:01
>>973 しました。。。
private void notifyIcon1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
int X = Cursor.Position.X ; // X 座標 の取得
int Y = Cursor.Position.Y ; // Y 座標 の取得
Point pos = new Point(X,Y ) ;
Form3 f3 =new Form3();
f3.Show();
f3.Location = pos;
}
}
int Y = Cursor.Position.Y -100; // Y 座標 の取得 に変えたら動きました とか言ったらぬっころすよ
f3.Location = Cursor.Position; でいいじゃんネー(o´・д・)(・д・`o)ネー とりあえずそのイベントが発火してるかどうか確かめれ
よく見たらCursorなんか使うからおかしい f3.Location = Control.MousePosition; に決まってるじゃんネー(o´・д・)(・д・`o)ネー
Show()する前にLocationやSizeの設定済ませないと
>>978 設定した位置に表示されませんと来る罠
そして Form のメンバを一通り調べろと答える私
980 :
963 :2006/09/09(土) 21:58:43
>>975-
>>979 ありがとう
>>975 int Y = Cursor.Position.Y -100; // Y 座標 の取得
に変えたら動きました
>>976 >>977 >>978 表示されない
でもなんか、表示されるけどタスクバーの後ろに隠れちゃってるんですけど・・・
うめ
982 :
963 :2006/09/10(日) 00:58:17
もれもうめ
埋めてもいいが、次スレは?
986
梅
988
989
990 :
727 :2006/09/14(木) 17:33:08
1ヶ月たってしまいましたが、
>>728 のとおりにしてみます。埋め。
991
992
梅
竹
松
上
特
鶴
亀
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。