Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: Erneuter Programmaufruf über Script

  1. #1
    Registriert seit
    26.09.2010
    Beiträge
    64
    Danke
    9
    Erhielt 12 Danke für 7 Beiträge

    Standard


    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
    Zitieren Zitieren Erneuter Programmaufruf über Script  

  2. #2
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Standard

    Hallo,

    Zitat Zitat von Waldi1954
    >>>>>>> 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
    ''Ich habe wirklich keine Vorurteile.
    Meine Meinung ist nur die Summe der Erfahrungen" ... (Question_mark)
    Zitieren Zitieren SetForegroundWindow  

  3. #3
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.758
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten

  4. Folgender Benutzer sagt Danke zu Jochen Kühner für den nützlichen Beitrag:

    Waldi1954 (14.04.2011)

  5. #4
    Registriert seit
    26.09.2010
    Beiträge
    64
    Danke
    9
    Erhielt 12 Danke für 7 Beiträge

    Standard

    Hallo Jochen
    Auf den Ersten Blick sieht es gut aus. Werde es morgen gleich ausprobieren.
    Gruß Waldi

  6. #5
    Registriert seit
    26.09.2010
    Beiträge
    64
    Danke
    9
    Erhielt 12 Danke für 7 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    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

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 10.05.2011, 12:57
  2. Antworten: 6
    Letzter Beitrag: 19.03.2010, 11:45
  3. Script über Bit starten
    Von Kamania im Forum HMI
    Antworten: 5
    Letzter Beitrag: 26.08.2006, 13:51
  4. Tastenabfrage über VB-Script
    Von scrolllkock im Forum HMI
    Antworten: 3
    Letzter Beitrag: 20.02.2006, 20:33
  5. Antworten: 9
    Letzter Beitrag: 06.01.2006, 13:39

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •