WinCC externes Programm starten; wenn gestartet fokusieren

lordtalon

Level-1
Beiträge
12
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Wir benutzen neben WinCC das Programm AxiomTrend von Canary Labs zur (besseren) Visualisierung von Kurven.
Dieses Programm soll mittels Button aus dem WinCC geöffnet werden können.
Wenn es schon geöffnet ist, soll es den Fokus bekommen.

Ich habe schon mehrere Ansätze verfolgt, bin jedoch noch nicht auf ein zufriedenstellendes Ergebnis gekommen.

(Dieses Programm ist (leider) Multi-Instanzfähig.)


Ansatz 1: per FindWindow C-Skript

Das hat anfangs recht erfolgsversprechend ausgesehen, allerdings treten hier folgende Probleme auf:

FindWindow per Fenstername:
Code:
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{


HWND Handle_Axiom, Handle_WinCC= NULL;


Handle_WinCC = FindWindow("PDLRTisAliveAndWaitsForYou",NULL);


Handle_Axiom=FindWindow(NULL,"Unbenannt - Editor");

if(Handle_Axiom)
{
    ShowWindow (Handle_Axiom, SW_MINIMIZE);
    SetForegroundWindow(Handle_WinCC);
    ShowWindow (Handle_Axiom, SW_SHOWNORMAL);
    SetForegroundWindow(Handle_Axiom);    
}
else
    ProgramExecute("C:\\Windows\\NOTEPAD.EXE");


}
ist nicht möglich, da sich der Fenstername ändert, sobald man eine Datei lädt (ähnliches Verhalten wie notepad.exe)

FindWindow per Klassenname:
ist nicht möglich, da sich der Klassenname manchmal ändert (zb: "HwndWrapper[Axiom.exe;;2abab652-689f-41d8-83cd-6afdb07bd451]")


Ansatz 2: per .bat-Datei

WinCC führt eine Batch-Datei aus. Diese schaut, ob das Programm (der Task) gerade läuft, und startet es, wenn nicht.

Funktioniert schon mal nicht schlecht, allerdings behebt dies nicht das Problem, dass das Axiom-Fenster nicht den Fokus erhält.

Batch-Datei (mit Beispiel Notepad)
Code:
tasklist /FI "IMAGENAME eq NOTEPAD.EXE" 2>NUL | find /I /N "NOTEPAD.EXE">NUL
if "%ERRORLEVEL%"=="1" NOTEPAD.EXE


Ansatz 3: AutoOnTop

Das Axiom-Fenster automatisch im Vordergrund halten.
Ausprobiert wurde es mittels AutoHotKey-Script und mit dem Programm "DeskPins".
Beide Lösungen funktionieren, jedoch nicht zuverlässig.
Das Axiom-Fenster ist zwar anfänglich immer schön im Vordergrund, kann jedoch nach einigen Klicks im WinCC plötzlich den Fokus verlieren und ist dann auf Ewig im Hintergrund, solange bis man ihm wieder manuell den Fokus verleiht.

AutoHotKey-Script (dem Fenster wird hier mittels Strg + Leertaste der "Automatische Fokus" verliehen):
Code:
^SPACE::  Winset, Alwaysontop, , A


Ich bin für jeden Vorschlag dankbar!

LG
Patrick
 
Zuletzt bearbeitet:
Bist du sicher das sich der Klassenname ändert?
Wenn ich z.B. Notepad 5 x öffne haben alle den gleichen Klassennamen aber unterschiedliche Fensternamen.

Holger
 
Zurück
Oben