Hintergrundanwendung erstellen

Anfängerfragen zum Programmieren mit PureBasic.
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Hintergrundanwendung erstellen

Beitrag 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)?
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Hintergrundanwendung erstellen

Beitrag von mk-soft »

Fenster erstellen mit #PB_Window_Invisible und AddWindowTimer()

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
hörmi
Beiträge: 106
Registriert: 10.07.2007 15:20
Kontaktdaten:

Re: Hintergrundanwendung erstellen

Beitrag 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
BildBild Bild
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Re: Hintergrundanwendung erstellen

Beitrag von Tombi »

Gibt es da auch eine Möglichkeit für PB4.31?
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Re: Hintergrundanwendung erstellen

Beitrag von jojo1541 »

Die Timer über Win API, oder ElapsedMilliseconds() laufen lassen.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Re: Hintergrundanwendung erstellen

Beitrag von Tombi »

jojo1541 hat geschrieben:Die Timer über Win API
Erklär' das mal bitte genauer?
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Hintergrundanwendung erstellen

Beitrag 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?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Conrad
Beiträge: 27
Registriert: 06.11.2009 18:26
Computerausstattung: Win Vista 32bit , Intel Core 2 Duo CPU t5750 @2GHz
3GB RAM
Kontaktdaten:

Re: Hintergrundanwendung erstellen

Beitrag von Conrad »

also ich würde das mit delay machen:

Code: Alles auswählen

Repeat

...

Delay(zeit)

ForEver
Bild

YEYQ!!!
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Re: Hintergrundanwendung erstellen

Beitrag von jojo1541 »

Dann kann er aber sein Systray-Icon nur dann abfragen, wenn das Delay ausgelaufen ist. Also hier ungeeignet.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
hörmi
Beiträge: 106
Registriert: 10.07.2007 15:20
Kontaktdaten:

Re: Hintergrundanwendung erstellen

Beitrag 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)
BildBild Bild
Antworten