1 :
デフォルトの名無しさん:
2 :
デフォルトの名無しさん:2008/01/21(月) 04:25:37
早速ですが質問します
Windows板の方で話題になっていたエディタをCmdletで作ろうとしているのですが
パイプとfilterにも対応できたら(つまり、定期的にフォーム内のテキストボックスに文字列が加わる)面白そうだと思い
BeginProcessing()内でフォームを表示させることにしたのはいいものの
ShowDialog()だとPowerShellの処理が止まってしまい、Show()だとフォームがすぐ閉じてしまいます
どういう風に書けばいいでしょうか?
4 :
2:2008/01/21(月) 04:38:52
重杉。その時点で糞。
whichコマンド書いてみたけどちょっとゴツゴツしてるな字面的に。
まあバッチファイルよりははるかにましだが起動の遅さは確かに気になる。
$cmd = $args[0]
if(!$cmd){
write "Usage: which COMMAND"
write "Example: which notepad"
exit 1
}
$exts = (get-item -path env:pathext).value.split(";")
$paths = (get-item -path env:path).value.split(";")
foreach($p in $paths) {
foreach($e in $exts) {
$fn = join-path -path $p -childpath ($cmd + $e)
if(test-path $fn) {
write $fn.ToLower()
exit 0
}
}
}
write "$cmd not found"
exit 1
>>2 PowerShellよりスレッドを勉強しろ。以上。解決。
8 :
2:2008/01/21(月) 19:39:27
>>7 こういうときにスレッド使うんですね、もうちょっと調べてみます
名前欄に、 fusianasan って記入して書き込むと、スレッドの使い方のヘルプが出る。
〆(°°)カキカキ..勉強になるなぁ
11 :
2:
報告遅れましたが、スレッド作ってその中でShowDialog()使えば期待した結果になってくれました
Thread.Join()する位置に困っていたんですが、そもそもPowerShellのスレッドとして作成されるからか
別段何かしなくても、明示的に作ったスレッドは一度Thread.Start()してしまえばPowerShell自体を閉じない限り消えないっぽいんですね、面白い
>>8さんありがとうございました