Quantcast
Channel: 質問!ITmedia 新着質問(Java/253)
Viewing all articles
Browse latest Browse all 2439

Javaで常駐するソフトを作っています

$
0
0
Javaを利用して常駐するタスクスケジューラのようなプログラムを作成しています。 大体は完成したのですが、どうしてもわからない部分があります。 「起動したらX分毎にバッチファイル起動!」 はできるのですが、 「起動したら60分毎にバッチファイル起動!」 ※ただしバッチファイル起動時間は 01:05、02:05、03:05 など指定間隔ごとにする プラス、 「起動したら毎日23:55にバッチファイル起動!」 が思いつきません。 ==================================== import java.awt.AWTException; import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.TrayIcon.MessageType; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; import java.util.Timer; import java.util.TimerTask; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JOptionPane; public class Task { /** * メール振分タスク */ public static void main(String[] args) throws Exception { try { // 多重起動チェック @SuppressWarnings("resource") FileChannel fc = new FileOutputStream(new File("LockFile")).getChannel(); FileLock lock = fc.tryLock(); if (lock == null) { //既に起動されているので終了する JFrame frame = new JFrame(); JOptionPane.showMessageDialog(frame, "すでに起動されています!"); return; } //起動メッセージ表示 JFrame frame = new JFrame(); JOptionPane.showMessageDialog(frame, "タスクを起動しました!"); new Task(); } catch (Exception e) { } } /** コンストラクタ */ public Task() throws IOException, AWTException { // アイコンイメージの読み込み Image image = ImageIO.read(Thread.currentThread().getContextClassLoader().getResourceAsStream("16_16.png")); // トレイアイコン生成 final TrayIcon icon = new TrayIcon(image); // イベント登録 icon.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { icon.displayMessage("メール配信","メール配信システム アイコンがダブルクリックされました",MessageType.WARNING); } }); // ポップアップメニュー PopupMenu menu = new PopupMenu(); // 終了メニュー MenuItem exitItem = new MenuItem("終了"); exitItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); // メニューにメニューアイテムを追加 menu.add(exitItem); icon.setPopupMenu(menu); // タスクトレイに格納 SystemTray.getSystemTray().add(icon); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 01_メール受信起動.bat TimerTask task0 = new TimerTask() { @Override public void run() { icon.displayMessage("タイマー2分","メールチェックします\n" , MessageType.INFO); // メールチェック起動 String cmd = "cmd.exe /c start c:/dummy.bat"; try { Runtime.getRuntime().exec(cmd); } catch (IOException e) { e.printStackTrace(); } } }; Timer timer = new Timer(); timer.scheduleAtFixedRate(task0, 0, 2 * 60 * 1000); // 2分ごと } }

Viewing all articles
Browse latest Browse all 2439

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>