- Mitglied seit
- 5. November 2020
- Beiträge
- 98
Hallo Zusammen,
Mit dem V20 Zwangsupdate habe ich die gewöhnliche Desktop App durch die PWA ersetzt. Eine Anleitung für den Deploy über Intune findet ihr hier: https://www.3cx.de/forum/threads/intune-verteilung-pwa-app-inkl-autostart.120668/
Nun hat es mich aber genervt, dass es keine Lösung gibt zu verhindert, dass wenn man die PWA schliesst keine Anrufe mehr erhält. Man ist von der Desktop App gewohnt, dass diese im Hintergrund weiterläuft. Dieses Verhalten scheint bei der PWA irgendwie nicht zu funktionieren. Zumindest wenn man auf Microsoft Edge setzt.
Dazu habe ich mir in C# eine "unschöne" aber funktionierende Lösung gebastelt, welche ich gerne hier zur Verfügung stelle. Die App läuft "unsichtbar" im Hintergrund und der User bekommt davon nichts mit. Diese Zeile ist anzupassen: Arguments = "--profile-directory=Default --app-id=mhokpjdmecpbncgffbhlfpgjmpakpfik --app-url=https://deineurl.3cx.ch:5001/ --app-launch-source=4",
Wenn ihr chrome anstatt edge verwendet entsprechend auch das anpassen:
var processName = "msedge";
durch Chrome ersetzt werden. Ausserdem muss auch pwahelper.exe angepasst werden.
Mit dem V20 Zwangsupdate habe ich die gewöhnliche Desktop App durch die PWA ersetzt. Eine Anleitung für den Deploy über Intune findet ihr hier: https://www.3cx.de/forum/threads/intune-verteilung-pwa-app-inkl-autostart.120668/
Nun hat es mich aber genervt, dass es keine Lösung gibt zu verhindert, dass wenn man die PWA schliesst keine Anrufe mehr erhält. Man ist von der Desktop App gewohnt, dass diese im Hintergrund weiterläuft. Dieses Verhalten scheint bei der PWA irgendwie nicht zu funktionieren. Zumindest wenn man auf Microsoft Edge setzt.
Dazu habe ich mir in C# eine "unschöne" aber funktionierende Lösung gebastelt, welche ich gerne hier zur Verfügung stelle. Die App läuft "unsichtbar" im Hintergrund und der User bekommt davon nichts mit. Diese Zeile ist anzupassen: Arguments = "--profile-directory=Default --app-id=mhokpjdmecpbncgffbhlfpgjmpakpfik --app-url=https://deineurl.3cx.ch:5001/ --app-launch-source=4",
Wenn ihr chrome anstatt edge verwendet entsprechend auch das anpassen:
var processName = "msedge";
durch Chrome ersetzt werden. Ausserdem muss auch pwahelper.exe angepasst werden.
C#:
using System;
using System.Diagnostics;
using System.Management;
using System.Timers;
using System.Runtime.InteropServices;
class Program
{
private static Timer checkTimer;
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_HIDE = 0;
const int SW_SHOW = 5;
static void Main(string[] args)
{
var handle = GetConsoleWindow();
ShowWindow(handle, SW_HIDE);
checkTimer = new Timer(2000);
checkTimer.Elapsed += CheckAndStartPwa;
checkTimer.AutoReset = true;
checkTimer.Enabled = true;
// Console am laufen halten
Console.WriteLine("Die Anwendung überwacht die PWA im Hintergrund.");
Console.ReadLine();
}
private static void CheckAndStartPwa(object sender, ElapsedEventArgs e)
{
if (!IsPwaRunning())
{
StartPwa();
}
}
static bool IsPwaRunning()
{
var processName = "pwahelper";
var pwaIdentifier = "--app-id=mhokpjdmecpbncgffbhlfpgjmpakpfik"; // Die spezifische PWA-ID
var query = $"SELECT CommandLine FROM Win32_Process WHERE Name='{processName}.exe'";
using (var searcher = new ManagementObjectSearcher(query))
{
foreach (var process in searcher.Get())
{
var commandLine = process["CommandLine"]?.ToString();
if (!string.IsNullOrEmpty(commandLine) && commandLine.Contains(pwaIdentifier))
{
return true; // PWA läuft
}
}
}
return false; // PWA läuft nicht
}
static void StartPwa()
{
try
{
Process.Start(new ProcessStartInfo
{
FileName = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe",
Arguments = "--profile-directory=Default --app-id=mhokpjdmecpbncgffbhlfpgjmpakpfik --app-url=https://deineurl.3cx.ch:5001/ --app-launch-source=4",
UseShellExecute = true
});
Console.WriteLine("3CX (PWA) gestartet.");
}
catch (Exception ex)
{
Console.WriteLine($"Fehler beim Starten der PWA: {ex.Message}");
}
}
}
Zuletzt bearbeitet: