複数の処理を同時に動かすには?


タイムリー  2006-01-17 09:25:18  No: 19702  IP: 192.*.*.*

複数の処理を同時に動かしたいのですがどうすれば
よいのでしょうか?

引数を渡して、SetCurretnDir のディレクトリ名を
変更を行って処理を行うEXEファイルを作成し、
その実行ファイルを、ShellExecuteで呼び出すと
同時処理が行われます。

この実行ファイルの部分を
スレッドで行おうとしたのですが。
動作が安定しません。
ひとつのスレッドでカレントディレクトリが
変更されると他のスレッドにもこのカレントディレクトリが
適用されるのではないでしょうか?
それとも、作り方が間違っているのでしょうか?

もし、スレッドが利用できないのであれば
DLLにするという方法は使えないのでしょうか?
それとも、やはり、ひとつのアプリケーション上には
カレントディレクトリはひとつしか存在
できないのでしょうか?

編集 削除
にしの  2006-01-17 10:39:43  No: 19703  IP: 192.*.*.*

1プロセスあたり、1つのカレントディレクトリとなります。
EXEを分けて別プロセスにするしかないかと。
# 1つのEXEで別プロセスとして起動するという手もありますが

編集 削除
えーと  2006-01-17 11:14:07  No: 19704  IP: 192.*.*.*

SetCurretnDir を設定できるということは、そこまでの絶対パスが分かってるのでしょう?
だったら、絶対パスで起動したらいいんじゃないでしょうか。

編集 削除
タイムリー  2006-01-18 09:51:06  No: 19705  IP: 192.*.*.*

にしのさんへ
># 1つのEXEで別プロセスとして起動するという手もありますが
1つのEXEの中で、別プロセスとしてスレッド処理ができる
ということなのでしょうか?

えーとさんへ
>絶対パスで起動したらいいんじゃないでしょうか
全て自作なら問題ないのですが
その先で別のプログラムを呼び出しているのですが
それに対してカレントディレクトリを指定しておかなければ
ならないので困っているんです。

編集 削除
にしの  2006-01-18 12:27:12  No: 19706  IP: 192.*.*.*

ShellExecuteの第5引数(だったと思いますが、未確認)に、実行するディレクトリを指定できますよ。

> ># 1つのEXEで別プロセスとして起動するという手もありますが
> 1つのEXEの中で、別プロセスとしてスレッド処理ができる
> ということなのでしょうか?
別プロセスであれば、単一スレッドで問題ないかと思いますが。
EXEの引数で判断して、ShellExecuteして終了するようなロジックがあれば可能かとおもいます。
ただ、ShellExecuteの引数でカレントディレクトリを指定できるのでそちらのほうが簡単かと。

編集 削除