mayho33
Goto Top

Bildschirm-Präsentation (Powerpoint, Teams, Skype, usw.) erkennen C-Sharp

Hallo @ All,

Ich suche nach einer Möglichkeit programmtechnisch zu erkennen ob gerade eine Präsentation läuft um Deployments via SCCM in dieser Zeit zu verzögern.

Dachte es gäbe schon massig Beiträge im Netz zu finden wie man sowas abfragen kann (WMI, irgendwelche APIs, Eventlog, usw.), aber leider Fehlanzeige.

Hat jemand von euch eine Idee wie man sowas bewerkstelligen kann?

Danke für die Unterstützung!

Mayho

Content-ID: 621933

Url: https://administrator.de/contentid/621933

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

BugfishTM
BugfishTM 14.11.2020 um 11:40:34 Uhr
Goto Top
Heyho,

reicht es den Prozessnamen aus der Tasklist abzufragen?

Process pname = Process.GetProcessesByName("powerpoint.exe");
if (pname.Length == 0)
MessageBox.Show("NOTHING IS RUNNING");
else
MessageBox.Show("RUNNING");

Replace powerpoint.exe with the related name of the software executable for presentations
mayho33
mayho33 15.11.2020 um 00:44:01 Uhr
Goto Top
Zitat von @BugfishTM:

Heyho,

reicht es den Prozessnamen aus der Tasklist abzufragen?


Hi,

Nicht wirklich! Der User kann PP ja einfach nur offen haben. Dito mit Teams oder Lync.
Ich muss wissen ob der User gerade eine Präentstion hält.
Wäre echt blöd, wenn genau dann vom SCCM eine App de/installiert und vielleicht auch noch der Rechner neu gestartet werden würde.

Aber danke für die Idee.

Grüße!
BugfishTM
BugfishTM 15.11.2020 um 09:48:48 Uhr
Goto Top
Hm, dann bin ich leider auch überfragt, was ich sonst noch gefunden habe ist dieses Snippet:

Snippet ist von Marv von Github unter dieser Adresse:
https://stackoverflow.com/questions/27943255/determine-whether-powerpoin ...
Dies prüft aber leider nur für PowerPoint selber, ob gerade eine Präsentation läuft - nicht für Teams und Co

private bool IsPPTPresentationRunning()
{
Process prozesse = Process.GetProcesses();
foreach (Process p in prozesse)
{searches for a running PowerPoint process
if (p.ProcessName == "POWERPNT")
{
try
{
Microsoft.Office.Interop.PowerPoint.Application PPT =
new Microsoft.Office.Interop.PowerPoint.Application();
if (PPT.SlideShowWindows.Count > 0)
return true;
else
return false;
}
Catches any exception that seems to get thrown when
// powerpoint is not in Presentation mode
catch (Exception)
{
return false;
}
}
}
return false;
}
filippg
filippg 16.11.2020 um 00:50:32 Uhr
Goto Top
Hi,

Es war ja nach Ideen die Frage, nicht nach Lösungen. Daher als Idee:
Wenn die Clients verlässlich SfB haben, wäre das ja ein Ansatzpunkt, um damit z.B. auch PPTX etc abzudecken: Wenn SfB auf do not disturb steht, dann scheint der Zeitpunkt ungünstig zu sein. Nur wie bekommt man den SfB-Status ausgelesen? Dazu fallen mir diverse "Lync Busy Lamp"-Projekte ein, die via Arduino eine rote LED leuchten lassen, wenn man im Call ist. Die stehen ja alle vor dem gleichen Problem des Status-Auslesens. Spontan gefunden: https://github.com/thomasjsn/Lync-presence-bridge. Könnte man man anschauen.

Grüße

Filipp
mayho33
mayho33 16.11.2020 um 03:02:16 Uhr
Goto Top
Danke @

PP, SfB und Teams sind unsere Unternehmens-Produkte die ich abdecken muss.

So muss ich nur noch schauen ob es eventuell auch für Teams eine SDK gibt, bzw. ob ich das Bsp von BugFish so verbiegen kann, dass auch die 2 Communication-Tools abgedeckt sind. face-smile

Werde ich asap ausprobieren!

Grüße!