931 :
929:05/01/23 20:16:54
>>930 できます。以前、そのようなプログラムを作成しました。
プロセスが実行中(数値計算でした)も、フォームが凍らないタイプです。
家に帰ったら、サンプルを貼ります。がんばってください。
>>929 リクエストが返ってこないからだろう。
他のホストで試してみたらどうなる?
933 :
930:05/01/23 20:47:13
プロセスとスレッドを混同している予感
軽量プロセスだからいいんじゃね?
936 :
デフォルトの名無しさん:05/01/23 22:13:37
C#でWordを操作するソフトを趣味で開発しています。
このサイトを参考にしています。
http://www.ne.jp/asahi/office/okada/macro/ しかしながら、
With .Parent
End With
というのがよくわかりません。
確かに、FindクラスにParentというものがありますが、
Parent.Deleteのような使い方ができません。
やりたいことは、このサイトと同じことなのですが・・・・。
ちなみに、wdReplaceALLとかwdReplaceOneとかで同じことが
できるか試してみましたが、うまくいきませんでした。;
wdReplaceOneを設定すると、Find.Executeの返り値が検索終了後falseに
ならないからうまくいきませんでした。
937 :
936:05/01/23 22:19:02
WithはVBのキーワード。詳しくはヘルプ。
で、Parentが返すのはobject型なわけで、objectにDeleteとかがないのは分かるよね?
object a = "hoge";
a.IndexOf("o");
とかできないのと同じ。
適切な型にキャストしてやりましょう。
//ブレークポイントで何型か調べるとか。
やっぱり混同してる予感
940 :
931:05/01/23 22:58:55
>>930 お待たせしました。
参考になれば幸いです。
private void ProcessRun(string filename)//プロセス制御
{
process=Process.Start(filename);
process.EnableRaisingEvents=true;
process.Exited+=new EventHandler(Process_Exited);
//プロセス終了時を取得状態にする
MainText.Text=String.Format(" {0} / {1}",listcount,filelist.Items.Count);
}
private void Process_Exited(object sender, EventArgs e)
{
if(listcount>=filelist.Items.Count)//実行していないプロセスがないなら
{
MainText.Text="Process Done";//処理終了
return;
}
else
{
ProcessRun(filelist.Items[listcount++].ToString());
//次のプロセス開始
}
}
941 :
931==936:05/01/23 23:04:33
>>938 レス39です。
当方、withがVBだ、等はばっちりです。
質問時には、すでにキャストも試みました。
object型がDeleteないのとかもばっちり把握しています。
object型は使用時、キャストを利用するのが一般的だと、存じています。
デバッグでどの型にParentをキャストしてあげれば、
Deleteメソッドを使えるのかがわかりません。
表現がおかしいですね。
Deleteメソッドを搭載したどのクラスにキャストすればよいのか
わかりません・・。調べられるものなのですか?
調べるコツとか教えていただけると助かります。
Goto End;
942 :
931==936:05/01/23 23:07:22
>>940 念のため追記。
int listcount;
private void PlayButton_Click(object sender, System.EventArgs e)
{//プロセス開始
listcount=0;
if(filelist.Items.Count==0)
{
MainText.Text="No Process";
return;
}
ProcessRun(filelist.Items[listcount++].ToString());
}
943 :
デフォルトの名無しさん:05/01/23 23:14:22
基本的なことを教えてください。
クラスのフィールドとして定義され、かつ同時にnewされた
フィールドは、実際にはいつnewされるのでしょうか。
コンストラクタでしょうか?
public class Test
{
private ArrayList al = new ArrayList();
}
>>941 一旦.Parentをobjectにでも突っ込んで、その次の行でブレークしてみる。
自動変数の項目にそのオブジェクトが何型かも書かれてる。
>>940 >930が求めてるのは自分で起動するわけではないプロセスについての監視じゃないのか?
そうならWMI、ManagementEventWatcherと言うキーワードを出しておこう。
945 :
931==936:05/01/23 23:21:20
946 :
931==936:05/01/23 23:23:30
>>943 僕は、コンストラクタでnewしてるよ。
いつされるか、わからないから、とりあえず一般的な手法として。
948 :
931==936:05/01/23 23:25:02
public class Test
{
private CmyClass mc = new CmyClass();
}
public class CmyClass{
public CmyClass(){
Messagebox...
}
}
とかすれば、わかる希ガスるん。
乙と言えば乙だが、このスレは950よりも前に次スレ立てる縛りでもあるのか?
>>949 乙。
教えて君で申し訳ない。
最小化でタスクトレイ?(時計の脇のノートンとかがあるところ)に入れたいんだが
どうしたらいいんだろう。
952 :
930:05/01/23 23:34:29
みなさんいろいろありがとうございます。
説明不足ですいません(汗)
プロセスの監視をしたいので
>>944さんのを参考にさせていただきます。
953 :
931==936:05/01/23 23:38:09
>>951
ShowinTaskbar = false;
で、
ツールからNotifyIconをD&D。
アイコン作って、・・・。
宇宙仮面に載ってるよ。
>>953 ありがとう、とりあえず宇宙仮面に逝ってくる
>>950 まあ本当は950過ぎてからなんでしょうけど、つーか縛りはないですよ。
>>951 漏れはWindowsFormsは忘れ去ってるので、他を当たってくだされ。
24時間前は900あたり。スレ消費が早いな。
958 :
デフォルトの名無しさん:05/01/24 01:01:40
RTFの仕様詳しく説明してるとこ教えてください。
C#が生成せるRTFはワードパッドが生成するRTFと全然違って困ってます。
誰かPowerToolsのTrue WebGridとか使ってる香具師いる?
使い勝手はどう? とか、ちょっと上手く動かないんだけど。とかなら分かるが、
使ってるかどうかのアンケートに意味があるのか?
962 :
デフォルトの名無しさん:05/01/24 13:23:22
ArrayListで作ったコレクションって、どんなオブジェクトもAdd()出来てしまいますよね。
前もって指定された形式以外のオブジェクトが入らないようにできるコレクションクラスって
何かあるんでしょうか?
それとも、MSDNにインタフェースについての記述があるように、
どんな時も自作コレクションクラスを作って、自分でその辺の管理をするべきなんでしょうか?
.NET1.1までならフレームワークに用意されてるのはstringに対するStringCollectionくらいかね。
.NET2.0でジェネリクスが追加される事で汎用的な型指定コレクション・List<T>クラスが使えるようになる。
964 :
962:05/01/24 13:35:43
有難うございます。やっぱり2.0出てくるまで簡単には出来ないんですよねぇ。
いいです。今回は、何も気付かない振りして、実装しちゃいます。
まぁ、2.0も今年中には出ますよね。
どうも有り難うございました。
>>962 自前のコレクションクラスを作って、
Addするときに期待しないものが来たら例外を投げるようにするとか。
>>965 まさしく、そんな予感がしていたんですが、面倒そうだったので・・・
そうなんですよね、正しくはそうあるべきだと思います。
でも〜。・゚・(つД`)・゚・
>>962 CollectionBaseクラスを継承しる
>>966 どっかに専用コレクションクラスを生成するツールがあったぞ
969 :
デフォルトの名無しさん:05/01/25 11:47:39
PictureBoxをマウスのドラッグで縮小、拡大させたいのですが、
参考になるHPとか本を誰か知っていませんか?
読み込んだ画像の上でクリックすると、画像の四隅にポイントが出て、
そのポイントをドラッグすることで画像が縮小、拡大する。みたいな。
情報があれば、よろしくお願いします。
>>969 ウィンドウそのものを縮小拡大ではなくて、PictureBoxコントロールを縮小拡大ですか?
そうであればControlとかPictureBoxを継承して自前で作るしかないような気がします。
MouseMoveあたりでマウスの位置を検出して端に近ければ四隅にポイント表示。
四隅に近くてクリックされている間はコントロールをマウスの位置に合わせてリサイズ。
もっと簡単な方法もあるかもしれませんが一応。
>>969 そういうコンテナを作ってドッキングさせるとか
MainMenu のアイテムがクリックされた場合の処理は、
アイテム毎にイベントハンドラを増やさないといけないのでしょうか?
例えば、次のような事をやりたいのですが、なにかいい方法は
ありませんか?
メニュー1_________メニュー2_______メニュー3
__アイテム1-1______アイテム2-1______アイテム3-1
__アイテム1-2______アイテム2-2______アイテム3-2
__アイテム1-3______アイテム2-3______アイテム3-3
のようなメニュー構成になっている時に、
アイテム1-x がクリックされた場合の処理は、メニュー1 の Click で
拾ってメニュー1の中で処理させたいのですが…。
今は、アイテム1-1, アイテム1-2, アイテム1-3 など全ての項目の
Click イベントに1つずつちまちまと処理を追加していっています。
何かいい方法はないでしょうか?
イベントハンドラ共有して、senderを見て発生元調べてswitchで分岐したら。
そういうの登録する仕組み作っとけ
ArrayListを配列にして使用できるんでしょうか。こんな感じで。
ArrayList[] testList = new ArrayList[10];
testList[0].Add( "abc" );
コンパイルは出来ても2行目でエラーになります。
出来れば楽なんですが・・・。
配列もただのオブジェクトなわけで、newしても入れ物を作るだけ。
入れ物の中身は自分で作って下さい。
ArrayList[] testList = new ArrayList[10];
testList[0] = new ArrayList();
testList[0].Add( "abc" );
979 :
デフォルトの名無しさん:05/01/26 11:53:42
ほかの人のソース見ていてinternalが多用されているのですが、
本を読んでもprivateとinternalの違いがよく分からないのです。
教えてください。