Erneuter Programmaufruf über Script

Waldi1954

Level-1
Beiträge
64
Reaktionspunkte
18
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ich komme an dieser Stelle nicht weiter. Nun brauche ich eure Hilfe!
Um ein Kamera Livebild zu betrachten wird eine EXE Datei mit StartProgamm in einen WCC Flexibel Bild Aufgerufen. Soweit kein Problem. Bei erneutem Aufruf der EXE-Datei soll diese aber nur im Vordergrund erscheinen ohne neu gestartet zu werden.

Dim Datei, sProcessName,sComputer,oWmi,colProcessList
Datei = "notepad.exe" sProcessName ="notepad.exe

sComputer = "." ' nutzer "." für einen lokalen PC
Set oWmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")
Set colProcessList = oWmi.ExecQuery("Select * from Win32_Process Where Name = '" & sProcessName & "'")

If colProcessList.Count >< False Then
‘ Programm schon geöffnet.
>>>>>>> Hier soll nur noch das Fenster in Vordergrund gesetzt werden
Exit Sub
End If
‘Programm wird geöffnet.
StartProgram (Datei), "", hmiShowMaximizedAndInactive, hmiYes

Gruß Waldi
 
SetForegroundWindow

Hallo,

Waldi1954 schrieb:
>>>>>>> Hier soll nur noch das Fenster in Vordergrund gesetzt werden

In Hochsprachen wie C/C++ und Delphi benutzt man dazu eine Funktion aus dem Windows API.

Code:
 HWND handle = FindWindow("IEFrame", NULL);
 if(handle)
 {
    SetForegroundWindow(handle);
 }

VB Declaration für "FindWindow" ist dann :

Code:
Declare Function FindWindow Lib "user32.dll" _
  Alias "FindWindowA" ( _
  ByVal lpClassName As String, _
  ByVal lpWindowName As String) As Long

lpClassName ist also ein Zeiger auf den Name der Klasse, lpWindowName ein Zeiger auf den Titel des Fensters. Es reicht, nur einen Parameter anzugeben, der andere kann auf "NULL" gesetzt werden.

Mit dem Fensterhandle als Funktionsergebnis kann man dann mit SetForegroundWindow das gewünschte Fenster in den Vordergrund schieben.

Ob das dann in einer besch...nen Scriptsprache funktioniert, darfst Du dann gerne selber herausfinden.

Gruß

Question_mark
 
Hallo Jochen
Hier ist das fertig Script für alle die es brauchen können. Beim Testen funktionierte es ohne
Fahler.
Der link von dir war Goldwert, und hat mir viel Arbeit gespart..

Dim Computer,oWmi,colProcessList,WshShell
Dim ProgrammName,Programm, Fenstername

ProgrammName = "notepad.exe"
Programm = (ProgrammName)'
Fenstername = "Unbenannt - Editor"
'****************************************************************************************************************
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 & "'")
'******************************************************************************************************************
If colProcessList.Count >< False Then
SmartTags("Datenbankmeldungen") = "Programm schon geöffnet."
Set WshShell = CreateObject("WScript.Shell")
With WshShell
.AppActivate (fenstername)
End With
Else
SmartTags("Datenbankmeldungen") = "Programm wird geöffnet."
StartProgram (Programm),"",hmiShowMaximizedAndInactive, hmiNo
End If
Set oWmi = Nothing
Set WshShell = Nothing

Gruß Waldi
 
Zurück
Oben