定時実行について


nori  2005-06-10 02:27:47  No: 15477

はじめまして
Delphi6 Personal を使っているのですが
既にあるプログラム(例)abc.exe
を10時と16時の2度定時的に実行させるという事は可能でしょうか?
その時に abc.exe はユーザにわからないようにして起動したいのですが可能でしょうか?

( abc.exe ) 既にあるプログラム

    ↑    定時になるとユーザーにわからないよーに実行

( def.exe ) 定期実行用のプログラム←今回はココの事です


にしの  2005-06-10 02:50:49  No: 15478

タイマーのOnTimerイベントで、定時だったら実行すればよいかと。
APIのShellExecuteを使って、第6引数にSW_HIDEを指定すれば、見えなくなると思います。
ただ、ユーザがわからないかどうかは不明です。
定期実行が走れば、HDDは動きますしCPUにも負荷がかかりますから。
気づく人は気づくでしょう。


nori  2005-06-10 04:08:28  No: 15479

にしの  様
早速の返信ありがとうございます。
なるほど、既にあるプログラムを起動させる場合にはそれで出来そうです。

定期実行の方もOnTimerでやってみたいと思いますが、定期実行用のプログラム(def.exe)
自身をフォームもタスクトレイにも表示させる事無く、実行させる事はできるのでしょうか?


にしの  2005-06-10 04:57:29  No: 15480

例えば、

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.ShowMainForm := False;
end;

とすれば、アプリケーションは見えなくなりますね。
ただし、Form1.OnShowイベントも起きないので、記述箇所には注意です。


むひょ  2005-06-10 09:33:38  No: 15481

NT系なら、ATコマンドたたいて、自動実行するとか?
または、サービスで動くスケジュールソフトを使う。
時間になったらシャットダウンするようなスケジュール可能なソフトは、Vectorからダウンロードできます。

そうじゃなく、自分でやりたいのなら、にしの氏が答えている通り。
ゴミレス失礼しました。


nori  2005-06-13 18:00:18  No: 15482

>にしの様
 その方法でうまくいきました、ありがとうございますっ

>むひょ様
 まだ少数ですが9x系も何台かあるので・・・サービス登録はあきらめていたんです。

あ、あと作っていて思ったのですが
管理用のPCにホストアプリケーションをおいて、ネットワーク上にブロードキャスト等でdef.exeにリクエストを送り
任意にdef.exeを実行する事等はできるのでしょうか?


にしの  2005-06-13 18:39:26  No: 15483

UDPのブロードキャストなら可能ですね。TCPだと、任意のIPには送れるけれど、不特定のは出来なかったような気がします。
でも、ファイアウォール系のアプリが動いていると、def.exeに気づかれる場合がありますよ。


nori  2005-06-13 19:07:34  No: 15484

>にしの様
早速の返信ありがとうございます

やはいりUDPを使うのですか・・・もしよろしければホストの方と、def.exeの方で具体的にどのような動きをしたらよいのかご教授お願いできますか?


deldel  2005-06-13 19:16:40  No: 15485

ここは?

http://www.borland.co.jp/qanda/delphi/d0003060.html


deldel  2005-06-13 19:20:05  No: 15486

あと、こことか
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/network/UDP.htm


残念ながら…  2005-06-13 19:30:48  No: 15487

D6 Personalには TUDPはありません。


deldle  2005-06-13 19:49:49  No: 15488

あ、D5にもありませんでした^^;


nori  2005-06-13 20:19:41  No: 15489

>deldel様
ぐはっ・・・それならばDelphi7の導入を真剣に考えて無くてはならないようにですね
Delphi6で代替的な機能等ってありますか?


deldel  2005-06-13 20:42:52  No: 15490

TNMUDP でできるようです。
以下は、NMUDP1 が受信用、NMUDP2 が送信用です。

procedure TForm1.FormCreate(Sender: TObject);
begin
  NMUDP1.LocalPort := 1234;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  C: array[1..8] of Char;
begin
  C[1] := 'A';
  C[2] := 'B';
  C[3] := 'C';
  C[4] := 'D';
  C[5] := 'E';
  C[6] := 'F';
  C[7] := 'G';
  C[8] := 'H';

  NMUDP2.RemoteHost := '100.101.102.103';
  NMUDP2.RemotePort := 1234;
  NMUDP2.SendBuffer(C, 8);
end;

procedure TForm1.NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer);
var
  C: array[1..8] of Char;
  i: Integer;
begin
  if NumberBytes <= 8 then begin
    NMUDP1.ReadBuffer(C, i);
    Memo1.Lines.Add('受信文字列:' + C);
    Memo1.Lines.Add('送信元IP:' + FromIP);
  end;
end;


残念ながら…Ⅱ  2005-06-14 01:25:58  No: 15491

D6 Personalには TNMUDPもありません。
ネットでTNMUDPのFree版を探しましょう(あるのかな…)
でなければ、Indyか…


にしの  2005-06-14 06:19:20  No: 15492

Indyでのサンプル。
Indyの場合、UdpServerとUdpClientにわかれているようで、受信はServer側でやるようです。

procedure TMainForm.Button1Click(Sender: TObject);
begin
  IdUDPClient1.Active := True;
  IdUDPClient1.Broadcast('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 1234);
end;

procedure TMainForm.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
  Buffer: String;
  tmp: String;
  buf: array[0..8] of char;
  count: integer;
begin
  Memo1.Lines.Add('PeerIP:' + ABinding.PeerIP);
  Memo1.Lines.Add('PeerIP:' + IntToStr(ABinding.PeerPort));
  ABinding.Accept(0);
  Buffer := '';
  repeat
    count := AData.Read(buf, 8);
    if count = 0 then break;
    SetLength(tmp, count);
    CopyMemory(PCHAR(tmp), @buf[0], count);
    Buffer := Buffer + tmp;
  until count = 0;
  Memo1.Lines.Add(BUffer);
end;


ひとし  2005-06-15 18:25:14  No: 15493

横からで申し訳ありません
私はDelphi7 Proを使っているのですが
その条件での同じような事を考えています

その際のサンプルソース等はありませんか?


any  2005-07-12 22:07:58  No: 15494

↑7ならので出来るんじゃない?


あれ?  2005-07-20 06:14:26  No: 15495

さっき投稿したの反映されてない?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加