# Externe Anwendung/ schließen & in Vordergrund bringen.../ Winccflex 2007 auf MP377



## Thomas R (15 Juli 2010)

Guten Tag zusammen, 

ich habe eine Frage zum Thema WinCCflexible 2007 in Verbindung mit einem MP377 Bediengerät.
Mein Problem ist im Moment, dass ich eine Anwendung PDF_Reader starte mit dem Kommando "Starte Programm". 
1. Problem
Dieser Vorgang kann je nach zu öffnender Dateigröße etwas länger dauern 5-10s. In dem Zeitraum bleibt der Focus weiterhin auf der Wincc Runtime. 
Ein Bediener könnte jetzt auf die Idee kommen den Button zum Öffnen nochmals zu drücken und wird so bereits die zweite Instanz öffnen. 
2. Problem
Sollte die Datei nun im Programm geöffnet sein, dann wird der Focus zum 
PDF_Reader gewechselt und der gewünschte Zustand besteht. "Ich kann mir das Dokument ansehen" 
Nun ist es aber so, dass wenn nach diesem Zeitpunkt Focus auf PDF_Reader ein Systemereignis in der Runtime auftritt, der Focus automatisch wechselt zur Runtime. 

Nun habe ich bisher zwei Möglichkeiten gefunden, wie ich wieder zurückwechseln kann zu dem geöffneten PDF_Reader. Beide halte ich 
nicht für gute Lösungen. 
1.) Ich beende die Runtime per Systemfunktion 
2.) Aufruf des Taskmanager. Dieser gibt einem die Möglichkeit zu einer bestimmten Anwendung zu wechseln. Finde ich schon mal gut. 
Leider ist es aber auch möglich die Runtime damit zu beenden. Finde ich nicht so gut. 

Meine Frage ist nun gibt es eine Möglichkeit eine Funktion zu kreieren mit der ich Anwendungen wechseln kann. (keine Tastatur angeschlossen)
Also eine Art Taskmanager mit ausschließlich Anwendungen wechseln kann und die Möglichkeit Anwendungen schließen nicht funktioniert? 

Schön wäre es eigentlich ein Control in WinCC flex zu haben in dem ich die Anwendungen starten könnte. Gibt es aber glaube ich nur für WinCC flex 2008 in Verbindung mit dem Pocket InternetExplorer. 

Vielleicht hat jemand diese Herausforderung ja mal genommen und kann mir helfen.

Gruß
Thomas


----------



## Waldi1954 (20 Januar 2013)

Damit dieser Beitrag nicht nur Unnützen Speicherplatz verbraucht

Ein Beispiel mit 
'Notepad Exe
Dim Computer,oWmi,colProcessList,WshShell    
Dim ProgrammName,Programm, Fenstername 


ProgrammName =    "notepad.exe"                                           'Name der Anwendung
Programm     =        "C:\windows\system32\" & (ProgrammName) 
Fenstername     =    "Unbenannt - Editor"                                    'Name des Windowsfenster


'****************************************************************************************************************
Computer = "." ' nutzer "." für einen lokalen PC
Set oWmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
Set colProcessList = oWmi.ExecQuery("Select * from Win32_Process Where Name = '" & ProgrammName & "'")
'Set colProcessList = oWmi.instancesOf("win32_process")
'******************************************************************************************************************    
    If colProcessList.Count >< False Then  
    Set WshShell = CreateObject("WScript.Shell")
           With WshShell
               .AppActivate (Fenstername)
               End With
            Else 
               StartProgram (Programm),"",hmiShowNormal, hmiNo
 End If
Set oWmi = Nothing
Set WshShell = Nothing
-------------------------------------------------
Getestet mit WinXP,Win7 32 und 64 Bit
Gruß Waldi


----------



## Waldi1954 (6 April 2015)

*Hat noch gefehlt*

'Externes Programm schließen
Dim Wmi,system,Process,Computer
Programm = "%windir%\system32\notepad.exe"
'Abfrage ob der WMI Dienst gestartet ist
On Error Resume Next
Set Wmi = GetObject("winmgmts:")
If Err.Number<>0 Then
  'WMI nicht gestartet
  Set Wmi = Nothing 
  Exit Sub
End If
On Error GoTo 0
Computer = "." 'Lokal
Set Wmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2") 
Set system = Wmi.instancesOf("win32_process") 
For Each Process In system 
If LCase(Process.name)=(Programm) Then 
Process.Terminate (0) 
End If 
Next

Gruß Waldi


----------



## Waldi1954 (6 April 2015)

sorry

Fehler bei Programm

Programm = "notepad.exe"
Notepad.exe läuft ja!!
PS
Programm ist ein Parameter von Sub

Gruß Waldi


----------



## volker (24 Januar 2017)

Hallo

Ich hol das Thema nochmal hoch.

Mein Panel ist ein MP377

Ich muss via https-Request in einer cloud einen 'Vorgang' starten welcher letztendlich eine sms versendet.
Dazu rufe ich den ie über die Funktion 'Starte Programm' mit dem Parameter auf.
Das klappt auch soweit.

Nur ist es leider so, daß der ie immer in den Vordergrund geholt wird. Auch wenn ich bei Darstellung minimiert oder minimiert und inaktiv wähle.
Der Versuch die Runtime durch einen Bildwechsel in den Vordergrund zu holen funktioniert auch nicht.

Kennt jemand eine Möglichkeit den ie automatisch zu schließen? Taskkill wie bei einem PC-System gibt es ja bei win-ce nicht.
Obiges Beispiel von Waldi1954 funktioniert (wie zu erwarten war) nicht.
Fehler 445. Objekt doesn't Support this Action.

evtl ein externens Programm welches auf das Panel kopiert wird?

Habe zwar wenig Hoffnung aber Fragen kostet nix.


----------

