» »

Izdelava programa za delovanje v ozadju

Izdelava programa za delovanje v ozadju

marjan_h ::

Kar nekaj časa že programiram, vendar nimam pojma kako deluje recimo uTorrent ali pa antivirusni program, kjer dejansko ni odprt kot tole okno brskalnika, ampak nezavedno človeku deluje v ozadju.

Lahko date primer Java/C/C++ ali pa kakšno povezavo do teh knjižnic, oziroma če so sploh potrebne?

Hvala.

technolog ::

Stvari imaš postavljene ravno obratno. Programi so ponavadi po defaultu v ozadju, za grafični vmesnik pa rabiš knjižnico.

marjan_h ::

Hmm, ampak v Windows OS se odpre cmd, pa viden je v taskbaru program.

techfreak :) ::

http://stackoverflow.com/questions/2242...

Ocitno obstaja /SUBSYSTEM compiler flag, ki sporoci da je win32 aplikacija, in ne bo prikazalo okna.

Podobno imas tudi pri Windows Forms, kjer v Main.cs (C#) nastavis da ne kreira okna.

GupeM ::

Na hitro spisan primer za javo:

package application;

import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class Main extends Application {
	@Override
	public void start(Stage primaryStage) {
		try {
			// Nastavimo, da 'X' za zaprtje aplikacije, le-te ne zapre.
			Platform.setImplicitExit(false);

			// Nastavimo meni, ki se prikaže ob desnem kliku na ikono v system trayu.
			PopupMenu pm = new PopupMenu();
			MenuItem show_hide = new MenuItem("Hide");
			MenuItem close = new MenuItem("Exit");
			
			// Listener, ki spreminja napis v popup meniju, glede na to, ali je okno prikazano ali ne
			primaryStage.showingProperty().addListener((item, oldVal, newVal) -> {
				show_hide.setLabel(newVal.booleanValue() ? "Hide" : "Show");
			});

			// Listener, ki skriva/prikazuje okno
			show_hide.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					Platform.runLater(() -> {
						if (primaryStage.isShowing()) {
							primaryStage.hide();
						} else {
							primaryStage.show();
						}
					});
				}
			});

			// Listener, ki zapre okno ob kliku na "Exit"
			close.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					Platform.exit();
					System.exit(0);
				}
			});

			pm.add(show_hide);
			pm.add(close);

			// Damo ikono v System tray
			SystemTray.getSystemTray()
					.add(new TrayIcon(Toolkit.getDefaultToolkit().getImage("POT DO SLIKE"), "Tooltip", pm));
			BorderPane root = new BorderPane();
			Scene scene = new Scene(root, 400, 400);
			primaryStage.setScene(scene);
			primaryStage.show();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		launch(args);
	}
}

Koda ni najlepša, ampak ti bo morala zadostovati :D

marjan_h ::

Hvala, ali ta JavaFX je že del Jave? Tako kot včasih, no kateri GUI je bil prvi pri javi.

GupeM ::

Ja, JavaFX je že del Jave. Mislim, da od verzije 7 naprej. Sigurno pa od 8 naprej. Lahko uporabiš tudi Swing, AWT, karkoli drugega.

kr?en ::

Swing/AWT je dead.

Ce hoces delat GUI v Javi, uporabljaj JavaFX

GupeM ::

Kaj pa vem... AWT je res dead, Swing (SWT), pa je še vedno aktualen. JavaFX ima težave, ker je zadeva dokaj nova. Upam, da v verziji 9 porihtajo nekaj stvari. Pri nekaterih stvareh je res močna (Observable interface, Property interface ipd.).

konspirator ::

--

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Vprašanje iz Jave

Oddelek: Programiranje
71084 (824) illion
»

[Java] Nova nit znotraj JPanel.paintComponent()

Oddelek: Programiranje
141821 (1608) alexa-lol
»

[Java]Vprašanja

Oddelek: Programiranje
242037 (1505) Bela01
»

[Java] Zmešnjava

Oddelek: Programiranje
461981 (1486) ]Fusion[
»

Java,actionlistener problem

Oddelek: Programiranje
51054 (1040) JaaZoo

Več podobnih tem