ふらっとC#,C♯,C#(初心者用) Part55
スレッドセーフって意味が曖昧だが、まあそうだ。
>>951 クラスがやっていることによる。
依存性がないならstaticだろうが通常のコンストラクタだろうがスレッドセーフだ。
955 :
913:2010/02/27(土) 12:35:07
>>942-945 素晴らしい!それを見る限り、mshtml参照しなくても同じことできるっぽいですね。
mshtmlでイベント登録したときも、
なぜか3回呼ばれていました。
これはちょっとやっかいですね・・・
956 :
913:2010/02/27(土) 13:11:15
>>942-945 ちなみにこういうことができるよ〜っていう情報はどこから手に入れたらいいでしょうか?
msdn
958 :
デフォルトの名無しさん:2010/02/27(土) 15:29:31
>>956 自力で解析した
どう検索していいかワードが浮かばなかったのでドット打って一つ一つ見て回った
959 :
913:2010/02/27(土) 22:12:08
スクリプト言語と違ってネットに情報が少ないんですよねー
MSDNはなんだか見づらいし・・・
ドット打って調べるとか、MSDNで頑張るしかないか
960 :
デフォルトの名無しさん:2010/02/28(日) 01:02:11
アクティブウィンドウを監視したいんですけど、
タイマーを使わない方法ありますか?
GetForegroundWindow() を 100 ミリ秒ごとに
呼び出してもやりたいことはできるんですが、
タイマーはできれば使いたくないと思いまして。
あるかも
すみません、小文字のフルパスファイル名から
HDDに記録されている大文字小文字の正しいファイル名を取得する方法はありますでしょうか?
System.IO.FileInfo fi = new System.IO.FileInfo(filename);
string fn = Path.GetFullPath(filename);
とやっても取得できませんでした。
FileInfoの中身も正しく取得されてないのか。これ.netのバグじゃね?
964 :
デフォルトの名無しさん:2010/02/28(日) 07:30:43
バグなのかわからんけどファイルはS-JIS、内部はusc-2という変換してなかったっけ?
あとは大文字小文字区別ってあったっけ?
うん、バグじゃね?
966 :
デフォルトの名無しさん:2010/02/28(日) 07:32:27
今フォルダをAAA作ってそのあとaaa作ろうとしたけど同じ物があるって警告でたよ
windows(というかDOS)は確か大文字小文字の区別は無かったはず・・・
967 :
デフォルトの名無しさん:2010/02/28(日) 07:44:07
確かunix系は大文字小文字は別だったはずなんだよな・・・
なのでwindows系はもしかしたら勝手にLowerもしくはUpperやってるかもしれん
Exists等で比較するときは大文字小文字の区別はしないが、
保存するときは大文字小文字は指定されたまま保存するでしょ?
でないと再度エクスプローラで表示したときに大文字小文字区別して表示できない。
普通にエクスプローラ上でaaaとAAA作るだけでも警告でるから。
>>962 var dir = new DirectoryInfo(Path.GetDirectoryName(filename));
var file = dir.GetFiles(Path.GetFileName(filename));
これでファイルがあればfile[0].FullNameに入る
フォルダ名は駄目だから同じようなことをルートからdir.GetDirectoriesしていけばいいと思う
string fn = System.IO.Directory.GetFiles(
System.IO.Path.GetDirectoryName(filename),System.IO.Path.GetFileName(filename))[0];
で、正しいパスは取れるけどなんかなぁ。FileInfoで取れないのが納得できん。
表示名がcase sensitiveなのは見やすさの為だけのようだね。
それでも、見やすさが欲しい時のために大小区別して取得されるべきだと思う。
System.IO.FileInfo fi = new System.IO.FileInfo(filename);
string fn = Path.GetFullPath(filename);
この両方はfilenameで指定した物がそのままでるのか・・・
974 :
デフォルトの名無しさん:2010/02/28(日) 08:16:58
>>972 まあ文字の扱いを知ってる人ならいいかもしれないがそんなの知らない人はおかしいと感じるかもなあ・・・
ソース見てないけどPathクラスは文字列処理してるだけの気がする
こんな感じ?
string fullname = Path.GetFullPath(filename);
string[] paths = fullname.Split(':', '\\');
string fullpath = paths[0].ToUpper() + ":\\";
for (int i = 2; i < paths.Length - 1; i++)
fullpath = Directory.GetDirectories(fullpath, paths[i])[0];
fullpath = Directory.GetFiles(fullpath, paths[paths.Length - 1])[0];
C#で「ネット上に情報が少ない」とか言ってる奴は、さっさとやめたほうがいいぞ。
978 :
デフォルトの名無しさん:2010/02/28(日) 09:17:58
既存のコントロールを継承したクラスを作る場合、ソリューションエクスプローラーから
クラスとして追加して継承元コントロールを書く方がいいのか
それともユーザーコントロールとして追加するのがいいのか・・・
同じコントロールに同じ固定処理を施すだけなんだけで基本的には元のコントロール
として使うんだけどさ・・・
980 :
デフォルトの名無しさん:2010/02/28(日) 09:20:37
>>977 少ないというかHTML関連は雑音が多いんだよ
ASP.NETやjavascript関連でHTML部分をいじる解説は山ほど出るんだが
C#になるとぐっと減るし、あってもmshtmlを使うような方法とかになるんだよ
あとはVC++とかね・・・
なのでどうぐぐれば最適な答えに辿り付くかを探し当てるのがものすごく大変だったよ
981 :
デフォルトの名無しさん:2010/02/28(日) 09:21:26
そりゃ、そのものズバリはないかもしれん。
でもさー。HtmlDocumentなんて、mshtmlをベースにしたものなんだし、
JavaScriptのgetElementByほげ系だって参考になるだろうよ。
983 :
デフォルトの名無しさん:2010/02/28(日) 09:27:53
>>982 今はなんとなく見得てきたからその言い分はわかるけど、これから勉強って人にはノイズでしかなかったと思うよ・・・
そう思いたければそれでいいじゃん。
で、一生初心者やってれば。
985 :
デフォルトの名無しさん:2010/02/28(日) 09:37:44
意地でも叩きたいのがいるな
自分だって紆余曲折した時代だってあったろうに・・・
しかも初心者用とかかれたスレで・・・
mining?
>>976 private static readonly StringBuilder buf = new StringBuilder(260);
public static string GetDisplayPath(string path) {
var pidl = ILCreateFromPath(path);
SHGetPathFromIDList(pidl, buf);
ILFree(pidl);
return (buf.Length > 0) ? buf.ToString() : path;
}
Win32APIを使うバージョンを作ってみた。P/Invokeの宣言は省略
非スレッドセーフでエラー処理もなし
質問です。
ファイラーのようなものを作っているのですが、
ファイルの「コピー」はClipboard.SetDataObjectでなんとかできました。
ファイルの「切り取り」はどうすれば実装できますか?
貼り付けた時にコピー元を削除すれば良いんじゃないの?
990 :
988:2010/02/28(日) 17:25:01
その場合は貼り付け時のタイミングをどうにか捕まえて、
コピー元を削除することになりますが、アプリケーションを
終了してしまっていると削除できないですよね?
991 :
デフォルトの名無しさん:2010/02/28(日) 17:29:41
>>990 何で迷ってるかよくわからんが
クリップボードも確かファイルのコピーとか切り取りって
「xxをコピー予定」とか「xxを切り取り予定」
くらいで実際に貼り付けの段階まで実体は何もしてないと思うんだが
貼り付けが実行されたときに元と先のファイルをロックして自分の好きなように
作業すればいいだけと思うんだが
992 :
988:2010/02/28(日) 17:48:05
確かに「切り取り」すると貼り付けるまでファイルが半透明になるので、
そういう”予定”の情報をクリップボード側(もしくはOS?)が保持してそうですが、
「切り取り」ですよって情報をどうやって投げる事ができるのでしょうか?
次スレは?
俺は制限で無理だった
994 :
デフォルトの名無しさん:2010/02/28(日) 17:51:59
>>992 エクスプローラーはクリップボードに予定が入ってれば張り付けが黒字になりますよね?
それをクリックしたらイベント発生でクリップボード参照して動けばいいんでないの?
難しく考えすぎ。
Excelのセルを切り取ってメモ帳に貼ってみ。
で、メモ帳のテキストを切り取ってみ。
切り取りはそもそもアプリ内で閉じた話。
996 :
デフォルトの名無しさん:2010/02/28(日) 17:53:16
>>995 ファイルのコピーとテキストとかの話は分けたほうがいいかも
テキストとかは多分選択した範囲全部持ってるだろうから
>>996 たぶんとかじゃなくて・・・
想像語る前にクリップボード監視ソフトをまず作れよ。挙動分かるから。
998 :
996:2010/02/28(日) 17:56:56
>>997 俺は質問者じゃない
クリップボードの挙動は見てればわかるよw
>>998 分かってないから多分とかだろうとか言ってんだろw
1000 :
デフォルトの名無しさん:2010/02/28(日) 17:59:29
うま
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。