WinCC Prüfen ob externes Programm läuft

LuZi

Level-1
Beiträge
26
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hejj Leute!

Mal ne kurze Frage, da ich mit google nicht wirklich was gefunden habe.(bzw. war ich wohl zu blöd um es anzuwenden)
Ich habe in meiner Visu einen Button, welcher uvnc öffnet. Das Problem dabei ist, dass wenn der User dieses Fenster nicht ordnungsgemäß schließt, es im hintergrund weiterläuft und beim nächsten Aufruf von uvnc startet uvnc erneut..
Nun habe ich zwar 3 Lösungsansätze, weiß aber nicht, wie ich diese in c/vb umsetzen soll.
1. Wenn ich den "uvnc öffnen" drücke, killt er erst den prozess uvnc.exe und öffnet ihn erneut.
2. Ich drücke "uvnc öffnen" - es wird geprüft ob das Programm bereits läuft. Falls nein, wird es neu gestartet. Falls ja, wird das programm in den Vordergrund geholt.
3. Ich binde uvnc irgendwie in ein WINCC Fenster ein. (Dies funktioniert laut meiner bisherigen Recherchen jedoch nicht)

Im grunde ist auch Variante 1 vollkommen ausreichend, da uvnc nicht minütlich gestartet wird und der bisschen Rechenaufwand egal ist.

Das Starten des Programmes erledige ich bisher erfolgreich mit "ProgramExecute("C:.......");
Doch wie kille ich einen Prozess?

mfg LuZi
 
Zuletzt bearbeitet:
Welches WinCC benutzt Du auf welcher Plattform?
Warum willst Du UVNC starten (Viewer oder Server?) - gibt es in Deinem WinCC keine Sm@rtClient-Anzeige?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
danke sehr für die Antwort. Ich bin auf 7.3.
Wir müssen uns auf einen nebenstehenden PC verbinden, da dieser eine eigene visu anbietet.
Mit smart client kann ich mich ja nur vom Büro aus auf die Anlage verbinden. ich bräuchte aber eine verbindung von der anlage zu einer anderen.(keine ahnung welche software darauf läuft)
 
Zuletzt bearbeitet:
Wenn du das Handle vom laufenden Fenster hast, dann kannst du mit dem Handle dieses Fenster steuern, z.B. wieder in den Vordergrund holen.

Beispiel
Code:
HWND handle = NULL;
handle = FindWindow(NULL,"Fenstername");
if (handle) { /* Programm läuft, in den Vordergrund holen, evtl. noch mit ShowWindow(handle, SM_MAXIMIZE) maximieren */
  SetForegroundWindow(handle);
} else { /* Programm läuft nicht, dann starten */
  ProgramExecute("Dein Programm.exe");
}

Bei "Fenstername" musst du üblicherweise den Namen angeben, den die Anwendung im Taskmanager zeigt. Manche Anwendungen machen da ein paar Probleme dann muss man etwas anders vorgehen, aber kannst ja erstmal probieren ob es so funktioniert.
 
Zurück
Oben