Seite 1 von 2

Hintergrundanwendung erstellen

Verfasst: 30.01.2010 16:35
von Tombi
Hallo zusammen,
ich würde gerne eine Anwendung erstellen, welche "unsichtbar" im Hintergrund arbeitet.

Dazu bräuchte ich jedoch noch eure Hilfe.

Folgende Probleme:

1. Auf welche Weise kann ich das Programm aus der Startleiste entfernen? (Nur Systray?)
2. Auf welche Weise kann ich das Programm so aufbauen, das es einen Befehl (bzw das komplette Programm) nur alle X Minuten ausführt und der Rest der Zeit im Leerlauf läuft (abwartet)?

Re: Hintergrundanwendung erstellen

Verfasst: 30.01.2010 17:10
von mk-soft
Fenster erstellen mit #PB_Window_Invisible und AddWindowTimer()

FF :wink:

Re: Hintergrundanwendung erstellen

Verfasst: 30.01.2010 17:11
von hörmi
Hier ungefär so...
sollte zum größten teil selbsterklährend sein
benötigt allerdings min PB 4.40 wegen der timerfunktion

Code: Alles auswählen

OpenWindow(0,0,0,400,20,"",#PB_Window_SystemMenu|#PB_Window_Invisible)

AddWindowTimer(0,0,1000)

AddSysTrayIcon(0,WindowID(0),CreateImage(0,16,16))

CreatePopupMenu(0)
MenuItem(0,"Exit")

Repeat
event=WaitWindowEvent()
 Select event
 Case #PB_Event_Timer
  ;Hier kommt das rein was nur alle 1000ms bearbeitet werden soll
  
 Case #PB_Event_SysTray
  DisplayPopupMenu(0,WindowID(0))
  
 Case #PB_Event_Menu
  Select EventMenu()
   Case 0
    event=#PB_Event_CloseWindow
  EndSelect
 EndSelect
Until event=#PB_Event_CloseWindow

;Programm Ende

Re: Hintergrundanwendung erstellen

Verfasst: 30.01.2010 17:17
von Tombi
Gibt es da auch eine Möglichkeit für PB4.31?

Re: Hintergrundanwendung erstellen

Verfasst: 30.01.2010 17:19
von jojo1541
Die Timer über Win API, oder ElapsedMilliseconds() laufen lassen.

Re: Hintergrundanwendung erstellen

Verfasst: 30.01.2010 17:24
von Tombi
jojo1541 hat geschrieben:Die Timer über Win API
Erklär' das mal bitte genauer?

Re: Hintergrundanwendung erstellen

Verfasst: 30.01.2010 17:44
von RSBasic
http://www.rsbasic.q-soft.ch/index.php? ... &Itemid=59

Müsste bei dir funktionieren.

Bei mir unter PB 4.40 zählt er anscheinend nur bis 2 :?
Liegt es daran, dass PB einen eigenen Timer besitzt und deshalb bei dieser API nicht korrekt zählt?

Re: Hintergrundanwendung erstellen

Verfasst: 01.02.2010 22:59
von Conrad
also ich würde das mit delay machen:

Code: Alles auswählen

Repeat

...

Delay(zeit)

ForEver

Re: Hintergrundanwendung erstellen

Verfasst: 02.02.2010 15:59
von jojo1541
Dann kann er aber sein Systray-Icon nur dann abfragen, wenn das Delay ausgelaufen ist. Also hier ungeeignet.

Re: Hintergrundanwendung erstellen

Verfasst: 02.02.2010 16:19
von hörmi
außer man lässt es im hintergrund laufen

Code: Alles auswählen

Procedure Irgendwas(zeit.l)
Repeat

...

Delay(zeit)

ForEver
EndProcedure
CreateThread(@Irgendwas(),1000)