PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programme im Hintergrund


Diego_S
03.02.2002, 17:49
Hi leute, möcht gerne wissen, ob und wenn ja wie es geht, das ich ein pascal-programm im hintergrund laufen habe, also man es nicht in der taskleiste sieht und es halt trotzdem normal arbeitet.
is sehr wichtig für mich, hab auch schon inner hilfe nachgeguckt, nix gefunden

also danke schon mal im voraus

Diego_S


Felix Kaiser
03.02.2002, 22:55
Sag mal genauer was du willst, Pascal = DOS, aber DOS und Taskleiste? Was willst du genau? Ein unter Windows gestartetes DOS Programm erscheint immer in einem Konsolentask mit entsprechendem Task in der Taskleiste. Allerdings hättest du die Möglichkeit bei Win9x (evtl. noch bei WinME) ein DOS Programm über die WINSTART.BAT (liegt im Windows Verzeichnis) als TSR Programm einzubinden. Dieses läuft dann im Hintergrund von Windows, da ja der billige Win32 Kernel auf denen diese Windowsversionen basieren stets zum standard Realmode Task durch den V86 durchlinken. Solltest du was anderes meinen, fasse es nochmal etwas verständlicher zusammen ;)

Diogenes
05.02.2002, 18:50
@Guru: Pascal ist nicht immer DOS. Mit BPW kann man auch Windows-Angelegenheiten machen...

Es gibt daher sicher noch andere Möglichkeiten, enen Task zu "verstecken".

Diego_S
06.02.2002, 14:32
@ guru + Diogenes

Diogenes hat recht, denn BPW läuft unter win. Ich benutze nun eben dieses BPW, und will halt nicht da unten in der Taskleiste was angezeigt wird, oder man halt ein fenster sieht. Sowas wie die programme die man sieht wenn man [STRG] + [ALT] + [ENTF] (Affengriff)drückt ;-)

ich hoffe das reicht an erklärung, ist nämlich wichtig für mich ich schreibe ein protokollierungsprog

ok danke ichw arte auf weiterre Antworten

Diego_S

Felix Kaiser
07.02.2002, 16:28
Vorm Taskmanager wirste den Task wohl nicht verstecken können, da dieser selbstständig arbeitet. Aber vor der Taskleiste ist kein Problem. Ich weiß jetzt nicht genau welche Variable es unter BPW ist, jedoch über ShowWindow(HWND,SW_HIDE); kannst du nicht nur die Fenster deines Programmes verstecken, auch den Task auf der Taskleiste ausblenden. Rufe ShowWindow dazu einfach mit dem Hauptfensterhandle deiner Anwendung auf. Unter Delphi wäre das Hauptfensterhandle Application.Handle. Ist halt das Fensterhandle des Tasks in der Taskleiste.

Diogenes
08.02.2002, 13:17
Wenn das auch unter Win9x und später ("besser" will ich eigentlich nicht sagen :)) ) geht, empfehle ich folgende Vorgangsweise, sofern das Fenster schon von Anfang an verborgen werden soll:
uses OWindows, WinTypes;

...

TSchuechtern=object( TWindow) {Dein Fenster}

constructor Init; {Deine Params nicht vergessen}
{Restliche Definitionen}

end;


{Dann, beim Implementieren}

constructor TSchuechtern.Init;

begin
inherited Init( Parent, Title); {Ehshonwissen - der ganze Schnmus}
{Dies ist die interessante Zeile}
with Attr do Style := Style and not ws_Visible; { :D 8) }
end;


Damit wird das Fesnter schon unsichtbar initialisiert. Es wird niemals sichtbar.

Wen Du das nicht willst, kannst Du Gurus Befehl (aus der WinProcs) durchaus nehmen:

ShowWindow( hWindow, sw_Hide)


Dann muß das Fenster jedoch midestens einmal gezeigt worden sein, wenn es mit ws_Visible initialisiert wurde. Das Handle muß dann auch gültig und undleich 0 sein.

Alle Klarheiten beseitigt?

Diego_S
09.02.2002, 18:22
thx

danke an guru+diogenes, ich werde die lösungen nachher gleich ausprobieren, wahrscheinlich bau ich die ein, wo das fenster gar nicht zusehen ist.

ok danke und cu