1 名前:デフォルトの名無しさん [2010/05/16(日) 23:13:52 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part58 pc12.2ch.net/test/read.cgi/tech/1269261310/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>1-5 くらい
195 名前:デフォルトの名無しさん [2010/05/29(土) 08:42:21 ] おっと自分の質問忘れるところだった 2chの通信をモニターするだけのソフトを作りたいんですが 参考になるような情報を扱ってるサイトをご存知ないでしょうか? もしくはヒントでもかまいません
196 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 08:53:49 ] >>193 >186の1.1以前と同じやり方でやればいいよ GetItemAtの代わりにIndexFromPoint使って
197 名前:デフォルトの名無しさん [2010/05/29(土) 08:58:15 ] C++でいう #include <shobjidl.h> #include <shlguid.h> はC#だと何になるのでしょうか?
198 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 09:04:20 ] >>197 どのインターフェイスを使いたいのさ
199 名前:197 [2010/05/29(土) 09:06:29 ] >>198 ショートカットのリンク先を取得するのにusingが分かりません
200 名前:デフォルトの名無しさん [2010/05/29(土) 09:09:01 ] >>199 usingを知りたいのはわかるw ヘッダーよりどの関数の代わりかで聞いたほうがいいよ
201 名前:189 mailto:sage [2010/05/29(土) 09:29:35 ] >>190 こんなかんじです private void onUpdate(){ // initialize the dialog nameBox.Text = station.name; label_loaded.Text = string.Format("{0} / {1}",station.LoadedToday,station.LoadedYesterday); label_unloaded.Text = string.Format("{0} / {1}", station.UnloadedToday, station.UnloadedYesterday); label_trains.Text = string.Format("{0} / {1}", station.TrainsToday, station.TrainsYesterday); label_waiting.Text = string.Format("{0} / {1}",station.WaitingPassengers, station.population); label_entering.Text = string.Format("{0} / {1}",station.WantEntering, station.entering); label_LastUnloded.Text = station.lastUnloaded.ToString(); }
202 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 10:04:45 ] 簡単なのはShell32.dllをCOMとして参照設定し、 using Shell32; で、Z:\Hoge.lnkのリンク先を得るコードはこんな感じ。 ShellFolderItemを直接得る方法があればいいんだけど、それは分からん。 Shell sh = new Shell(); Folder f = sh.NameSpace(@"Z:\"); foreach (ShellFolderItem i in f.Items()) { if (i.IsLink && i.Path == @"Z:\Hoge.lnk") { Console.WriteLine(((ShellLinkObject)i.GetLink).Target.Path); } }
203 名前:202 mailto:sage [2010/05/29(土) 10:08:38 ] すまん >>202 は>>199 な。
204 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 11:28:09 ] >>201 それに使ってるプロパティのどれかが内部的にシリアライズ使ってるか、 どっかでシリアライズしてるのがたまたま其処で発狂するかのどっちかだな てか何処でエラー起こってんのよ? newしてるとこじゃないんだろ
205 名前:197 [2010/05/29(土) 12:12:10 ] >>202 ありがとうございます 試してみたところ エラー 1 型または名前空間名 'Shell32' が見つかりませんでした。 とエラーがでてしまいます。
206 名前:デフォルトの名無しさん mailto:sage [2010/05/29(土) 13:07:35 ] >>205 ちゃんと参照設定してないだろそれ usingのことじゃないぞ>参照設定
207 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 00:51:07 ] .NET framework 4でoffice 2003のアドイン作れますか??
208 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 18:21:20 ] タイプライターのように文字表示したいのですがUIでThreadを使うなと以前書いてあったと思います どのようにwaitをかければ良いでしょうか ttp://ideone.com/NZMm7
209 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 18:42:43 ] >>208 Dispatcher通せば別スレッドからアクセスできるよ。
210 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:08:07 ] >>208 System.Windows.Timerを使えばいい。
211 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:54:56 ] waitを掛けるって発想が大昔のBASICっぽいなw
212 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:56:20 ] UIでThreadを使うなって Invokeしろって意味じゃないのか?
213 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 19:59:38 ] 正しくは「UIスレッドを止めるな」だな スレッドを止めたいときは別のスレッドを作る
214 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:09:56 ] 208です BackgroundWorkerを使って別スレッドにしてみましたが結局UIを触るなってことらしく にっちもさっちも行きません Thread.Sleepで止めて、その間UIを触れないようにしました
215 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:17:29 ] タイマ使え ループはいらん
216 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:42:04 ] >>214 どこを参照してそのような知識を得たのか晒してみるといいよ
217 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:51:58 ] タイマーだと、タイプライターのような入力文字列によるインターバルの差や、 入力速度の揺らぎを再現しようとすると、綺麗に纏まらないな 勿論、それくらいやるよね>>208
218 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 21:55:56 ] それでもそんなことにスレッド使うのはありえない 短い間隔で頻繁にコールバックかけて時間測るようにするだろ ゲームみたいに自分でメッセージループ回してもいい
219 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:03:16 ] >>214 だからDispatcher使えって。 別スレッドから、「UIスレッドでこの処理実行してくれ」ってお願いする機能。
220 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:07:38 ] いやそもそも普通そんなことにスレッド使わないから
221 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:08:55 ] >>219 普通DispatcherというとSystem.Windows.Threading.Dispatcherだが、 WinFormの話でそんなんだされても困る
222 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:13:49 ] 208です さすがに素人でも214の処理はまずいと思いましたのでTimerを使ってみました ideone.com/za8su 期待通りの動きといえば期待通りなのですがどうでしょうか
223 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 22:18:26 ] >>221 あー、Control.Invoke (Delegate) のことね。
224 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 23:19:51 ] >>222 なんかおかしくね?
225 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:17:46 ] なんかって何? クリックするたびにTickのイベントハンドラが増えるとか、 TypeWriter()の引数を使っていないとか、 typewriterは1単語だからケースがおかしいとか?
226 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:20:47 ] >>225 やさしいなw
227 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:29:16 ] C#でフォルダを作るときに変数をフォルダ名にすることはできますか?
228 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:35:42 ] 変数を使わずにフォルダを作る方法がわかってるんだったら フォルダ名を文字列で直接指定する代わりに変数を与えればいいだけ
229 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:35:42 ] なぜそうしたいんですか?
230 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:44:24 ] >>228 すいません それがうまくいかなくて… >>229 例えば「5」と入力したらフォルダ1、フォルダ2、…、フォルダ5というようにフォルダを作りたいので
231 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:49:00 ] >>230 for (int i = 1; i <= 5; i++) { string folder = string.Format("フォルダ{0}", i); }
232 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:50:03 ] >>230 それは「変数をフォルダ名にする」じゃ言葉足らずもいいとこだろ。 var path = Path.Combine(basePath, string.Format("フォルダ{0}", i); Dicretory.CreateDirectory(path); とかでもダメ?
233 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 00:54:08 ] >>231 >>232 ありがとうございます 試してみます
234 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 10:28:12 ] ゲ製から来た人かなあ ゲーム作るつもりなら最終的には自分でメッセージループ回すことになると思うぞ
235 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:06:34 ] C++の__DATE__みたいなコンパイル日付は どのように取得するのでしょうか?
236 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 15:41:05 ] 無理 どうしてもやりたかったらビルド前のコマンドでコード生成
237 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 17:43:21 ] 無いですか・・・残念 ありがとう
238 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 23:18:02 ] コード生成っていったって internal static class VersionInfo { public const string Date = "2010/05/31"; } こういうのを生成してcsファイルに保存する処理をスクリプトかなんかで書いてビルド前イベントで呼ぶだけ
239 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 00:56:56 ] svnのリビジョンを読み取ってソースに書き込む奴とかな。
240 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 04:51:57 ] わざわざ読み取らなくても勝手に変えてくれるよ
241 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 15:22:12 ] MSってコード生成とかメタプログラミングとか好きだから __DATE__みたいなオモチャ使わず各自で好きにやるのが普通だと思ってるんだろうな
242 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 16:22:49 ] どうしても必要ならリフレクション。
243 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 16:50:03 ] リフレクション使うにしてもコンパイル時に埋めこんどかないと無理 [assembly:CompileDate("2010/05/31")]みたいな どっちみちコード生成が必要だから>>238 の方が楽
244 名前:239 mailto:sage [2010/06/01(火) 19:34:49 ] >>240 うわあ、今までPerlのスクリプトで処理してた・・・
245 名前:デフォルトの名無しさん mailto:sage [2010/06/01(火) 19:50:35 ] >>244 まじかよw これまでの作業量について考えるのだけはやめておくんだ!これからが大事!な!
246 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 05:36:50 ] 245 のやさしさに泣いた
247 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 08:58:57 ] まぁ遠回りして勉強になることもあるし・・・ あまりにも調べが足りなさすぎるがこれも勉強だw
248 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 10:55:14 ] まあデフォルトのままだとかわらないからな
249 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 13:09:26 ] 相談です。 .NET3.5でWindowsフォームアプリケーションを作成しています。 Webカメラやリモートカメラなどの映像を取り込み、その映像をリアルタイムにフォーム内に表示したいのですが、 可能でしょうか? 「webカメラ キャプチャ」等のワードで検索しても良い資料が見つからなかったので、 どなたか良い方法をご教授ください…
250 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 13:34:04 ] >>249 DirectShow辺りに答えがあるんじゃないかな? あと、ヒントならGraphEditPlusというツールを使うのもありかも。
251 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 13:51:48 ] Directshow.NET使ってる。 普通に使える
252 名前:251 mailto:sage [2010/06/02(水) 14:00:17 ] あーあとOpenCVの.NET版も試したけど使えたよ
253 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 14:38:34 ] どなたか教えてください。 機器との通信により得られた16進数の浮動小数点データ形式文字列を、 10進数にしてを表示するプログラムを作成したいのですが、よい方法はないでしょうか? <例>受信データ:42C80000 出力:100.0 といったものを作りたいのです。 なお、受信データを文字列に変換するところまでは、できています。
254 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 14:49:05 ] 16進文字列をintに変換 int n = Convert.ToInt32("42C80000", 16); intを浮動小数点に変換 float f = BitConverter.ToSingle(BitConverter.GetBytes(n), 0); 100.0のような書式で出力するのはわかるよね?
255 名前:デフォルトの名無しさん [2010/06/02(水) 15:00:18 ] その前にエンディアンとかの話は大丈夫なんだろうか・・・
256 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 15:01:56 ] 受信データの例を見る限り問題無いでしょ
257 名前:253 mailto:sage [2010/06/02(水) 15:29:16 ] >254さん できました。 ようやくConvert.ToInt32の意味がわかりました。 どうもありがとうございます。
258 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 20:34:47 ] フォーム内のフォーカスを初期表示時と同じにする、もしくは フォーム内のコントロールで TabIndex が一番若い番号のコントロールを 簡単に知る方法はないでしょうか? 現在複数のフォームを使うアプリを書いているのですが、 インスタンス化の処理が結構重い(DBから情報ひっぱってきてコントロールを沢山つくる)ので フォームのインスタンスを使いまわすことにしました。 Close() のかわりに Hide() を使ったまではいいのですが、 再度表示したときに当然のごとくフォーカスの位置が前回と同じなままになってしまいます。 ロードイベントあたりで先頭のコントロールに対して Select() を使って対処していますが、 コントロール名をハードコーディングしているのでデザイナでの TabIndex 変更に追従出来ていません。
259 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 20:45:33 ] >コントロール名をハードコーディングしているのでデザイナでの TabIndex 変更に追従出来ていません。 意味がわかりません
260 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 20:56:45 ] とてつもないドキュソ実装の香り。 動的なフォーム構築で追加したコントロールのTabIndex再設定ができません、と聞こえる。 手を抜かないでFormのControlsを回して設定し直せばいいんじゃね?
261 名前:258 mailto:sage [2010/06/02(水) 21:04:19 ] >>259 TabIndex が一番若いコントロールを決めうちして Load イベントで直接 Select() しちゃっています。 デザイナで順番かえたりした場合は一々 Select() を呼び出すコントローラーを変更しています。 >>260 全部を動的に追加しているわけじゃなく、いくつか固定で置いてあるものもあるんですが、 動的フォーム構築をする場合って全部の TabIndex をコードビハインド側でふりなおすのが普通なんでしょうか? その場合ってデザイナ側での並び順がかわったら一々コードも修正しないといけないですよね?
262 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:08:09 ] >>250 ,251 ありがとうございます
263 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:08:45 ] LinQで検索でいけるじゃんと思ったけどPanelとか使ってると結構めんどくさいな
264 名前:デフォルトの名無しさん [2010/06/02(水) 21:13:57 ] USBカメラを使って、動画を AVIファイル形式での作成の仕方はサンプルみつけたんだけど、 WMVもしくはMP4で作成できる人いる? AVI形式はサイズが大きすぎて、、、小さくしたいんだよね。
265 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:20:46 ] スレ違い そういうのはC#にこだわらずにC++のコードとか漁らないと
266 名前:258 mailto:sage [2010/06/02(水) 21:22:48 ] 自己解決しました。 フォームの VisibleChanged イベントハンドラで自分自身に対して SelectNextControl() を使うことで 希望の動作となりました。
267 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:33:45 ] フォームインスタンス使いまわしはクリアの処理が汚なくなりがちだからきらいだな
268 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:36:45 ] きちんと戦略を練られるならいいけど、タブ順の管理すらメンドクサなんていう 子のコードは信じられない。
269 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:50:28 ] >>268 タブ順はデザイナーで管理したい、って話じゃないの? 俺はそういうのはデザイナ側で完結してないと気持ちわるいけどな。 WPF万歳だよほんと。
270 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 21:53:20 ] コードビハインドはどっちかっつーとまだデザインの範疇じゃね? まータブ順変更しただけでコード書き換えなきゃいけないような実装はタコだと思うけど。
271 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:00:38 ] WPFありがたがってるのは総じてアホ
272 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:13:29 ] 新しいものを受け付けなくなったら終わりだよ C#ユーザーってもっとミーハーが多いのかと思ってた
273 名前:デフォルトの名無しさん [2010/06/02(水) 22:16:09 ] WPF単体だと見切る可能性大だったな SilverLightがなければやろうと思わなかった
274 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:19:16 ] >SilverLight ほんとにやってんの?
275 名前:デフォルトの名無しさん [2010/06/02(水) 22:21:09 ] xamlという共通な部分があるからね 実装差違とかあるのもわかってるよ どっちかといえばsilverlightのついでにWPFやる感じ
276 名前:デフォルトの名無しさん [2010/06/02(水) 22:21:36 ] test
277 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:24:34 ] xamlがわからない
278 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:26:38 ] xamlやるぐらいならHTML5とJavaScriptやる
279 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:31:28 ] たかが設定ファイルに何そんなに騒いでるの XAMLなんかDesigner.csをXMLにしただけのもの 触りたくなけりゃ触らなくてもデザイナ任せでWinForms程度のUIは作れる
280 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:32:19 ] なんでか、うちのWindows7じゃWPF動かんし。 動かすと「URLが正しくないため、読み込めませんでした」。 エクスプローラからダブルクリックしても全く動かない。
281 名前:デフォルトの名無しさん [2010/06/02(水) 22:34:02 ] >>277 winformでも同じような仕組み作れるよ Formにwebbrowser貼り付けてそこへ起動時にhtmlコード入れて webbrowserのどれがクリックされたとかイベント処理すればOK
282 名前:デフォルトの名無しさん mailto:sage [2010/06/02(水) 22:34:12 ] 何を勘違いしてるのか知らんがプログラミングやるようなレベルじゃないな
283 名前:280 mailto:sage [2010/06/02(水) 22:42:26 ] あ、すまん勘違い。なんかいじってた設定が悪かった。新規作成したら動いたわ。
284 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 01:14:15 ] ソフトウェアキーボードを作っています。 タブによって英数字と平仮名のキー分けてをそれぞれ実装しています ある文字ボタン(ここでは「か」と書かれたボタン)を押すとイベントが発生し、以下のような処理を行います。 private void buttonH_SA_Click(object sender, EventArgs e) { SendKeys.SendWait("ka"); //"平仮名の「か」を送りたい } このようにして、ソフト上でキーボードを実現したいのですが、 例えばメモ帳アプリケーションに対してこのような処理を実行すると、"か"ではなく"ka"としか表示されません。 なんとかして、メモ帳に"ka"ではなく"か"と表示させることはできないのでしょうか? 対象テキストボックスのImeModeプロパティが弄れたらいいのだけれどもそれは無理ですし… 何か良い方法があればご教授下さい。 よろしくお願いします。
285 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 07:01:55 ] SendKeys.Send("か"); でいかんのか?
286 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 10:42:43 ] >>285 それは試しましたが、確かに「か」と出力されます。 しかし未変換の状態で出力されてほしいのです。(文字に下線がついて出力されるように) その方法では既に確定した状態で出力されてしまいます。
287 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:06:27 ] DLLのAPI呼び出しでもいい?
288 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 11:55:11 ] >>287 大丈夫です
289 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 14:22:47 ] >>288 ならWin32 APIのSendInputを呼び出すんだな。 IMEがMS IMEなら下線付きで送信される。でも残念ながらATOKは確定済みで送信される
290 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 14:27:22 ] Imm〜で何とかできそうな
291 名前:デフォルトの名無しさん [2010/06/03(木) 15:43:17 ] cs2ch.blogspot.com/2010/04/blog-post_10.html これにIMEの制御つけるだけじゃないの?
292 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 16:14:03 ] 多分「詳細なテキストサービス」の出番ではなかろうか Imm系がそれだったような気もするが詳しくは知らん てか情報なさ過ぎ
293 名前:デフォルトの名無しさん [2010/06/03(木) 16:17:15 ] >>292 それより問題なのがOSがvista以降くらいになると IME関連の制御が違うとかどうのって記述を見かけたたんだよな・・・
294 名前:デフォルトの名無しさん mailto:sage [2010/06/03(木) 17:53:48 ] >>293 これだな ttp://social.technet.microsoft.com/forums/ja-JP/windowsvistasoftwareja/thread/973a7407-5ddb-4b34-9aea-0fb36f762cf4/ VistaからTextServicesFramework、略してTSFなるものに変わったらしい まったく毎度毎度要らんことしてくれるわM$さんはよう
295 名前:デフォルトの名無しさん [2010/06/03(木) 18:06:11 ] >>294 それそれ MS関連でタッチパネル系デバイスが普及しないのは そういうところなんだよね〜