-> 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:
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)
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):
Ich bin für jeden Vorschlag dankbar!
LG
Patrick
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");
}
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: