C♯, C#相談室 Part36

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C♯, C#相談室 Part35
http://pc8.2ch.net/test/read.cgi/tech/1162490865


過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
2デフォルトの名無しさん:2006/12/09(土) 18:37:08
3デフォルトの名無しさん:2006/12/09(土) 18:38:29
4デフォルトの名無しさん:2006/12/09(土) 18:39:19
5デフォルトの名無しさん:2006/12/09(土) 18:39:55
Visual C# 2005 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

MSDNライブラリ
http://msdn.microsoft.com/library/ja/

MSDN2
http://msdn2.microsoft.com/ja-jp/library/default.aspx

相互運用マーシャラによるメモリ管理
http://msdn2.microsoft.com/ja-jp/library/f1cf4kkz.aspx

Buffers のサンプル
http://msdn2.microsoft.com/ja-JP/library/x3txb6xc.aspx

文字列のマーシャリング
http://msdn2.microsoft.com/ja-JP/library/e8w969hb.aspx

pinvoke.net: the interop wiki!
http://pinvoke.net/

テンプレ終了
6デフォルトの名無しさん:2006/12/09(土) 18:45:08
>>1
おつりんこ
7デフォルトの名無しさん:2006/12/10(日) 00:44:52
新スレで早速ですが…、
プログラム Appli_A.exe と Appli_B.exe があったとして、
Appli_A.exe が Appli_B.exe が起動しているかどうかを知ることってできるの?
起動してるプロセスを取得して、Appli_B.exe があるかをチェックとかでは、
Appli_B.exe の名前をかえられたら、対処できないし…

どうすれば…
8デフォルトの名無しさん:2006/12/10(日) 00:48:21
どっちにも手を入れられるなら、Mutex 使うのが手っ取り早い
9デフォルトの名無しさん:2006/12/10(日) 02:50:47
>>8
どっちも自作中だからMutex使います。ありがとう。
10デフォルトの名無しさん:2006/12/10(日) 13:58:36
DataGridViewのHeaderに出る三角印は、どの値を変更すれば変わるんでしょうか?
マーク自体の変更ではなく、他のコントロールから選択位置を変更出来るようにしたいのですが。
11デフォルトの名無しさん:2006/12/10(日) 14:23:35
DataGridView.CurrentCell
12デフォルトの名無しさん:2006/12/10(日) 14:46:32
>>11
即レスありがとうございます。一応変更できました。
ただ、列として指定する方法は無いのでしょうか?
どうやらDataGridコントロールではCurrentRowというのを設定出来たようなんですが、無くなってしまったのでしょうか。
別に現状で問題は解決したので、+αといった所なのですが。
13デフォルトの名無しさん:2006/12/10(日) 15:20:32
名前忘れちゃったけど SelectionStyle かなんかのプロパティで
FullRowSelect だかを設定すれば行単位で
14デフォルトの名無しさん:2006/12/11(月) 09:01:57
15デフォルトの名無しさん:2006/12/11(月) 19:06:54
C#にて
Form1.cs(Form)とcodefile.cs(コードファイル)があります。

codefile.csにpublic static void xxxx()をつくり、Form1から呼び出すことはできるのですが、
codefileからForm1のコントロールの操作ができません。

コントロールの参照範囲をPrivateからPublic等にしてみましたが駄目でした。

解決方法ご教授願います。
16デフォルトの名無しさん:2006/12/11(月) 19:11:09
そういう時はね、出てくるエラーメッセージ書くか
可能な限りコードを見せるべきなのよ。

わかった?ボク?
17デフォルトの名無しさん:2006/12/11(月) 19:18:05
何を言ってるのかまったくわからんw
18デフォルトの名無しさん:2006/12/11(月) 19:24:23
お世話になります。現在、SmartClientの事前検証を行っています。
ClickOnceの技術を用いてClient,Serverの両方のAPPLを作成しました。

開発マシン:WindowsXPでは正常に動作するAPPLがWindows Server 2003では動作しません。
ClientからWebサービスのWebメソッドを実行すると
SoapException:401 Unauthorizedの例外が発生します。

** AdministratorのユーザーでLoginしているのになぜ??

--- Client Source ここから ---
try
{
string message = ClientService.Test();
MessageBox.Show(message, "Webサービステスト", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
--- Client Source ここまで ---
19デフォルトの名無しさん:2006/12/11(月) 19:24:40
--- Server Source ここから ---
[WebMethod]
public string Test() {
return Utilities.SerializeTest("Hello");
}
--- Server Source ここから ---

ClientのAPPLは正常にDLされ画面も表示されます。
また、Webサービス側は「http://hoge/TestWebService/Service.asmx」のURLを入力して
「Test」メソッドの動作確認も取れています。

どうも、認証(セキュリティ)が出来ていないように見受けたので
IIS側のプロパティを確認しました。「匿名認証」「Windows認証」
ともにチェックボックスは「ON」です。

ネット上で色々な事例を探してみましたが皆目検討が付きません。
なにかご存知の方、ご教授願います。

開発マシン:Windows XP SP2 IIS5.1 VS2005 Pro
試験マシン:Windows Server 2003 IIS6.0
20デフォルトの名無しさん:2006/12/11(月) 19:41:42
鯖側のどこかがASPNETさんに読めないとか書けないとか?
21デフォルトの名無しさん:2006/12/11(月) 19:51:29
>>15
VB出身と見た。

Form1クラスとcodefile.csにあるクラスとの関係がさっぱり分からん。
とりあえずその後者のクラスにForm1のインスタンスへの参照をもたせれ。

とにかくクラスというものを理解せよ。コードファイルとかモジュールじゃなくて。
22デフォルトの名無しさん:2006/12/11(月) 20:16:35
>>15
//Form1.cs
public class Form1 : Form
{
private TextBox textBox1;
public TextBox TextBox{get{return this.textBox1;}}
}

//codefile.cs
public class Code
{
public static void Xxxx(Form1 form1){form1.TextBox.Text = "新しいテキスト";}
}
こういうことがやりたいの?
とりあえず基礎からやり直した方がいいよ
23デフォルトの名無しさん:2006/12/11(月) 20:18:07
そんなあなたに朗報!

ふらっとC♯, C#(初心者用) Part10
http://pc8.2ch.net/test/read.cgi/tech/1162193452/
24デフォルトの名無しさん:2006/12/11(月) 20:32:36
>ClientからWebサービスのWebメソッドを実行すると
>SoapException:401 Unauthorizedの例外が発生します。


わしは素人だが以下の内容がおかしいと思う。
>** AdministratorのユーザーでLoginしているのになぜ??

25デフォルトの名無しさん:2006/12/11(月) 20:53:11
IISはAdministratorだとフルアクセスできるの?
26デフォルトの名無しさん:2006/12/11(月) 20:57:45
('A`)
27デフォルトの名無しさん:2006/12/11(月) 22:47:18
モナーが選択されているという条件分岐は
if(this.comboBox1.SelectedItem.ToString()=="モナー")
となるのに、なぜ?
モナーが選択された状態にするのは
this.comboBox1.SelectedItem="モナー"と書くのか
28デフォルトの名無しさん:2006/12/11(月) 22:50:16
日本語でおk
29デフォルトの名無しさん:2006/12/11(月) 22:53:06
SelectedItemがstringとは限らないからじゃないかと思われまする
30デフォルトの名無しさん:2006/12/12(火) 01:33:14
>>27
代入演算子と、比較演算子は違うから
31デフォルトの名無しさん:2006/12/12(火) 02:44:29
>>27
ヒント: this.comboBox1.SelectedItem=(Object)"モナー"
32デフォルトの名無しさん:2006/12/12(火) 07:58:01
今までずっとDelphi使ってきたけど、C#を触ってみて思ったのは、
かなりDelphiに近い言語で、.NETもVCLに近い感じがします。
パクりでしょうか。
33デフォルトの名無しさん:2006/12/12(火) 07:59:46
C#設計したの、Delphi作った人じゃなかったっけ?
34デフォルトの名無しさん:2006/12/12(火) 08:03:45
そーです
35デフォルトの名無しさん:2006/12/12(火) 08:06:50
ついでにいうとヘジたんは .NET の開発にも関わってる
36デフォルトの名無しさん:2006/12/12(火) 08:20:38
じゃ、DelphianはC#と.NETを習得することは容易ですか
37デフォルトの名無しさん:2006/12/12(火) 08:49:56
C#はDelphiの作者がJAVAを横目に見ながらC++を書き直した言語だろ?w
38デフォルトの名無しさん:2006/12/12(火) 09:25:04
C magazinにつづきWindws Developer Magazinも休刊か……
なんか.netで門戸が下がったような気がするのに
サンデープログラマーは減ってるのかねえ
39デフォルトの名無しさん:2006/12/12(火) 11:26:26
>>37
そりゃ、まさにそのとおりだろ。
だがそれがいい。
40デフォルトの名無しさん:2006/12/12(火) 11:29:19
C++を横目に見つつJavaを書き直したんじゃないの?
41デフォルトの名無しさん:2006/12/12(火) 14:15:19
構文はC++に近く、基本設計はDelphi。C#単体はいうほどJavaに似てない。
コミュニティも見事に被らないためさらに離れていっている。
42デフォルトの名無しさん:2006/12/12(火) 15:19:32
最近はJAVAのほうがC#に似てきた
43デフォルトの名無しさん:2006/12/12(火) 16:29:43
GCパクっておいてJavaに似ていないって…
44デフォルトの名無しさん:2006/12/12(火) 16:31:54
GCはJavaのパクりじゃないだろ・・・
45デフォルトの名無しさん:2006/12/12(火) 16:53:49
わざわざC#「単体」って書いてるのに。誰もCLRの話はしてない
わけだが。そのCLRも手段は別にして目的の方向性がずいぶん
違うしな。
46デフォルトの名無しさん:2006/12/12(火) 17:42:33
GCなんてとっても古くからある技術だろ
47デフォルトの名無しさん:2006/12/12(火) 19:00:36
どう考えてもjava→c#だと思うよ。
C++→c#だと主張している人は勉強しなおしたほうがいいよ。
48デフォルトの名無しさん:2006/12/12(火) 19:07:11
ふつーにVB→C#ってあたりで手を打たないか?
49デフォルトの名無しさん:2006/12/12(火) 19:09:09
それはないw
50デフォルトの名無しさん:2006/12/12(火) 19:09:46
いやアセンブラ→c#ぐらいじゃないと…

GCは昔のBasic(98とかね)にもあったよ。。。
51デフォルトの名無しさん:2006/12/12(火) 19:12:02
GCはFORTRANに並んで歴史の長いLISPあたりが起源なんじゃないの?
別に目新しいもんじゃないでしょ。
そもそもC/C++用のGCだってあるわけで。
52デフォルトの名無しさん:2006/12/12(火) 19:12:28
DelphiはC++の影響があると思うよ。
ちょっと古いタイプだと思う。
53デフォルトの名無しさん:2006/12/12(火) 19:37:43
>>48
CLRはまさにそうなんだけど言語としてはなぁ
Delphi → J++ → C#
でどうよ?ヘジの歩みそのまま。

>>51
うん、多分LISPからパクったんだろう。でもJavaのもとまで
辿るとなると話がややこしくなりすぎるので。
54デフォルトの名無しさん:2006/12/12(火) 19:45:14
Object Pascalだろが禿!
55デフォルトの名無しさん:2006/12/12(火) 19:50:27
>>53
CLRはぜんぜんVB由来じゃないでしょ。
Java VMをもっと言語から独立させた感じだよね。

GCについてはどこからパクったとかじゃなくて、GCを備えた言語はそこらじゅうにあると言いたかっただけ。
56デフォルトの名無しさん:2006/12/12(火) 19:52:17
どうでもいいよハゲども
57デフォルトの名無しさん:2006/12/12(火) 20:00:04
>>55
>CLR
VB由来というかCOMだな。結局のところコンポーネント志向がこの形に
収束しただけ。VMが欲しかったわけでなく、欲しかったのは高記述な
バイナリだろう。
技術はほとんど同じになったんだがアプローチがまったく逆ってのが
面白いよなぁ
58デフォルトの名無しさん:2006/12/12(火) 20:01:19
>>47
ヘジルスバーグたんは、J#の開発にも関わってたのです当然です。
59デフォルトの名無しさん:2006/12/12(火) 20:01:50
J#じゃなかった、J++だった
60デフォルトの名無しさん:2006/12/12(火) 20:06:10
CLRのCOM由来説初めて聞いた…
61デフォルトの名無しさん:2006/12/12(火) 20:16:49
CLRでメタ処理系狙ったんじゃないの?
62デフォルトの名無しさん:2006/12/12(火) 20:29:55
ヘジルスバーグたんはどうしてこんなに委譲が好きなの?
63デフォルトの名無しさん:2006/12/12(火) 20:31:17
学会の流れ…
64デフォルトの名無しさん:2006/12/12(火) 20:39:16
Objective-C => java => C# ですよ、おのおの方。
65デフォルトの名無しさん:2006/12/12(火) 20:45:46
ラムダ式キター
66デフォルトの名無しさん:2006/12/12(火) 20:53:19
Objective-C は Smalltalk + C だすな。
67デフォルトの名無しさん:2006/12/12(火) 21:11:26
GCはGCでも、Java1.3以降のGC(HotSpot?名前を忘れた)に似たGCは.NETが初ではなかろうか
68デフォルトの名無しさん:2006/12/12(火) 21:15:56
JAVAもそのうちeventやプロパティ導入しないかな?
69デフォルトの名無しさん:2006/12/12(火) 21:31:06
デリゲートやクロージャ,プロパティが導入される予定
次は何だろうね
70デフォルトの名無しさん:2006/12/12(火) 21:35:25
enumやstructじゃない?
71デフォルトの名無しさん:2006/12/12(火) 21:38:56
struct は Java の思想とは相容れんだろう。
// と言いつつクロージャとかどうなんだって気もするけど。
enum は極言しちゃえば数値型の構文糖衣だから導入は簡単そうだな。
72デフォルトの名無しさん:2006/12/12(火) 21:46:14
プロパティは便利だよね。
見た目もいいし。
setNameとかgetNameなんてメソッド書きたくないよ。
73デフォルトの名無しさん:2006/12/12(火) 21:51:24
enumは既にJavaに導入されてるよ
定数じゃなくてクラス扱いだけどな
C#3.0の様子を見て,良さそうなのはまた真似するんだろうね
74デフォルトの名無しさん:2006/12/12(火) 21:55:48
C#にしてもJAVAにしてもトリッキーな仕様は取り込んで欲しくないな。

Cって意外と先見性があったんだな。
string型さえあれば寿命がもっと延びてたんじゃないかな。
75デフォルトの名無しさん:2006/12/12(火) 22:19:13
D言語ってどうよと思ってページ見たけど
次の部分みて萎えた。

void main(char[][] args)
76デフォルトの名無しさん:2006/12/12(火) 22:33:51
MSDN壊れてないか?
2回に1回はプレーンテキスト風になる。
77デフォルトの名無しさん:2006/12/12(火) 22:53:03
ラムダ式って=>の後ろを括弧で囲まなくていいんだな。
なんとなく見てて気持ち悪いんだが、
C#にはカンマ演算子とかないから問題ないんだろうか。
78デフォルトの名無しさん:2006/12/12(火) 23:15:44
delegate bool Foo(int n, int m);
bool Bar(Foo u, Foo v, int a, int b, int c, int d) { return u(a, b) && v(c, d); }
Console.Write(Bar((x, y) => x <= y, (z, w) => w >= z, 9, 4, 1, 7));
79デフォルトの名無しさん:2006/12/12(火) 23:20:55
C#で作ったアプリケーションを逆コンパイルできないようにはできない?

Microsoft.NET 2.0 SDK付属のMSIL 逆アセンブラで簡単に見えちゃうんですが、
80デフォルトの名無しさん:2006/12/12(火) 23:21:33
まあさすがにこういう変態コードはやめていただきたいものだな。
つか途中の不等号演算子が狙いすぎだw
81デフォルトの名無しさん:2006/12/12(火) 23:26:54
そんなコードがコンパイル通るのはperlくらいで十分だ。

l=i=>i>=1||i<=-1; ('A`)ヴァー
82デフォルトの名無しさん:2006/12/12(火) 23:27:57
>>76
たまに糞重くてスタイルシートが読み込まれないときがあるが。
83デフォルトの名無しさん:2006/12/12(火) 23:33:22
>>79
Reflectorで見るともっと面白いものが見られるぞ
84デフォルトの名無しさん:2006/12/12(火) 23:39:57
>>79
確かにそれが一番の問題なんだよなあ。
85デフォルトの名無しさん:2006/12/12(火) 23:40:50
>>79,84
ぜひDotfuscatorを30万円でお買い求めください。
86デフォルトの名無しさん:2006/12/12(火) 23:51:58
そういえばmonoではObfuscatorって作ってないのかな。
87デフォルトの名無しさん:2006/12/13(水) 00:07:59
だって「オープンソース」プロジェクトだから…
88デフォルトの名無しさん:2006/12/13(水) 00:42:51
だいたいソースなんか見えてもいいんだよ。
んなもん誰でも書けるんだから。

技術のない人間ほどそういうトコ気にするな。
89デフォルトの名無しさん:2006/12/13(水) 00:45:13
90デフォルトの名無しさん:2006/12/13(水) 02:52:09
>>88
ソースはいいけど、知らずにパスワードや認証まで入れちゃうと大変
ってか実際そういうソフトがあるし…
91デフォルトの名無しさん:2006/12/13(水) 03:21:36
今までC++とかDelphiやってきたんですけど、C#はGCということで、特にメモリ解放の心配はしなくてもいいんですか?
なんか心配で・・・
92デフォルトの名無しさん:2006/12/13(水) 03:56:01
managedなリソースの開放は心配しなくても大丈夫です
93デフォルトの名無しさん:2006/12/13(水) 03:59:35
>>90
それデコンパイル以前の問題じゃないか
94デフォルトの名無しさん:2006/12/13(水) 11:25:00
C#の活気のあるコミュニティどっかにないですか?(´・ω・`)
VSUGのMSDNフォーラムもみな過疎ってる。英語可。
95デフォルトの名無しさん:2006/12/13(水) 17:43:46
ここ
96デフォルトの名無しさん:2006/12/13(水) 20:02:25
C#は好きだけどメインストリームはJAVAだということには変わりない。
97デフォルトの名無しさん:2006/12/13(水) 20:14:17
Javaは現代のCOBOL。
98デフォルトの名無しさん:2006/12/13(水) 20:20:53
先輩が言うには、JavaとDB(オラクル)使えたらくいっぱぐれないとのことです。

でもそれだけじゃ面白くない…
99デフォルトの名無しさん:2006/12/13(水) 20:22:51
Javaってプラットフォーム技術とプログラミング言語のどっちを指すんだ?
100デフォルトの名無しさん:2006/12/13(水) 20:28:13
>>97に関しては主な使われ方についての個人的なイメージ。
VBもそうかな。
101デフォルトの名無しさん:2006/12/13(水) 20:32:02
でもなんだかんだ言ってもアクセスが一番使われているような希ガス。
102デフォルトの名無しさん:2006/12/13(水) 20:49:24
キーから値を取り出せて値からもキーを取り出せる連想配列って無い?
103デフォルトの名無しさん:2006/12/13(水) 20:51:06
連想配列2こ使う
104デフォルトの名無しさん:2006/12/13(水) 20:51:44
やっぱ1コじゃ無理かぁ
dクス
105デフォルトの名無しさん:2006/12/13(水) 20:52:49
>>102
SortedList
106デフォルトの名無しさん:2006/12/13(水) 20:53:05
値は重複おkだから戻るキーも1つじゃないかもな。
107デフォルトの名無しさん:2006/12/13(水) 20:59:11
>>105
うちのPCヘルプ起動するのに3分かかるからちょっと待ってても

>>106
重複しない方向で
108デフォルトの名無しさん:2006/12/13(水) 21:00:27
>>105
無駄な処理入るから普通にDictionary二つ使ったほうがいいよ。
109デフォルトの名無しさん:2006/12/13(水) 21:10:46
IndexOfValue ??????
110デフォルトの名無しさん:2006/12/13(水) 21:14:55
う〜ん

インスタンスを2コ管理するのが面倒だから
SortedListを使ってみるよ
111デフォルトの名無しさん:2006/12/14(木) 07:50:45
インスタンスを2コ使うラップクラスを自分なら作る。
112デフォルトの名無しさん:2006/12/14(木) 15:59:39
サイコロみたいに1〜6を出すにはrandom.Next(0, 7)でいいですか?
113デフォルトの名無しさん:2006/12/14(木) 16:10:18
1,7 じゃね?
114デフォルトの名無しさん:2006/12/14(木) 16:14:43
フォームを閉じる際に確認メッセージを出そうと思い、FormClosingイベントが起こるとMessageBoxを出すように書きました。
このフォームに「アプリケーションを終了する」というメニューを追加したいと思います。
その是非を一度だけ聞いてApplication.Exit()を実行したいのですが、現在のやりかたではFormClosingイベントが途中で呼ばれてしまい、
アプリケーションの終了確認→フォームを閉じる確認と表示されてしまいます。
何か良い方法はないでしょうか。
115デフォルトの名無しさん:2006/12/14(木) 16:20:45
>>113
どうも
116デフォルトの名無しさん:2006/12/14(木) 16:23:38
>>114
アプリケーションを終了するメニューを選択したら、
その場合は、FormClosingの時のMessageBoxを出さないようにすればいいだけじゃん。
それか、Application.Exitじゃなくて、Environment.Exitでおだぶつさせるかじゃね。
117デフォルトの名無しさん:2006/12/14(木) 16:24:57
>>114
FormClosingEventArgs.Cancel
118デフォルトの名無しさん:2006/12/14(木) 16:26:44
>>116
追記だけど、ほかには、アプリケーションの終了確認なんてしないで、Application.Exit()を呼べばいいんじゃね。
したら、FormClosingの時に確認してくれるぜ。
FormClosingの時の確認を終了確認にすればいい。
119デフォルトの名無しさん:2006/12/14(木) 16:40:06
>>117
FormClosingEventArgs
e.CloseReason != CloseReason.ApplicationExitCall で
Application.Exit()をフィルタすることができました。
お目汚し失礼しました。
120デフォルトの名無しさん:2006/12/14(木) 17:19:33
121デフォルトの名無しさん:2006/12/15(金) 09:30:29
>>119
CloseReasonてNET2.0から出てきたのか。便利だね。
122デフォルトの名無しさん:2006/12/15(金) 16:44:19
class A{
 private B b;
 private int num;
 public A(){
  b = new B();
  num = 10;
 }
 public int Num{ get{return num;} }
 public B B_instance{ get{return b;} }
}

class B{
 //public int Calc(int num){
 // return num*2;
 //}

 //public int Calc(){
 //ここでAのnumを使いたい
 //}
}

a = new A();
a.B_instance.Calc();
としたときに,Aのnumを使ってBのCalcを呼び出したいのですがどうすればいいでしょうか

a.B_instance.Calc(a.Num);
とすればAのnumを渡せますが冗長な気がします
123デフォルトの名無しさん:2006/12/15(金) 16:52:15
BをnewするときにAを渡しとく。

b = new B(this);

とか。
124122:2006/12/15(金) 17:07:10
なるほど.ありがとうございます.
125デフォルトの名無しさん:2006/12/15(金) 20:39:19
現在、キーボードやマウスによるキー入力を
どのデバイスから送られて来たのか判断した後、
場合によっては入力を握りつぶしたいと考えております。

デバイスを判断し、キーを取得するだけですと
WM_INPUTにてRawInputを使用することにより実現できたのですが、
キーを握りつぶすことが私の試行錯誤した上ではできませんでした。

キーを握りつぶそうとWH_KEYBOARD_LLをフックし、
WH_KEYBOARD_LLの時点でキーを握りつぶすとメッセージの順序の関係上だと思うのですが
WM_INPUTも呼ばれなくなってしまい、デバイスの識別ができないでおります。

他の処理も考え付かず、途方にくれている状態です。
WH_KEYBOARD_LLがWM_INPUTより先に呼ばれているならそこでデバイスを
識別できないかとも考えたのですが、私の調べた限りではできませんでした。

どうか皆様のお力を少しでもよいので貸していただけないでしょうか。
よろしくお願いいたします。

#なお、この質問は過去に他の所にて質問させていただきましたが、
解決策が得られなかったために、再度お尋ねさせていただいております
126デフォルトの名無しさん:2006/12/15(金) 20:44:35
WIN32APIの猛者どもに聞いたほうがよさそうだけどな。

そこでNG出されたの?
127デフォルトの名無しさん:2006/12/15(金) 20:47:33
いえ、多分そちらでは聞いていないかと。
もう少し適切な場所があるようでしたらそちらに移そうかと思うのですが
128デフォルトの名無しさん:2006/12/15(金) 20:52:36
移動されたようですな…
129デフォルトの名無しさん:2006/12/15(金) 21:00:11
ちょっとどのすれか自信ありませんでしたが、
ありがとうございました
130デフォルトの名無しさん:2006/12/15(金) 21:21:55
これはあなた?
あちこちたらい回しされて大変だね。

ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33201&forum=7&0
131デフォルトの名無しさん:2006/12/15(金) 22:05:12
>>130
はい、私の質問です。
たらい回し、というよりも人にすがっているのは自分ですので
大変というよりも皆さんに迷惑がかからないかの方が心配で・・
132デフォルトの名無しさん:2006/12/16(土) 02:32:08
文字を大きく(32ポイントぐらい)文字の形をした影付きで描画したいんですが、影をどうやってつけたらいいんでしょう・・・(´・ω・`)
133デフォルトの名無しさん:2006/12/16(土) 02:42:56
自分で書けばいい
134デフォルトの名無しさん:2006/12/16(土) 07:23:19
コマンドプロンプトで
(コマンド) < (ファイルパス)
のようにコマンドにファイルを渡すのを、

Process proc = new Process();
proc.StartInfo.FileName = "(コマンド)";
string command = "< (ファイルパス)";

proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;

proc.StartInfo.Arguments = command;

proc.Start();
proc.WaitForExit();

っとやっているのですが、うまくいきません。
どうすればいいのでしょうか?
135デフォルトの名無しさん:2006/12/16(土) 07:43:36
>>134ですが、コマンドプロンプトを利用して、以下のようにやってみました。
ただ、(コマンド)をフルパスで指定して、そのパスにスペースが入っているとうまく動きません
(コマンドがスペースで、きれて実行され、結果、そんなコマンド認識できないとなります。)
コマンドもファイルパスもダブルコーテションで囲んでいるのですが
それで、ファイルパスにはスペースが当っても大丈夫です。

Process proc = new Process();
proc.StartInfo.FileName = Environment.GetEnvironmentVariable("ComSpec");
string command = "\"(コマンド)\" < \"(ファイルパス)\"";

proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;

proc.StartInfo.Arguments = String.Format(@"/C {0}", command);

proc.Start();
proc.WaitForExit();
136デフォルトの名無しさん:2006/12/16(土) 08:33:41
>>133 書き方教えてください・・・(´・ω・`)
137デフォルトの名無しさん:2006/12/16(土) 08:36:41
ちょっとずらした位置に重ねて2回描画すればいいだろ
138デフォルトの名無しさん:2006/12/16(土) 08:39:08
>>134
よく考えると、これはできなくて当然ですね…。
ねぼけてました。

>>135の方をお願いします。
139デフォルトの名無しさん:2006/12/16(土) 08:46:03
工エエェェ(´д`)ェェエエ工
140デフォルトの名無しさん:2006/12/16(土) 08:53:39
>>137 ぼかしたいんです・・・(´・ω・`)
141デフォルトの名無しさん:2006/12/16(土) 08:57:18
>>140
ずらして、片方の色を薄くする。
142デフォルトの名無しさん:2006/12/16(土) 09:18:52
>>141 それじゃぼけません・・・(´・ω・`)
143酔いちくれ ◆J0rwikii8c :2006/12/16(土) 09:33:08
>>142
どうしてもやりたいんなら、文字を描画したいコントロール
を継承したコントロールをつくって、OnPaintイベントを
オーバーロードする。

おくられてきたイベントPaintEventArgsのプロパティに
Graphics クラスがいるからそいつの弄ればグラデーション
っぽくなるかも。

144デフォルトの名無しさん:2006/12/16(土) 09:36:52
>>142
半分のサイズで描画したのを拡大したらぼけるんじゃね?
145デフォルトの名無しさん:2006/12/16(土) 10:57:36
>>142
WPFを使ってみれば?
146デフォルトの名無しさん:2006/12/16(土) 11:34:32
>>142
ウィンドウタイトルバーの文字に影がついてることを強引に前提として
themeAPIで描く
147デフォルトの名無しさん:2006/12/16(土) 12:50:02
>>134
リダイレクトはシェルの機能なんだから、
同じように普通にSTDINに叩き込めばいいじゃね?

Process proc = new Process();
proc.StartInfo.FileName = "コマンド";
proc.StartInfo.RedirectStandardInput = true;
proc.Start();
new BinaryWriter(proc.StandardInput.BaseStream).Write(File.ReadAllBytes("ファイル"));
proc.WaitForExit();
148デフォルトの名無しさん:2006/12/16(土) 15:01:30
C#にbison/flexやboost::spiritみたいなパーサジェネレータライブラリってありますか?
149デフォルトの名無しさん:2006/12/16(土) 15:24:16
隣接ピクセルとの平均値なりをピクセルにセットすればぼけるでしょ
150デフォルトの名無しさん:2006/12/16(土) 15:35:11
実用的な速度で出来ませんとか言い出すんじゃない?

馬鹿初心者に一言。
実装までは面倒見れません。
151デフォルトの名無しさん:2006/12/16(土) 17:09:44
>>150
そういうのは馬鹿なことを言い出してから言えよ。
152デフォルトの名無しさん:2006/12/16(土) 17:30:30
DirectXを使え
153デフォルトの名無しさん:2006/12/16(土) 17:32:24
GDI+で小さく描画して拡大したらマジぼやけるよw
154デフォルトの名無しさん:2006/12/16(土) 17:33:55
WebBrowserはっつけて、CSSのフィルタを適用する。
155デフォルトの名無しさん:2006/12/16(土) 17:55:00
>>135
標準入力を切り替えて呼び出せば?
156デフォルトの名無しさん:2006/12/16(土) 18:45:19
typedef void (CallbackType*)( ... );

void SetCallback( CallbackType t );

で、SetCallbackというのがDLLで宣言されてます。

この関数を使ってC#の関数をDLL側に渡したいんですが
こちら側の関数はどうやって渡せばいいんですか?
引数が明示的になってれば問題ないんですけど。
157デフォルトの名無しさん:2006/12/16(土) 18:47:22
delegate
158デフォルトの名無しさん:2006/12/16(土) 18:53:14
>>157
typedef void (CallbackType*)( int hoge );
とかなってる場合はいいんですけど
typedef void (CallbackType*)( ... );
この場合は?
159デフォルトの名無しさん:2006/12/16(土) 18:58:07
やったことないけど例えばこういうので丸くおさまったりしないのかな

void Callback(params int[] args);

みたいなの。
160デフォルトの名無しさん:2006/12/16(土) 19:09:16
実はそれで駄目だったもので質問に…。情報小出しですいません。
delegate void Callback( params object[] args );

うーん厳しそうだな。
161デフォルトの名無しさん:2006/12/16(土) 19:13:04
>>160
DLL側では実際には(...)のところには何が来ることを望んでんの?
全部intとか、全部boolとか、なんかしら決まりがあるはずだよね。
それにあわせないとだめなんじゃないの?
162デフォルトの名無しさん:2006/12/16(土) 19:20:22
>>161
あーそうか。確かにそうですね。
どういう風な値が(...)に入ってくるかを確認してきます。
ありがとうございます。
163デフォルトの名無しさん:2006/12/16(土) 19:21:45
とか言っても全部想像だけどな・・・
164デフォルトの名無しさん:2006/12/16(土) 19:23:55
>>156ってtypedefする意味あるのか?
165デフォルトの名無しさん:2006/12/16(土) 19:27:26
>>164 読みやすいかなと思ってやっただけなので深い意味はないです。
166デフォルトの名無しさん:2006/12/16(土) 19:40:15
調べてきたらユーザーにprintfの実装を任せるためのインタフェイスでした。
(標準出力以外に出力したいときに使ってくれ、ってことらしい)
って事は静的に型を決めるのは無理ですね…
167デフォルトの名無しさん:2006/12/16(土) 19:40:28
可変長引数ってことは CallingConvention.Cdecl が必須だな。
CallingConvention 列挙体の項目にあるサンプルコード見る限り、
使いたい引数ごとにそれぞれ宣言するらしい。
168167:2006/12/16(土) 19:42:45
と、デリゲート側か。
2.0 で UnmanagedFunctionPointer 属性が追加されたからそっち。
多分 1.1 までじゃ対応できない。
169デフォルトの名無しさん:2006/12/16(土) 20:35:14
>>167-168
delegate側にUnmanagedFunctionPointer属性で行けました、ありがとうございます。
結局こうなりました。

[UnmanagedFunctionPointer( CallingConvention.Cdecl )]
public delegate void PrintCallback( string format, string str );

実はDLLのソースを見たら、フォーマットに"%s"と可変長引数に文字列1つしか
渡されてなかったので、これで上手くいってしまったわけですが…
(ライブラリを弄って良いならそっち側を直すほうが楽でしたね)

とりあえず問題自体は解決したのですけど
このままだと可変長引数を受け取るということは出来てないですね。
170デフォルトの名無しさん:2006/12/17(日) 00:22:58
>>148 ANTLR
>>150 実装までって・・・おまいアイデアすらいってないじゃん。
171デフォルトの名無しさん:2006/12/17(日) 13:29:28
>170
ありがとう
172デフォルトの名無しさん:2006/12/18(月) 19:09:53
適切なスレが分かりませんでしたので、ここで相談します。
自分のソフトに埋め込まれたWindows Media PlayerのActive Xコントロールから
スクリーンショットを取りたいのですが、方法が分かりません。教えてください。
173デフォルトの名無しさん:2006/12/18(月) 20:51:25
デバイスコンテキスト取得してBitmapに描画

と思ったらWMPか。
オーバーレイとかだったらだめなんじゃね?
Vistaならともかく
174デフォルトの名無しさん:2006/12/18(月) 20:57:02
DVDの静止画キャプチャーするの?
大体そんなとこだろ?
175デフォルトの名無しさん:2006/12/18(月) 21:04:38
DirectShowの勉強する?
176デフォルトの名無しさん:2006/12/18(月) 21:20:24
オーバーレイ切ったらスクリーンショット取れるがね
177デフォルトの名無しさん:2006/12/18(月) 21:21:40
DVDのソフトにもよるが、オーバーレイ切れないのもあるよ!
178デフォルトの名無しさん:2006/12/18(月) 21:24:37
>>177
先に、MediaPlayerで動画再生、
次にDVDソフト再生(゚Д゚)ウマー
179デフォルトの名無しさん:2006/12/18(月) 21:39:35
ソフトの設定ちゃうわ!
180デフォルトの名無しさん:2006/12/18(月) 22:42:03
>>178
をやると、体外オーバーレイは一枚しか表示できないので、
二つ目のソフトは、オーバーレイではなく、普通に表示できて、コピーできるんですよね。
181デフォルトの名無しさん:2006/12/18(月) 23:07:48
何だそれ…
182デフォルトの名無しさん:2006/12/18(月) 23:56:57
>>180
体外オーバーレイって、試験管ベイビー作る時のやつ?
183デフォルトの名無しさん:2006/12/19(火) 00:20:11
MediaPlayerのActiveXなら、2つ貼り付ければ、片方が非オーバーレイでキャプチャできるようになる。
184デフォルトの名無しさん:2006/12/19(火) 00:41:14
メモリが大変になりそうやん……
185デフォルトの名無しさん:2006/12/19(火) 00:43:04
DVDはソフト二つ入れないと2個再生できないYO
186デフォルトの名無しさん:2006/12/19(火) 08:28:57
質問させてください。

Susie用に画像処理プラグインを書こうかと思ったのですが、
C#では従来のネイティブアプリから読めるDLLを組むことはできるのでしょうか?
普通のDLLを呼ぶにはDllImportでよいと思うのですが、逆がわかりません。
187デフォルトの名無しさん:2006/12/19(火) 09:18:54
>>186
_
間にネイティブなDLLがなんかいる
188デフォルトの名無しさん:2006/12/19(火) 10:41:09
>>175
それが一番手っ取り早い方法なりそうですね。
お答えいただいた皆さん、ありがとうございました。
189デフォルトの名無しさん:2006/12/19(火) 12:39:54
C#でC/C++のFindFirstFileやFindNextFileみたいなことをやるには何を使えばいいんでしょう?

最近C#使い始めたばかりうまくヘルプ活用できない・・・
190デフォルトの名無しさん:2006/12/19(火) 13:10:05
Directory.GetFiles(String, String, SearchOption) かな?
全部返ってくるけど。
とりあえずSystem.IO以下を眺めるべし
191デフォルトの名無しさん:2006/12/19(火) 14:05:12
192189:2006/12/19(火) 14:28:54
>>190
ありがとうございます。やれそうです。
193デフォルトの名無しさん:2006/12/19(火) 15:05:22
WebBrowserコンポーネントのBeforeNavigate2イベントでどのようなHTTP POSTが発生したか記録したいんだけど、
enctype="multipart/form-data"なformで <input type="file"/>なタグがあった場合に、PostDataのMIMEの中身が
ファイルタグなデータの前で切れてしまうんだけど。ファイルタグが無い場合は完璧に補足可能。
この方法でやったことある人いる??
194デフォルトの名無しさん:2006/12/19(火) 17:40:27
>187さん、>191さん、返信ありがとうございます。
逆 PInvokeはちょっと避けたいかな・・・

"間にネイティブなDLLがなんかいる"のとこをもうちょっと詳しくお願いできませんか?
195デフォルトの名無しさん:2006/12/19(火) 17:54:02
>>194
マネージドライブラリをCOMに公開して、ネイティブなDLLで橋渡しをする。
196デフォルトの名無しさん:2006/12/19(火) 22:29:54
>>194
純ネイティブからマネージコードを使う手は2つ。
COM相互運用機能とCLRホスティング。どっちか使って
橋渡しをするDLLを作るだけ。
197デフォルトの名無しさん:2006/12/19(火) 23:13:29
ただし、1つのプロセスにロードできる.NETのバージョンは1つだけなのに注意しとく。
Susieみたいにプラグインで読み込まれるdllが.NETをロードするとかなり危険な予感。
198デフォルトの名無しさん:2006/12/19(火) 23:16:52
>>188
絶対遠回りです。
199デフォルトの名無しさん:2006/12/19(火) 23:22:07
>>197
よーし、パパ専用プロセス立ち上げて通信しちゃうぞ。
ああ、でもなんか一番いい方法な気がしてきた。専用プロ
セス用のはフルマネージでいいし。パフォーマンス以外は。
200デフォルトの名無しさん:2006/12/19(火) 23:33:00
>>197
それって、フルマネージドなアプリでも、.NETのバージョンがEXEとDLLで
違うなんてこと有るよね??
201デフォルトの名無しさん:2006/12/19(火) 23:36:08
Susie用に画像処理プラグイン書くならC++使えよ。
マジレスごめん
202201:2006/12/19(火) 23:37:28
すまそ、誤爆
203デフォルトの名無しさん:2006/12/19(火) 23:40:48
>>200
当然 CLR は起動したのに従ったバージョンがロードされる。
より古いバージョンの CLR をターゲットにした DLL はなんとか動かそうとするし、
より新しいバージョンの CLR をターゲットにした DLL は普通ロード失敗する。
204デフォルトの名無しさん:2006/12/19(火) 23:45:27
なんでこの板ID無いんだ?
205デフォルトの名無しさん:2006/12/19(火) 23:47:36
       , '´         :::::::::::ヽ、
      /     ,/ ||| \,  ::::::::::ヽ
      |   =="       `== ::::::::|
      |   -=・=-′ ヽ-=・=- :::::::::|
      |               ::::::::::|   え?
      |     (_人_)   ::::::::|
       'ヽ__        :::::::::::/
206デフォルトの名無しさん:2006/12/19(火) 23:49:07
>>204
つ[チラシの裏]
207206:2006/12/20(水) 00:06:33
すまそ、誤爆
208デフォルトの名無しさん:2006/12/20(水) 00:16:17
すみません。C#でCheckBox付きTreeViewを使ったときに、
ツリーのノードのクリックでチェックのon/offを切り替えるようにしたいのですが、

OnNodeClickで
CheckValue = !CheckValue :こんな感じ
でやっています。これだと、文字の部分のクリックしたときはちゃんと動くのですが
チェックボックスのところをクリックすると、この処理+デフォルトの処理が動いてしまい、
結局もとの状態に戻ってしまいます。
何か良い方法はありませんか?
209デフォルトの名無しさん:2006/12/20(水) 00:21:21
HitTest とか?
210デフォルトの名無しさん:2006/12/20(水) 00:56:44
dataGridViewで選択したcellの背景色を変えるんじゃなくて、
選択枠を付けたいのですがどうすれば良いのでしょうか?
dataGridViewを継承したコントロール作ったは良いが、完全にお手上げぽ…
211デフォルトの名無しさん:2006/12/20(水) 00:57:57
プログラムのプの字も知らない奴です
C#.Netを勉強しろって言われたんですがC#とどう違うんでしょうか?
C#だけ勉強すればいいんでしょうか?
基本以下のことですがお願いします
212デフォルトの名無しさん:2006/12/20(水) 01:02:16
だいたい一緒
213208:2006/12/20(水) 01:09:27
>209
HitTest???
HitTestでCheckBoxのObjectが取れるってことですか?
214211:2006/12/20(水) 01:09:50
・・・だいたい一緒っすか
とりあえずプログラムの事なんも知らんのでC#勉強しときます
215デフォルトの名無しさん:2006/12/20(水) 01:21:43
>>211
C#は、.NETフレームワーク上で動く言語なわけで。
C#を勉強したら、.NETを勉強したことにもなるわけで。
216211:2006/12/20(水) 01:24:33
>>215
あ、そうなんすか?
これでようやく気持ちよくC#が学習できます
ありがとうございました
217デフォルトの名無しさん:2006/12/20(水) 10:41:58
おはやう!
218デフォルトの名無しさん:2006/12/20(水) 10:46:21
なんかよく分からんがおはよう
ネタがあったら供給汁
219デフォルトの名無しさん:2006/12/20(水) 12:51:05
C#の実行速度ってVC>C#>VBって感じですか?
220デフォルトの名無しさん:2006/12/20(水) 12:54:58
>>219
VCとVBは.Net無し?
221デフォルトの名無しさん:2006/12/20(水) 12:55:26
VC>MC++>=C#=VB.NET>=VB ってとこじゃね?
222219:2006/12/20(水) 13:08:55
>>220 .netです
>>221 MC++ってVC.net?ってことですか?
223デフォルトの名無しさん:2006/12/20(水) 13:13:51
Managed C++は、VC++.NETのこと。
224デフォルトの名無しさん:2006/12/20(水) 13:18:07
C++/CLI >= MC++ >= C# = J# = VB.NET >= VB
225219:2006/12/20(水) 13:30:53
>>ALL
レスどうもです
C#>VB.NETだと思ってたんですけど違うみたいですね

もうひとつ質問があるんですけど、C#でソフト作ってもう少し処理速度を
上げたいなぁと思ったら結構簡単に?(C#でソフトを作れたくらいの段階ですが)
MC++に処理部分を変更したりできますか?(GAをしてみたいんです)
また変更するのはどのようなキーワードでググレばいいんですか?
調べたんですが言語の説明とかしかなくて分からないんです…
226219:2006/12/20(水) 13:33:01
書きわすれましたがC、Javaは勉強しました。 
Javaは本を読んだくらいです
227デフォルトの名無しさん:2006/12/20(水) 13:38:44
>>225
C#もVB.NETも結局の出力結果はMSILのアセンブリだからね。

C#とC++は全く別の言語だから混ぜるのは無理。
新しいプロジェクトを作って何らかの方法でリンクすればいい。
228デフォルトの名無しさん:2006/12/20(水) 13:42:23
229デフォルトの名無しさん:2006/12/20(水) 13:49:36
それ以前に書く奴の知識の量が影響するからたぶんお前はなに使っても
大して変わらないと思う。C++にしただけで自動的にすごく早く
なったりしないよ?
230デフォルトの名無しさん:2006/12/20(水) 13:55:23
>>255
俺の主観では、

ゲームとか、画像処理とかの特殊なことを除けば、
あんまり、C++とか気にしなくていいと思う。

多くの場合レスポンスのボトルネックとなる部分は全体の極一部。
C#の処理の見直しで対策可が多いと思うが、
どうしてもって場合に、unsafeに移るってぐらいかな?
231210:2006/12/20(水) 14:07:03
漏れにも愛の手を…まだできないorz
232219:2006/12/20(水) 14:11:38
>>ALL
レスどうもです とりあえず本買ってきて作ってみます 
>>229 自動的に早くなるんだと思ってました 自由度が大きいから
プログラマのレベルしだいで早くなるんですね

みなさんありがとうございました

233デフォルトの名無しさん:2006/12/20(水) 14:13:58
どこで詰まってるんだ?
ControlPaint.DrawFocusRectangle 見てみたか?
234デフォルトの名無しさん:2006/12/20(水) 16:41:32
PreviewKeyDownとふつうのKeyDownはどう使い分けるのでしょうか?
PreviewKeyDownがKeyDownよりも先に呼ばれるのはわかるのですが・・・。
235デフォルトの名無しさん:2006/12/20(水) 19:31:18
eventarg
236デフォルトの名無しさん:2006/12/20(水) 21:57:26
たとえば、XXLというライブラリを自分で作ったとします。
そのとき、XXLというライブラリにはDirectXなどの参照設定をしているとします。
他のプロジェクトからそのライブラリのプロジェクトをインポートして使うときに、今はこの機能はいらないからDirectXの参照をナシにしたい!
と言ったことを、ライブラリのプロジェクトを変更することなくできるでしょうか?
もしくは、ビルドオプションみたいに今回はDirectXに参照しないと言ったことを。
個別に別々のライブラリ作る方法しか無いのでしょうか?
237デフォルトの名無しさん:2006/12/20(水) 22:11:14
ライブラリを分ければいいんじゃね?
238デフォルトの名無しさん:2006/12/20(水) 22:22:39
DirectX が要不要ってのは、一つのアセンブリとして大きすぎる感じがあるな
239210:2006/12/20(水) 22:52:14
>>233
こんな感じで書いてるんですけど、選択範囲を変えても最初の位置から動いてくれないです。。。

protected override void OnPaint(PaintEventArgs e)
{
Graphics g = this.CreateGraphics();
Size s = new Size(100, 50);
ControlPaint.DrawFocusRectangle(g, new Rectangle(this.CurrentCellAddress, s), Color.Red, Color.Yellow);

base.OnPaint(e);
}
240デフォルトの名無しさん:2006/12/20(水) 22:57:20
>>239
CurrentCellAddressってセルのインデックスだろ。座標じゃない。
241デフォルトの名無しさん:2006/12/20(水) 23:20:04
>>237
>>238
どうもです。やっぱりライブラリ分離した方がいいのかな。
242デフォルトの名無しさん:2006/12/20(水) 23:43:43
>>239
GraphicsをなんでPaintEventArgs からとらないのさ?
base.OnPaintは前に持ってきた方がいくない?
243デフォルトの名無しさん:2006/12/21(木) 00:14:26
>>240>>242
わかった!ありがとう!!
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);

Point p = new Point(this.CurrentCellAddress.X * 100, this.CurrentCellAddress.Y * 45);
Pen BluePen = new Pen(Color.Blue, 2f);
e.Graphics.DrawRectangle(BluePen, p.X, p.Y, 100, 45);
}
一応動いてはいるのですが、おかしな点はないでしょうか?
244デフォルトの名無しさん:2006/12/21(木) 00:20:52
>>243
PenオブジェクトはDisposeしないとダメ
using (Pen BluePen = new Pen(Color.Blue, 2f))
{
e.Graphics.DrawRectangle(BluePen, p.X, p.Y, 100, 45);
}
245デフォルトの名無しさん:2006/12/21(木) 00:27:03
100 だの 45 だの決め撃ちで良いんだろーか
246デフォルトの名無しさん:2006/12/21(木) 00:35:20
>>243
カラムヘッダとかボーダーとかで位置ずれてないのか?
というか、スクロールしたらずれるだろ。
247デフォルトの名無しさん:2006/12/21(木) 00:36:49
>>243
CellPaintingイベント使いなさい。
248デフォルトの名無しさん:2006/12/21(木) 00:49:53
>>244>>247
助言ありがとうございます。
了解です!

>>246
取りあえずヘッダーVisibleをfalseにして使ってます…

249デフォルトの名無しさん:2006/12/21(木) 17:01:29
CheckedListBoxの項目をコード(Add)で追加したときに表示するテキストを変更する方法ってないですか?

現状、System.Objectしか表示できないです
250249:2006/12/21(木) 17:07:33
自己解決しました。
普通にAddの引数に文字列入れればいいみたいです。
Objectってそういうもんなのか・・・
251デフォルトの名無しさん:2006/12/21(木) 17:14:34
>>250
ObjectをToStringして表示してる。
だから、DateTimeとかEncodingとかも気にせずそのまま突っ込める。
252デフォルトの名無しさん:2006/12/21(木) 17:58:58
ツールボックスに並んでいるWindowsフォームを使用した画面絵がずらっと並んでいる、
そんなHPとか書籍ないですか?

今までC++Builderを使っていたのでそれほど抵抗なくC#に移行できました。
なので後は必要なときに適切なフォームをチョイスしてピンポイントで調べて使えばいいかな
と思っているのですが、知らなきゃ選びようがないし、
全部見てみるというのも時間がかかりそうだし、使うときには忘れていそうで。

もし、知ってるよ、という方がいたら是非教えて下さい。
253デフォルトの名無しさん:2006/12/21(木) 18:32:17
先に日本語の勉強を何言ってるのか不明です。
煽ってるわけじゃないよ。
協力できることはしたいが、俺には何言ってるかわからない。
254デフォルトの名無しさん:2006/12/21(木) 18:34:37
標準で使えるコントロールを一通り図入りで紹介してくれって言ってるんじゃね?
255253:2006/12/21(木) 18:34:42
俺も日本語勉強したほうがいいな
256どっとどす:2006/12/21(木) 18:35:27
VisualC#.Netでプログラムを組んでます。

その中でIBatisというDLLを活用してますが、

そのIBatisのヴァージョンを上げたら、

「プロジェクト〜の依存関係 〜 Culture=neutral, PublicKeyToken=〜 は、
依存関係 〜 Culture=neutral, PublicKeyToken=〜 と競合するため、
実行ディレクトリにコピーできません。」

上記のようなエラーメッセージが出ました。

依存関係とか競合の意味が解らないので問題を解決する方法を教えてください。

257デフォルトの名無しさん:2006/12/21(木) 18:35:48
和訳してみると、コモンコントロールのスクリーンショットがみたい、じゃなかろうか。
258デフォルトの名無しさん:2006/12/21(木) 18:36:54
>>256
一度参照を削除して、出力ディレクトリから古いDLLを削除する。
259デフォルトの名無しさん:2006/12/21(木) 22:15:50
っていうほどコモンコントロール多くないし
かゆいところに届きそうでもっとかゆくなる
260デフォルトの名無しさん:2006/12/21(木) 23:02:56
お兄ちゃんが隅々まで掻いてあげるから
こっちへおいで
261デフォルトの名無しさん:2006/12/21(木) 23:17:44
キモッ




チイイ
262デフォルトの名無しさん:2006/12/21(木) 23:56:40
くやしい、コモンコントロールなんかに…ビクビク
263デフォルトの名無しさん:2006/12/22(金) 10:20:44
コモンコン
トロール
264デフォルトの名無しさん:2006/12/22(金) 16:44:05
複数のActiveX(Media Playerなど)を貼り付けて使用しています。(VS2005)

通常の「フォーム」の場合は、複数張り付いていても、
フォームの xxx_Load イベントは、1回しか呼ばれません。

しかし、「ユーザーコントロール」に複数貼り付けると、
ユーザーコントロールのxxx_Load イベントが、
貼り付けたActiveXの個数回呼ばれてしまいます。

どうやらEndInitが呼ばれたタイミングでこうなっているようです。

これは、どういうことでしょうか?
回避方法はあるのでしょうか?
265デフォルトの名無しさん:2006/12/22(金) 17:59:26
MDIで子ウィンドウを生成するときに、
既にその子ウィンドウが生成されていればActiveして、
生成されていなければnewする。

ということをやりたいのですが、
子ウィンドウを閉じた後の挙動がよくわからないのでどうしようか迷っています。

メモリは解放されていないようなので、何かメソッドを呼んでやればいいのか。
それとも、メモリ解放のタイミングがまだ来ていないだけで後で勝手にされるものだから、気にせずにnewし直していいのか。

とりあえず今はIsDisposedプロパティを見てnewするかActiveにするかやっています。
このやり方で正しいのでしょうか?
266デフォルトの名無しさん:2006/12/22(金) 18:11:18
子フォームのFormClosedイベントを捕まえて,
フラグ立てるなり参照にnullを代入するなりしとけば
267253:2006/12/22(金) 19:45:58
>>264
これはいいことを聞いたw
ActiveX複数貼ってもイベント1回しか起こらなくて困ったことが
あったんだが、ユーザーコントロールに貼ればいいんだな。

ありがとう!
268デフォルトの名無しさん:2006/12/23(土) 00:45:24
よくこういうソースを見かけるんですが、
System.IO.StreamReader sr = new System.IO.StreamReader("test.txt");
try
{
Console.WriteLine(sr.ReadToEnd());
}
finally
{
sr.Close();
}
ファイルが存在しないときや排他的に開かれているときの
例外も捕捉したいようなときはどうしたらいいんでしょうか?
269デフォルトの名無しさん:2006/12/23(土) 00:55:40
5種類の仕事と5人の人がいて、5種類の仕事を行うコストが個人で異なる。
この様な場合、誰にどの仕事を行わせることがもっとも低コストで仕事が
行えるか求めるフローチャートを作成しなさい、計算方法は、全ての組み合わせ(順列)を求める。その中から最も低コストとなる仕事の割り当てを得る(腕ずく法;Brute Force Method)。なお、最低コストが複数ある場合は、最後に判明した組み合わせのみを表示すればよい。
人1人2人3人4人5
仕事A1057128
仕事B1420151015
仕事C1830202522
仕事D358182012
仕事E201381017
できる人いませんか?
270デフォルトの名無しさん:2006/12/23(土) 00:56:34
5種類の仕事と5人の人がいて、5種類の仕事を行うコストが個人で異なる。
この様な場合、誰にどの仕事を行わせることがもっとも低コストで仕事が
行えるか求めるフローチャートを作成しなさい、計算方法は、
全ての組み合わせ(順列)を求める。その中から最も低コスト
となる仕事の割り当てを得る(腕ずく法;Brute Force Method)。
なお、最低コストが複数ある場合は、
最後に判明した組み合わせのみを表示すればよい。
人1人2人3人4人5
仕事A1057128
仕事B1420151015
仕事C1830202522
仕事D358182012
仕事E201381017
できる人いませんか?
271デフォルトの名無しさん:2006/12/23(土) 00:57:44
>>268
tryの中でファイルを開かないと意味ないでしょうが。

try{
    using(StreamReader sr = new StreamReader("test.txt"))
    {
        Console.WriteLine(sr.ReadToEnd());
    }
}
catch(FileNotFoundException e) { }
catch(UnauthorizedAccessException e) { }
272デフォルトの名無しさん:2006/12/23(土) 00:58:43
5種類の仕事と5人の人がいて、5種類の仕事を行うコストが個人で異なる。
この様な場合、誰にどの仕事を行わせることがもっとも低コストで仕事が
行えるか求めるフローチャートを作成しなさい、計算方法は、全ての組み合わせ(順列)を求める。その中から最も低コストとなる仕事の割り当てを得る(腕ずく法;Brute Force Method)。なお、最低コストが複数ある場合は、最後に判明した組み合わせのみを表示すればよい。
人1人2人3人4人5
仕事A10、5、7、12、8
仕事B14、20、15、10、15
仕事C18、30、20、25、22
仕事D35、8、18、20、12
仕事E20、13、8、10、17
できる人いませんか?
273デフォルトの名無しさん:2006/12/23(土) 00:59:19
スレ違いの上にマルチかボケ
274デフォルトの名無しさん:2006/12/23(土) 10:24:10
>>271
>>268じゃないけど…
それって、usingステートメント内で例外が発生したら、usingの外のcatchで大丈夫なの?

それとも、中にもtry-catchいる?下みたいに。
try{
    using(StreamReader sr = new StreamReader("test.txt"))
    {
        try{
            Console.WriteLine(sr.ReadToEnd());
            .......
        }
        catch(System.Exception){ }
    }
}
catch(FileNotFoundException e) { }
catch(UnauthorizedAccessException e) { }
275デフォルトの名無しさん:2006/12/23(土) 10:27:27
using は 例外を catch しない。
276デフォルトの名無しさん:2006/12/23(土) 10:31:10
外から囲むだけでおk
277デフォルトの名無しさん:2006/12/23(土) 10:41:54
>>275-276
即レス、サンクスです。
278デフォルトの名無しさん:2006/12/23(土) 13:22:44
>>272
宿題は早く終わらせようねw
279デフォルトの名無しさん:2006/12/23(土) 17:28:18
>>274
てか、キャッチしてなにしたいかによるわな。
usingはfinallyを使うだけで、例外には一切触らない。
280デフォルトの名無しさん:2006/12/23(土) 18:38:13
最小コストの求め方は教えてくれませんか?
281デフォルトの名無しさん:2006/12/23(土) 18:42:36
教えてあげません
282デフォルトの名無しさん:2006/12/23(土) 18:46:15
つーか数学の問題だろ
283デフォルトの名無しさん:2006/12/23(土) 18:49:41
>>280
(1) 全ての組み合わせ(順列)を求める。
(2) その中から最も低コストとなる仕事の割り当てを得る。
(3) 最低コストが複数ある場合は、最後に判明した組み合わせのみを表示。
284デフォルトの名無しさん:2006/12/23(土) 18:51:27
問題自体に求め方書いてあるだろハゲ
C#と関係ないんだよ文盲
馬鹿が伝染るんだよ池沼
もう来るなよ低能
コストの配列5個作ってループで5!回計算して最低値をとっておけばいいだけだと思います
285デフォルトの名無しさん:2006/12/23(土) 18:52:34
宿題スレ逝ってくれよ頼むから
286デフォルトの名無しさん:2006/12/23(土) 18:53:08
優しい奴多杉w
287デフォルトの名無しさん:2006/12/23(土) 20:59:32
一昨日から初めて、プログラムにさわったので、バカですみませんでした。
288デフォルトの名無しさん:2006/12/23(土) 21:01:07
フローチャート書けとかプログラミング関係ないでしょ
289デフォルトの名無しさん:2006/12/23(土) 21:03:58
つ【線形計画法】

つ【乱数】

どっちでも好きな方を選んどけ
290デフォルトの名無しさん:2006/12/23(土) 21:04:31
フローチャートって高校の時に書かされたな。
紙に書くとかアホかって思いながら課題こなした覚えが。
291253:2006/12/23(土) 21:09:18
今度は初心者スレに来たよ…
292デフォルトの名無しさん:2006/12/23(土) 22:43:52
treeViewを使ってて、indexが1で、かつ、nameがnode1の
ノードを選択状態でフォームを起動したいのですが、どうすればいいのでしょうか?
お願いします。
293デフォルトの名無しさん:2006/12/23(土) 22:46:18
普通にコード書く。
終了。
294デフォルトの名無しさん:2006/12/23(土) 22:46:27
その条件に合致するのを探せばいい
で、何が分からないのよ
295デフォルトの名無しさん:2006/12/23(土) 22:47:48
ふらっとC♯, C#(初心者用) Part11
http://pc8.2ch.net/test/read.cgi/tech/1166240484/
296デフォルトの名無しさん:2006/12/23(土) 22:51:21
>>292
フォーム起動時じゃない場合(ボタンを押すなどね)は自分で出来るの?
297デフォルトの名無しさん:2006/12/23(土) 22:53:57
ここのところレベルの低い質問ばかりで寂しい
298デフォルトの名無しさん:2006/12/23(土) 22:55:13
裾野が広がったということで…
299デフォルトの名無しさん:2006/12/23(土) 22:56:32
プロパティウィンドウだけじゃ出来ませんよ。
300292:2006/12/23(土) 22:56:33
フォーム起動時で何も選択されてないのに、
this.Setting_treeView.SelectedNode = this.Setting_treeView.SelectedNode.Nodes["Keyname"];
なんていう馬鹿なことをしていたのが原因で、はまってました。
低レベルで、お騒がせしました。死んできます…。
301デフォルトの名無しさん:2006/12/23(土) 22:59:51
GCされちゃえばいいのに…
302デフォルトの名無しさん:2006/12/23(土) 23:45:58
んじゃ、ぷらっとの未解決。本人じゃないけど

自分でもやってみたけど、
SupportsTransparentBackColor使ってみたけどだめ。
けっこう需要はありそうと思うけど。

13 名前:デフォルトの名無しさん[sage] 投稿日:2006/12/16(土) 19:25:34
>>12

フォームの背景だけを半透明にしてその上に文字をクッキリ表示させたいと思い、
フォームのOpacitを50%にし、そのフォームにLabelを配置したのですが
Labelの文字まで半透明になってしまいます。
何か良い解決方法はないでしょうか?
303デフォルトの名無しさん:2006/12/23(土) 23:53:44
>>302
Formを2枚重ねる。
304デフォルトの名無しさん:2006/12/23(土) 23:57:57
>>302
なんちゃってだけど

0)Form1とForm2を用意する。Form1にはラベルとか貼り付ける。
1)Form1 のTransparencyKeyを設定する。とりあえずSystemColors.Control
2)Form1のコンストラクタで、Form2をOpacity =0.5でShow()する。
3)Form1に以下のコードを追加する。

protected override void OnMove( EventArgs e )
{
    this.form2.Location = this.Location;

    base.OnMove( e );
}

protected override void OnResize( EventArgs e )
{
    this.form2.Size = this.Size;
    base.OnResize( e );
}

Form2をアクティブにするとおかしくなるので、そこらへん小細工してちょ
305デフォルトの名無しさん:2006/12/24(日) 00:01:00
>>303
それは、やってないんだが、
Formの上にパネルをDockFillしたのはやった。

Formに描いた背景の半透明は可能
FormをTransparentkey使って、デスクトップを見ようとするんだけど、
デスクトップはどうやっても見えなかった。
MSDN見ると、SupportsTransparentBackColorは親のコントロールに描画を
委譲し半透明化処理するようだから、デスクトップに対してはだめなんかと。
306デフォルトの名無しさん:2006/12/24(日) 00:07:17
Form2に

protected override void OnActivated( EventArgs e )
{
    this.form1.Activate();
}

でいけるかも
307デフォルトの名無しさん:2006/12/24(日) 00:09:54
>>304
最初、意味分からなかった。
う〜ん、出来そうだけどトリッキーすぎないか?
308デフォルトの名無しさん:2006/12/24(日) 00:15:13
>>305
だから、トップレベルウィンドウを2つ作らないと意味ないの。
2000で色々できるようになったけど、パーピクセルで柔軟にうにうには
できない(と思う…俺はWin32の鬼ではないので間違っているかも)。

…まぁなんか変な手法なので汎用化できない、と思うかもしれないけど、
俺は数日くれればデザイナ対応のそんなフォーム作れるな、と実装見繕れた
程度なんでがんばれ。
309302:2006/12/24(日) 00:24:41
305と307です。

>>308
Thx

MDIはやったこと無かったので、試してない。
あと期待してたのが、やっぱWin32。

誰か、詳しい人どお。
落ちるけど、ちょくちょくのぞかせてもらいます。
310デフォルトの名無しさん:2006/12/24(日) 00:28:11
>>309
MDIじゃなくて…だからFormをトップレベルに2枚作るの。
基本的には >>304 とまったく一緒。
311デフォルトの名無しさん:2006/12/24(日) 00:34:27
>>310
>>304がMDIを意味しないことは理解してるよ。
まったく、重なった位置にFormを重ねましょうという意味だと受け取ってるんだけど。

で、MDIを聞いたのは、自分が扱ったことなかったから、
出来るか出来ないかを確認したかっただけです。

>MDIじゃなくて…
ってことは、だめと受け取っていいのかな?
312デフォルトの名無しさん:2006/12/24(日) 00:40:17
Vistaならなんとかしてくれるんじゃね?
313デフォルトの名無しさん:2006/12/24(日) 00:40:52
>>311
>MDI
基本MDIを重ねても駄目だと思われる。トップレベルウィンドウ以上の
描画はWindowsまかせなので。逆に言えばここを任せてないからVistaで
あんな力技が可能だし、WPFの制限がきついわけで。
…ってあ、WDM API使えばVistaだけは可能?
314302:2006/12/24(日) 00:48:10
>>313
Thx
ということは、さしあたって無理そうだね。

まあ、自分自信すぐに使いたいというわけではないので。

>>302の質問は終了で
315デフォルトの名無しさん:2006/12/24(日) 16:51:04
1つのスレッドでいくつもの通信 ソケットを扱うことってできるのでしょうか?

たとえば、1つのスレッドで何箇所からも同時にダウンロードする とか


ご教授願います

316デフォルトの名無しさん:2006/12/24(日) 16:57:40
スレッドとソケットには何の関係もないでしょ。
できないほうがおかしい。

http://www.tt.rim.or.jp/~rudyard/torii009.html
317デフォルトの名無しさん:2006/12/24(日) 17:01:08
>>315
1個のスレッドっていうわけじゃないけど、こういうんじゃね?
ttp://msdn2.microsoft.com/ja-jp/library/bbx2eya8(VS.80).aspx
318デフォルトの名無しさん:2006/12/24(日) 17:04:46
普通にスレッドの中でループまわして順々にRecieveすればいいだけでしょ。

応答の遅いソケットがあればそこで止まるけど、ひとつのスレッドで扱うってのはそういうことだし。
319デフォルトの名無しさん:2006/12/25(月) 00:32:27
C#でASP.Netなコードを書いてるのですが、
BinaryFormatterのSerializeでセキュリティ例外が出て、どう対処したらいいのか良くわからず
質問させてください。

コードは以下なような感じのをaspxに入れてるですが、LocalというかDebug環境では動くのですが、
サーバー上では、SecurityExceptionが出てしまいます。

どなたかお知恵をお菓子ください。

using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;



int[] nArray = new int[] {3,4,5,6,7,8 };


MemoryStream stm = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();

binaryFormatter.Serialize(stm, nArray);

long nLen = stm.Length;
stm.Seek(0, SeekOrigin.Begin);

int[] nArray2 = (int[])binaryFormatter.Deserialize(stm);

Response.Write(String.Format("Success: length[{0}]: value[{1}]", nLen, nArray2[2]));
320デフォルトの名無しさん:2006/12/25(月) 01:54:33
すいません場違いな質問ですが・・・
C#ってプログラムをまったく知らない奴が2、3ヶ月で基本程度はできるものでしょうか?
目安程度でいいんでお願いします・・・
321デフォルトの名無しさん:2006/12/25(月) 02:01:43
言語そのものは一週間もあれば十分だが。
まずそれ以前にオブジェクト指向を理解するのにどれくらいかかるもんだろ。
それに基本と言っても WinForm か ASP.NET かで全然違うしな。
322320:2006/12/25(月) 02:14:30
とりあえず電卓作ったりメモ帳作ったりしなければならんもので・・・
頑張れば2ヶ月くらいでいけますか?
323デフォルトの名無しさん:2006/12/25(月) 02:18:57
>>322
やる気・根気があれば2ヶ月でできると思う。
わからないとこがある時ここで聞けば教えるよ。
324320:2006/12/25(月) 02:21:49
そうですか
逆を言えばヤル気と根気がなければやばそうってコトですかね
とりあえず仕事しながら合間見てがんばって勉強します!
325デフォルトの名無しさん:2006/12/25(月) 02:25:08
思ったとおりの動作をするものが作れたときの快感がわかればあとはとんとん拍子かも
326320:2006/12/25(月) 02:28:15
そうですか!
わからない単語とかあったらネットとかで調べたりします
あわよくばここに聞きに来ますのでそのときはよろしくお願いします
327デフォルトの名無しさん:2006/12/25(月) 03:20:07
DrawAnimatedRectsのような効果をAPI使わずに実現する方法ってありますか?
328デフォルトの名無しさん:2006/12/25(月) 08:57:50
 
329デフォルトの名無しさん:2006/12/25(月) 09:59:38
MonthCalendarで日付を取得する方法を教えてください
330デフォルトの名無しさん:2006/12/25(月) 10:07:51
>>327
自前で描画

>>329
SelectionStart

つーかドキュメント読めやハゲ
MonthCalendarで日付の取得方法聞くのは
TextBoxでテキストの取得方法聞くのと同じだぞボケ。
331デフォルトの名無しさん:2006/12/25(月) 10:19:15
電卓やメモ帳はびっくりするくらい簡単に作れるな
332デフォルトの名無しさん:2006/12/25(月) 13:04:03
>>314
UpdateLayeredWindowにMemoryDC経由でDIB渡す方法で、
ピクセル単位のアルファ値を設定することができる。
Win2000のころから原理的には可能。(冴子先生とか、これ)
ttp://www.microsoft.com/japan/msdn/windows/windows2000/layerwin.aspx

問題はWinFormsがWin32ウィンドウの単なるラッパーなところ。
WPFやIEみたいに最初からクライアント領域は
完全独自描画にしてればこんなに苦労しなくてすんだだろうに。
SendMessage使えなくなるけどね。

こういうサンプルもある。
ttp://www.codeproject.com/cs/media/perpxalpha_sharp.asp
333デフォルトの名無しさん:2006/12/25(月) 16:30:35
いづれC#でVBAみたいなこと出来るんでしたっけ?
334デフォルトの名無しさん:2006/12/25(月) 16:35:19
とりあえずC#やっとけ>333
335デフォルトの名無しさん:2006/12/25(月) 17:03:55
C#のGUIでDirectXの描画をしたいんですが、
C++のtimeSetEventのように一定間隔で呼ばれるイベントがどれかわかりません。
こういう場合、何を使えばいいんでしょうか
336314:2006/12/25(月) 17:09:02
>>332
Thx
規制に捕まって書き込めなかった。

レス見て、レイヤードウィンドがらみでぐぐってみると、↓とかあった。
http://yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.php

当該の問題以外にもレイヤードウィントは色々使えそうなので勉強してみます。
337デフォルトの名無しさん:2006/12/25(月) 17:11:24
>>335
1. timeSetEvent を P/Invoke する。
2. SetTimer を P/Invoke する。
3. System.Windows.Forms.Timer を使う (内部で SetTimer を使用)。
338デフォルトの名無しさん:2006/12/25(月) 17:12:37
>>335
System.Windows.Forms.Timer
System.Threading.Timer
System.Timers.Timer
好きなのどうぞ
339デフォルトの名無しさん:2006/12/25(月) 18:14:34
>>337
>>338
ありがとうございます。
System.Windows.Forms.Timerを使ってみます。
これ、いくつも種類があるのってやっぱりそれぞれに個性があるんですかね?
使いどころというか。
340デフォルトの名無しさん:2006/12/25(月) 18:22:06
C#って将来性あるんですか?
341デフォルトの名無しさん:2006/12/25(月) 18:23:48
無いので早々にお帰りください
342デフォルトの名無しさん:2006/12/25(月) 18:35:01
>>340
ある。
4〜5年前は>>341のように言われていたが実際流行ってきてる。
343デフォルトの名無しさん:2006/12/25(月) 18:40:09
ゲーム作成でより高度な処理を実現するために、
C++と比較して、C++よりC#が優れている点ってないですよね?
それともC++で実現可能なことはC#でも実現可能?
344デフォルトの名無しさん:2006/12/25(月) 18:43:55
>>341 のような返事しとけば荒らしはすぐ去っていくんだけどな
345デフォルトの名無しさん:2006/12/25(月) 18:49:52
オレもそう思った。何蒸し返してんおかなと
346デフォルトの名無しさん:2006/12/25(月) 18:51:33
>>343
C++でできるなら何もわざわざC#を使う必要なんてありやしません。
347デフォルトの名無しさん:2006/12/25(月) 18:57:11
ネットワークでつながっているPCが2台あったとして、それぞれ
A、Bとする。最初にAが立ち上がっているとする。

Bの起動途中にAをシャットダウンすると、それ以降Aで.NETを
使うプログラムを動かそうとすると、mocoree.dllでエラーが出る
ようになり、frameworkのアンインストールすらエラーになる。

タイミングの問題らしいんだが、Bを再起動する事で直った。
ちょっと不安を感じさせる。
348デフォルトの名無しさん:2006/12/25(月) 19:02:21
もっこりでぃーえるえる
349327:2006/12/27(水) 00:21:45
>>330
どうやって?
350デフォルトの名無しさん:2006/12/27(水) 00:25:49
>>349
自分で考えろと書いてあったろ?
351デフォルトの名無しさん:2006/12/27(水) 03:15:30
つまんねぇ奴が居着いちゃったなぁ。
352デフォルトの名無しさん:2006/12/27(水) 03:30:53
>>349
Graphics.FromHwnd(IntPtr.Zero)
これでデスクトップのGraphicsがとれるから、ひたすらガリガリ書けばいいんじゃね?
353デフォルトの名無しさん:2006/12/27(水) 06:36:28
System.Net.MailMessageについて質問です。
MailMessage mail = new MailMessage();
mail.Headers.Add("To", "[email protected],\"山田 太郎\" <[email protected]>");

FormatException「ヘッダー値に無効な文字が見つかりました。」とでるのですが。
System.Net.MailMessage.HeadersはNameValueCollectionであるので
AddではFormatExceptionがでないと思うのですが、なぜでしょう?
354デフォルトの名無しさん:2006/12/27(水) 06:58:21
よく知らないけど、漢字をそのままヘッダに突っ込むのはマズイような
355デフォルトの名無しさん:2006/12/27(水) 10:14:35
どの時点で出るか、だが。
Addしただけで出るの?

もちろん、エンコードしないと漢字はまずいけどね
356デフォルトの名無しさん:2006/12/27(水) 10:25:22
DataSet内のテーブルをDataGridViewで表示しているのですが
テーブル内に列を追加してもビューに反映されません。
どうして?
357デフォルトの名無しさん:2006/12/27(水) 11:31:49
DataMember?
358デフォルトの名無しさん:2006/12/27(水) 12:10:03
C#の勉強としてCGIを作っています。FORMから送信された
データの読み取りは、下のコードでいいでしょうか?
これをやったらダメ、ここはこうした方がいいという箇所
がありましたら教えてください。

String queryString;
String reqMethod = Environment.GetEnvironmentVariable("REQUEST_METHOD");
if ( reqMethod.Equals( "POST" ) ) {
String conLenStr = Environment.GetEnvironmentVariable("CONTENT_LENGTH");
int queryLength = Int32.Parse(conLenStr);
BufferedStream stdin = new BufferedStream(Console.OpenStandardInput(),queryLength);
byte [] queryBytes = new byte[queryLength];
stdin.Read( queryBytes, 0, queryLength );
queryString = Encoding.UTF8.GetString(queryBytes);
}
else {
queryString = Environment.GetEnvironmentVariable("QUERY_STRING");
}
359デフォルトの名無しさん:2006/12/27(水) 12:42:17
.NETでCGI作るのが変態行為
360デフォルトの名無しさん:2006/12/27(水) 13:13:41
>>357

ありがと
361デフォルトの名無しさん:2006/12/27(水) 14:13:10
>>353
System.Net.MailMessage.HeadersはSystem.Net.Message.Headersを返すから、System.Net.Mime.HeaderCollection

Addする文字列に\x0100以上の文字があればFormatExceptionがでる。
362デフォルトの名無しさん:2006/12/27(水) 14:21:28
>>358
例外処理なんとかしる
363デフォルトの名無しさん:2006/12/27(水) 14:39:19
>>359
あくまでも学習用の素材なので、CGIを全否定されても
困ってしまう。DOS窓に Hello World! とか出力するのは
退屈すぎる。

>>362
すんません。例外処理は今後の学習課題です。例外処理というと、
JavaScriptのtry{}catch(e){}しか知らないんです。
最優先で例外処理を追加すべき箇所がどこか教えていただけると
助かります。
364デフォルトの名無しさん:2006/12/27(水) 14:51:50
>>363
ASP使わずに.NETでCGI書くのが変態であるのは曲げようのない事実であるが。

tryで囲むのはInt32.Parseくらいでいいんじゃないかな
ストリームを一回だけ読むのにBufferedStreamを使うのはあまり意味がなさそうだけど。

文字列の比較にEqualsを使うと読みづらくならない?
365デフォルトの名無しさん:2006/12/27(水) 15:49:37
>>364
ご指摘ありがとうございます。
BufferedStream については、環境変数CONTENT_LENGTHから得た値の
分だけReadメソッドでbyte配列かchar配列に標準入力を読み込めれば
なんでもよかったのですが、バッファの大きさを指定する場合、一番
簡単そうだったので使いました。
修正版は下のようになりました。

String queryString = "";
String reqMethod = Environment.GetEnvironmentVariable("REQUEST_METHOD");
if ( reqMethod == "POST" ) {
String conLenStr = Environment.GetEnvironmentVariable("CONTENT_LENGTH");
int queryLength = 0;
try {
queryLength = Int32.Parse(conLenStr);
} catch {
// 例外処理 HTMLでエラーメッセージを出力する
dispError( "CONTENT_LENGTH の Parse に失敗しました。" );
}
BufferedStream stdin = new BufferedStream(Console.OpenStandardInput(),queryLength);
byte [] queryBytes = new byte[queryLength];
stdin.Read( queryBytes, 0, queryLength );
queryString = Encoding.UTF8.GetString(queryBytes);
}
else {
queryString = Environment.GetEnvironmentVariable("QUERY_STRING");
}
366デフォルトの名無しさん:2006/12/27(水) 15:54:34
■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)

★S・しゃぶ・覚せい剤のスレ★質問とか part49 [薬・違法]


おい、誰だw
367デフォルトの名無しさん:2006/12/27(水) 16:10:32
C#でIEのWindowに図形を描画するプログラムをかいています。

強制的にIEのWindowを再描画して、書き込んだ図形を消去しようとしているのですが、
その方法に詰まっています。誰か良い解決策を教えてください。
ちなみにhWndは取得出来ています。
368デフォルトの名無しさん:2006/12/27(水) 16:17:59
再描画はInvalidate()
hWnd あるなら API 呼んでみては。
即反映させたいなら、Invalidateの後にUpdateWindow
369デフォルトの名無しさん:2006/12/27(水) 16:18:33
hWndあるなら単に好きな範囲をInvalidateすりゃいんじゃ?
370デフォルトの名無しさん:2006/12/27(水) 16:30:27
>>367です
返信有難う御座います。

invalidate()の使い方がイマイチ良く分かりません。。。
hWndをControlにする作業が必要なのでしょうか?
371デフォルトの名無しさん:2006/12/27(水) 16:38:25
>>365
Int32.Parseをtryでくくるなんてこと覚えずに
bool Int32.TryParseを使いなされ
例外を処理するところじゃない

>>370
APIのInvalidateRect()

372デフォルトの名無しさん:2006/12/27(水) 17:39:24
情報ボックスの説明の文章を改行するにはどうするの?
アセンブリ情報に\n入れても無視されます。
373デフォルトの名無しさん:2006/12/27(水) 17:44:10
CRLF
374デフォルトの名無しさん:2006/12/27(水) 17:53:37
コンテキストメニューで項目を作ってそこにショートカットを設定しています。
タスクトレイに入れてFormは消した状態にしてるんですがショートカットを受けてくれません。
どうすれば解消できますか?
よろしくお願いします。
375デフォルトの名無しさん:2006/12/27(水) 18:05:12
>>374
フック
376デフォルトの名無しさん:2006/12/27(水) 18:06:36
>>374
キー入力はウィンドウが受けるものだから。
ホットキーを登録しないといけない。
377デフォルトの名無しさん:2006/12/27(水) 18:16:29
>>371
(A) try { queryLength = Int32.Parse(conLenStr); } catch { queryLength = 0; }
(B) bool result = Int32.TryParse(conLenStr, out queryLength);

(A)と(B)は機能的に等価で、例外処理をしなくて済む分、TryParseを
用いた方がベターだということですね。
ただ、ここでは環境変数REQUEST_METHODの値が"POST"で、なおかつ
標準入力から何も読み込まないのであれば、クライアントに
エラーメッセージを返すべきでしょう。
ですから、例外処理をしてもいいような気がしますが、どうなのでしょうか?

(A') try { queryLength = Int32.Parse(conLenStr); }
catch { DispError( 〜
(B') bool result = Int32.TryParse(conLenStr, out queryLength);
if ( queryLength == 0 ) { DispError( 〜
378デフォルトの名無しさん:2006/12/27(水) 18:20:45
C#なら例外を使うほうが漏れの好みだな・・・。
379デフォルトの名無しさん:2006/12/27(水) 18:21:56
ああ、いや、ていうかケースバイケースで、字面的にすっきりする方。
380デフォルトの名無しさん:2006/12/27(水) 18:28:44
>>370です。

InvalidateRect(hWnd, IntPtr.Zero, false);
UpdateWindow(hWnd);
このようなコードを書いて再描画させたのですが、再描画された部分は
IEのテキストが表示される部分の上の枠線部分のみで
全体は再描画されませんでした。
何が問題なのでしょうか?
381デフォルトの名無しさん:2006/12/27(水) 18:32:18
InvalidateRectの3つ目はtrueでもやってみた?
382デフォルトの名無しさん:2006/12/27(水) 18:35:17
Win32APIなんて長いこと使ってないから忘れてしまったんだが
InvalidateRectって子ウィンドウに伝播しないんじゃなかったかなあ

RedrawWindowには子ウィンドウを再描画するかどうかのフラグがあったような
383デフォルトの名無しさん:2006/12/27(水) 19:04:52
って、HWNDってメインので、クライアントエリアのHWNDじゃないのか
そりゃクライアントエリアのHWNDもってくるか、子ウィンドウまで再描画させるかかな
384デフォルトの名無しさん:2006/12/27(水) 19:10:53
C#にevalってあるんでしょうか?
385デフォルトの名無しさん:2006/12/27(水) 19:13:37
LCGを使って動的にILを書き下せる
386デフォルトの名無しさん:2006/12/27(水) 19:17:46

C#に限ったことじゃないだろうが、.NET系のEXEは起動時、
メモリーにロードするだけじゃなくてコンパイルまでやってるから
画面が表示されるまで時間が掛かるだろ?

そこでだ、例えばVisualStudio2005なんかもそうだけど、
起動するとまず素早くオープニングの小フォームだけ出して、
それから使うクラスをロード・・。
完了次第メインのフォームを表示して、最初の小フォームを閉じる。
これどうやればいいの?
387デフォルトの名無しさん:2006/12/27(水) 19:24:04
>>386
そのウィンドウのことを「スプラッシュウィンドウ」という。
それでググってわからんかったらまたおいで。
388デフォルトの名無しさん:2006/12/27(水) 19:28:45
>>385
ぐぐったらLCG=Lightweight Code Generatorというのは分かったけど
何かは分からなかった。これはなんでしょうか?
IronPythonなどを使ってevalしろってことでしょうか?
389デフォルトの名無しさん:2006/12/27(水) 19:36:54
Microsoft.CSharp.CSharpCodeProvider
390デフォルトの名無しさん:2006/12/27(水) 19:41:55
ILGenerator
391384:2006/12/27(水) 19:47:54
リフレクションを使うんですね。うーむ、DLL内の関数を呼び出すだけじゃなくて
変数に代入とかもできないと困るんですよね。
IronPythonを使ってevalしたほうが良さそうです。みなさん、サンクス。
392デフォルトの名無しさん:2006/12/27(水) 20:17:50
C#始めたばかりなのですが相談です。
一応コマンドプロンプト(?)っぽい画面に文字を表示させるための文章は書き終えたのですが、表示時間の設定の方法が分りません。
一応作った文章載せておきます
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Test
{
static void Main()
{
System.Console.WriteLine(1983);
System.Console.WriteLine("なにかが起きた");

System.Console.WriteLine(0x7C1);
System.Console.WriteLine("なにかが起きた");
}
}
}
393デフォルトの名無しさん:2006/12/27(水) 20:24:19
Sleep()
394392:2006/12/27(水) 20:45:54
>>393
「sleepは現在のコンテキスト内に存在しません」
と出てしまいます・・・。使ってるソフトはちなみに
visual C# 2005 Express Editionです
395デフォルトの名無しさん:2006/12/27(水) 20:52:41
Thread.Sleep

ちょっとはMSDN検索しいな。
396デフォルトの名無しさん:2006/12/27(水) 21:06:12
ほかっとけよー
397デフォルトの名無しさん:2006/12/27(水) 21:07:46
IEで表示されているテキストの位置を取得する方法って有りますか?
398デフォルトの名無しさん:2006/12/27(水) 21:20:18
IEの子ウィンドウからInternet Explorer_Serverを見つけて、IHTMLDocumentをQueryInterface
あとはDOMで辿っていって、screenTopあたりじゃないかな。
399デフォルトの名無しさん:2006/12/27(水) 21:27:35
>>397
画面上の位置か度無上の位置か?
400デフォルトの名無しさん:2006/12/27(水) 21:33:59
>>397です。

画面上の位置を知りたいんですが、無理でしょうか?
401デフォルトの名無しさん:2006/12/27(水) 21:37:39
>>400
出来るかも…
Flushはむりだよ。

けど何に使うんだ?
402デフォルトの名無しさん:2006/12/27(水) 22:01:03
>>400です。

IE上の文字をアニメーションさせたくて、
そのために画面上の位置を知りたいと思ってます。
403デフォルトの名無しさん:2006/12/27(水) 22:04:38
>>400です。

もう一つ質問が有ります。
IEでも何でも良いのですが、.netで、あるWindow内のテキストを
フォーム内にドラッグアンドドロップした時にイベントを発生させるには
何というイベントを発生させると良いのでしょうか?

DragDropイベントだとファイルのドラッグアンドドロップにしか
対応していないようで。。。
404デフォルトの名無しさん:2006/12/27(水) 22:08:31
405デフォルトの名無しさん:2006/12/27(水) 22:23:29
>>403
private void Form1_DragEnter( object sender, DragEventArgs e )
{
    e.Effect = DragDropEffects.All;
}

private void Form1_DragDrop( object sender, DragEventArgs e )
{
    if( e.Data.GetDataPresent( DataFormats.Text ) )
    {
        string data = (string)e.Data.GetData( DataFormats.Text );
        MessageBox.Show( data );
    }
}
406デフォルトの名無しさん:2006/12/27(水) 22:34:47
>>405さん

有難う御座います。
しかし、このコードでも、テキストをドラッグアンドドロップしようとしても
罰マークが出てしまい、イベントを取得できません。。。
何か他の設定が必要なのでしょうか?
407デフォルトの名無しさん:2006/12/27(水) 22:45:21
フォームのプロパティでAllowDrop = trueにはしてあるんでしょ?

DragEnter/DragOverとかのイベントで、ドラッグしてるデータがTextのときに
きちんとDragDropEffectを設定していないと思われ

上のははしょったけど
private void Form1_DragOver( object sender, DragEventArgs e )
{
    if( e.Data.GetDataPresent( DataFormats.Text ) )
        e.Effect = DragDropEffects.Copy;
}
みたいな感じで

まあそれでも駄目なら自分のコード貼れってこった
408デフォルトの名無しさん:2006/12/27(水) 23:04:47
>>407さん

申し訳ないです。ドラッグ&ドロップの仕方が悪かったようです。
最小化されているフォームに対して、テキストをドラッグ&ドロップしていたため、
イベントが発生しなかったようです。

最小化されているフォームに対してドラッグ&ドロップイベントを発生させることは
可能なのでしょうか?
409デフォルトの名無しさん:2006/12/27(水) 23:19:47
もう一つ質問なのですが、IEのテキストをドラッグアンドドロップした際に
そのテキストが元々IEのウィンドウのどの位置に有ったかという情報を
取得することは可能なのでしょうか?
410デフォルトの名無しさん:2006/12/27(水) 23:20:41
可能
411デフォルトの名無しさん:2006/12/27(水) 23:22:14
そんなことC#でやるなんて、自ら毒杯を呷るようなもんじゃね?
412デフォルトの名無しさん:2006/12/27(水) 23:45:51
>>410さん

それをやるにはどういう方法がありますか?
413デフォルトの名無しさん:2006/12/28(木) 00:42:00
思うんだが、まず勉強だよね。
やっぱり、CやC++やWin32API、これが基本にないと混乱の源。
この、掲示板を見てそう思う。
414デフォルトの名無しさん:2006/12/28(木) 00:48:21
んだな。>>397からみてるとC#関係ない質問ばかりだし
415デフォルトの名無しさん:2006/12/28(木) 01:23:31
ビスタって全部C#で書かれてるんでしたっけ?
416デフォルトの名無しさん:2006/12/28(木) 01:25:50
まじげ?
417デフォルトの名無しさん:2006/12/28(木) 01:27:43
びすたもPS3みたいな運命を・・・
418デフォルトの名無しさん:2006/12/28(木) 01:28:35
>>415
そんなことがあれば俺はMSに命を捧げてもかまわない
419デフォルトの名無しさん:2006/12/28(木) 01:28:47
質問させてください。

C++製のDLLの中に
void* get_pointer();
という関数があるとして、
それをDllImportで呼び出して戻り値をIntPtr型の変数に代入します。

その後、同じDLL内に
void manage_data(void* pointer)
という、渡されたポインタを構造体のポインタに変換してデータを変更する関数がある場合、
それを
[DllImport("hoge.dll")]
public static extern void manage_data(IntPtr pointer);
という形で宣言して、
先ほどget_pointerで取得したIntPtr型の変数をそのまま渡した場合、
データを正しく処理することはできますでしょうか?
420デフォルトの名無しさん:2006/12/28(木) 01:28:59
>>415
こちらへどうぞ。

最高にド低脳な発言してください in ム板(XV)
http://pc8.2ch.net/test/read.cgi/tech/1164376614/
421デフォルトの名無しさん:2006/12/28(木) 01:30:26
>>419
まあ問題ないでしょ
422デフォルトの名無しさん:2006/12/28(木) 01:30:46
>>419
できる思うが。
つーかやってみりゃいいじゃねーかハゲ
423353:2006/12/28(木) 06:50:58
>>354,355,361 ありがとうございます。
自力でMIMEヘッダ対応なエンコードしなきゃだめなんですね。

Mail空間になんでMIMEエンコードクラスが公開されてないんだか・・
424デフォルトの名無しさん:2006/12/28(木) 07:14:35
すみません・・・
C#でウィザードリィみたいなゲーム作れるのでせうか;
425デフォルトの名無しさん:2006/12/28(木) 08:19:21
作れるよ。
426デフォルトの名無しさん:2006/12/28(木) 10:01:40
警告
このスレは回廊の終わりに達しました。

  :
  :

 A PIT
427デフォルトの名無しさん:2006/12/28(木) 10:28:17
ゴール直前でExceptionが発生し続行不可
428デフォルトの名無しさん:2006/12/28(木) 11:28:13
>>427
それどこのカルドセ(ry
429デフォルトの名無しさん:2006/12/28(木) 13:08:39
C#というか、.NETフレームワークに関連していると思うけど、
WindowsのEXE起動時、前回使用したときと同じ位置に
フォームを表示させるのに良い方法はありますか?

VB6だとLoadイベント内で位置やサイズを設定すればよかった。
が、C#.NETで同じことすると、設定前の位置に一瞬表示されてから
設定した位置に表示される。
これがみっともないから良い方法あったら教えてください。
430デフォルトの名無しさん:2006/12/28(木) 13:16:14
>>429
起動時は不可視にしとけば?
設定後に可視化。
431デフォルトの名無しさん:2006/12/28(木) 13:19:27
>>429
Loadイベントで設定読み込んでLocationとSizeにセットなんてしょっちゅうやってるが
432デフォルトの名無しさん:2006/12/28(木) 13:34:43
Form表示し終わるまでに来る可能性のあるイベント一覧を調べる力技じゃないエレガントな方法ありますかね?
433デフォルトの名無しさん:2006/12/28(木) 13:50:21
.NET 用の spy++ みたいなのがどっかにあったな
434デフォルトの名無しさん:2006/12/28(木) 14:20:44
CLRSPYだっけ?
似たようなツールいくつかあった気がする。
あのツール使ってみると、正直ゾッとする。
435デフォルトの名無しさん:2006/12/28(木) 14:21:23
>>429
コンストラクタで設定するのが定石じゃね?
436デフォルトの名無しさん:2006/12/28(木) 14:39:18
>>435
コンストラクタ内だと設定しても反映されない不思議現象
437デフォルトの名無しさん:2006/12/28(木) 14:39:49
C#でDNSのTXTレコードを取得するにはどうすればよいですか?
438デフォルトの名無しさん:2006/12/28(木) 14:54:01
C#を始めようと思ってるのですが、オススメの入門サイトとかありますか?
ちなみに使うソフトは Microsoft Visual C# 2005 Express edition です
439デフォルトの名無しさん:2006/12/28(木) 14:55:41
>>436
これだっけ?
やってる?

StartPosition = FormStartPosition.Manual;
440デフォルトの名無しさん:2006/12/28(木) 14:56:59
>>436
StartPositionをManualにしてコンストラクタでLocationを設定
441デフォルトの名無しさん:2006/12/28(木) 15:06:56
442デフォルトの名無しさん:2006/12/28(木) 15:12:36
>>438
初心者向けのスレは↓でそれの4あたり
http://pc8.2ch.net/test/read.cgi/tech/1166240484/4
443デフォルトの名無しさん:2006/12/28(木) 17:41:59
Shownイベントって実際Shownされてるか関係ないよな
非同期なLoadって感じ
444デフォルトの名無しさん:2006/12/28(木) 17:53:30
表示されてないのにShownが発生することはないと思うけど。
445デフォルトの名無しさん:2006/12/30(土) 00:39:09
System.Console.WriteLine();
とか、なぜみんなフルネームで呼ぶ!?
C#ほやほやの俺が見たところ大半はフルで表記してる
理由あるの?
446デフォルトの名無しさん:2006/12/30(土) 00:42:09
初心者がusingしないでコンパイルしようとして悩むから
447デフォルトの名無しさん:2006/12/30(土) 11:26:47
javaからきましたね
448デフォルトの名無しさん:2006/12/30(土) 11:56:48
俺の作ったWiteLineメソッドと間違えるから
449デフォルトの名無しさん:2006/12/30(土) 14:41:34
単に、WriteLineと書いた場合、何をusingしているのかがわからない。
さらに、
参照設定してusingしている場合、何を参照しているのか、
どっちのクラスを使用しているのかがわからなくなる。
たとえば、HTMLDocumentクラス
これは、System.Windows.Formsにもあるし、
Microsoft.mshtmlにもある。
このクラスはクラス名は同じだが、
メソッドやプロパティ、また扱っている型が違う。
なので、
System.Windows.Froms.HTMLDocument
Microsoft.mshtml.HTMLDocument
とフルネーム書いたほうが、
どっちのネームスペース配下のクラスを使用しているのかがわかる。
また、Microsoft.htmlのHTMLDocuemntをしらず、
プログラム上で単にHTMLDocumentで宣言してたりすると、
System.Windows.FormsのHTMLDocumentのものだと思い込んでしまい、
初心者の場合、
「すいません、コンパイルエラーが出るんですが」
と、うざい言葉が返ってくるのが目に見えているから
フルネームで書けばうざいことにならずにすむ。
(ま、フルネームで書いてもいってくる超初心者がいるのも確かだが)
450デフォルトの名無しさん:2006/12/30(土) 14:54:23
usingしててもWriteLineだけにはならん。Console.WriteLineだろ。
それとWindows.FormsにあるのはHtmlDocumentな。
451デフォルトの名無しさん:2006/12/30(土) 14:57:41
俺の作ったSystem.Console.WriteLineと間違えるから

global::System.Console.WriteLineと書け
452デフォルトの名無しさん:2006/12/30(土) 15:11:39
それ区別できないだろ
453デフォルトの名無しさん:2006/12/30(土) 15:20:47
というより定義できないな。

Hoge.System.Console.WriteLine
とかならできるか。
454デフォルトの名無しさん:2006/12/30(土) 16:29:58
System.ThreadingとSystem.Windows.Formsを両方usingすると"Timer"だけにできないのがなんか気持ち悪い俺
両方ともよく使うnamaspaceだからちょっとぐらい長くても違う名前にしてほしかった
好みの問題だけどな!
455デフォルトの名無しさん:2006/12/30(土) 16:34:31
using Timer = System.Threading.Timer;とか,
using Threading = System.Threading;Threading::Timer timer;とか
456デフォルトの名無しさん:2006/12/30(土) 16:35:36
エイリアス使えばいいじゃない
457456:2006/12/30(土) 16:36:15
おろ。被った
458454:2006/12/30(土) 16:52:59
エイリアスって使ったことなくて普通に存在自体を忘れておりましたw
思い出させてくれてありがとう
459デフォルトの名無しさん:2006/12/30(土) 17:21:26
テキストファイルの文字コードの判定(日本語以外の対応も必要)をしたいのですが、どうすれば良いのですか?
IEのMLang.dllを参照すれば可能らしいのですが、tlb(?)のないCOMらしくてVSに参照させることが出来ませんでした。mlang.idlからtlbの生成も試しましたが途中でハングアップしてしまい無理でした…。
460デフォルトの名無しさん:2006/12/30(土) 17:29:06
俺は普通にmidl.exeでいけたけどなあ
461デフォルトの名無しさん:2006/12/30(土) 17:33:59
メニューバーとツールバーを作ると、背景色がデフォルトで水色になりますが、
デザインはそのままで、背景色を灰色にすることはできますか?

ToolStripManager.RenderMode = ToolStripManagerRenderMode.System;
は試してみたのですが、デザインがいまいち。
「Visual Studio」のメニューバーとツールバーのような感じを希望
(ツールバーは丸く浮き出た感じ。背景に余計な罫線なし)。
462デフォルトの名無しさん:2006/12/30(土) 17:36:53
Windowsのビジュアルスタイルを変える
463デフォルトの名無しさん:2006/12/30(土) 17:40:15
>>461
ToolStripProfessionalRendererとかを継承したクラスを作って、
OnRender...()等々をオーバーライド。
そいつのインスタンスをtoolStrip.Rendererプロパティに突っ込む。

とりあえずオーバーライドして空にしとけば余計な描画しなくなる
464デフォルトの名無しさん:2006/12/30(土) 17:45:39
>>463
Thx。早速試してみます。
465デフォルトの名無しさん:2006/12/30(土) 20:20:18
>>459
私物を持ち出して申し訳ないが、これを直接ソースとして取り込めば大丈夫なはず。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3295.txt

使用法はこんな感じ。改変は適当に。
using (WebClient webClient = new WebClient()) {
    Console.WriteLine(Encoding.GetEncoding(CodePageDetector.Detect(webClient.DownloadData("http://www.yahoo.co.jp/"), DetectCodePageHint.HTML)[0]).EncodingName);
}
466465:2006/12/30(土) 20:21:07
あらら、リンクが変な具合に。まぁ、察してちょうだい。
467デフォルトの名無しさん:2006/12/30(土) 21:45:52
>>465
ありがとうございます。非常に簡単で大変助かりました。
一つ質問があるのですが、これはIEやMLang.dllのバージョンが上がった場合でも、そのまま利用することはできますか?
468デフォルトの名無しさん:2006/12/31(日) 00:24:02
>>467
もちろんそんな保証はないが、それはTlbimpで作った相互運用アセンブリと
同じこと。
469デフォルトの名無しさん:2006/12/31(日) 01:52:52
>>454
両方ともよく使うけど同じソース内で混在はあんまりないと思うけど。
同じソース内ではどっちかに使用頻度が偏るのでもう片方はusingしないで使う。
470デフォルトの名無しさん:2006/12/31(日) 04:56:52
質問です。
System.Windows.Forms.WebBrowserでスクロールされたことを検知したいのですが
不可能でしょうか?
471デフォルトの名無しさん:2006/12/31(日) 07:47:47
RegexOptions.Singlelineのコメントがおかしいことになってるのは私だけだろうか
472デフォルトの名無しさん:2006/12/31(日) 13:24:06
>>471
うちのもおかしい\n ((((()))???
こんな感じだったかな?
473デフォルトの名無しさん:2006/12/31(日) 13:55:14
ArrayからString[]なんかに変換するにはどうすればいいの?
474デフォルトの名無しさん:2006/12/31(日) 14:57:23
質問させてください。
現在、System.Windows.Forms.WebBrowserを使ったアプリケーションを作っています。
WebBrowserに表示されているページのリンクをクリックするとIEが起動しますが、
そうではなくて、現在つくっているアプリケーション自身をもう一つ表示させてその中のWebBrowserに
リンク先を表示させたいのですが、このようなことは可能でしょうか。
475デフォルトの名無しさん:2006/12/31(日) 15:50:16
>>473
その Array が string[] であるのが明らかなら、単純にキャストで良いけど。

>>474
NewWindow2 を調べてみ。
476デフォルトの名無しさん:2006/12/31(日) 16:12:35
.net frameworkって今の大体のパソコンにはインストールされてるの?
それともこれで開発したプログラムを公開するには.net framwork
をインストールしてもらわなきゃいけないのかな?




477デフォルトの名無しさん:2006/12/31(日) 16:15:42
>>473
型の不明なリストを任意の型の配列に変換したいならこんな感じか

T[] ToArrayOf<T>(System.Collections.IList list)
{
    if (list == null) return null;
    T[] x = new T[list.Count];
    for (Int32 i = 0; i < x.Length; i++)
    {
        x[i] = (T)Convert.ChangeType(list[i], typeof(T));
    }
    return x;
}
478デフォルトの名無しさん:2006/12/31(日) 16:30:40
>>476
8〜9割くらいは入ってると思うよ
479デフォルトの名無しさん:2006/12/31(日) 16:46:19
入ってなくても、1.1 / 2.0 なら Windows Update から入れられるようになってるしな。
480474:2006/12/31(日) 16:49:02
>>475
レスありがとうございます。
現在使用しているのがC#2005で、NewWindowイベントはあるのですが、NewWindow2イベントがありません。
調べてみたところ、以下のページでVB2005の場合の対処方法は見つかったのですが、
C#の場合はどうすれば良いでしょうか。
ttp://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserNewWindow2Event.htm
481デフォルトの名無しさん:2006/12/31(日) 16:51:18
VB.NETとC#は文法が違うだけで全く同じものだから、脳内変換して読めばいい。
482デフォルトの名無しさん:2006/12/31(日) 17:00:29
>>478 >>479
そうなんですね、じゃぁ安心して勉強します。ありがとうございました
483デフォルトの名無しさん:2006/12/31(日) 17:10:00
>>473
Array.ConvertAll
484デフォルトの名無しさん:2006/12/31(日) 17:22:50
>>483
ArrayからObject[]へのダウンキャストが発生するから一般的には無理じゃね?
485デフォルトの名無しさん:2006/12/31(日) 21:23:12
>>477
ton
486デフォルトの名無しさん:2006/12/31(日) 22:24:29
C#で作った、別のプロジェクトを使用して新しいプロジェクト(C#)でプログラムを作成したいのですが、
依存関係が解決できずビルドエラーになります。

この依存関係を解決するにはどうしたらいいのでしょうか?

環境はVS2005です。
487デフォルトの名無しさん:2006/12/31(日) 22:33:28
まず依存関係を整理しろ
それだけじゃなにをどうやってるのかさっぱりだ
488デフォルトの名無しさん:2007/01/01(月) 00:09:53
あけましておめでとう。
489デフォルトの名無しさん:2007/01/01(月) 00:20:39
今年こそはC#を完璧にマスターするぞっ!
490 【大吉】 【708円】 :2007/01/01(月) 00:38:44
名前に!omikuji!damaと入れる
491【明日 交通事故で 死亡】:2007/01/01(月) 01:18:58
名前にfusianasanと入れる
492196.168.0.1:2007/01/01(月) 01:28:44
こう?
493デフォルトの名無しさん:2007/01/01(月) 01:35:53
196 って何だw
494 【大吉】 【762円】 :2007/01/01(月) 01:41:00
192だね。新年早々間違えた・・・orz
495デフォルトの名無しさん:2007/01/01(月) 09:41:15
C++とC#が出来る人に聞きたいんですけど、C#はC++に比べて何でこんなにも遅いのでしょうか?
496デフォルトの名無しさん:2007/01/01(月) 09:45:33
>>495
C++/CLIは遅いよ。
VMやライブラリのせい。
でもメリットもあるわけで。
497デフォルトの名無しさん:2007/01/01(月) 09:58:04
個人的には実用上遅さで困るのは GUI まわりだけだな……。
498デフォルトの名無しさん:2007/01/01(月) 10:13:57
起動の遅さ…
499デフォルトの名無しさん:2007/01/01(月) 11:27:50
大規模なアプリケーションはインストーラでngenしておけば、
そんなに起動に時間がかかったりしないと思うんだけど。

それに、Vistaなら初回起動以外は十分はやくなってるから気にすることはない
500デフォルトの名無しさん:2007/01/01(月) 11:38:43
>>463
いろいろ試行錯誤してみました。

Rendererから作成するのが大変だったので、ColorTableだけをカスタマイズすることにしました。
併せて
ToolStripManager.VisualStylesEnabled = false;
を指定したところ、期待する描画ができました。

ありがとうございました。
501495:2007/01/01(月) 13:19:12
>>499
Vistaは初回起動や画面描画が遅いし、メモリは少し多めに食うし
新しく開くコントロールの初期化が鈍いのでかなり遅い気がするのですがどうでしょうか?
それ以外については中々早いようなんですけど
502デフォルトの名無しさん:2007/01/01(月) 13:23:27
WPFはどうなんだろ
503デフォルトの名無しさん:2007/01/01(月) 15:20:00
>>501
君はC#使わなくていいよ
504デフォルトの名無しさん:2007/01/01(月) 17:05:33
メインとは別のスレッドで新規フォームを作成したところ、
スレッド終了時点でフォームが閉じられてしまいます。
具体的には以下のようなコードとなっています。
原因がよくわからないのですが、何かわかれば教えていただけないでしょうか?
よろしくお願いします。


public void ThreadTest() {

Thread testThread = new Thread(fncA)

testThread.Start();

}

private void fncA() {

Form testForm = new Form();
testForm.Show();
//****************
その他の処理
//****************

} //<-この関数が終わるとtestFormも閉じられてしまう
505 【吉】 【492円】 :2007/01/01(月) 17:08:57
一言で言えばそういうもの。
スコープが外れているので当然。


testFormをどこかのメンバにしたらいい。
506504:2007/01/01(月) 17:42:53
>505

お教えいただいてありがとうございます。
実は別スレッドで処理を行う内容が不定でして、
delegateを定義して他の者に具体的な処理内容を任せると言う構成になっています。
当然、私が関与しないフォームの作成などが行われる場面も出てくるのですが、
このような場合には、一般的にはどのような方法がとられるのでしょうか?
つまり、フォームの個数が予め把握できていないので、こちら側のメンバにしづらいという事情があります。
お手数をおかけして申し訳ありませんが、もう一歩だけヒントをいただけないでしょうか。
よろしくお願いします。
507デフォルトの名無しさん:2007/01/01(月) 17:48:16
もっと寿命の長いとこで生成しろと
508デフォルトの名無しさん:2007/01/01(月) 17:50:52
片付けられちゃ困るものを配列とかリストとかなんかその手のもんに登録する事に決めればいんじゃね
509 【大吉】 【118円】 :2007/01/01(月) 18:15:59
明らかに設計ミス。
c#とかいうまえに前にモデリング見直したほうがいい。
510504:2007/01/01(月) 18:16:42
>507, 508

ありがとうございます。
そうですね。本体部分でArrayListを作っておいて、
保存しておきたいものはこちらに登録するという仕様にしてみます。
色々とご助言頂き、ありがとうございました。
511デフォルトの名無しさん:2007/01/01(月) 18:18:52
気をつけないとformの亡霊がいっぱいできるよ!
512デフォルトの名無しさん:2007/01/01(月) 18:37:44
fncAでApplication.Run( new Form() );
とすれば、そのスレッドでメッセージループがまわるよ
アプリ自体の終了でそのスレッドも終了する
513デフォルトの名無しさん:2007/01/01(月) 18:43:25
>>504
メッセージループはどのスレッドで動いてるんだよ?
メッセージループが動いているスレッド以外からフォームを作成すること自体が問題じゃないのか?
514デフォルトの名無しさん:2007/01/01(月) 18:46:13
なんか変だよね〜
515デフォルトの名無しさん:2007/01/01(月) 19:03:34
>>513
>メッセージループはどのスレッドで動いてるんだよ?

元のスレッドと新しいスレッドの両方だよ。
別にApplication.RunじゃなくてShowDialogでも同じだけど。
つーかShowDialogのが普通でしたね。スマソ

あとアプリ自体の終了でそのスレッドも終了ってのは嘘だった。
thread.IsBackGround = true;にする必要があった
516デフォルトの名無しさん:2007/01/01(月) 19:05:40
言ってる意味が違うんじゃないの?
517デフォルトの名無しさん:2007/01/01(月) 19:06:15
しもた
俺へのレスじゃなかったのかorz
吊ってきます
λ.....
518504:2007/01/01(月) 19:53:08
ご助言をありがとうございます。
お恥ずかしい話、メッセージループという概念自体知らなかったため、
今、勉強させていただきました。
「スレッドごとにメッセージループをまわせば」というアドバイスに従って
以下のようにコードを書換えたところ、一応、意図したとおりの結果を出すことができました。

>511
>気をつけないとformの亡霊がいっぱいできるよ!

できてました(笑
危なかったです


public void ThreadTest() {
Thread testThread = new Thread(fncA)
testThread.Start();
testThread..sBackground = true;
}

private void fncA() {
//****************
//もしかしたら誰かがFormを作るかもしれない処理
//****************
Application.Run();
}
519デフォルトの名無しさん:2007/01/01(月) 20:01:24
なにげに危険な気がする。

素人なもんで気がするだけ…かも。
520デフォルトの名無しさん:2007/01/01(月) 20:14:41
フォームの表示とかは1つのスレッドで集中管理して,
別スレッドで行わないといけない処理だけ別スレッドでやればいいのに
521デフォルトの名無しさん:2007/01/01(月) 20:52:32
今度はそのスレッドの寿命管理は誰がしてると思ってるんだ?
522デフォルトの名無しさん:2007/01/01(月) 21:10:03
Arrayの<>が付いたやつはないですか?
523デフォルトの名無しさん:2007/01/01(月) 21:12:32
普通の配列がそれに近い
524デフォルトの名無しさん:2007/01/01(月) 21:47:22
Listじゃだめなのか?
525デフォルトの名無しさん:2007/01/01(月) 22:36:00
>>522
T[]じゃいかんのかえ。
526デフォルトの名無しさん:2007/01/02(火) 13:16:19
EnvDTE.DTE2でつかえないみたいなんです。
527デフォルトの名無しさん:2007/01/02(火) 13:47:20
どういう使い方をしようとしてるの?
528デフォルトの名無しさん:2007/01/02(火) 17:33:28
EnvDTE80じゃないか
529デフォルトの名無しさん:2007/01/03(水) 04:08:16
C#でAPIを利用しようと思っているのですが
user32.dllなどインポートライブラリが指定されている関数ならいいんですが
中にはヘッダファイルしか指定されていないものがあるんですが
こういうものは諦めるしかないんでしょうか?
530デフォルトの名無しさん:2007/01/03(水) 04:54:04
DLL は DLL であってインポートライブラリではないのだが
関数ならちょっと調べればどの DLL でエクスポートされてるか見つかるだろ
531デフォルトの名無しさん:2007/01/03(水) 08:19:58
>>530
通常、MSDNで調べるとどのDLLでエクスポートされているか書いているんですが
それはどのヘッダを使用しているかだけしかかかれていないんです。
532デフォルトの名無しさん:2007/01/03(水) 08:53:08
例えば?
例に出したら調べかたまで説明してやるよ
533デフォルトの名無しさん:2007/01/03(水) 10:01:25
選択されているタブがどれか調べたい
int TabCtrl_GetCurSel(HWND hwnd);

commctrl.h
このヘッダがいるのはわかるんですけど

よろしくお願いします
534デフォルトの名無しさん:2007/01/03(水) 10:12:33
それはマクロだ。
commctrl.h の中を調べてみな。
535デフォルトの名無しさん:2007/01/03(水) 12:02:03
ママ、マ、マクロの意味もわかんね・・・
事前に見ていたんだけど意味はさっぱり・・
取り合えずDLLとかそういうんじゃないんですね
やぱ、C言語から始めてないときびしいなぁ・・
ありがとう。
536デフォルトの名無しさん:2007/01/03(水) 12:13:31
ようするにTCM_GETCURSELをSendMessageするのと等価ということっしょ
537デフォルトの名無しさん:2007/01/03(水) 13:42:33
C#なら.NET Frameworkのコンポーネント使えばいいんじゃないのか?
なんでわざわざAPIの方を使うんだ?
538デフォルトの名無しさん:2007/01/03(水) 13:58:28
もしかして>>533>>532の返事か?
気がつかなかった・・・

#define TabCtrl_GetCurSel(hwnd) \
(int)SNDMSG((hwnd), TCM_GETCURSEL, 0, 0)

これか。
#defineだからマクロだな
SNDMSG も、#define SNDMSG ::SendMessage
で、SendMessage()関数の置き換えだ。

結局、APIの ::SendMessage(hwnd, TCM_GETCURSEL, 0, 0);
を呼んでるだけだね。
TabCtrl_GetCurSel() という関数はどこにも無いので、DLLもインポートLIBも存在しない。
539デフォルトの名無しさん:2007/01/03(水) 14:32:40
結局、TabControl.SelectedIndex かな?同等なのは。
TabControl SelectedTabで直接とれるけど。

これ、名前から同じもの探すのは手間だな。
540デフォルトの名無しさん:2007/01/03(水) 14:34:45
COMで公開するクラスなのですが
終了するときの処理はデストラクタに書いてもOK?
541デフォルトの名無しさん:2007/01/03(水) 14:41:57
参照カウントが0になればCCWが参照を開放して、そのあとGCが食ってくれるはず。
特に問題ないと思うよ。
542533:2007/01/03(水) 14:50:34
>>536>>538
> もしかして>>533>>532の返事か?
そうなのです。わかり難くてすみません

すごくわかりやすい説明ありがとうございます!!

>>539
そういうC#でお馴染みの構文で別アプリのコントロールの
情報を取得したり設定できたらいいんですけどねぇ
APIでやるしかないので苦労が絶えない
543デフォルトの名無しさん:2007/01/03(水) 15:30:11
ググって見て情報が見つからなかったので質問です。

自分の使用しているPCに実装されているインターフェイス情報を取得して表示する
という機能を付けたいです。どこか参考になるサイトがあれば教えて下さい。
544デフォルトの名無しさん:2007/01/03(水) 15:35:02
>>543
このインターフェイスってどの意味で使ってる?
545デフォルトの名無しさん:2007/01/03(水) 15:35:11
>>543
> PCに実装されているインターフェイス情報
まずこれを説明してくれ
546デフォルトの名無しさん:2007/01/03(水) 15:35:21
インターフェイスってCOMポートとかのことか?
547デフォルトの名無しさん:2007/01/03(水) 15:36:56
COMのインターフェースだったりして、、、それは無い
548543:2007/01/03(水) 15:37:21
すみません。COMポートです。
549デフォルトの名無しさん:2007/01/03(水) 15:40:01
COMポートってのはRS-232Cポートのことか?
それともUSB他を含めた通信ポートのことか?
550デフォルトの名無しさん:2007/01/03(水) 15:41:06
551デフォルトの名無しさん:2007/01/03(水) 15:48:19
Cで書いたことあるけど、結局確実なのはレジストリから持ってくる方法だったなあ
552543:2007/01/03(水) 15:55:07
>>549
USB他を含めた通信ポートのことでした。

>>550
ありがとうございます。。
553デフォルトの名無しさん:2007/01/03(水) 21:13:12
クラス1[] インスタンス1 = new クラス1[(int)this.numericUpDown数.Value];

for(int i=0; i<インスタンス1.Length ;i++)
{
インスタンス1[i] = new クラス1();
インスタンス1[i].変数1 = this.textBoxあ.Text;
}

どの時点で初期化されたんでしょうか?

554デフォルトの名無しさん:2007/01/03(水) 21:25:27
>>553
どれがだよ?
555デフォルトの名無しさん:2007/01/03(水) 21:26:51
>クラス1[] インスタンス1 = new クラス1[(int)this.numericUpDown数.Value];
配列型のオブジェクトであるインスタンス1を初期化(格納されてるのはすべてnull)
>インスタンス1[i] = new クラス1();
インスタンス1[i]の中身を初期化
556デフォルトの名無しさん:2007/01/03(水) 21:43:36
オブジェクト参照がオブジェクトインスタンスに設定されていませんって何ですか
557デフォルトの名無しさん:2007/01/03(水) 21:46:17
エラーメッセージです。
558デフォルトの名無しさん:2007/01/03(水) 21:49:31
参照にオブジェクトが代入されていません
559デフォルトの名無しさん:2007/01/03(水) 21:59:35
this.richTextBox1.Text += オブジェクト + "\r\n";

これで実行したら
richTextBox1に"WindowsApplication1.クラス名"
がそのまま出力されて笑えた
560デフォルトの名無しさん:2007/01/03(水) 22:03:37
>>559 の笑い所が分からない
561デフォルトの名無しさん:2007/01/03(水) 22:04:54
どこに笑いの要素が
562デフォルトの名無しさん:2007/01/03(水) 22:05:15
>>559
ん?すまんがどこが笑いどころか教えてくれる?
563デフォルトの名無しさん:2007/01/03(水) 22:56:27
Objectの中身に何の型が格納されているのか調べる手段はないの?
564デフォルトの名無しさん:2007/01/03(水) 23:02:59
取りあえず GetType があるが
調べてどうしたいのかによる
565デフォルトの名無しさん:2007/01/03(水) 23:22:04
is
as
キャストしてみる

好きなもの選べ
566デフォルトの名無しさん:2007/01/03(水) 23:31:45
いま「14歳からはじめるC言語」っての見て勉強始めてる
んだけど、プログラムの勉強ってどんぐらいかかるもん?
とりあえずifとかelseとかは理解できたが、先が見えん…。

とりあえず、学校では勉強は出来たほう。レベルの低いとこ
だったが、それなりに勉強して学年2位から5位あたりをうろ
ちょろしてまんた。
567デフォルトの名無しさん:2007/01/03(水) 23:33:34
C#やりたいならCよりもJavaの入門書をやったほうが早い
もしくはスレ違い
568デフォルトの名無しさん:2007/01/03(水) 23:34:34
立体視みたいなもんだからできんやつにはできん。
569デフォルトの名無しさん:2007/01/03(水) 23:38:31
若いうちは勉強しようとするよりも、
楽しいと思えることしといたほうがいいよ。

どれくらいかかるとか関係ない
プログラミングが楽しければそれでいい。

if〜elseスンゲーこれでなんでもできるじゃんって思えたら良し。

できるやつなら何からはじめても、のめり込んで究めるだろうし
駄目なやつは何をやっても駄目。
570デフォルトの名無しさん:2007/01/03(水) 23:40:51
>>566
無料IDEあるんだし、すぐEXE作れて目に見えるんだし
なんか御題貰って作って見ればいいお
571デフォルトの名無しさん:2007/01/03(水) 23:44:04
>>569
始めてPC-8801をやり始めたころはそんな感じだったな
足し算引き算するだけで感動してた
今の人は目が肥えてしまってる分基礎を学ぶのはつらいだろうね
572デフォルトの名無しさん:2007/01/03(水) 23:47:47
VC#2005Expressの使い方についての質問だけど、
ビルドした際に生成されるobjフォルダの位置を変える方法ってある?
binフォルダの位置は変えるのに成功したんだが・・・
573デフォルトの名無しさん:2007/01/04(木) 03:03:36
>>572
MSBuildファイル(*.csproj)でプロパティBaseIntermediateOutputPathあたりを設定する。
詳しくはWINDOWS/Microsoft.NET/Framework/v??/あたりにあるMicrosoft.Common.targets,Microsoft.CSharp.targetsファイルを参照してくれ。

MSBuildまわりのドキュメントって少ないなあ
574デフォルトの名無しさん:2007/01/04(木) 13:21:24
System._Comobjectの正体を暴く方法を教えてください。
575デフォルトの名無しさん:2007/01/04(木) 14:30:38
>>574
Reflectorで中身を見てみたら?
576デフォルトの名無しさん:2007/01/04(木) 14:45:37
577デフォルトの名無しさん:2007/01/04(木) 15:16:37
C#でC++のクラス(インスタンス)を使うことってできるんでしょうか?
DllImportを使ってDLLから関数を呼び出せることはわかったのですが、関数だけじゃなくクラス自体も使いたいです。
やっぱり無理でしょうか。
578デフォルトの名無しさん:2007/01/04(木) 15:21:34
C++/CLIでラッパーを書く
579デフォルトの名無しさん:2007/01/04(木) 15:21:36
com activex
580デフォルトの名無しさん:2007/01/04(木) 17:41:19
任意のクラスについて、指定されたフィールドを指定された型でGet,Setするとしたらどういう記述がいいでしょう?(´・ω・`)
やりたいことは独自のコントロールクラスでの値の取得、変更時のデータの反映なんですが。
考えたのはリフレクションを使って処理する方法。リフレクションを使わないでGenericsで記述できるでしょうか?
こんな感じ?インスタンスは後からくっつけられるとします。
myTextBox.Bind(new FieldStringBinder(typeof(MyClass),"_name",BindGet|BindSet));//_nameはMyClassのフィールド名。
581デフォルトの名無しさん:2007/01/04(木) 17:45:58
>>574
分からないからSystem._ComObjectなんだろw
582デフォルトの名無しさん:2007/01/04(木) 19:20:44
>>580
それだとどのMyClassのインスタンスを見に行ったらいいのかわからない
なんで普通にMyClassのインスタンスを渡さないの
それともインスタンスフィールドじゃなくてstaticフィールドを見に行きたいのか?
そんな必要ある?
583デフォルトの名無しさん:2007/01/04(木) 20:19:42
>>580
継承って理解してるか?

class MyClass:CollectionBase
{
public Add(MyItem item)
 {
 }
}

ま、簡単に書くとこんな感じ
これは独自のクラスにarraylistの基底クラスを継承して
ArrayListと同じような機能をするけど
追加できるのはMyItemというクラスのインスタンスだけって感じ

やりたいコントロールの基底クラスを継承した独自クラス作成して
同じようにやればいいだけ
584デフォルトの名無しさん:2007/01/04(木) 20:26:27
>>583
勘違いする人がでるといかんので補足しておくと、
CollectionBaseはIList.Add(Object)を明示的に実装しているので、
実際にはIListにキャストすることでMyItemクラスのインスタンスでなくても追加できる。

MyClass a = new MyClass();
//a.Add(new Object()); // error
((IList)a).Add(new Object()); // ok
585デフォルトの名無しさん:2007/01/04(木) 20:58:30
そういう話なのか…??
586デフォルトの名無しさん:2007/01/04(木) 21:00:06
CollectionBaseを継承する場合はイベント的なプロテクトメソッドをオーバーライドして、
不正なデータの追加などはできないようにするのがルール。
しかしそれ以前にジェネリックのサポートによりこんなのはほとんど不要になった。
587デフォルトの名無しさん:2007/01/04(木) 21:00:53
>>580
普通にプロパティを作ればいいんじゃないのか?
リフレクションなんてよほど特殊なことをする必要がない限り使うことはないんだが。
588デフォルトの名無しさん:2007/01/04(木) 21:04:06
PropertyGridみたいなことがやりたいんでしょ
589デフォルトの名無しさん:2007/01/04(木) 21:08:08
名前がコード上で文字列で出てきてる時点で、
リフレクションやそれに近い方法意外ではできないこと確定。
590デフォルトの名無しさん:2007/01/04(木) 21:13:08
>>580
Foo Value;
MyClass instance;

typeof(MyClass).GetField("_name").SetValue(instance, value);
value = (Foo)typeof(MyClass).GetField("_name").GetValue(instance);

やはり邪道だな。
591デフォルトの名無しさん:2007/01/04(木) 21:18:54
T Getvalue<T>(object instance, string name)
{
// instanceのTypeDescripterゲット
// プロパティゲット
// TypeConverterでTに変換
return (T)val;
}
書き方忘れたからコメントだ。
ああそうさ、結局リフレクションだお。
しかも使いやすくないよ。
592デフォルトの名無しさん:2007/01/05(金) 00:35:08
>>573
d
おかげでバックアップの際にずいぶん楽になった。
593580:2007/01/05(金) 12:02:09
レスさんくすこ。
質問が分かりにくくてすいません。
やりたいことはたとえば独自のテキストボックスでテキストが変わったときにバインドされたインスタンスのフィールドを直接変えることです。
その際にバインドされるインスタンスは特定の型に依存しないようにしたいと思っています。
つまりどんなクラス、ストラクトでもFieldとしてpublicのstringを持っていてそれを指定されればテキストボックスとバインドできるようにしたいんです。

>>582 今回の場合はインスタンスが動作時にインジェクトされる可能性があるため静的には動作の記述のみにしようと考えています。
>>583 使う型ごとにGenericsで専用のテキストボックスを作るという考え方はありですが、その型にテキストボックスバインド用のインターフェースを作るわけにはいきません。
あるクラスでstringのフィールドが複数あった場合におのおの別のテキストボックスにバインドすることもありえますから。
>>587 フィールドでなくプロパティ限定にしてsetter,getterのデリゲートとバインドさせるのはありかもしれません。
myTextBox.Bind(typeof(MyClass),"Name",BindGet|BindSet);
こんなかんじでしょうか?
>>589 これはリフレクション使う前提で文字列にしているだけであって文字列として記述しないですむならそれに越したことはないです。Lispみたいに文法拡張できれば済む話でしょうね。

リフレクション使えばまぁ満足できるコード記述量で望みの動作できそうですがいまいちエレガントでないきがしてます(´・ω・`)
594デフォルトの名無しさん:2007/01/05(金) 12:14:24
フィールドの値を変えるためのデリゲートオブジェクトを渡せば?
柔軟に対応できるよ
595デフォルトの名無しさん:2007/01/05(金) 12:26:41
593にもデリゲート云々とあるのに気づかなかったので補足
デリゲートを直接引数に渡すってことね
そのつど匿名メソッドなりでフィールドの値を変更するメソッドを書けばリフレクション不要
596580:2007/01/05(金) 12:33:13
>>595 そのつどデリゲートを書いて柔軟にしたいときもありますが、今回は出来るだけ記述をしないでいける方法探っているので。
597デフォルトの名無しさん:2007/01/05(金) 12:36:00
コントロールに限定するなら DataBindings が既に存在するのだが。
598デフォルトの名無しさん:2007/01/05(金) 13:12:27
>>593
なんだ。フィールド言うからてっきりprivateなフィールドを操作しようとしてるんかと思った。
普通はフィールドをpublicにするのはWin32APIに渡す構造体を除けばstatic readonlyのときだけ。

class Foo { public String Bar { get; set; } }
textBox.DataBindings.Add(new Binding("Text", foo, "Bar"));
599デフォルトの名無しさん:2007/01/05(金) 13:23:42
>>598
それって内部的にはリフレクション使ってるんじゃないの?聞きたいのは、こういうクラスがあるとかじゃなくて技術的にどういうやり方があるかということだろう。なんか質問者の意図を汲み取らないで回答してる人多すぎ。
600デフォルトの名無しさん:2007/01/05(金) 13:25:26
ついでに質問してる人が例を限定して話してるのにpublicなフィールドつくらねーよとか余計な自己主張してる人も多すぎ。
601デフォルトの名無しさん:2007/01/05(金) 13:56:59
リフレクションは絶対に使わないとダメなんだって。

選択肢はライブラリを使うか、一から自分で書くかの二通り。
602デフォルトの名無しさん:2007/01/05(金) 14:02:19
>>599
技術の話ならMSDNのDataBindingsのところに全部書いてあるだろ。
603デフォルトの名無しさん:2007/01/05(金) 14:13:20
>>602
みてないけどDataBindingsがどのように実装されてるかも書いてあるの?
604デフォルトの名無しさん:2007/01/05(金) 14:26:44
どういう挙動をするかくらい書いてあるよ。
605デフォルトの名無しさん:2007/01/05(金) 14:34:07
ま、いずれにせよ質問者のレス待ち。
606デフォルトの名無しさん:2007/01/05(金) 14:34:26
もうTextChangedイベントでいいよ
607580:2007/01/05(金) 15:10:31
お世話様です。
今回は独自のライブラリを書いているので既存のDataBinderを使うことは考えていません。ただ考え方は見ておこうと思います。
見た感じだと内部でリフレクションを使っているんでしょうか?Reflactorで見ればいいんですけど(´・ω・`)
Reflectionを使うのでも速度的には問題ないのでそれでいいかもしれません。
ただできればTypeを効かす様にしたかったのでそういう記述できればですが、ざっと見たところそういう記述の仕方はなさそうかと。
608デフォルトの名無しさん:2007/01/05(金) 15:17:06
今どこで迷ってるの?
大体必要そうな情報は出揃ってると思うんだけど。
609580:2007/01/05(金) 15:46:02
Reflection以外でGenericsとか使ってきれいに書ける方法がないかというのを考えてます。
裏で複雑なことをしてもいいので、表は可能な限り簡潔に書ければと思ってます。
610デフォルトの名無しさん:2007/01/05(金) 16:17:59
なんかGenericsに変な妄想抱いてない?
611デフォルトの名無しさん:2007/01/05(金) 16:30:52
スペット挿入と
ブロック挿入の違いを教えて
612デフォルトの名無しさん:2007/01/05(金) 16:32:42
ズバッと解決
613デフォルトの名無しさん:2007/01/05(金) 16:44:07
そらいけスマート
614デフォルトの名無しさん:2007/01/05(金) 17:17:48
人をおちょくるのもいい加減にして><
615デフォルトの名無しさん:2007/01/05(金) 17:23:28
>>609
そこでILGeneratorですよ
616デフォルトの名無しさん:2007/01/05(金) 17:26:31
>>611 >>614
そもそもどこで出てきた言葉なんだよ
617デフォルトの名無しさん:2007/01/05(金) 17:30:17
スニペット挿入 : 普通の定型句挿入
ブロック挿入 : 選択した範囲をifやwhileなどのブロックで囲む
後者は手で書いた方が早い
618デフォルトの名無しさん:2007/01/05(金) 17:33:12
>>609
C#でレイトバインディングみたいな真似をするにはリフレクションを使うしかないのよ。
619デフォルトの名無しさん:2007/01/05(金) 17:40:16
>>609
とりあえず一番簡単な方法。

tVVLj9MwED53pf0Po5wSUUVwBVWwrLawl1JR4O4m09bItSPHyVK1/e/4mVcfqCtxyWP8eWa++Wbsolo
ymkHGSFnClCLLP1Oeo7y/29/fjQpJa6IQJJJccLaDb8vfmCkoRSUzfOalIjzDD+eQ1tczXwkPtv9d5K
PgSgoGisg1Kv/XBcylKFCqnXXiUMHUhT3VyNUZzOOG8DXmdlnjzQ7HtcMy9nyoZzKGhZKUr2FlMIneY
6owoiuIAwQmE+AVY3A4OFQwGPRopDZSvADHF3iQ62qrY8/02tOfDAtFBT918xGiYIvgPUTWZ5QYhqO2
hitqnpMm0fQLqh+7AuPEfFlcbHeOwTDTFKaMrMt07igf+tYgnIti2Hn/15m0LFyV0qmQW6LiT1EU7d8
eowhoCVwoIFATRvMmW18osYL9u2M0Bp/pKZnEZaQ2tEz7PdbhPoRMnQquRmbx2FW7FjoRwz4ODZe5d6
N14RumJ7cHddUOuNsEHzrSenuTlTs49Yr3er7wont8X/OAjIOHVypfXFN+JtSiKgohlR6kW9Vv6tXo3
qZ6Qskr3w4zXiNvYQ1zeAORn/bolVXA/1CFpQ5Jlgwb2qkpgQmUzsgWPWNnWKD6RViFcdOcultrvSl1
xCz1Yc+bSrhdZwYmCbFCoxgX2mgJ2siWc/qQuyPyK+E50ydik0DcNSc2wuBoDWvtQPbO8la8IWDeTJL
L8dJ69wjXWLw84D+5qXbcjPA/nKXfcStq7BE/JXBrDXxa/l6yeZ1Hh2unRHMJjd0Vpo+PErDPoCv24o
rYl9ulX4NBxwzY2tYYw0lk+7TtE2ge/wI=

http://www.geocities.jp/c_cpp_cs/code/code.html で展開
620609:2007/01/05(金) 17:47:37
>>619 やっぱりそんなかんじですかね。とりあえずリフレクションで行きます。
お騒がせしました(´・ω・`)
621デフォルトの名無しさん:2007/01/05(金) 17:54:58
IronPythonつかうとか
622デフォルトの名無しさん:2007/01/06(土) 01:50:00
>>584
>>586
ジェネリックってすげーな。今までcollectionBaseを
必死に継承してたのがバカみたいだよ
他に知っておいたほうがいい機能ないか?
623デフォルトの名無しさん:2007/01/06(土) 02:56:31
ILGenerator
624デフォルトの名無しさん:2007/01/06(土) 06:48:05
Panelをカスタマイズして、独自のコントロールを作ろうとしています。
キーボード入力を処理したいので、TextBoxのように、コントロールにフォーカスが来るようにしたいです。
コントロールにフォーカスが来るようにするには、どのようにしたらよいでしょうか。

なお、PanelのTabStopをTrueにしても、フォーカスは来ませんでした。

そもそもPanelをカスタマイズするという方法がダメなのでしょうか?
625デフォルトの名無しさん:2007/01/06(土) 09:42:39
C#で、ソースコード内に、そのソースのファイル名や、メソッド名を取得することってできないでしょうか?
C言語の__FILE__マクロみたいなものが欲しいんです
626デフォルトの名無しさん:2007/01/06(土) 10:07:46
こういうのがある。
http://messiah-annex.at.webry.info/200502/article_7.html
が、デバッグビルドじゃないと駄目みたいだな。
627デフォルトの名無しさん:2007/01/06(土) 11:30:49
>>626
おー
いけました。ありがとうございます。
でも、わざわざStackFrameを生成してやらないといけないのは面倒ですね
ライブラリ化して呼び出すわけにはいかないし(;´Д`)
628デフォルトの名無しさん:2007/01/06(土) 11:50:06
と、思ったけど、スキップするスタックの数をパラメータで指定できました。
これならライブラリ化も可能です。ヽ(´ー`)ノ
629デフォルトの名無しさん:2007/01/06(土) 15:26:23
一応、
[MethodImpl(MethodImplOptions.NoInlining)]
付けといた方がいいかもしれん。
まあデバッグ実行用なら事実上不要かもしれんが。
630デフォルトの名無しさん:2007/01/06(土) 15:29:41
[Conditional("DEBUG")]
つけとけばいいんじゃない?
631デフォルトの名無しさん:2007/01/06(土) 15:33:54
Conditionalてどうやって実装されてるんだろ
直接コンパイラに指示を出してるのかな
632デフォルトの名無しさん:2007/01/06(土) 15:34:06
>>629
インリンって読んでしまった俺はどうすればいい?
633デフォルトの名無しさん:2007/01/06(土) 15:41:51
>>631
cscが読んでるみたい。
出力のMSILにメソッド本体は含まれてるけど、メソッドの呼び出しが抜け落ちてる。
634デフォルトの名無しさん:2007/01/06(土) 16:15:21
VC#2005Expressでプログラム中、debugとreleaseで動作が異なるという現象が起こったので色々調べてみたところ、
VC#が生成した、Program.csのMainメソッドすら呼び出されていないような感じでした。
Mainメソッドを

static void Main()
{
    MessageBox.Show("test1");
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

と書き換えた場合、debugだとちゃんとtest1と出るのですが、releaseだと全く出てきません。
一応Form1クラスのダイアログはちゃんど出てきてるのですが・・・
何が原因なんでしょうか?
635デフォルトの名無しさん:2007/01/06(土) 16:33:01
>>634
Form1から
MessageBox.Show("test1");
じゃだめなのかい?
記述的にあまりよろしくない
636デフォルトの名無しさん:2007/01/06(土) 16:35:34
>>634
そんな気持ち悪いことが本当に起こるのやら
ildasmでMainの中身覗いたらどうなってるんかね。
637デフォルトの名無しさん:2007/01/06(土) 16:37:25
俺の環境ではちゃんとMessageBoxが出る
638デフォルトの名無しさん:2007/01/06(土) 16:38:01
ビルドできてないんじゃない?
639デフォルトの名無しさん:2007/01/06(土) 16:39:27
さすがにそれはないだろw
640デフォルトの名無しさん:2007/01/06(土) 16:42:17
>>638
もしやと思いexeの日付見たら古いままでした。
思い当たる原因は無いのですが、とりあえず一度フォルダごと消して再度ビルドしたらちゃんと動作しました。

お騒がせして申し訳ないですorz
641デフォルトの名無しさん:2007/01/06(土) 16:46:45
ぎょー
>>639あったらすい。
642デフォルトの名無しさん:2007/01/06(土) 17:05:14
正月で浮かれてるなwこのー
643デフォルトの名無しさん:2007/01/07(日) 02:22:53
MessageBox.Showで出るWindowの情報を取得する方法はどのようにすればよいのでしょうか?

MessageBox.Showで出現するWindowのOKボタンの位置などを取得したいのですが
644デフォルトの名無しさん:2007/01/07(日) 02:33:00
また難儀なことを思いつくもんだ。

FindWindow, GetWindowPos
645デフォルトの名無しさん:2007/01/07(日) 02:33:21
>>643
お勧めはMessageBox相当のフォームをつくってShowDialog、
MessageBoxを直接いじろうと思ったらC#の範疇じゃないな。
646デフォルトの名無しさん:2007/01/07(日) 02:47:50
>>643
OK押したいだけなら、BM_CLICK
647デフォルトの名無しさん:2007/01/07(日) 12:32:34
C#にはjavadocみたいなやつあるのでしょうか?
vs2003です。
648デフォルトの名無しさん:2007/01/07(日) 12:41:30
>>647
言語仕様的に持ってる。
Documentation Comment
649デフォルトの名無しさん:2007/01/07(日) 13:04:26
NDoc
650647:2007/01/07(日) 16:39:54
なるほど。
ありがとうございました。
651デフォルトの名無しさん:2007/01/07(日) 17:16:13
自作のクラスライブラリにイベントを持つクラスがあります。
そのデリゲートの宣言ってどの場所に書くべきですか?
652643:2007/01/07(日) 20:48:57
>>644-646 ありがとうございました。
645の方針で行こうと思います。
Win32を使用する場合、EnumWindowsなどを使用して、クラス名#32770を比較して云々しないと駄目みたいですね。
653デフォルトの名無しさん:2007/01/07(日) 20:49:35
そのデリゲートが存在すべきところ。
そのクラスにほぼ特有のデリゲートなら、そのクラスと同じ名前空間が一般的じゃないかね。
654デフォルトの名無しさん:2007/01/07(日) 21:31:07
Reflectorで見たときHogehogeEventHandlerとかHageHageEventArgsとか
並んでると美しくないのでクラスの中に突っ込みたくなる
655651:2007/01/07(日) 22:02:17
>>653-654
そのクラスでしか使わないイベント&EventArgsは
そのクラスの中にpublicで記述するべきでしょうか?
656651:2007/01/07(日) 22:07:15
イベントじゃないや、デリゲート。

namespase xxxClassLibrary
{
 public class Class1
 {
  public class xxxEventArgs
  {
   ・・・
  }
  public delegate ・・・
  public Event ・・・

  public void Method1()
  {
   ・・・
  }
 }
}
657デフォルトの名無しさん:2007/01/07(日) 22:14:45
私の場合ほぼ public なネストクラスは使わんな。使う時微妙に面倒だし。
.NET の標準ライブラリ見ても、例えば DataGridViewHogehogeEventHandler/EventArgs は System.Windows.Forms にあるし。
658デフォルトの名無しさん:2007/01/07(日) 22:17:32
659デフォルトの名無しさん:2007/01/07(日) 22:24:54
そこでEventHandler<T>ですよ
660651:2007/01/07(日) 23:27:12
>>658
サンクス。
脅しかと思うくらい「しないでください」って書いてありますねw
乱用厳禁ってことか。

今回は親クラスでしかインスタンスを作成できないクラス(でも参照可)
でなくてもいいのでネストやめておきます。


そこで、EventArgsとデリゲートをセットで定義しようと思いますが
ファイル名はどうしようかと…w

xxxxEvent.cs
xxxxEventArgs.cs
661デフォルトの名無しさん:2007/01/07(日) 23:34:44
命名規則の方のガイドラインも
ttp://msdn2.microsoft.com/ja-jp/library/ms229040(VS.80).aspx

EventHandler の宣言はどうせ 1 行だし、EventArgs と同じファイルにそれっぽい名前つけときゃ良いんじゃね
662651:2007/01/07(日) 23:40:24
>>661
ありがとうございます。
xxxxEventArgs.cs に EventHandler と EventArgs 書くことにします。


>イベント ハンドラではないデリゲートの名前には、サフィックス Callback を追加します。
>サフィックス Delegate は、デリゲートに追加しないでください。

知らなかった…orz
663デフォルトの名無しさん:2007/01/08(月) 10:00:26
こんなガイドラインあったんだー
ためになるね。思いっきり 〜Delegate とか作ってたよ俺orz
664624:2007/01/08(月) 10:47:37
自己レスです。
ScrollableControlを使うことにしました。
665デフォルトの名無しさん:2007/01/08(月) 12:39:12
ためになるガイドライン
だめになる俺のソース
666デフォルトの名無しさん:2007/01/08(月) 19:06:52
つ リファクタリング
667デフォルトの名無しさん:2007/01/08(月) 20:31:48
質問です。
using System.CollectionsのArrayListを使ってプログラムを作っているのですが

class test {
...
public struct dPoint {
 public double X;
 public double Y;
}

private dPoint pos;

private ArrayList list = new ArrayList();


.....
//ユーザ定義関数1
this.pos.x = .... // 23.456...
this.list.Add(this.pos.x);
.....
//ユーザ定義関数2
g.DrawString("this.list[0]->"+this.list[0] ,...); //デバッグ用に出力


という風なプログラムなのですがデバッグ出力で”this.list[0]->0”と表示されるのですが原因がわかりません
this.list.Add(1)と即値を入れた時は”this.list[0]->1”と表示されます
よろしくお願いします
668デフォルトの名無しさん:2007/01/08(月) 20:33:40
>>667
pos,xのxは小文字でいいんかいな
669667:2007/01/08(月) 20:36:00
>>668
あ、すいません
小文字です

public struct dPoint {
 public double x;
 public double y;
}

this.pos.x = .... // 23.456...
this.list.Add(this.pos.x);
670デフォルトの名無しさん:2007/01/08(月) 20:37:09
Addしてるところにブレークポイント張ってxの値を確かめてみたらどう?
671デフォルトの名無しさん:2007/01/08(月) 20:40:27
>>669
structで定義してるからだよ
その場合値を変更することができない
public class dPoint {
にしたらいける
672667:2007/01/08(月) 20:40:47
>>670
言われてみればVC#でブレークポイント張れましたね
確かめてみてだめなようならまたきます
ありがとうございます
673あのー:2007/01/08(月) 20:47:48
初心者しかいないのか????
674デフォルトの名無しさん:2007/01/08(月) 20:49:12
難しい質問を投げればエロい人も召喚できる
675あのー:2007/01/08(月) 20:50:58
釣なのか?
ToString
げほげほ
676デフォルトの名無しさん:2007/01/08(月) 20:53:48
>>675
Stringとの+はString.ConCatにコンパイルされるから型変換は不要。
677デフォルトの名無しさん:2007/01/08(月) 20:54:28
class test {
...
public struct dPoint {
 public double X;
 public double Y;
}

private dPoint pos;

private List<dPoint> list = new List<dPoint>();

this.pos.x = .... // 23.456...
this.list.Add(this.pos);

g.DrawString("list[0]->"+list[0].x+
678667:2007/01/08(月) 21:04:41
>>668,671,677
うまく動作しました
ありがとうございました
679デフォルトの名無しさん:2007/01/08(月) 21:05:01
・this.pos.x直出力
・DrawStringの中身
680デフォルトの名無しさん:2007/01/08(月) 21:05:43
>>678
どうやって上手くいったのか言えよカス
681デフォルトの名無しさん:2007/01/08(月) 21:06:07
structでもいけましたよ?
682デフォルトの名無しさん:2007/01/08(月) 21:08:34
this.pos.x =0の予感!
683デフォルトの名無しさん:2007/01/08(月) 21:11:30
using System;
class Program {
static void Main() {
String hellostr = "hello";
StringBuilder hellosb = new StringBuilder("hello");
world(hellostr, hellosb);
Console.WriteLine("String:{0},StringBuilder:{1}", hellostr, hellosb.ToString());
}

static void world(String str,StringBuilder sb) {
str = str + "world";
sb.Append("world");
}
}

このコードで"String:hello,StringBuilder:helloworld"と出力されるのは、
str = str + "world"においては"hello"とは違う
"helloworld"が入った別のインスタンスが生成され、
sb.Append("world")においては"hello"と同じインスタンスの中身が書き換わっているから
というのであっていますか?
684デフォルトの名無しさん:2007/01/08(月) 21:11:30
全ての回答が的外れだったのに、
ありがとうございました、かw
685デフォルトの名無しさん:2007/01/08(月) 21:17:13
>>684
生産性の欠片のない書き込みよりましだぬ
686デフォルトの名無しさん:2007/01/08(月) 21:17:54
ふらっとC♯, C#(初心者用) Part11
http://pc10.2ch.net/test/read.cgi/tech/1166240484/
687デフォルトの名無しさん:2007/01/08(月) 21:20:39
>>683
悪いが全く意味が分からない。
688デフォルトの名無しさん:2007/01/08(月) 21:22:23
StringBuilderはでArrayで
stringはクラスだからってことでしょ
689デフォルトの名無しさん:2007/01/08(月) 21:23:13
>>688
StringBuilderはArrayではないし、
ArrayやStringBuilderもクラスだ。
690デフォルトの名無しさん:2007/01/08(月) 21:25:18
インスタンスとオブジェクトの違いを述べよ
691デフォルトの名無しさん:2007/01/08(月) 21:25:35
>>683
そそ。Stringクラスのインスタンスはimmutableなのよ。
692デフォルトの名無しさん:2007/01/08(月) 21:28:01
693667:2007/01/08(月) 21:31:11
>>680
すいません、うまくいったコード書き忘れました
書きなれていないので汚いですけど
public struct dPoint
{
 public double x;
 public double y;
}

public struct ArrayPosList
{
 public ArrayList listx;
 public ArrayList listy;
}

private ArrayPosList list = new ArrayPosList();
private dPoint dx_pos;
//コンストラクタ内
this.list.listx = new ArrayList();
this.list.listy = new ArrayList();
...
//timerで呼び出される関数内
....//座標計算
this.list.listx.Add(this.dxy_pos.x);
this.list.listy.Add(this.dxy_pos.y);
int count = this.list.listx.Count;
g.DrawString(""+this.list.listx[count-1],f1,Brushes.Gold,10,this.lineheight*7);

>>681
structでいけました
694デフォルトの名無しさん:2007/01/08(月) 21:33:17
>>693
だからどこが間違ってたのか言えよ
コードなんて書かれてもわかるわけないだろ
695667:2007/01/08(月) 21:35:39
>>694
メンバ変数すべて書き直したのでどこが間違ってたかは分からないです・・
分かるようなら代わりに書いてください
696デフォルトの名無しさん:2007/01/08(月) 21:36:05
目が潰れそうなコードだな
697デフォルトの名無しさん:2007/01/08(月) 21:36:52
>>695
やってる内容は最初に書いたコードと変ってない気がする。
記述ミスしてただけでは?
698667:2007/01/08(月) 21:40:58
>>695
おそらくご覧の通り目潰しコードなのでたぶんそうだと思います

昨日始めたばっかりなもので、もう少し精進します
皆さんお騒がせして申し訳なかったです
699667:2007/01/08(月) 21:42:05
×>>695
>>697

レス番までミスるとは
700デフォルトの名無しさん:2007/01/08(月) 21:42:54
public struct ArrayPosList
{
 public ArrayList listx;
 public ArrayList listy;
}

X座標とY座標を別々のcollectionで管理してるのにはワロタww
701デフォルトの名無しさん:2007/01/08(月) 21:57:24
上のコードで上手くいきましたよ。

ヒントにあるように
メソッドに構造体渡してそこで代入して、また別のメソッドでaddしたのかな?
それか、コピペのあと書き直し忘れたか。
aaaa.x=100;
をコピペして

aaaa.x=100;
aaaa.y= 0;
としようとして

aaaa.x=100;
aaaa.x= 0;のままとか。これは俺が良くやるミスw
702デフォルトの名無しさん:2007/01/08(月) 22:04:56
どうやったのかわからないけどうまくいった
ってときが一番危険なんだぜ
覚えときな
703デフォルトの名無しさん:2007/01/08(月) 22:22:50
なにカリカリしてんの?
704デフォルトの名無しさん:2007/01/09(火) 00:14:38
急に初心者スレに大型新人が現れたので
705デフォルトの名無しさん:2007/01/09(火) 00:47:34
ねもい・・・
12時前には寝るはずだったのに。。。
706デフォルトの名無しさん:2007/01/09(火) 10:11:05
これって、構造体でToStringをオーバーライトして文字列として出力するものを指定しないといけないんじゃないの?
707デフォルトの名無しさん:2007/01/09(火) 11:15:06
C#を学びたいと思っています。
XNAが楽しそうなので、C#の文法からライブラリの使い方までを学べる本を探しています。
自分はCを学校でやった後、VB6、JAVA、VB.NET、VB2005と使ってます。オブジェクト指向は一通り理解してます。
できればVB2005との比較が掲載されているような文法書だとよいのですが。
これ読んどけってのがあったらお願いします。
708デフォルトの名無しさん:2007/01/09(火) 13:35:42
>>707は純粋に興味です。趣味、日曜PG程度でかまいません。
709デフォルトの名無しさん:2007/01/09(火) 13:46:21
VBわかってるなら、実際にやりながらMSDNのヘルプでいけると思うけどなあ

xnaは非常に範囲が狭くて深いのであまり一般的な入門書は役に立たないかも。
710デフォルトの名無しさん:2007/01/09(火) 15:35:22
一応比較式の書籍はあったと思うが、ちょっと古い。
でもまあ役には立つ。

諦めてC#の本でも大丈夫だと思うけどね。
javaやってたなら特に。
711デフォルトの名無しさん:2007/01/09(火) 15:53:15
独自のListクラスで行の高さをあるインタフェースを継承したクラスに問い合わせるようにしたいと思ってます。
固定長の場合と行内容によって高さを変える場合と選択できるようにするためです。
実装クラスの名称はFixHeightほにゃららとVariableHeightほにゃららにしようと思っています。
おまいら的にはほにゃららにどんな名前をつけますか?
712デフォルトの名無しさん:2007/01/09(火) 15:58:14
Listクラスって何だ?ListBoxみたいなものか?

それなら普通にFixedHeightListBoxとかつけとけばいいと思うが。
713デフォルトの名無しさん:2007/01/09(火) 16:00:20
>>711
FixHeight固定長List
VariableHeight可変長List
714デフォルトの名無しさん:2007/01/09(火) 16:02:16
>>712
ジェネリックスも知らないのか

>>711
FixHeightGets
VariableHeightGets
715デフォルトの名無しさん:2007/01/09(火) 16:04:29
>>711
>>661
Listを継承するならListとつければいい
716711:2007/01/09(火) 16:24:37
いやList(独自のクラス)の中で行ごとのHeightを管理してるクラスです。
メソッドとしては
float Height(int rowIndex)
float YPosition(int rowIndex)
などがあります。
HeightManagerでもいいんですが、Managerというほどのものでもないので・・・
717デフォルトの名無しさん:2007/01/09(火) 16:37:42
>>716
FixHeightCol
718デフォルトの名無しさん:2007/01/09(火) 16:38:24
FixHeightDataSet
719デフォルトの名無しさん:2007/01/09(火) 16:39:13
こっちゃ池

クラス名・変数名に迷ったら書き込むスレ。Part8
http://pc10.2ch.net/test/read.cgi/tech/1154448184/
720デフォルトの名無しさん:2007/01/09(火) 16:39:22
FixHeightItems
721デフォルトの名無しさん:2007/01/09(火) 16:41:34
>>719 そうするです。お騒がせしました。
722デフォルトの名無しさん:2007/01/09(火) 16:43:50
答えてるのにシカトかよ
どこが気に入らないんだよカス
723デフォルトの名無しさん:2007/01/09(火) 16:48:20
>>722
ColもDataSetもItemsもHeightの管理を行ってるって内容にそぐわないだろうがボケ。
724デフォルトの名無しさん:2007/01/09(火) 16:53:56
>>723
管理つっても、idxもらって数値返すだけだろカス
725デフォルトの名無しさん:2007/01/09(火) 16:56:38
>>724 
その内容に対してColとかDataSetとかItemsつけるなんてセンスじゃないんじゃないのデベソ。
726デフォルトの名無しさん:2007/01/09(火) 17:11:46
>List(独自のクラス)

ここらへんが……
727デフォルトの名無しさん:2007/01/09(火) 17:18:28
難しく考えなくてもList<Row>でいいだろ
728デフォルトの名無しさん:2007/01/09(火) 17:37:21
>>727 おまい意味ぜんぜんわかってないお
729デフォルトの名無しさん:2007/01/09(火) 17:49:17
>>725
ListViewItemCollectionはidxもらったらアイテムを返すけどな
これがおかしいというのか?
730デフォルトの名無しさん:2007/01/09(火) 17:52:49
インデクサを使えと言いたいんじゃないか?
731デフォルトの名無しさん:2007/01/09(火) 17:59:17
>>729
だから上の人はItemの管理をそのクラスに任すんじゃなくてItemにおうじたHeightの管理をそのクラスで行うといってるんだろうが。
勝手に仕様変えてこれでいいだろとは何事だアホタレ。
732デフォルトの名無しさん:2007/01/09(火) 18:01:29
昨日か一昨日くらいのJavaスレの二の舞になってきました
733デフォルトの名無しさん:2007/01/09(火) 18:02:34
冬だからな
734デフォルトの名無しさん:2007/01/09(火) 18:23:25
最近どこもかしこもこんな感じなのはそういった理由か
735デフォルトの名無しさん:2007/01/09(火) 18:31:09
ゆとり世代、馬鹿の壁。
736デフォルトの名無しさん:2007/01/10(水) 00:05:59
あっちでも「バカの壁」使ってた奴か?
737デフォルトの名無しさん:2007/01/10(水) 00:35:03
http://support.microsoft.com/kb/326201/ja#top
のlpszSourceUrlNameとlpszLocalFileNameにキャッシュのURLとファイル名が集まるらしいんですけど、
その内容をstring等で表示したりとってきたりするには、どこにどういったコードを入れたらいいのでしょう?
738デフォルトの名無しさん:2007/01/10(水) 00:39:29
System.Runtime.InteropServices の Marshal クラス調べれ。
あと DllImport に手を出すなら MSDN のアンマネージ コードとの相互運用以下を熟読、これ必須。
739まよい羊:2007/01/10(水) 08:26:42
Visual Studio 2005にてC#であるアプリを作っているのですが、日本語環境では
問題なく動作。
ただ、中国語OSでCLICKONCEでDownloadして利用すると、Corelab.Oracle原因
でエラーが出ます。
多分、Oracleクライアント使うと問題無く動くのですが、どうしてもクライアント側
の運用に負担をかけたくなく、corelab.oracleで完結させたいと考えています。

このエラー回避について何かご存知の方がいれば、お知恵を拝借したいと思います。
740デフォルトの名無しさん:2007/01/10(水) 08:43:49
俺新年になってからしみじみと思ったんだが、
「日東紡」と「ニット帽」てすげえ似てるよな、と・・・
741デフォルトの名無しさん:2007/01/10(水) 09:25:17
ニート坊
742デフォルトの名無しさん:2007/01/10(水) 09:32:58
つかおまいら答え返すときは2chだからといってもちゃんと質問の意図を汲み取ってからしなはれ。
前述の質問でもちゃんと読んでたらそうは返さないだろうっての多すぎ。
ねたにしてもねたになりきれてないし。
743デフォルトの名無しさん:2007/01/10(水) 09:51:05
ちゃんとした質問にはちゃんとした答えが返ってると思うが
744デフォルトの名無しさん:2007/01/10(水) 14:03:50
継承とインターフェースの違いを述べよ
745デフォルトの名無しさん:2007/01/10(水) 14:32:07
遺伝と学習
746デフォルトの名無しさん:2007/01/10(水) 14:36:35
メロンとバナナどっちがみかんか
747デフォルトの名無しさん:2007/01/10(水) 14:38:57
りんご!
748デフォルトの名無しさん:2007/01/10(水) 14:41:29
ちんぽと右手
749デフォルトの名無しさん:2007/01/10(水) 15:09:10
でっかいみかんと、でっかいメロン、その上にはでっかいバナナ
750デフォルトの名無しさん:2007/01/10(水) 18:46:22
もう少し真面目に。
751まよい羊:2007/01/10(水) 19:01:03
質問がわかりにくいか、難しかったのでしょうか?
752デフォルトの名無しさん:2007/01/10(水) 19:12:19
中国語OS使ってるのはこのスレにあなただけみたいですよ。
753デフォルトの名無しさん:2007/01/10(水) 19:18:17
CoreLab使ってかつ中国語OSとなるとレアだねやっぱり。
あきらめてOracleクライアントを入れるか、WebサービスにしてDBアクセスはサーバーでやらせるか・・
754デフォルトの名無しさん:2007/01/10(水) 19:25:47
はたしてCoreLabの動作環境とか満たしているのかな?

ところで…

〜でエラーが出ます。

これは何も言ってないのと同じ。
具体的にどんなエラーが出たか書くべき。
755デフォルトの名無しさん:2007/01/10(水) 19:40:33
質問はこんな感じでどうかな?

Visual Studio 2005のC#で、CoreLab.oracleを使ってOracleにアクセスするアプリを
作っているのですが、日本語Windowsでは問題なく動作します。
しかし中国語Windows上では、CLICKONCEでDownloadして利用するとCorelab.Oracleが原因
で 〜〜エラーが出ます。

多分、Oracleクライアント使うと問題無く動くと思いますが、どうしてもクライアント側
の運用に負担をかけたくなく、corelab.oracleで完結させたいと考えています。

このエラー回避について何かご存知の方がいれば、お知恵を拝借したいと思います。
756デフォルトの名無しさん:2007/01/10(水) 21:13:56
で、何のエラーがでるわけ?
757デフォルトの名無しさん:2007/01/10(水) 22:26:10
中国公安部エラー
758デフォルトの名無しさん:2007/01/10(水) 23:59:29
ライセンス登録されていませんエラーじゃないのかw
759デフォルトの名無しさん:2007/01/11(木) 02:06:30
そういえば、中国語というか日本語以外の環境で動かすと日付などのフォーマットが変わるから
DateTimeの引数なしのToString()とか意識してなくて挙動が変わったりとか。
CoreLab.oracleは使ったことないのでよくわからん。

漢字が微妙に違ってるけどなんとなく読めてなんとなく意味が通じるのがちょっと楽しい。
漢字のみの部分が多言語対応されてないリソースで日本語が表示されてるのか
ちゃんと中国語になってるのか一瞬わからなくて困ったりする。
760デフォルトの名無しさん:2007/01/11(木) 07:37:04
既に起動してあるWindows Live Messengerの人との会話の窓を
アプリ上のボタンを押下することによってアクティブ化し
タイマーを使って一定間隔でメッセージを自動送信したいのですが可能でしょうか?
もし可能だとしたらどのような方法でメッセの窓をアクティブ化するかご教授ください。

下記が途中まで作ったコードです。タイマー周りは後から実装予定です。

private void button1_Click(object sender, EventArgs e) {
    // textBox1 で指定した「クラス名」の Window をアクティブにする
    IntPtr hwnd = FindWindow(textBox1.Text, null);
    if(hwnd != IntPtr.Zero) {
        if(IsWindowVisible(hwnd)) {
            SetForegroundWindow(hwnd); // アクティブにする
        }
    }
    SendKeys.Send("保守{ENTER}");
}

この方法だとnotepadなどはアクティブ化できましたが、他のTeraPadやメッセなどは
まったく動きませんでした。
761760:2007/01/11(木) 07:57:38
要はあるボタンを押したら
タスクをメッセ窓に切り替えて自動でメッセージ送信したいということです。
762デフォルトの名無しさん:2007/01/11(木) 09:29:57
SetForegroundWindow()には条件が書いてあったろう
SetWindowPosも使ってみ
763デフォルトの名無しさん:2007/01/11(木) 16:20:02
ほんとにインターフェースとクラスの区別をしたせいで実装がすごいめんどくさくなるときがある・・・
クラス自体にはメソッドの規約などの概念をもたせないで実装についての定義のみを記述するように分離すればインターフェースとクラス共存できて実装の多重継承とか出来るのに・・・(´・ω・`)
764デフォルトの名無しさん:2007/01/11(木) 16:23:38
WindowsFormでいろいろFormをいじってる最中に描画をしないで、まとめて描画させることって出来ますか?
765デフォルトの名無しさん:2007/01/11(木) 16:43:29
>>763
>ほんとにインターフェースとクラスの区別をしたせいで実装がすごいめんどくさくなるときがある・・・
共通して使うメソッドをまとめて別クラスつくればいいんじゃないの?
766デフォルトの名無しさん:2007/01/11(木) 16:47:00
>>764
SuspendLayout/ResumeLayout
767デフォルトの名無しさん:2007/01/11(木) 16:54:52
C#でJavaのstatic import と同じようなことを行わせたいのですが、
どのように記述すれば良いのでしょうか?

using キーワードで出来そうで出来ないみたいのですが。。。
768デフォルトの名無しさん:2007/01/11(木) 17:02:56
>>766 さんくすこ。
ついでにGenericsだと
T Max<T>(T lhs,T rhs){
return Max(lhs,rhs);
}
みたいなことってかけない?
769デフォルトの名無しさん:2007/01/11(木) 17:12:53
>>768
T Max<T>( T lhs, T rhs ) where T : IComparable
{
    if( lhs.CompareTo( rhs ) > 0 )
        return lhs;
    else
        return rhs;
}
770デフォルトの名無しさん:2007/01/11(木) 17:15:36
T Accumurate<T>(T lhs,T rhs){
 return lhs+rhs;
}
みたいなのは?
771デフォルトの名無しさん:2007/01/11(木) 17:50:45
>>770
リフレクションつかわんと無理だな。
772デフォルトの名無しさん:2007/01/11(木) 17:57:08
ルビーの指輪か
773デフォルトの名無しさん:2007/01/11(木) 18:28:33
>>767
あえて付けてない
というかJavaの暴挙
774デフォルトの名無しさん:2007/01/11(木) 19:22:46
ふー、鯖が移転していることにやっと気づいたぜ。
775デフォルトの名無しさん:2007/01/11(木) 19:30:41
>>773
thx。やっぱり無いのか。

これまでの有名な言語から色々インスパイアして出来上がった言語だからか、
移行しやすいのは良いけど、半端に似ているので混乱しますね。
776デフォルトの名無しさん:2007/01/11(木) 22:03:23
悪いところまで真似したら新しく言語を作る意味なし
777デフォルトの名無しさん:2007/01/12(金) 00:18:15
P/Invoke を使ってネイティブ DLL 内のメニュー文字列を取得しようと
していますが、LoadMenu で 0 が返ってきて取得できていません。
どこかおかしいところはありますでしょうか。

[DllImport("user32.dll", EntryPoint = "LoadMenu")]
static extern IntPtr LoadMenu(IntPtr HInstance, string lpString);

[DllImport("user32.dll")]
static extern bool GetMenuItemInfo(IntPtr hMenu, uint uItem, bool fByPosition, ref MENUITEMINFO lpmii);

[StructLayout(LayoutKind.Sequential)]
public struct MENUITEMINFO
{
public uint cbSize;
public uint fMask;
public uint fType;
public uint fState;
public int wID;
public int hSubMenu;
public int hbmpChecked;
public int hbmpUnchecked;
public int dwItemData;
public string dwTypeData;
public uint cch;
public int hbmpItem;
}
778デフォルトの名無しさん:2007/01/12(金) 00:19:43
つづき


public static string LoadMenu(string dllname, string menuname, uint menuID)
{

// DLL を開く
IntPtr lib = LoadLibrary(dllname);
IntPtr hMenu = LoadMenu(lib, menuname);

MENUITEMINFO mif = new MENUITEMINFO();
mif.cbSize = (uint)Marshal.SizeOf(typeof(MENUITEMINFO));
mif.fMask = 0x40;
mif.fType = 0;
mif.dwTypeData = null;

bool ret = GetMenuItemInfo(hMenu, menuID, true, ref mif);

// DLL を開放
FreeLibrary(lib);

return mif.dwTypeData;
}

Console.WriteLine(ReadDLLResources.LoadMenu("res_ja.dll", "32409", 32410));
779デフォルトの名無しさん:2007/01/12(金) 00:29:43
LoadMenu の第二引数、実はリソース名じゃなくてリソース識別子だったりしないか?
780デフォルトの名無しさん:2007/01/12(金) 00:38:12
>>779
レスありがとうございます。
hogehoge.rc ファイルの

32409 MENU
BEGIN
POPUP "ポップアップ"
(略)
↑の32409 を指定したのですが、これではないですか?
781デフォルトの名無しさん:2007/01/12(金) 00:46:34
C++では取得出来た?
782デフォルトの名無しさん:2007/01/12(金) 00:48:29
>>781
C++ では試してないです。C# しかできないので orz
783デフォルトの名無しさん:2007/01/12(金) 00:51:58
""でくくるなら両方やる
784デフォルトの名無しさん:2007/01/12(金) 00:58:56
>>783
どもです。リソース識別子を string → uint 渡しにすることで、LoadMenu で
メニューのハンドルは取得できました。
ですが、GetMenuItemInfo でメニューの文字列はまだ取得できません。

mif.dwTypeData にメニューの文字列が入っているはずなのですが・・・
785デフォルトの名無しさん:2007/01/12(金) 01:06:37
>MFT_STRING 型のアイテムの情報を取得するには、まずこのメンバに 0 (NULL) を
>指定して GetMenuItemInfo 関数を呼び出します。このとき、 cch メンバにはアイテ
>ムのテキストを格納するのに必要なバッファのサイズ(Unicode 版では文字数)が格
>納されます。バッファを確保した後、このメンバにバッファアドレスを指定して再び
>GetMenuItemInfo 関数を呼び出します。
786デフォルトの名無しさん:2007/01/12(金) 01:08:28
GetMenuItemInfo は3番目がtrueだったら2番目は何番目かの数字だぞ
ID渡すならfalseで
787デフォルトの名無しさん:2007/01/12(金) 01:16:12
というか GetMenuString のほうがてっとりばやかろ
GetMenuItemInfo だと微妙に微妙だし
788デフォルトの名無しさん:2007/01/12(金) 01:26:57
>>787
お返事ありがとうございます!GetMenuString を使ったら文字列が取得できました!!
色々探しているときに GetMenuString は obsolete だから GetMenuItemInfo を
使えと書いてあったので、GetMenuItemInfo でやろうとしていました。

今後の人の参考に、コードを書いておきます。

ありがとうございました。
789デフォルトの名無しさん:2007/01/12(金) 01:30:56

[DllImport("user32.dll", EntryPoint = "LoadMenu")]
static extern IntPtr LoadMenu(IntPtr HInstance, uint lpString);

つづき

[DllImport("user32.dll")]
static extern bool GetMenuItemInfo(IntPtr hMenu, uint uItem, bool fByPosition, ref MENUITEMINFO lpmii);

[DllImport("user32.dll")]
static extern int GetMenuString(IntPtr hMenu, uint uIDItem, StringBuilder lpString, int nMaxCount, uint uFlag);

public static string LoadMenu(string dllname, uint menuname, uint menuID)
{

// DLL を開く
IntPtr lib = LoadLibrary(dllname);
IntPtr hMenu = LoadMenu(lib, menuname);

StringBuilder sb = new StringBuilder();

GetMenuString(hMenu, menuID, sb, 256, 0x00000000);

// DLL を開放
FreeLibrary(lib);

return sb.ToString();
}

Console.WriteLine("'" + ReadDLLResources.LoadMenu("res_ja.dll", 32409, 32410) + "'");

790デフォルトの名無しさん:2007/01/12(金) 19:30:24
private void listBox1_DoubleClick(object sender, EventArgs e) {
 Process sprocess = (Process)((ListBox)sender).SelectedItem;
 Hide();
 if(sprocess == null) {
  Debug.WriteLine("sprocessがnull");
 } else {
  SetForegroundWindow(sprocess.MainWindowHandle);
  sousin();
 } 
 Show();
}

private void timer1_Tick(object sender, EventArgs e) {
 Hide();
 if(sprocess == null) {
  Debug.WriteLine("processがnull");
 } else {
  SetForegroundWindow(sprocess.MainWindowHandle);
  sousin();
 }
 Show();
}

リストボックスのウィンドウのタイトルをダブルクリックして画像を送信するプログラムを書いてるのですが
ダブルクリックして取った値 プロセス変数 sprocess をタイマー処理の中でも使う方法ってありますか?

このままですと、当然ですがエラー
1名前 'sprocess' は現在のコンテキスト内に存在しません.
と出てきてしまいます。
791デフォルトの名無しさん:2007/01/12(金) 19:31:24
2chがなくなりそうなのに、のんきだなw
792デフォルトの名無しさん:2007/01/12(金) 19:34:54
VSTFSでチームビルドを行うと以下のようなエラーが出てしまうんですが
どなたか解決策等ご存知の方いらっしゃいませんか?
Buildフォルダのパーミッションとかは問題ないはずです

ターゲット InitializeEndToEndIteration:
UpdateBuildNumberDropLocation BuildNumber='BuildTest_20070112.11' DropLocation='\\dev01\VSTFSWork\BuildTest_20070112.11'
C:\Program Files\MSBuild\Microsoft\VisualStudio\v8.0\TeamBuild\Microsoft.TeamFoundation.Build.targets(165,5): error : 許可されていない操作を実行しようとしました。
プロジェクト "TFSBuild.proj" 内のターゲット "InitializeEndToEndIteration" のビルドが終了しました。 -- 失敗

プロジェクト "TFSBuild.proj" のビルドが終了しました。 -- 失敗

ビルドに失敗しました。
C:\Program Files\MSBuild\Microsoft\VisualStudio\v8.0\TeamBuild\Microsoft.TeamFoundation.Build.targets(165,5): error : 許可されていない操作を実行しようとしました。
0 警告
1 エラー
793デフォルトの名無しさん:2007/01/12(金) 19:36:33
>>790
よくわからんが
Process sprocess = (Process)((ListBox)sender).SelectedItem;
をタイマーの方にも書けばいいんじゃないの?
794デフォルトの名無しさん:2007/01/12(金) 19:36:38
C#で全角英数字を半角英数字に変換する方法をどなたか教えてもらえないでしょうか。
Regex.Replace()を使えばできそうな気もするんですが、書き方がよくわからない。
VisualBasic.StrConv()はいらんものまで変換してしまって…

795デフォルトの名無しさん:2007/01/12(金) 19:40:36
>>794
前にも同じ質問しなかった???
796デフォルトの名無しさん:2007/01/12(金) 19:42:52
回答ありがとうございます!
1回ダブルクリックしたらそれ以降はタイマー処理で自動でやっていきたいので
それだと無理なんです。

private void timer1_Tick(object sender, EventArgs e) {
Process sprocess = (Process)((ListBox)sender).SelectedItem;
Hide();
if(sprocess == null) {
Debug.WriteLine("processがnull");
} else {
SetForegroundWindow(sprocess.MainWindowHandle);
keysousin();
}
Show();
}

と書いた場合、
Process sprocess = (Process)((ListBox)sender).SelectedItem;

の行で

InvalidCastException はハンドルされませんでした。
型 'System.Windows.Forms.Timer' のオブジェクトを型 'System.Windows.Forms.ListBox' にキャストできません。

と出てしまいます。
797デフォルトの名無しさん:2007/01/12(金) 19:43:16
604 名前:デフォルトの名無しさん[sage] 投稿日:2007/01/05(金) 19:29:13
Regex.Replace / MatchEvaluator / StrConv 組み合わせる
798デフォルトの名無しさん:2007/01/12(金) 19:43:56
603 名前:599[さんくすsage] 投稿日:2007/01/05(金) 19:26:22
>>600
さんくす。とりあえず
String.Normalize(NormalizationFrom.FromKC)
で、全角英数空白記号が半角になった。FromKDとの違いがワカラン...
副作用ってどんなことか気になるが、とりあえずOK?。

>>601
今回は数字のみだったので、ループで済ましてたが、
英字や記号までとなると、なんか馬鹿らしくなる。

だれかPHPのmb_convert_kana関数を移植してくれんだろうか?
799デフォルトの名無しさん:2007/01/12(金) 19:50:03
>>796
上手くいかないよと言う前に。
エラーメッセージを良く見ろ。
800デフォルトの名無しさん:2007/01/12(金) 19:50:37
>>796
sprocessをメンバに格上げすれば?
801デフォルトの名無しさん:2007/01/12(金) 19:51:25
ふらっとC♯, C#(初心者用) Part12
http://pc10.2ch.net/test/read.cgi/tech/1168271508/
802デフォルトの名無しさん:2007/01/12(金) 19:51:28
>>796
ああ、失敬。(Process)((ListBox)sender).SelectedItemじゃなくて
(Process)listBox1.SelectedItem か。
つかそれくらい適当に書き換えてくれよ・・・
803デフォルトの名無しさん:2007/01/12(金) 19:53:54
多分、senderを理解してないんだろう。
804デフォルトの名無しさん:2007/01/12(金) 20:06:12
52 名前:山師さん@トレード中[] 投稿日:2007/01/12(金) 19:57:23 ID:95OSqWEW
大規模OFFスレにて【2ちゃんねる廃止反対オフ】スレが立っています。
内容としては廃止反対デモ運動を開催します。
参加できる方、協力していただける方、集まってください
http://off4.2ch.net/test/read.cgi/offmatrix/1168580932/
805デフォルトの名無しさん:2007/01/12(金) 20:07:08
>>799
すみません。読んだのですが。。。キャストの問題ですか・・?

>>800
static Process sprocess = (Process)((ListBox)sender).SelectedItem;
ってことですか?

>>802
(Process)listBox1.SelectedItemですか?

>>803
その通りです。ちょっと勉強します;
806デフォルトの名無しさん:2007/01/12(金) 20:10:21
sprocessをタイマのtagにでも突っ込んどけばいいんじゃね?
807デフォルトの名無しさん:2007/01/12(金) 20:12:18
>>806
それは初心者にのみ許される技。
808デフォルトの名無しさん:2007/01/12(金) 20:15:48
静的フィールドにしてしまうよりはずっとマシだが
809デフォルトの名無しさん:2007/01/12(金) 20:19:35
>static Process sprocess
どこからこの発想が出てくるんだ?
810デフォルトの名無しさん:2007/01/12(金) 20:23:58
ニュース速報でこんなのが出るんだが…
だれが遊んでるの?

17 名前:赤羽地方裁判所 ★[停止] 投稿日:停止
差し押さえました。
811デフォルトの名無しさん:2007/01/12(金) 20:24:25
>>806
タイマーのtag に sprocess といれましたがダメでした。

>>807
staticをつければいいのかと・・

最初の1回のみのダブルクリックによって発生したイベントでとった値をそのまま
タイマーで1分ごとで使いまわす というのは無理ってことでしょうか・・。
812デフォルトの名無しさん:2007/01/12(金) 20:31:17
form1(多分この名前だろ)のメンバーにしろよ。
staticじゃ無くて。
813デフォルトの名無しさん:2007/01/12(金) 20:52:41
>>821

sprocessをform1クラスのメンバー変数にしろってことですよね?

Process sprocess = (Process)((ListBox)sender).SelectedItem;
ごと外に出したのですが
名前 snder' は現在のコンテキスト内に存在しません
と出てきてしまいました orz
814デフォルトの名無しさん:2007/01/12(金) 20:56:59
>>813
悪いこと言わないから何か適当な入門書買って
一から勉強し直したほうがいいと思うよ。
これ以上はこのスレで質問することじゃない。
815デフォルトの名無しさん:2007/01/12(金) 21:00:47
>>814
俺も同意見
>>813
明日本屋か、図書館行ったほうがいいよ。
お勧めの入門書とかは聞かないでね。

入門は遥か前なので…
816794:2007/01/12(金) 21:06:26
別スレで1週間前にも同じ質問した人がいたんだな。失礼。
>>797 の方法ですませた。

string replaced = Regex.Replace(str, "[a-z0-9]", new MatchEvaluator(RegexReplaceEvaluator));

///
static public string RegexReplaceEvaluator(Match m)
{
return Strings.StrConv(m.Value, VbStrConv.Narrow, 0);
}
817デフォルトの名無しさん:2007/01/12(金) 21:45:03
みなさんとても優しいですね
818デフォルトの名無しさん:2007/01/12(金) 22:43:48
>>816
"[a-z0-9]"
これじゃ一文字ずつの置換になって効率悪い希ガス
819デフォルトの名無しさん:2007/01/12(金) 23:02:47
>>818
816でいいと思うよ。

何か代替案あるなら教えて!
820デフォルトの名無しさん:2007/01/12(金) 23:04:02
[a-z0-9]+
821代替案:2007/01/12(金) 23:31:02
string 全角To半角(string text){ StringBuilder sb = new StringBuilder();
for(int i = 0; i < text.Length; i++){
switch(text[i]){
case 'A':sb.Append('A');break;
case 'B':sb.Append('B');break;
...以下略
}}
822デフォルトの名無しさん:2007/01/12(金) 23:36:31
('A');
823デフォルトの名無しさん:2007/01/12(金) 23:50:33
俺ならこうする

static String ToHankaku(String str)
{
    if (str == null) return null;
    StringBuilder sb = new StringBuilder(str.Length);
    foreach (Char c in str)
    {
        if ('0' <= c && c <= '9') sb.Append((Char)(c - ('0' - '0')));
        else if ('A' <= c && c <= 'Z') sb.Append((Char)(c - ('A' - 'A')));
        else if ('a' <= c && c <= 'z') sb.Append((Char)(c - ('a' - 'a')));
        else sb.Append(c);
    }
    return sb.ToString();
}
824デフォルトの名無しさん:2007/01/12(金) 23:57:07
('A' - 'A')));
825デフォルトの名無しさん:2007/01/12(金) 23:57:48
顔文字だらけだな
826デフォルトの名無しさん:2007/01/13(土) 00:00:27
とりあえずA-Za-zだけ
private string ToNarrow( string str )
{
    StringBuilder sb = new StringBuilder( str.Length );

    for( int i = 0; i < str.Length; i++ )
    {
        short s = (short)str[i];
        if( ( s <= -198 && s >= -223 ) || ( s <= -166 && s >= -191 ) )
        {
            s += 288;
        }

        sb.Append( (char)s );
    }

    return sb.ToString();
}
827デフォルトの名無しさん:2007/01/13(土) 00:06:38
マニアックに行くぜ
A-Za-z0-9で
return new string(Array.ConvertAll<char, char>(str.ToCharArray(), delegate(char c) {
    return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')
        ? (char)((int)c - 0xfee0) : c;
})));
828デフォルトの名無しさん:2007/01/13(土) 00:10:36
>>827
intにキャストする必要はないな
829デフォルトの名無しさん:2007/01/13(土) 00:19:36
0xfee0引かんと288足したらええやん
830デフォルトの名無しさん:2007/01/13(土) 00:27:30
'A' &
831デフォルトの名無しさん:2007/01/13(土) 00:28:44
('A' <=
832デフォルトの名無しさん:2007/01/13(土) 00:38:44
<= '9')
<= 'Z')
<= 'z')
833デフォルトの名無しさん:2007/01/13(土) 00:48:10
>>829
桁あふれを期待するコードは好ましくないな
いやまあこんなネタコードに好ましくないも何もないけど
834813:2007/01/13(土) 02:30:46
みなさんありがとうございました。
色々勉強しなおしてみます。
835デフォルトの名無しさん:2007/01/13(土) 02:44:46
C#に限った質問ではないのですが、
.NETでグラフを書くプログラムを作っているのですが
ラベル用にn個の要素を「いい感じ」に色分けするColorの計算方法はないでしょうか?
いまのところ色相をn等分してHSV→RGB変換していますが、いまいち目立ちません
836デフォルトの名無しさん:2007/01/13(土) 02:53:23
隣り合うのは別の色になるように3原色n/3回ずつ使うのは?
837813:2007/01/13(土) 03:36:45
すみません。最後にひとつだけ教えてください。

String kaiwamozi ="会話";

private void updateTaskList() {
  System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcesses();
  listBox1.BeginUpdate();
  listBox1.Items.Clear();
  foreach(System.Diagnostics.Process p in processes) {
    if(p.MainWindowHandle != (IntPtr)0 && p.MainWindowTitle != "") {
      // if(Regex.IsMatch(p.MainWindowTitle, kaiwamozi)) {
        listBox1.Items.Add(p);
      // }
    }
  }
  listBox1.EndUpdate();
}

タスクのウィンドウを全て拾ってリストボックスに表示させたいのですが
例えばMSNメッセを開いてた場合に
メインウィンドウ
誰かとの会話窓その1
誰かとの会話窓その2
とあった場合に、一番手前側にあるウィンドウしか拾ってくれないのですが
これを拾う方法ってありますか?
838デフォルトの名無しさん:2007/01/13(土) 03:39:36
グラフっていってもいろいろあるな。
839デフォルトの名無しさん:2007/01/13(土) 03:41:22
色相を順番に変えるって一番目立たない方法を…
840デフォルトの名無しさん:2007/01/13(土) 04:01:07
IEとか普通のブラウザだと動くAJAXのコードが
C#のWebBrowserコントロールだとエラー吐くことがあるのはなんで?

http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter02/004/sample2/index.html
ためしにこのコード実行しようとすると
指定されたリソースは見つかりませんとか出るんだけど
841840:2007/01/13(土) 04:10:37
わりい
全然普通に動いたわ
何勘違いしてたんだろ俺
842デフォルトの名無しさん:2007/01/13(土) 04:59:43
>>835
RssBanditのコードにOneNoteのタブの色分けを真似してるとこがあった
アートのプロの配色だけにとてもきれい
843デフォルトの名無しさん:2007/01/13(土) 07:29:13
>>837
EnumWindows 関数とか使うしかない
844813:2007/01/13(土) 08:36:02
>>837
ありがとうございます!早速調べてみます
845デフォルトの名無しさん:2007/01/13(土) 10:20:55
スレッドの保有してるウィンドウを列挙するやり方はあるから、
プロセスの中のスレッドを列挙すれば行けない?←やりかたしらんけど。
846デフォルトの名無しさん:2007/01/13(土) 11:57:16
その手のやつは初心者の練習台としては難しすぎて全く向いてない
ちゃんと勉強してからにしたほうがいいよ
847デフォルトの名無しさん:2007/01/13(土) 12:12:16
初心者は分からないからへんなところに突っ込んでいきがち。
848デフォルトの名無しさん:2007/01/13(土) 12:26:25
ったく…
また祭りかよ〜
すっかり騙され値待った。

安心してスレたぁてよっと。
849835:2007/01/13(土) 12:54:23
>>842さん
情報ありがとうございます、ソースを見ましたが固定で色の配列をもっていますね・・
ある程度は固定で持って足りなくなった時に中間を求めるやり方のほうがいいかなぁ
850デフォルトの名無しさん:2007/01/13(土) 12:59:24
やってみてわかってると思うけど中間職つかったら
目立たない。
851デフォルトの名無しさん:2007/01/13(土) 13:03:27
そんなにたくさんの系列を一緒に表示するようなグラフで
色分けで区別するのは無理があると思う
852デフォルトの名無しさん:2007/01/14(日) 02:37:24
>>849
収束に向かっているようですが蛇足で。

人間の目(感覚)にとって適切な色を出力するということなので、固定の配列を用意するというのは、理にかなった正攻法かと思われ。
固定の数を超えた場合は、固定の配列をループして再利用。ただしその色の濃淡を変えていくというのがよいのでは?(もしくは網掛けの利用とか)
853デフォルトの名無しさん:2007/01/14(日) 23:34:34
c#って、.netじゃない普通のvbと比べてどれくらいの速さになりますかね?
やっぱり、ネイティブなvbの方がc#よりも早いのですか?
854デフォルトの名無しさん:2007/01/14(日) 23:48:09
勘違いしてる人が多いけど,.NETのアプリは実行時にネイティブにコンパイルされて
から実行されるから,ネイティブじゃないからから遅いってことはないよ
855デフォルトの名無しさん:2007/01/14(日) 23:56:16
>ネイティブなvb
って表現に違和感アリ
856デフォルトの名無しさん:2007/01/15(月) 00:06:12
まあインタプリタだろうが何だろうが最終的にはネイティブにはなる
857デフォルトの名無しさん:2007/01/15(月) 00:47:23
どこからインタプリタの話が出てくるんだ
858デフォルトの名無しさん:2007/01/15(月) 01:04:48
>>856
いや、ならないだろ。。。
859デフォルトの名無しさん:2007/01/15(月) 01:16:24
速さの比較、てことになると、
どういう部分の処理かによるんじゃね?
WinFormまわりか、純粋な計算なのか
860デフォルトの名無しさん:2007/01/15(月) 02:41:34
ネイティブで動いてるのかマネージドで動いてるのか
わからんくせに気にする奴大杉
861デフォルトの名無しさん:2007/01/15(月) 02:45:07
起動してしまうと.NETの方が一般的に速い。
起動が遅いことについては要因が二つあって、ひとつはJITによるもの。これに関してはngenで改善する。
もうひとつ我慢ならないぐらい遅くなるのは必要なメモリ使用量と仮想記憶サイズの合計が大きいことで、
起動時にはその多くを実メモリに一旦ロードするためにページングなどが多く起きる。
これによる遅延が相当に大きい。
起動してしまえば実際に必要な箇所は限られるので実メモリ(ワーキングセット)は減少し安定してくる。
この問題を解決するには基本的に実メモリを増やすしかない。

そしてユーザーの多くのPCは旧VBはそれなりに動くメモリは搭載しているが.NETには足りないサイズしか搭載していない。
862デフォルトの名無しさん:2007/01/15(月) 02:47:15
>>860
マネージドの対義語はアンマネージドであって、ネイティブではない。
863デフォルトの名無しさん:2007/01/15(月) 02:56:43
べつに対義語じゃなくてもいいと思うが。
864デフォルトの名無しさん:2007/01/15(月) 03:00:48
意味合い伝わればいいだろ。けつの穴のちぃせぇ野郎でございますね
865デフォルトの名無しさん:2007/01/15(月) 03:03:14
対義語と対意語の違いがわからないやつがいるな
866デフォルトの名無しさん:2007/01/15(月) 03:07:16
対意語 の検索結果のうち 日本語のページ 約 105 件中 1 - 48 件目 (0.21 秒)
867デフォルトの名無しさん:2007/01/15(月) 03:09:51
VBったってインタープリタでやってたころの話じゃなかろ?
868デフォルトの名無しさん:2007/01/15(月) 10:48:32
既存のネイティブなアプリのコントロールを
同じスレッドに潜り込み済みのC#製dllからサブクラス化したいと考えています。
常套手段のSetWindowLong/CallWindowProcで実現できたのですが、
その場合注意することってありますか?

フィールドにおいたコールバックのデリゲートがGCされたり
なんてやばい局面は想定されたりするんでしょうか。
869デフォルトの名無しさん:2007/01/15(月) 12:23:52
教えてください。

switch文にて、いくつかの条件で指定するには
どうすればいいのでしょうか

たとえば
case 1 or 2 or 3:
↑1と2と3を指定したいのです。
870デフォルトの名無しさん:2007/01/15(月) 12:29:28
>>869
case 1:
case 2:
case 3:
  文;
  break;
case 4:
871デフォルトの名無しさん:2007/01/15(月) 12:52:05
出来ました。
ありがとうございます
872デフォルトの名無しさん:2007/01/15(月) 15:33:44
System.IntPtr型をbool型に変換するのはどうやればいいんでしょうか?
中身が入っていればtrueを返すような感じでやりたいのですが。
873デフォルトの名無しさん:2007/01/15(月) 15:58:15
>>872
System.IntPtr p;
// ...
bool b1 = p != System.IntPtr.Zero ? true : false;
bool b2 = System.Convert.ToBoolean(p.ToInt64());
874デフォルトの名無しさん:2007/01/15(月) 16:35:43
>>868
デリゲートならGCされることは十分にありうるので、
staticな場所に参照を確保しておく必要がある。

しかし、マネージドコードで安全にサブクラス化を行うために
NativeWindowクラスが用意されてるから、
十分な知識がないのであればこれを使うといい。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.nativewindow.aspx
875デフォルトの名無しさん:2007/01/15(月) 16:37:24
>>873
ありがとうございます。
b1とb2には何が入るんでしょう?
b2にbool型のpの内容が入るんですか?
876デフォルトの名無しさん:2007/01/15(月) 16:44:13
>>873
普通に
bool b1 = p != System.IntPtr.Zero;
でいいんじゃね?
877デフォルトの名無しさん:2007/01/15(月) 16:45:24
>>875
b1もb2もお前さんの期待しているもの(>872)が入る
878デフォルトの名無しさん:2007/01/15(月) 17:08:24
ありがとうございましたー
879デフォルトの名無しさん:2007/01/15(月) 17:18:19
>>873
何この記述。簡略系って奴か?
すごいねびっくり

b1の値は、pの値の変化に動的に変化するの?
それとも、この代入式を入れて更新しないとだめなの?
880デフォルトの名無しさん:2007/01/15(月) 17:21:21
>>879
常識だ

もう少し勉強してから出直してこい
881デフォルトの名無しさん:2007/01/15(月) 17:31:05
http://support.microsoft.com/kb/326201/ja#top
の削除を行わなくて、ファイル名を列挙したいので、下の方のwhileの中のDeleteUrlCacheEntryの行を
先ほど教えていただいたreturnValue = b1;に変更したのですが、無限ループに入ってしまいました。

やっぱり削除を行っていないのでbreakに入らないのでしょうか?
消さない場合はどのようにwhileを抜けたら良いですか?
882868:2007/01/15(月) 17:32:24
>>874
ありがとうございます。
883デフォルトの名無しさん:2007/01/15(月) 18:15:28
クラス内だとeventを同じ型のデリゲートを引数に持つメソッドに渡せるんだね(´・ω・`)
ちょっと便利。
884デフォルトの名無しさん:2007/01/15(月) 18:34:06
>>883
詳しく
885813:2007/01/15(月) 19:14:13
質問です。文法の本を読んで勉強してきましたがどうしても分からないので教えてください

ttp://www.office-matsunaga.biz/cs/description.php?id=17 を参考にしてリストボックスのに列挙してあるウィンドウ名がダブルクリックされたら
それをフォアグラウンドにセットしてキー送信というのを作っているのですが

private void Form1_Load(object sender, EventArgs e) {
  updateTaskList();
  timer2.Interval = 5000; //5秒毎にリストボックス更新
  timer2.Enabled = true;
}

つづく
886813:2007/01/15(月) 19:15:16
private void updateTaskList() {
  System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcesses();
  listBox1.BeginUpdate();
  listBox1.Items.Clear();
  EnumWindows(new EnumerateWindowsCallback(EnumerateWindows), 0);
  listBox1.EndUpdate();
}

private void listBox1_DoubleClick(object sender, EventArgs e) {
  Process process = (Process)((ListBox)sender).SelectedItem;
  Hide();
  
  if(process == null) {
    Debug.WriteLine("processがnull");
  } else {
    SetForegroundWindow(process.MainWindowHandle);
    keysousin();
  }
  Show();
}

private void timer2_Tick(object sender, EventArgs e) {
  updateTaskList();
}

Process process = (Process)((ListBox)sender).SelectedItem;
この部分で
InvalidCastExeption例外が発生し、InvalidCastExeptionはハンドルされませんでした。
型 'System.String' のオブジェクトを型 'System.Diagnostics.Process' にキャストできません。

と出てきてしまいます。どうしたら例外を起こすことなく処理が実行できるか教えてください。
887デフォルトの名無しさん:2007/01/15(月) 19:23:02
ListBoxには文字列をいれてんだろ?キャストできるわけないじゃない
888デフォルトの名無しさん:2007/01/15(月) 19:27:48
ふらっとC♯, C#(初心者用) Part12
http://pc10.2ch.net/test/read.cgi/tech/1168271508/
889デフォルトの名無しさん:2007/01/15(月) 19:29:47
>>885
文字列をプロセスにキャストできるほど万能じゃない
890デフォルトの名無しさん:2007/01/15(月) 19:35:36
キャストが何かおぼえたほうがいいよ!
891デフォルトの名無しさん:2007/01/15(月) 19:40:16
じゅもんをとなえることだな
892813:2007/01/15(月) 19:42:15
あ、確かに。。出直してきます;;
みなさんありがとうございました。
893813:2007/01/15(月) 19:49:06
public int EnumerateWindows(IntPtr hWnd, int lParam) {
 StringBuilder sb = new StringBuilder(0x1000);
 String kaiwamozi = "会話";

 if (IsWindowVisible(hWnd) != 0){// ウィンドウが可視の場合
  if (GetWindowText(hWnd, sb, 0x1000) != 0){ // ウィンドウのキャプションを取得
   String S1 = sb.ToString();
   String S2 = "(" + hWnd.ToString() + ")";
   if(Regex.IsMatch(S1, kaiwamozi)) {//これでメッセウィンドウだけ引っ張ってくる。
    Console.WriteLine(S1); //ウィンドウのタイトル出力.
    listBox1.Items.Add(S1);
   }
  }
 }
// 列挙を継続する為に0以外を返す
 return 1;
}

これがリストボックスにItems.Addしてる部分なんですが。
ウィンドウの名前に関連付けてプロセスを取る方法ってありますか?
894デフォルトの名無しさん:2007/01/15(月) 19:55:21
>>893
チャットとかのログを自動で収集したいのか?
そんあことして、何がしたい?ストーカーか?
895デフォルトの名無しさん:2007/01/15(月) 19:56:39
無駄なことしすぎ。意味分かって書いてる?
せっかくプロセスの一覧とってるんだから使えよ。

Process[] processes = System.Diagnostics.Process.GetProcesses();
foreach(Process p in processes) {
 if(Regex.IsMatch(p.MainWindowTitle, kaiwamozi)) {
  listBox1.Items.Add(p);
 }
}
896813:2007/01/15(月) 19:58:15
>>894
Windows liveメッセって多人数で同じ窓で会話してる時
長時間誰も発言なしで放っておくと参加者が削除されてしまうので
自動で一定時間ごとにメッセージを送信するプログラムを作ってるのです。
897デフォルトの名無しさん:2007/01/15(月) 20:02:46
多分>>896には無理だと思うよ。
何故プロセス取ってるの?
プロセスとってそこからどうするつもり?
898デフォルトの名無しさん:2007/01/15(月) 20:03:48
メッセージ送るだけならプロセスいらんやん
899813:2007/01/15(月) 20:07:51
複数の相手とメッセしてる時に
ListBoxにウィンドウ開いてる分だけ表示して任意の窓をダブルクリックしたら
そのプロセスに対して自動キー送信を一定時間ごとに実行したいということです。

>>895
それですと、メッセウィンドウを複数開いていても1つしかとってきてくれないのです。
name1 - 会話
name2 - 会話
と開いていた時に一番手前側のやつしかとってこない。
900デフォルトの名無しさん:2007/01/15(月) 20:09:15
プロセスとる必要がどこにあるよ?
ウィンドウハンドルだけで十分じゃないか
901デフォルトの名無しさん:2007/01/15(月) 20:09:54
アホの予感・・・
902デフォルトの名無しさん:2007/01/15(月) 20:12:58
SKYPEじゃダメなのか?
903デフォルトの名無しさん:2007/01/15(月) 20:13:40
ToStringをオーバーライドした構造体でも作ってぶち込んどけ
904デフォルトの名無しさん:2007/01/15(月) 20:15:15
初心者って出来ない方向に向かって突き進み
出来ないと判ってから、「その手段で」解決する方法を
質問してくるから問題だ…
905813:2007/01/15(月) 20:16:03
ウィンドウハンドルとはMainWindowHandleのことですよね?
リストボックスに会話開いてる分だけウィンドウのタイトルを列挙し
それをダブルクリックしてフォアグラウンドにしてSendKeys.send()を
同時にしたいので
メインウィンドウだけ取ってくる方法じゃ不可能な気がするのですが。
906デフォルトの名無しさん:2007/01/15(月) 20:17:35
誰がメインウィンドウのハンドルを取れといった
手前でEnumWindowsしてるんだからハンドル全部覚えとけばいいだろうが
907デフォルトの名無しさん:2007/01/15(月) 20:18:05
祭りの予感・・・
908デフォルトの名無しさん:2007/01/15(月) 20:18:10
はっきり言って初心者の手に余るもの作ろうとしているよ。
プログラムじゃなくて、
別の方法考えたほうがいいんじゃないか?
909デフォルトの名無しさん:2007/01/15(月) 20:21:28
もしかしてメッセンジャーを操作するためにC#はじめたの?
910813:2007/01/15(月) 20:27:33
>>906
ごめんなさい。覚えておくというのは
StringBuilderで変数宣言したものに対して
数分だけforなどでまわして配列に格納しておいてそれを使うということでしょうか?

>>908
よく言われますし自分でもそう思います。

>>909
そういうわけではありません。
911デフォルトの名無しさん:2007/01/15(月) 20:29:02
向いてないからやめとけ
912デフォルトの名無しさん:2007/01/15(月) 20:30:05
>>905
sendkeyならアクティブにせにゃならんけど
メッセウィンドウ内のテキストボックスなどのハンドルわかってるんなら
SETTEXTなんかで文字列送ればアクティブにしなくていいよ
SendKeysだとアクティブにしなければならないが
アクティブって状況に応じて変化するから、失敗する場合あるしね

EnumChildWindowかなんかで、テキストボックスなどのハンドルと
そのフォームのキャプションを関連付けてリストに保存しておけば
もっと簡単にできるぞ
913デフォルトの名無しさん:2007/01/15(月) 20:30:39
まずWindowsの基本的な事を勉強した方がいいかと
914813:2007/01/15(月) 20:31:53
>>911
ごめんなさい。どうしてもやりたいのです。。

>>912
貴重な意見ありがとうございます!
SETTEXTというのがあるのですね。早速調べてみます。
915デフォルトの名無しさん:2007/01/15(月) 20:35:28
その前に!!!!!

windows メッセのスレで質問したほうがいいよ…
自動で切断されないようにするにはどうしたらいいのか。
916デフォルトの名無しさん:2007/01/15(月) 20:36:39
自動で切断しないオプションがある予感
917813:2007/01/15(月) 20:37:36
驚く所が違いました。
settextってただのあのせっとてきすとですね;;
EnumChildWindowというので特定のWindowのテキストボックスのハンドルを取れるのですね。
ありがとうございます!

>>915
なるほど・・
918915:2007/01/15(月) 20:41:00
ぐぐったが自動退席になるまでの時間設定できるみたい。
あと自動退席のチェックボックスがありそうな感じだった。
919デフォルトの名無しさん:2007/01/15(月) 20:41:09
WindowsというかWindowに関する碌な知識もなくそんなことをしようなんておこがましいとは思わんかね
920デフォルトの名無しさん:2007/01/15(月) 20:43:06
このスレじゃメッセ使ってない人しかいないんだな。
921813:2007/01/15(月) 20:45:56
複数人同時に参加してるメッセで誰かが退席中になれば
そのウィンドウで長時間、誰からのメッセージの送信がなくても
保持されるという訳ではないですよね?だから作ってるのです。
あと個人的に退席中と表示するのがイヤなので・・・。
922912:2007/01/15(月) 20:47:26
おれも初心者だからくじけずかんばろうぜ

1.メッセウィドウのハンドルをすべて取得:EnumWindow
2.1のメッセウィンドウ内のテキストボックスなどのハンドルをすべて取得:EnumChildWindow、FindWindowExなど
3.リストボックスに、メッセウィンドウのタイトルと2のハンドルを格納
4.メッセージを2のハンドルに送る

class メッセWndItem
{
    string hwnd="";//テキストボックスなどのハンドル
    string Title="";//メセウィンドウのキャプション
}

List<メッセWndItem> lbメッセWndList=new List<メッセWndItem>();
const uint WM_SETTEXT = 0x000C;
string msg="自動ログ:ただいま離席中";

//メッセージを送る
SendMessage(lbメッセWndList[lbメッセWndList.SelectItem.Index].hWnd, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalAnsi(msg));
923デフォルトの名無しさん:2007/01/15(月) 20:47:48
退席中にしなけりゃいいじゃん?
924813:2007/01/15(月) 20:54:28
>>912
ありがとうございます。がんばります。
そんな方法があるのですか・・・。調べながらちょっとやってみます!

>>923
恐らく誰かが(自分も含む)退席中になってようがなかろうが、
自動で参加者が削除されるのだと思います。
そして発言なしで参加者が自動的に削除されるまでの時間は4分という情報もあります。
925912:2007/01/15(月) 20:54:53
一部訂正

ListBox lb=new ListBox();
//メッセージを送る
SendMessage(lbメッセWndList[lb.SelectItem.Index].hWnd, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalAnsi(msg));
926デフォルトの名無しさん:2007/01/15(月) 20:55:26
見づらいからいちいち煽りにレスつけんなよ
927デフォルトの名無しさん:2007/01/15(月) 21:35:12
本間教授がここにも
928デフォルトの名無しさん:2007/01/15(月) 23:16:20
デスクトップのサイズはどうしたら取得できますか?
1024×768 みたいな解像度で設定されている値です。
929デフォルトの名無しさん:2007/01/15(月) 23:17:49
Screen.PrimaryScreen.Bounds
930928:2007/01/15(月) 23:27:24
さっそくの回答ありがとうです。
2chの人は親切だって話は本当なんですね。
931デフォルトの名無しさん:2007/01/15(月) 23:59:04
>>930
format c:してcね
932デフォルトの名無しさん:2007/01/16(火) 00:05:34
SystemInformationもあるな
933デフォルトの名無しさん:2007/01/16(火) 02:16:33
>>924
AutoHotKey使えよ
934デフォルトの名無しさん:2007/01/16(火) 04:00:03
先生方、.NetFramework のコントロールって Java みたいに
Action って無いの?

右クリックメニューの中のメニューアイテムと、
メニューバーの中のメニューアイテム、いちいち Enabled とかの
同期を取るように書くの、めんどくさいよ・・・。
935デフォルトの名無しさん:2007/01/16(火) 04:19:16
>>934
MenuItem.Selected=ContextMenuItem.Selected;
936デフォルトの名無しさん:2007/01/16(火) 07:31:23
string A ="hogehoge";
string B ="hoge";
int C = A.IndexOf(B);
のように、文字列を検索するコードを書いたのですが、

'System.NullReferenceException' のハンドルされていない例外が ConsoleApplication.exe で発生しました。

と表示されます。どうすればエラーは消えますか?
937デフォルトの名無しさん:2007/01/16(火) 07:33:39
それだけのコードじゃ例外は発生せん。別の箇所じゃろ
938デフォルトの名無しさん:2007/01/16(火) 08:04:16
string A の内容がループで毎回入れ替わるようになっているんですが、もしかしてそれが原因でしょうか?
939デフォルトの名無しさん:2007/01/16(火) 08:06:27
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。
って出てます。

ループの回数も結構多いので、実行して終了したあと少し時間を置いてエラーが出ます。
940デフォルトの名無しさん:2007/01/16(火) 08:09:18
A が null なんだろ
941デフォルトの名無しさん:2007/01/16(火) 08:16:07
if(A==null){break;}を入れたらうまくいきました。
ありがとうございました。
942813:2007/01/16(火) 08:26:59
912さんの教えいただいた
SendMessageメソッドの第一引数

lbメッセWndList[lb.SelectItem.Index].hWnd をどのように書けばいいか分かりません。
教えてくださいm( )m

とりあえず適当にテキストボックス作って
SendMessage(this.textBox1.Handle, WM_SETTEXT, 0, (int)Marshal.StringToHGlobalAnsi(msg));
とし、SendMessage送ることだけはできるようになりました。
943デフォルトの名無しさん:2007/01/16(火) 10:44:33
Dictionary<int, IntPtr>かDictionary<string,IntPtr>

あと、そのコードリークしてるよ?
StringToHGlobal***はちゃんとIntPtrで受けて
SendMessageのあとにFreeHGlobalしろ
944デフォルトの名無しさん:2007/01/16(火) 14:14:16
下のような、List<>を継承したクラスにプロパティを追加したものを、XmlSerializerを使ってXMLへシリアライズしたいんだけど、XMLへプロパティ(ID)が出力されません。なにか属性指定などが必要ですか?

--- Listのサブクラス
    public class HogeList : List<Foo>
    {
        private int id = 0;
        public int ID
        {
            get { return this.id; }
            set { this.id = value; }
        }
    }

--- 出力結果(かなり省略版)
<?xml>
<Hoge>
<Foo>...</Foo>
<Foo>...</Foo>
</Hoge>
</xml>
945デフォルトの名無しさん:2007/01/16(火) 14:26:42
>>884
こんな感じ
class EventTest {
public event VoidDelegate Left;
public event VoidDelegate Right;
void ExecEvent(VoidDelegate deleg) { deleg(); }
public void DoEvent() {
ExecEvent(Left);
ExecEvent(Right);
}
}
static void OnRight() {
Console.WriteLine("Right!");
}
static void OnRight2() {
Console.WriteLine("Right2!");
}
static void OnLeft() {
Console.WriteLine("Left!");
}
static void Main() {
EventTest et = new EventTest();
et.Left += OnLeft;
et.Right += OnRight;
et.Right += OnRight2;
et.DoEvent();
946デフォルトの名無しさん:2007/01/16(火) 15:31:51
C:\Documents and Settings\Owner\Local Settings\Temporary Internet Files
の中にあるファイルはSystem.IO.File.CopyやSystem.IO.File.Moveで移動させることはできないんでしょうか?
ファイル名の指定が間違ってるのかな・・・

また、他にもファイル移動の方法がありましたらご教授ください。
947デフォルトの名無しさん:2007/01/16(火) 16:20:52
そのフォルダは仮想フォルダみたいなもんだからじゃ?
コマンドプロンプトからTemporary Internet Filesに移動してdirしてみたら
948デフォルトの名無しさん:2007/01/16(火) 16:40:12
>>942
[DllImport("user32.dll", CharSet=CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, String lParam);

と定義すればわざわざ自前でマーシャラつかわなくてすむよ。
949デフォルトの名無しさん:2007/01/16(火) 17:06:37
>>945
イベントアクセサ(add;remove;)を使ってLeftイベントを定義してみたら
「イベント 'EventTest.Left' は += または -= の左側にのみ表示されます。」とエラーになった。
当たり前といえば当たり前だけどなんか気持ち悪い
950デフォルトの名無しさん:2007/01/16(火) 17:23:51
dirってフォルダ表示ですか?うまく表示されないんですけど・・・。
あぁこのフォルダ厄介だぁ。移動がうまいこといきません
951デフォルトの名無しさん:2007/01/16(火) 20:25:29
だから「移動がうまいこといかない」ってどういうことなんだよ!!
952デフォルトの名無しさん:2007/01/16(火) 20:39:29
触るな危険って意味がわからないのかな?
953デフォルトの名無しさん:2007/01/16(火) 21:12:54
>あぁこのフォルダ厄介だぁ

おまえは何を言っているのだ
954デフォルトの名無しさん:2007/01/16(火) 22:04:08
>>944
コレクションとかIEnumerableを継承しているとプロパティは出力されない
XmlSerializeのトピックに例外事項として書かれているはず。
955デフォルトの名無しさん:2007/01/16(火) 22:09:32
API使ってて、結果の集合を返す関数が提供されているとき
配列で返すなら、List<T>で返して欲しいな。とか思うことありません?
自分でAPI定義してても、IEnumerable<T>で返すか、IList<T>, T[], ICollection,List<T>
どれで返すのか迷ったりしてましたがList<T>で返すと特に嫌がられることってありますかね?
(相手は.Net2.0以降を仮定してもよいとして)
956デフォルトの名無しさん:2007/01/16(火) 22:38:02
順序さえ分かればいいのであればIEnumerable<T>、序数が重要であればIList<T>で返して欲しい。

クラスで返す必要はないだろ。
957デフォルトの名無しさん:2007/01/16(火) 22:40:31
クラス内部でListじゃなくて自作のIList実装を使いたくなるかもしれないし
958デフォルトの名無しさん:2007/01/16(火) 22:47:24
>>956
List<T>ならList<T>で返して欲しいけどなあ。
IEnumerable<T>で返されたらIList<T>やその他のインターフェースのメソッドが一切使えなくなるわけだし。
でも>>957の言うことももっともかも。
959デフォルトの名無しさん:2007/01/16(火) 23:16:31
>>944
シリアライズについて詳しくないけど
プロパティって、外部に見せるためのラッパーみたいなものでしょ(表現おかしい?)
で、内部的に保持するidがきちんとxmlとして出力されてるなら
プロパティも仮想的に保持されるし、なにも問題ないんじゃないの?
960デフォルトの名無しさん:2007/01/16(火) 23:26:29
>>959
お前は何を言っとるんだ
961デフォルトの名無しさん:2007/01/16(火) 23:27:23
次スレの季節。
無駄なことで消費が早かった。
962デフォルトの名無しさん:2007/01/16(火) 23:40:19
>>959
>(表現おかしい?)
なぁ・・・表現だけなのか?
963デフォルトの名無しさん:2007/01/16(火) 23:44:03
>>959
>プロパティって、外部に見せるためのラッパーみたいなものでしょ

フィールドのように使えるが、実際はメソッド。
メソッドをシリアライズするのか? ということ。
964デフォルトの名無しさん:2007/01/16(火) 23:57:57
XMLシリアライズについtで勉強して来い
965デフォルトの名無しさん:2007/01/17(水) 00:02:37
日本語読め・・・XMLは日本語でもねぇな


文字読めるようになってから書け
966デフォルトの名無しさん:2007/01/17(水) 11:08:20
それ以前にシリアライズが何かが分かってない予感とエスパーしてみる
967デフォルトの名無しさん:2007/01/17(水) 13:18:01
誰に言ってんのか分からない…
XMLシリアライズは、いわゆるシリアライズのイメージと違う部分が多い。
プロパティのシリアライズなんてそんな感じ。
968デフォルトの名無しさん:2007/01/17(水) 14:58:26
XMLシリアライズはpublic限定名時点で終わってる
969デフォルトの名無しさん:2007/01/17(水) 21:02:00
public限定はむしろメリット
Setterさえ制御できれば・・・
970デフォルトの名無しさん:2007/01/18(木) 10:21:47
オブジェクトを保存するのにその内部状態にアクセスできないのは致命的でしょ・・・
971デフォルトの名無しさん:2007/01/18(木) 13:44:15
何でXMLシリアライズでそういう話になる?
やりたきゃIXmlSerializablでも実装すれば?
972デフォルトの名無しさん:2007/01/18(木) 14:11:50
( TДT)ゴメンヨー、内部状態にアクセスできないXMLシリアライズにどういう使い道あるのかまったく分からん。
973デフォルトの名無しさん:2007/01/18(木) 15:17:52
内部状態にアクセス出来ないって、何からみての話だよ。
意味通じてねーよ
974デフォルトの名無しさん:2007/01/18(木) 15:24:53
あほか。知り荒いざーから見てに決まってんだろ。
いいから内部状態を再現できないシリアライズに何の意味があるのかとっととかけボケ。
975デフォルトの名無しさん:2007/01/18(木) 15:34:18
じゃあ何をシリアライズしてるわけ?
976デフォルトの名無しさん:2007/01/18(木) 15:36:37
1000 が近いけれど質問です。

Form1、Form2、Form3 と 3 つのフォームを作り、Form1 と Form2 には button1 を
置きます。また、Form3.ShowInTaskbar = false とします。

Form1 の button1_Click() を以下のようにします。

private void button1_Click(object sender, EventArgs e)
{
    Form2 f2 = new Form2();
    f2.ShowDialog(this);
    f2.Dispose();
    this.Show();
}

Form2 では、Form2_Shown() と button1_Click() を以下のように書きます。

private void Form2_Shown(object sender, EventArgs e)
{
    this.Owner.Hide();
}

private void button1_Click(object sender, EventArgs e)
{
    Form3 f3 = new Form3();
    f3.ShowDialog(this);
    f3.Dispose();
}
977976:2007/01/18(木) 15:37:51
実行すると Form1 が表示され、Form1 のボタンをクリックすると Form1 が非表示に
なって Form2 が出ます。タスクバーには Form2 のアイコンだけが見えています。
次に Form2 のボタンをクリックすると Form2 は見えたままで Form3 がモーダル
ダイアログとして表示されます。タスクバーには Form2 のアイコンだけ。ここまでは
希望どおりの動作です。

さて、ここでタスクバーの他のアイコンをクリックしてから Form2 のアイコンを
クリックすると、Form3 ではなく Form2 がアクティブになってしまいます。この
状態で [Enter] キーを叩くと Form2 のボタンが押され、Form3 がもう 1 枚開いて
しまいます。

タスクバーの Form2 アイコンをクリックしたら Form3 がアクティブになってほしい
ものですが、いいテはないものでしょうか。それとも私がヘンなコーディングを
している? なお、Form1 を非表示にしなくても同じ動作をするようです。

助けてエロい人。
978デフォルトの名無しさん:2007/01/18(木) 15:50:00
だからXMLシリアライズはそういう目的のものじゃない、
かつどうしてもやりたかったらインターフェイス実装しろってんだろーがよ
全部無視して意味ねー意味ねーうざいんだよ
979デフォルトの名無しさん:2007/01/18(木) 15:59:15
>>976
private void Form3_Load(object sender, EventArgs e)
{
this.Owner.Activated += new EventHandler(Owner_Activated);
}
private void Owner_Activated(object sender, EventArgs e)
{
this.Focus();
}
Form3にかけ
980976:2007/01/18(木) 16:15:32
>>979
うまくいきました。他フォームのイベントハンドラを自フォームに記述するという
発想は出て来ませんでした。

これで心置きなく納品できます。どうもありがとうございました。
981デフォルトの名無しさん:2007/01/18(木) 16:22:41
>>978 だからどういうときに使うのか質問されてんだろが。会話読めボケ。
982デフォルトの名無しさん:2007/01/18(木) 17:15:08
Webサービスのデータとか
読める形での設定情報の保存とか
パブリックなフィールドやプロパティを
シリアライズ・デシリアライズする場面ならなんでも。

状態を完全再現したけりゃバイナリシリアライズすりゃいい
XMLシリアライズはそういう目的じゃないってだけだろ
983デフォルトの名無しさん:2007/01/18(木) 17:18:16
>>981
いつそんな質問があったんだよ。
お前が一人でとにかく使えんてわめいてるだけ。
984デフォルトの名無しさん:2007/01/18(木) 17:21:11
>>982-983
このスレいつから初心者相手にするようになったの?
985デフォルトの名無しさん:2007/01/18(木) 17:53:09
>>983 >>972
( ゚Д゚)<氏ね!能無し。
986デフォルトの名無しさん:2007/01/18(木) 17:59:20
次スレー
C♯, C#相談室 Part37
http://pc10.2ch.net/test/read.cgi/tech/1169110545/
987デフォルトの名無しさん:2007/01/18(木) 18:15:05
独り言だろそれ
988デフォルトの名無しさん:2007/01/18(木) 18:16:14
説明したんだから読めよ馬鹿
989デフォルトの名無しさん:2007/01/18(木) 18:16:55
使い道が分からんなら使うなよ、もう
990デフォルトの名無しさん:2007/01/18(木) 22:06:40
つーか後から書いてるやつ別人だろ。
991デフォルトの名無しさん:2007/01/19(金) 06:57:51
今日地震くるの?
992デフォルトの名無しさん:2007/01/19(金) 10:26:05
世界のどこかであるかもね
993デフォルトの名無しさん:2007/01/19(金) 10:37:21
梅が咲きましたね
994デフォルトの名無しさん:2007/01/19(金) 10:38:25
はやく病院へ行け
995デフォルトの名無しさん:2007/01/19(金) 10:42:24
桜はまだかいな
996813:2007/01/19(金) 11:10:53
>>943
Dictionary<string,IntPtr>
SendMessage(this.textBox1.Handle, WM_SETTEXT, 0, (IntPtr)Marshal.StringToHGlobalAnsi(msg));
Marshal.FreeHGlobal(msg);

こういうことですか?

>>948
SendMessage(this.textBox1.Handle, WM_SETTEXT, 0,msg);
という風に書くことが出来るようになるということでしょうか??
997デフォルトの名無しさん:2007/01/19(金) 12:20:04
梅といえば桃
998デフォルトの名無しさん:2007/01/19(金) 13:08:14
>>991
地震は来るものじゃなくて起こるもの。
「その自信はいったいどこから来るの?」とは用法が若干異なる。
999デフォルトの名無しさん:2007/01/19(金) 15:30:37
ume
1000デフォルトの名無しさん:2007/01/19(金) 15:31:04
デスマーチ梅
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。