ふらっとC#,C♯,C#(初心者用) Part21
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001ななしぃ#
2007/11/18(日) 15:53:41「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
前スレ: ふらっとC♯, C#(初心者用) Part20
http://pc11.2ch.net/test/read.cgi/tech/1191036844/
0856デフォルトの名無しさん
2007/12/13(木) 12:12:45みたいに
0857デフォルトの名無しさん
2007/12/13(木) 12:14:580858デフォルトの名無しさん
2007/12/13(木) 12:17:110859デフォルトの名無しさん
2007/12/13(木) 12:23:220860デフォルトの名無しさん
2007/12/13(木) 12:34:000861デフォルトの名無しさん
2007/12/13(木) 13:00:22やっぱりWinアプリですか?
0862デフォルトの名無しさん
2007/12/13(木) 13:15:120863デフォルトの名無しさん
2007/12/13(木) 14:23:18プログラム終了時にフォルダ内全削除してから終了させるのってどうやるんでしょうか?
0864デフォルトの名無しさん
2007/12/13(木) 14:52:150865デフォルトの名無しさん
2007/12/13(木) 14:54:37誰か慰めてください><
0866デフォルトの名無しさん
2007/12/13(木) 14:56:43犬にでも噛まれたと思ってあきらめなさい。
0867デフォルトの名無しさん
2007/12/13(木) 14:57:100868デフォルトの名無しさん
2007/12/13(木) 15:02:400869デフォルトの名無しさん
2007/12/13(木) 15:27:03catch(>>865){}
↑
完全スルーカワイソス
0870デフォルトの名無しさん
2007/12/13(木) 16:19:32ファイルの存在確認からOpenまでの間にファイルが消えることがあるだろ
並列処理してたらそういうことはよくある
確認用メソッドと取得用メソッドは分けてはいけない
0871デフォルトの名無しさん
2007/12/13(木) 22:02:26そういう問題かよ
0872デフォルトの名無しさん
2007/12/13(木) 22:17:46どうすればいいかな?
0873デフォルトの名無しさん
2007/12/13(木) 23:57:43常にVirtualListSizeを操作するのでしょうか?
また、一般的な使用方法とかはList<ListViewItem>みたいなリストを保持して、
RetrieveVirtualItemで処理するのでしょうか?
0874デフォルトの名無しさん
2007/12/14(金) 01:49:46現在の処理の流れとしては
Process.GetProcessesByNameでプロセス取得
↓
取得したプロセス.Threadsをforeachでまわして
Win32APIのEnumThreadWindowsを使ってウィンドハンドル取得
↓
EnumThreadWindowsの中でEnumChildWindowsを使って全部の子ウィンドを取得
↓
GetWindowTextを使用してキャプション取得
こんな感じで処理してます。ここで質問なのですが
1.他のアプリケーションウィンドウのキャプション取得するのって
Win32APIを使う以外に処理する方法ってありますか?
2.特定のウィンドウのキャプションが変更された時に
何らかのメソッドを実行したいのですができますか?
0875デフォルトの名無しさん
2007/12/14(金) 01:54:36それ以外はなし
あとGetWindowText使うな
タイマでポーリングしてりゃ良いんじゃね
0876デフォルトの名無しさん
2007/12/14(金) 01:55:46>1.他のアプリケーションウィンドウのキャプション取得するのって〜〜
確かできなかったはず。IntPtr を取る Control のコンストラクタもあるっぽいが、
昔試したときに他のアプリケーションのウィンドウやコントロールに関して有益な情報が得られなかったと記憶してる。
>2.特定のウィンドウのキャプションが変更された時に〜〜
Win32 API を使う方法になるけど、メッセージフックがある。
SetWindowsHookEx などの関数で調べてみるといいかも。
0877874
2007/12/14(金) 02:34:30レスありが�d
>>875
GetWindowTextって使わない方が良いのですか?
>>876
SetWindowsHookEx試してみたいと思います
0878デフォルトの名無しさん
2007/12/14(金) 02:44:270879デフォルトの名無しさん
2007/12/14(金) 02:47:560880デフォルトの名無しさん
2007/12/14(金) 02:50:38Environment
0881デフォルトの名無しさん
2007/12/14(金) 04:15:340882デフォルトの名無しさん
2007/12/14(金) 06:30:47Length = 0 で代用できるのと、十分に軽量にしているから
使いまわしせずに必要になったら作り直せというお達しだと思う。
0883708
2007/12/14(金) 10:28:420884デフォルトの名無しさん
2007/12/14(金) 10:46:29ToolStripDropDownMenuのチェックとかアイコンの枠を描画するときじゃね
Refectorで追いかけてみればどうよ
0885デフォルトの名無しさん
2007/12/14(金) 12:58:42やり方知らねーなら素直に分かりませんって書けやカス
ほんと役立たずのゴミしかいねーなここ
こんな低脳の溜まり場なんかで聞いた俺が馬鹿だったわw
0886デフォルトの名無しさん
2007/12/14(金) 13:01:34そういうときに使える有名なレスを授けよう。
「知らないんだったらレスしないで下さい!!」
0887デフォルトの名無しさん
2007/12/14(金) 13:09:55アンインストール用のソフトがあるんだね。これ使ってればよかったのに
手順が間違っていたのか、アンインストールもインストールもできなくなった
どうすればいいんでしょうか?
0888デフォルトの名無しさん
2007/12/14(金) 13:10:350889デフォルトの名無しさん
2007/12/14(金) 13:18:46http://support.microsoft.com/kb/290301/ja
>>888
できません。
自前で各行の差し替えを実装して頑張ってください。
0890デフォルトの名無しさん
2007/12/14(金) 14:01:450891デフォルトの名無しさん
2007/12/14(金) 14:27:01即レス感謝します
なんとかインストールはできるようになりました
あとは、もう一度アンインストールしてうまくいくかどうか・・
0892デフォルトの名無しさん
2007/12/14(金) 15:51:36APIとかいうのを使うしか無理?
0893デフォルトの名無しさん
2007/12/14(金) 18:29:520894デフォルトの名無しさん
2007/12/14(金) 18:39:47他アプリ(非.NET)のデータを取得するのはc#でもできるということですか?
0895デフォルトの名無しさん
2007/12/14(金) 18:41:180896デフォルトの名無しさん
2007/12/14(金) 19:31:21API使うとメモリリークとかを意識しないとだめなんですよね
0897デフォルトの名無しさん
2007/12/14(金) 20:21:44[ { col1 => "val", col2 => "val" }, { col1 => "val", col2 => "val" } ]
上記のような表示形式で見たいのですが方法はありますか?
0898デフォルトの名無しさん
2007/12/14(金) 20:25:08autoexp.cs弄ればできるかも
0899デフォルトの名無しさん
2007/12/14(金) 21:30:490900897
2007/12/14(金) 21:40:28List<Dictionary<string,string>>
>>898
おお。まだちゃんと調べてないけどこれでちょっといけそうな気がします。
ありがとうございます。
Javaだと構造が一発でみれて楽なんだけどなぁ・・・
0901デフォルトの名無しさん
2007/12/14(金) 21:43:030902デフォルトの名無しさん
2007/12/14(金) 21:48:490903デフォルトの名無しさん
2007/12/14(金) 21:55:340904デフォルトの名無しさん
2007/12/14(金) 21:57:08VSは基本的にはToStringを表示するだけだし
0905デフォルトの名無しさん
2007/12/14(金) 22:23:020906デフォルトの名無しさん
2007/12/15(土) 00:25:49を読んだのですが、シリアル化の意味がよくわかりません。
シリアル化とはどういう意味なんでしょうか?
0907デフォルトの名無しさん
2007/12/15(土) 00:33:05オブジェクトをファイルとかに保存できるようにデータ列に変換すること。
ファイルに保存=永続化って考えちゃえば良い。
0908デフォルトの名無しさん
2007/12/15(土) 00:33:21Serializableなインスタンスをここに入れると、 バイナリデータになったりXMLデータになったりします。
ネットで転送したり、ファイルに書き込めますね。
こんどはそのバイナリデータやXMLデータをいれて、横にある「デシリアライズ」というボタンを押すと、
あら不思議、もとのインスタンスがフィールドデータとかそのままで復元します。
0909デフォルトの名無しさん
2007/12/15(土) 00:34:45アプリが終了した後も永続的に状態が残るようにすること。
要するに、アプリ設定のセーブ/ロードとかに使う。
0910デフォルトの名無しさん
2007/12/15(土) 03:27:53ウィンドウにButtonを2個配置した場合、カーソルキーの左右でボタン1と2の間でフォ
ーカスが移動しますが、これと同じ動作をPictureBoxに対しても行いたいと考えており
ます。
PictureBox.TabIndexプロパティで何とかなるかとも思ったのですが、CFMのPictureBox
はTabIndexプロパティが実装されておりません。
当初ははPictureBoxでなくButtonで行いたかったのですが、Button上にイメージを貼り
付けたいのですが、Button.Imageがサポートされておらず、PictureBoxにした次第です。
PictureBoxにフォーカスを当てる方法か、Button上にイメージを貼る方法どちらか実現
出来ないでしょうか?
0911デフォルトの名無しさん
2007/12/15(土) 03:56:17↓ここらへん参考にしてみてはどうでしょう
http://www.microsoft.com/japan/msdn/thisweek/10lines/extra_bottoncontrol.aspx
0913デフォルトの名無しさん
2007/12/15(土) 08:01:29勉強していくうちに理解できることかも知れないけど質問させてください。
クラス、名前空間など処理を分ける(?)概念は
処理のグループ化、階層化などによって作成、管理、修正、解読などを
しやすくする狙いがある(または狙いのひとつである)のでしょうか。
Cは授業で基礎を習った程度の知識と経験がありますが、
その初段階で教わった「プログラムの構造化」を
言語自体の持つ性格としてより明確に打ち出されているものと考えてよいでしょうか。
0914デフォルトの名無しさん
2007/12/15(土) 08:20:09簡単にいうとネームが競合しないようにするためだね
*クラス
人が「歩く」
犬が「歩く」
同じ「歩く」でも歩き方などが違うわけで、「人が歩く」というクラス名にしてもいいけど
長くなるので同じクラス名でも別の機能を持たせたいのでクラスという概念ができた
*名前空間
田中さんが作った「人が歩く」プログラム
山田さんが作った「人が歩く」プログラム
同じ「人が歩く」プログラムでもプログラマによって歩かせ方が違うわけで
「田中さんが作った人が歩く」というクラス名にしてもいいけど
長くなるので同じクラス名でも別の機能を持たせたいので名前空間という概念ができた
0915デフォルトの名無しさん
2007/12/15(土) 09:57:19>>908
>>909
目的はよくわかりました。
たとえば、
class Widget {
public int x = 10;
public int y = 20;
}
のようなクラスのインスタンスを
シリアライズ化してファイルに保存
する場合、何が保存されるのでしょうか?
class obj = new Widget();
シリアライズ化
ファイルに保存
逆シリアライズ化
xとyを参照すると正しく10と20が読める。
こんな感じですか?
0916デフォルトの名無しさん
2007/12/15(土) 10:36:34つか自分でやってみろよ
0917デフォルトの名無しさん
2007/12/15(土) 13:26:34違います
言語を使ってみる前にこういうものかと言葉で理解しようとするのは誤りです
0918デフォルトの名無しさん
2007/12/15(土) 13:47:26間違いだらけでワロスw
0919デフォルトの名無しさん
2007/12/15(土) 13:47:28.NETも含めてより深く理解するために
Windowsアプリに応用しようかと思う
のですが、自作クラスを作成しない簡単な
フォームアプリでもdelegateととかは使われる
ものですか?
0920デフォルトの名無しさん
2007/12/15(土) 13:48:300921デフォルトの名無しさん
2007/12/15(土) 13:50:100922デフォルトの名無しさん
2007/12/15(土) 13:52:43気づかないだろうけど。
0923デフォルトの名無しさん
2007/12/15(土) 13:54:470924デフォルトの名無しさん
2007/12/15(土) 14:29:490925デフォルトの名無しさん
2007/12/15(土) 16:23:220926デフォルトの名無しさん
2007/12/15(土) 20:07:17まともに答えず話の方向ずらすだけ
0927デフォルトの名無しさん
2007/12/15(土) 20:21:19説教がましく言ってくるやつがいても、言い返せばOK。
0928デフォルトの名無しさん
2007/12/15(土) 21:30:38Aという処理の○○msec後にBという処理を行う
ということをTimerより高精度で行いたいのですがどうすればいいのでしょう?
QueryPerformanceCounterを使うといいよと言われたのですが、
ぐぐっても実行時間の計測方法しかわからなくて困ってます・・・
0929デフォルトの名無しさん
2007/12/15(土) 21:30:49メモリ開放しないとだめなのでしょうか?
c#は自動でメモリ開放してくれるのでしなくてもいいのでしょうか?
もしダメならなぜなのでしょうか?
今作っているプログラムはクラス内にAPIを使っていますが
メモリ開放をしなくても何も問題は起きていないです。
自動で開放できているということでしょうか?
0930デフォルトの名無しさん
2007/12/15(土) 21:32:32API って何? Win32API?
普通はハンドルは最後に解放するよ。それは C# でも C++ でも一緒。
0931デフォルトの名無しさん
2007/12/15(土) 21:33:44なんのハンドルか知らないけど
呼び出し側が解放するように指定されてるAPIなら解放しとけ
0932デフォルトの名無しさん
2007/12/15(土) 21:47:10System.Threading.TimerかSystem.Timers.Timerは?
0933デフォルトの名無しさん
2007/12/15(土) 21:50:59まずは精度を提示してください。
0934928
2007/12/15(土) 22:06:180935デフォルトの名無しさん
2007/12/15(土) 22:12:21まずは、C#を捨てるところから始めましょう。
0936デフォルトの名無しさん
2007/12/15(土) 22:14:450937デフォルトの名無しさん
2007/12/15(土) 22:15:29恥ずかしいからやめとけよ。
まともに答えてるのもわからんのなら。
わかるのなら答えてやれよ。
0938デフォルトの名無しさん
2007/12/15(土) 22:16:23GCが動いたら軽く吹っ飛ぶ
0939928
2007/12/15(土) 22:21:370940デフォルトの名無しさん
2007/12/15(土) 22:24:38>>934
何の実験かは知らんがWindowsをその用途に使うの多分向いてないよ。
仮に1msec以下の精度で時刻が分かっても
スレッドスケジューラが問答無用で実行権を奪っていくこともあるし
行儀の悪いドライバが長時間CPUを離さないと、
その間ユーザモードのプロセスは原理上なんもできん。
QueryPerformanceCounterとかStopwatchクラスでポーリングすれば、
100回のうち何十回とかは要件を満たせるかもしれんが、
一回のミスも許されないような用途ならそもそもWindowsを選ぶべきじゃない。
C#じゃなくてC++なら可能とかそういうレベルですらない。
FPGAとか使った方がいいんでは? と目的も聞かずに適当アドバイス。
0941デフォルトの名無しさん
2007/12/15(土) 22:32:030942デフォルトの名無しさん
2007/12/15(土) 22:34:060943デフォルトの名無しさん
2007/12/15(土) 22:35:110944デフォルトの名無しさん
2007/12/15(土) 22:40:22APIを呼び出しているクラス内の最後にclose(hwnd)みたいな感じやるということですか?
でも、hwndがメソッド外でフィールド?で定義していた場合
クラス自体を終了しなければ解放されないですよね?
で、クラスならいちいち解放しなくてもガベージコレクションで自動で開放されるから
わざわざしなくてもいいと思うんですがどうなんでしょうか?
>>931
他のプロセスのハンドルです
VirtualAllocExで仮想メモリを割り当てて、開放しなかったけれども
何も異常が起きないんですが、このクラスを呼び出す別クラスのメソッドが
終了すれば、自動で開放されているということかな?
0945デフォルトの名無しさん
2007/12/15(土) 22:46:120946デフォルトの名無しさん
2007/12/15(土) 22:52:132マイクロ秒くらい(これは俺の環境の場合だが)
かかるんだが、これってQueryPerformanceCounterの速度か
それともアンマネージ呼び出しなんかのオーバーヘッドかどっち?
0947デフォルトの名無しさん
2007/12/15(土) 22:53:52まあ普通はハンドル自体はSafeHandleでラップして、
さらにDisposableなクラスでラップするけどね。
0948デフォルトの名無しさん
2007/12/15(土) 22:56:54だよね?
0949デフォルトの名無しさん
2007/12/15(土) 22:59:29意味の分からんことを言うな
0950デフォルトの名無しさん
2007/12/15(土) 23:02:58に確保されるんだよね?
0951デフォルトの名無しさん
2007/12/15(土) 23:05:07DirectoryInfo()にパス名を引数として渡す場合、
C#では@"c:\temp"のように先頭に@マークをつけるのは
何故ですか?VC++やVBでは付けないみたいですが。
0952デフォルトの名無しさん
2007/12/15(土) 23:08:250953デフォルトの名無しさん
2007/12/15(土) 23:08:31aspx.csでやりたいのですが、これはTextBoxオブジェクトをインスタンス化して
表示するということは可能でしょうか?
Response.Writeでタグを吐けば表示可能ですが、この方法以外でやりたいのです。
なぜデザイナでタグをペチペチ配置しないかというと
例えばURLのパラメータによってテキストボックスの数が異なるからです。
なので、動的に生成する方法を知りたいのです。
よろしくお願いします。
0954デフォルトの名無しさん
2007/12/15(土) 23:09:44ハンドルそのものは値型で保持されるけど
ローカル変数じゃないからスタックとか関係ないよ。
0955デフォルトの名無しさん
2007/12/15(土) 23:10:57Designer.csを読めばわかる
レス数が950を超えています。1000を超えると書き込みができなくなります。