Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2fa27d6f83 | |||
| 24a90a3a99 | |||
| eb7fc8fa1e | |||
| 110ce59450 | |||
| b48d8538b6 | |||
| ce9fce8364 | |||
| 1ca05579be | |||
| ea75929c4a | |||
| 521a7307d5 | |||
| fd31d3b444 | |||
| 1ca827b5eb | |||
| b55fbe3dd3 | |||
| fdf406e24e | |||
| 274ee8db40 | |||
| 272139496b | |||
| 39a0aab613 | |||
| 6f4d92a32c | |||
| 21541b80d3 | |||
| 551ea2ecfb | |||
| c5a3f8e7bc | |||
| 7cea38f49d | |||
| 6474014bf5 | |||
| a4e95285d8 | |||
| 28c378c305 | |||
| dd4fe17e2f | |||
| 502246bc0c | |||
| 7282fce664 |
@@ -2,9 +2,9 @@ name: .NET Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
|
||||
|
||||
@@ -80,42 +80,49 @@ namespace Ink_Canvas {
|
||||
|
||||
public static bool IsShowingRestoreHiddenSlidesWindow = false;
|
||||
private static bool IsShowingAutoplaySlidesWindow = false;
|
||||
private static bool hasLoggedPresentationWarning = false;
|
||||
private bool isPowerPointInitialized = false;
|
||||
|
||||
|
||||
|
||||
private void TimerCheckPPT_Elapsed(object sender, ElapsedEventArgs e) {
|
||||
if (IsShowingRestoreHiddenSlidesWindow || IsShowingAutoplaySlidesWindow) return;
|
||||
private void TimerCheckPPT_Elapsed(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
// 如果正在显示特定窗口,则跳过检查
|
||||
if (IsShowingRestoreHiddenSlidesWindow || IsShowingAutoplaySlidesWindow)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Marshal.GetActiveObject("PowerPoint.Application");
|
||||
}
|
||||
catch (COMException)
|
||||
{
|
||||
// 创建新实例或记录错误
|
||||
}
|
||||
|
||||
try {
|
||||
var processes = Process.GetProcessesByName("wpp");
|
||||
if (processes.Length > 0 && !isWPSSupportOn) return;
|
||||
|
||||
pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Activator.CreateInstance(Marshal.GetTypeFromCLSID(new Guid("91493441-5A91-11CF-8700-00AA0060263B")));
|
||||
new ComAwareEventInfo(typeof(EApplication_Event), "SlideShowBegin").AddEventHandler(pptApplication, new EApplication_SlideShowBeginEventHandler(this.PptApplication_SlideShowBegin));
|
||||
new ComAwareEventInfo(typeof(EApplication_Event), "SlideShowEnd").AddEventHandler(pptApplication, new EApplication_SlideShowEndEventHandler(this.PptApplication_SlideShowEnd));
|
||||
new ComAwareEventInfo(typeof(EApplication_Event), "SlideShowNextSlide").AddEventHandler(pptApplication, new EApplication_SlideShowNextSlideEventHandler(this.PptApplication_SlideShowNextSlide));
|
||||
|
||||
pptApplication =
|
||||
(Microsoft.Office.Interop.PowerPoint.Application)Marshal.GetActiveObject("PowerPoint.Application");
|
||||
if (pptApplication == null || pptApplication.Presentations.Count == 0)
|
||||
// 检查是否已有初始化的 PowerPoint 实例
|
||||
if (!isPowerPointInitialized)
|
||||
{
|
||||
if (!hasLoggedPresentationWarning)
|
||||
// 检查 WPS 进程(如果不支持则返回)
|
||||
var processes = Process.GetProcessesByName("wpp");
|
||||
if (processes.Length > 0 && !isWPSSupportOn)
|
||||
return;
|
||||
|
||||
// 尝试获取已运行的 PowerPoint 实例
|
||||
try
|
||||
{
|
||||
LogHelper.WriteLogToFile("No active presentation found", LogHelper.LogType.Warning);
|
||||
hasLoggedPresentationWarning = true;
|
||||
pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Marshal.GetActiveObject("PowerPoint.Application");
|
||||
}
|
||||
catch (COMException)
|
||||
{
|
||||
// 如果没有找到运行中的实例,则创建新实例
|
||||
pptApplication = (Microsoft.Office.Interop.PowerPoint.Application)Activator.CreateInstance(
|
||||
Marshal.GetTypeFromCLSID(new Guid("91493441-5A91-11CF-8700-00AA0060263B")));
|
||||
}
|
||||
isPowerPointInitialized = true;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (pptApplication != null) {
|
||||
// 检查是否有活动演示文稿
|
||||
if (pptApplication.Presentations.Count == 0 || pptApplication.ActivePresentation == null)
|
||||
return; // 退出方法,避免后续代码执行
|
||||
isPowerPointInitialized = false;
|
||||
timerCheckPPT.Stop();
|
||||
//获得演示文稿对象
|
||||
presentation = pptApplication.ActivePresentation;
|
||||
@@ -150,6 +157,7 @@ namespace Ink_Canvas {
|
||||
Application.Current.Dispatcher.Invoke(() => {
|
||||
PptApplication_PresentationOpen(null);
|
||||
});
|
||||
|
||||
|
||||
//如果检测到已经开始放映,则立即进入画板模式
|
||||
if (pptApplication.SlideShowWindows.Count >= 1) {
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user