C♯, C#相談室 Part35
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/03(金) 03:07:45前スレ
C♯, C#相談室 Part34
http://pc8.2ch.net/test/read.cgi/tech/1157549657/
過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0322デフォルトの名無しさん
2006/11/12(日) 22:41:440323ぼるじょあ ◆yBEncckFOU
2006/11/12(日) 23:26:500324デフォルトの名無しさん
2006/11/13(月) 00:17:08いいのでしょうか?
Cでいうmemcpyみたいなことをしたいのです。
0325デフォルトの名無しさん
2006/11/13(月) 00:31:24クラス名な
0326デフォルトの名無しさん
2006/11/13(月) 00:44:59ありがとうございました
0327デフォルトの名無しさん
2006/11/13(月) 13:25:55普通にif文を書いた方が見やすいようなきもするんですけど、どうなんでしょう。
0328デフォルトの名無しさん
2006/11/13(月) 13:40:16見やすく書いたほうが、読む方は読みやすい。自分が書いたコードでも時間が経つと
意外と悩んだりするもの。C言語でもできれば使わないほうがよいとされている。
C#でもそれは同じだろうと、俺は思っている。三項演算子の方が分かりやすいと判断
したところには使ってもいいんじゃないか?そういう意味ではgotoみたいなもの。
0329デフォルトの名無しさん
2006/11/13(月) 13:46:45事をしたいのですが、その方法で煮詰まっています。
public static bool IECallBack(IntPtr hwnd, IntPtr lParam)
{
StringBuilder sbClassName = new StringBuilder(256);
GetClassName(hwnd, sbClassName, sbClassName.Capacity);
if( sbClassName.ToString().StartsWith("IEFrame"))
{
Form1.al.Add(hwnd);
}
return true;
}
// EnumWindows でIECallBack へさせる。
EnumWindows(new EnumWindowCallBack(Form1.IECallBack), IntPtr.Zero);
こんな感じでWindowのハンドルは取得できるのですが、Window内のオブジェクトを取得する
方法が分からなくて困っています。
どなたかご教授していただけませんでしょうか?よろしくお願い致します。
0330デフォルトの名無しさん
2006/11/13(月) 13:50:52ようするに読みにくいのは3項演算子のせいじゃない。
0331327
2006/11/13(月) 15:53:16if文で何行も使うのはどうかなと思ってました。
if (〜) { 〜 } else { 〜 }
かっこの中が1行で済むときはこんな感じで書いていたのですが、
一般的に3項演算子のほうを使うのかなと思って質問しました。
あまり参考書などで使ってるのを見かけないので
一般的に使われていないのかなと思って質問しました。
少し使ってみようと思います。
0332デフォルトの名無しさん
2006/11/13(月) 17:22:36COMのMicrosoft Internet ControlsとMicrosoft HTML Object Libraryを参照
using SHDocVw;
using mshtml;
ShellWindows sw = new ShellWindows();
foreach (InternetExplorer ie in sw)
{
if (System.IO.Path.GetFileName(ie.FullName) == "IEXPLORE.EXE")
{
IHTMLDocument2 htmlDoc = (IHTMLDocument2)ie.Document;
Console.WriteLine(htmlDoc.url);
}
}
0333デフォルトの名無しさん
2006/11/13(月) 18:03:11正にこれです。COMオブジェクト関連の操作に関してはVBの資料は多いのですが
C#に関する資料があまりなくて苦労していました。
本当に有難う御座います。
追加で質問なのですが、IEのウィンドウでさらにアクティブになっているウィンドウを取得したいのですが、
Shellwindowからhwndを抜き出すことは簡単に出来るものなのでしょうか?
0335デフォルトの名無しさん
2006/11/13(月) 21:07:200336335
2006/11/13(月) 21:11:54↓みたいなページもあったのですが、ページが古くて、重要なウプデータがなかったりで・・・(´・ω・`)
ttp://thespoke.net/forums/950208/ShowPost.aspx
0337デフォルトの名無しさん
2006/11/13(月) 21:14:50こんなんじゃだめなん?
ttp://support.microsoft.com/kb/139098/ja
0338デフォルトの名無しさん
2006/11/13(月) 21:47:17おおお、ありがとうございます!!
0339デフォルトの名無しさん
2006/11/14(火) 14:44:050340デフォルトの名無しさん
2006/11/14(火) 18:21:51C#ではどうすりゃいいの?
他のアプリケーションのウィンドウに送られるWM_ACTIVATEメッセージを
キャッチしたいんだけど…。これをやりたい場合はグローバルフックする
必要があるからC#じゃ無理…だよね?
やはりTimerイベントを1秒間隔くらいで発生させて、その中で
GetForegroundWindowなどを呼び出してチェックする方法しかないのかな。
0341デフォルトの名無しさん
2006/11/14(火) 18:35:30ttp://msdn2.microsoft.com/ja-jp/library/843s5s5x(VS.80).aspx
0342340
2006/11/14(火) 22:19:36.NETアプリにコマンドライン引数などで通知するなんてこともできるかな。
スマートじゃないけど。
うーん。いい方法が思いつかない。素直に全部C言語で作ったほうが早いかな…。
0343デフォルトの名無しさん
2006/11/14(火) 22:23:09GUI を C# で作りたいのならその部分だけ別プロセスで。
0344デフォルトの名無しさん
2006/11/14(火) 22:49:460345デフォルトの名無しさん
2006/11/14(火) 23:02:560346デフォルトの名無しさん
2006/11/15(水) 00:26:36オブジェクトそのものが占めるメモリを解放するなら参照を切ってからSystem.GC.Collect()する。
特定のオブジェクトのメモリ領域を解放するのは不可能だしそもそも意味がない。
0347デフォルトの名無しさん
2006/11/15(水) 00:41:39IntPtr ptr = ...;
ptr = (IntPtr)(ptr.ToIntXX() + 3);
などと書くとアーキテクチャに依存して効率が落ちたりしそうな気がするのですが
どうなんでしょう。
0348デフォルトの名無しさん
2006/11/15(水) 00:44:300349デフォルトの名無しさん
2006/11/15(水) 00:52:40そんなことするくらいなら全部ネイティブで書いたほうが早い
Cだと面倒なんでC++/MFCならC#を使うより工数は少ないはず
0350デフォルトの名無しさん
2006/11/15(水) 00:57:27その質問に答えられるのは MS の中の人だけだろう。
MSDN フォーラムででも聞いてくれ。
0352デフォルトの名無しさん
2006/11/15(水) 01:36:58Listメンバを編集させないようにできないですか?
ReadOnly をつけても編集できてしまいます
class MyClass{
private List<string> myList;
[ReadOnly(true)]
public List<string> MyList{
get{return myList;}
set{list = myList;}
}
}
0353デフォルトの名無しさん
2006/11/15(水) 10:02:58プロパティとしては、setterを用意したいけど、
デザイナー上からは、編集できないようにしたいってこと?
0354デフォルトの名無しさん
2006/11/15(水) 10:22:50「関連付けたい拡張子のファイルを右クリック」
→「プログラムから開く」
→「プログラムの選択」
で作成したアプリケーションを選択したら、アプリケーション名が空になってしまいました。
これって何が悪いのでしょうか?
0355デフォルトの名無しさん
2006/11/15(水) 11:58:280356デフォルトの名無しさん
2006/11/15(水) 13:42:04Argじゃなくてプロパティにあった気がする
0357デフォルトの名無しさん
2006/11/15(水) 19:04:48文字型の1が0x31のはずなのになんかばかでかい変な値だった
どうやればいいか教えてくれ
0358デフォルトの名無しさん
2006/11/15(水) 19:05:400359デフォルトの名無しさん
2006/11/15(水) 19:21:170360デフォルトの名無しさん
2006/11/15(水) 19:21:270361デフォルトの名無しさん
2006/11/15(水) 19:44:08それじゃ
0362デフォルトの名無しさん
2006/11/15(水) 20:15:220363デフォルトの名無しさん
2006/11/15(水) 21:39:370364デフォルトの名無しさん
2006/11/15(水) 21:41:410365デフォルトの名無しさん
2006/11/15(水) 21:54:49すまん。
もう、君が何を言ってるのかわからないよ。
0366デフォルトの名無しさん
2006/11/15(水) 22:11:15多分 AssemblyTitle 属性の値が使われると想う。
AssemblyInfo.cs 見てみ。
あとキャッシュされてる可能性がある。
前にそう言うやり取り見たな。あれは XP のタスクバーのグループ化の話だったか。
0367デフォルトの名無しさん
2006/11/15(水) 22:25:32何となく理解はできた。
それすらもわからないなら君も早く引退した方がいいよ^^
0368デフォルトの名無しさん
2006/11/15(水) 22:37:27intみたいな数字型に変換するのは無理…というかしちゃダメじゃないの?
Encoder使って、byteに変換すれば可能だけど
0369デフォルトの名無しさん
2006/11/15(水) 22:42:36(゚д゚)ハァ?(゚д゚)ハァ?(゚д゚)ハァ?(゚д゚)ハァ?
0370デフォルトの名無しさん
2006/11/15(水) 22:58:19CharもInt32もただの構造体だがその辺は適当にConvertibleになってる。
つーか、君はちょっとくらい調べてから発言しようとは思わんのかね。
0371デフォルトの名無しさん
2006/11/15(水) 22:59:220372デフォルトの名無しさん
2006/11/15(水) 23:13:23char->intなら暗黙的にキャストできるだろ。
0373デフォルトの名無しさん
2006/11/15(水) 23:21:470374デフォルトの名無しさん
2006/11/15(水) 23:25:340375デフォルトの名無しさん
2006/11/15(水) 23:26:060376デフォルトの名無しさん
2006/11/17(金) 17:55:33左に移動する処理を行いたいのですが、下記のイベント
にブレークポイントをおいても、イベントがコールされません。
EnableはTrueになっています。
何か設定に不備があるのでしょうか?
dataGrid1_KeyPress
dataGrid1_KeyUp
dataGrid1_KeyDown
環境 VS2003 Win2003
0377デフォルトの名無しさん
2006/11/17(金) 18:59:14仕様です。
0378デフォルトの名無しさん
2006/11/17(金) 19:19:55一度終了したThreadに対して普通に再びStart()メソッドを呼ぶとThreadStateExceptionが飛んできます…。
0379デフォルトの名無しさん
2006/11/17(金) 19:31:480380デフォルトの名無しさん
2006/11/17(金) 19:44:500381デフォルトの名無しさん
2006/11/17(金) 19:46:370382デフォルトの名無しさん
2006/11/17(金) 19:49:53用途にもよるがBackgroundWorkerやその他のThreadPoolを使いなされ。
0383デフォルトの名無しさん
2006/11/17(金) 19:50:07while ( ! 死に時?) {
合図があるまで待つ;
お仕事;
}
0385デフォルトの名無しさん
2006/11/17(金) 19:54:130386デフォルトの名無しさん
2006/11/17(金) 20:00:050387デフォルトの名無しさん
2006/11/17(金) 20:01:38CGを描写するプログラムを書いていて、
その画面を動画ファイルとして出力する機能をつけたいと考えています。
動画を作るライブラリはVideo For Windowsなど色々あるようですが、
何を使うのが一番最適でしょうか?
0388デフォルトの名無しさん
2006/11/17(金) 20:43:23おい、死に時らしいぜ
0389デフォルトの名無しさん
2006/11/17(金) 23:48:07GCが後ろで待ってるおw
0390デフォルトの名無しさん
2006/11/17(金) 23:57:22System.GC.Collect();
こうですか!!わかりません><
0391デフォルトの名無しさん
2006/11/18(土) 00:30:24持たせた場合にも参照地にnullをセットすれば勝手にGCが効くんですか?
0392デフォルトの名無しさん
2006/11/18(土) 00:34:52他から参照されてなければ刈ってくれるでしょ。
尤も実際に目で確かめる術はないけど。
0393デフォルトの名無しさん
2006/11/18(土) 00:43:04> 尤も実際に目で確かめる術はないけど。
つ WeakReference
0394デフォルトの名無しさん
2006/11/18(土) 03:48:05意味無いから、やめとけw
消えるべき時に、勝手に消える。
0395デフォルトの名無しさん
2006/11/18(土) 22:40:53BitmapのLockbitsメソッドでゲットしたイメージメモリに対して
Cで記述したネイティブコードからイメージ操作することは可能でしょうか?
0396デフォルトの名無しさん
2006/11/18(土) 22:49:180397デフォルトの名無しさん
2006/11/18(土) 23:36:100398395
2006/11/18(土) 23:36:59今試したらできました!
0399デフォルトの名無しさん
2006/11/19(日) 10:12:40しているのですができません。
public List<string>でできると思ったのですが。
どうすればいいのでしょうか。どなたかご教示ください。
0400デフォルトの名無しさん
2006/11/19(日) 10:37:53フォームクラスForm1のインスタンスをform1とすると
form1.list
staticなら
Form1.list
0401395
2006/11/19(日) 12:54:48私のやりたかったことは、画像のエフェクト処理をCで書いたDLLに任せることだったんだけど、
試しに、Cで作ったエフェクトルーチンをC#に移植しても、スピードが変わらなかった。
C#って遅いと思ってたけど、ほぼネイティブ並のスピード出るのね・・・。
JITコンパイラはきちんとSSE/SSE2命令使ってくれるし。
すみません、チラ裏でした。
0402デフォルトの名無しさん
2006/11/19(日) 13:04:230403395
2006/11/19(日) 13:12:49MSX時代から思考が止まってます。
0404デフォルトの名無しさん
2006/11/19(日) 13:50:150405デフォルトの名無しさん
2006/11/19(日) 14:23:19まあ、遅いのは初回起動のみだし。
そういや、今、自宅で新しく買った PC に Vista RC2 入れてるんだけど、
.NET アプリの起動がむちゃくちゃ早い(ほんとに一瞬)んだけど。
これは、PC のスペックいいからなのか、
Vista では CLR の最適化かかってるからなのか、どっちなんだろう?
0406デフォルトの名無しさん
2006/11/19(日) 14:26:000407デフォルトの名無しさん
2006/11/19(日) 14:36:180408デフォルトの名無しさん
2006/11/19(日) 14:58:53うちでは大差ないよ。
たぶんスペックのせいかと
0409デフォルトの名無しさん
2006/11/19(日) 15:24:10XPはログオンに時間がかかるがVistaは確かにかなり速い。
0410デフォルトの名無しさん
2006/11/19(日) 15:38:06そういえば、Vista対応のために、XPからの変更点のまとめってありませんか?
システムフォルダがお引っ越しor内部で勝手にリンクするというのは聞いたんですが。
0411デフォルトの名無しさん
2006/11/19(日) 15:38:583年後位には主流になるのかねぇ・・・
0412デフォルトの名無しさん
2006/11/19(日) 16:26:050413デフォルトの名無しさん
2006/11/19(日) 21:04:14SuperFetchが効いてるんじゃね?重量級のアプリにはかなり
効くようだ。VSとか。
メモリたくさんつまないと駄目だけど。
0414405
2006/11/19(日) 21:23:29メモリ2GB積んでる。
無駄にオーバースペックなもの買ってみた。
要するに、JIT が早いのは単にプロセッサ性能、
動作が速いのは .NET Framework のコンポーネントが
SuperFetch であらかじめメモリ上にロードされてるから
ってことでいいのかな?
0415デフォルトの名無しさん
2006/11/19(日) 21:48:04なんだかね
0416デフォルトの名無しさん
2006/11/19(日) 23:28:29パソコンを使っている人の大半はあなたみたいなヲタクではありません。
大半の人に使っていただくためには屁理屈こねて遅くないんだよなんていってて・・・
0417デフォルトの名無しさん
2006/11/19(日) 23:33:11415じゃないけど、開発者する人間なら…
0418417
2006/11/19(日) 23:33:49○ 開発する人間
0419デフォルトの名無しさん
2006/11/19(日) 23:36:370420デフォルトの名無しさん
2006/11/19(日) 23:57:280421デフォルトの名無しさん
2006/11/20(月) 00:13:35■ このスレッドは過去ログ倉庫に格納されています