一切表に実行画面を出さずにバックグラウンドでの処理なんですけれども・・・
「スレッドを使う」的な事まではわかったのですが、詳細がつかめませんでした
●バックグラウンドでファイルをコピーする
●バックグラウンドで他のアプリケーションを起動する
はどのように記述したらいいのでしょうか?
わかりにくい説明ですが、よろしくお願いします
とりあえずTThreadの使い方は分かっているのでしょうか?
簡単に説明できるものではありませんが、それほど難しいものでもありません。とりあえず使い方はWeb上に色々あるので学んでください。
その後、TThread内でファイルのコピーやアプリの実行コードを書いてみては如何でしょうか?
色々Threadを扱う上で注意することはありますが、先ずは動かしてみることからはじめてみてはどうでしょうか?
Thread使わないで
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainForm := False;
WinExec('notepad.exe', sw_Show);
end;
じゃダメですか? ↑ の処理ならプロジェクトファイルのみで出来ますけど。
BGさん
@Enumさん
ありがとうございます。
両方とも試してみたのですが、やはりファイル転送時にコピー中の表示がでてしまいました。
このコピー中のダイアログを消す事はできないのでしょうか?
>>コピー中の表示
というのは、どういうものでしょうか?
うーん、どうもタイトルやThreadとは別問題の事で悩んでいるみたいですね。
やりたい動作と書いたコードを見ないとなんともいえませんが、
「コピー中のダイアログ」と言ったところからShellAPIを使っているのでしょう。ダイアログを表示/非表示はパラメータで切り替えられます。
チェックしてみてください。
>deldelさん
えっと、良い画像がなかったので引用なのですが
http://allabout.co.jp/computer/lan/closeup/CU20020720A/hd2.jpg
↑このコピー画面の事です
>メラトニンさん
ShellAPI使ってますが・・・パラメータですか
>メラトニンさん
コピーのソースは以下のモノを参考にしています
http://www.geocities.co.jp/SiliconValley-SanJose/1427/delphifaq.html#ファイルをコピー・移動・削除する
リンクの
fFlags := FOF_FILESONLY or FOF_ALLOWUNDO;
って所にFOF_SILENTを追加します
fFlags := FOF_FILESONLY or FOF_ALLOWUNDO or FOF_SILENT;
googleでトップに引っかかったリンクを示しておきます
http://yokohama.cool.ne.jp/chokuto/urawaza/struct/SHFILEOPSTRUCT.html
理解に余力があればTSHFileOpStructのパラメータは全て指定することをオススメします。
ShellAPIってことは
SHFileOperationですか?
みなさんは遠回しに「コードを晒せ」
って言っているんじゃないかな。
SHFileOperationを使っているとしたら
TSHFileOpStruct.fFlags
FOF_ALLOWUNDO //ゴミ箱にファイルを移動
FOF_NOCONFIRMATION //すべての質問をYesと答える。
FOF_NOCONFIRMMKDIR //ディレクトリを作成するかどうかを聞かない。
FOF_SILENT //ダイアログを表示しない
FOF_SIMPLEPROGRESS
//ダイアログボックスは表示するが、ファイル名は表示しない。
というオプション指定ができたと思うので
FOF_SILENTを
使ってみてください。
元々のバックグラウンドで動かすにはってやつですが、
スレッドを使うのも正攻法とは思いますが
テキストで"ファイルコピーするための"
WSHファイルやBATファイルを作成して
それを起動かける
という方法もあるんじゃないでしょうか。
がんばって勉強してみてください。
本家
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shfileoperation.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/shfileopstruct.asp
begin
Windows.CopyFile('c:\windows\system32\calc.exe', 'c:\dentaku.exe', True);
end;
か
var
mStream: TMemoryStream;
begin
mStream := TMemoryStream.Create;
try
mStream.LoadFromFile('c:\windows\system32\calc.exe');
mStream.SaveToFile('c:\dentaku.exe');
finally
mStream.Free;
end;
でやってみるのはどうでしょう
finally
mStream.Free;
end;
でした;;
ツイート | ![]() |