增加导出时任务栏图标显示
This commit is contained in:
@@ -146,10 +146,12 @@ namespace SpineViewer
|
|||||||
{
|
{
|
||||||
var worker = (BackgroundWorker)sender;
|
var worker = (BackgroundWorker)sender;
|
||||||
var exporter = (Exporter.Exporter)e.Argument;
|
var exporter = (Exporter.Exporter)e.Argument;
|
||||||
|
Invoke(() => TaskbarManager.SetProgressState(Handle, TBPFLAG.TBPF_INDETERMINATE));
|
||||||
spinePreviewer.StopRender();
|
spinePreviewer.StopRender();
|
||||||
lock (spineListView.Spines) { exporter.Export(spineListView.Spines.Where(sp => !sp.IsHidden).ToArray(), (BackgroundWorker)sender); }
|
lock (spineListView.Spines) { exporter.Export(spineListView.Spines.Where(sp => !sp.IsHidden).ToArray(), (BackgroundWorker)sender); }
|
||||||
e.Cancel = worker.CancellationPending;
|
e.Cancel = worker.CancellationPending;
|
||||||
spinePreviewer.StartRender();
|
spinePreviewer.StartRender();
|
||||||
|
Invoke(() => TaskbarManager.SetProgressState(Handle, TBPFLAG.TBPF_NOPROGRESS));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ConvertFileFormat_Work(object? sender, DoWorkEventArgs e)
|
private void ConvertFileFormat_Work(object? sender, DoWorkEventArgs e)
|
||||||
|
|||||||
65
SpineViewer/TaskbarManager.cs
Normal file
65
SpineViewer/TaskbarManager.cs
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace SpineViewer
|
||||||
|
{
|
||||||
|
internal enum TBPFLAG
|
||||||
|
{
|
||||||
|
TBPF_NOPROGRESS = 0,
|
||||||
|
TBPF_INDETERMINATE = 0x1,
|
||||||
|
TBPF_NORMAL = 0x2,
|
||||||
|
TBPF_ERROR = 0x4,
|
||||||
|
TBPF_PAUSED = 0x8
|
||||||
|
}
|
||||||
|
|
||||||
|
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||||
|
[ComImport, Guid("ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf")]
|
||||||
|
internal interface ITaskbarList3
|
||||||
|
{
|
||||||
|
// ITaskbarList
|
||||||
|
void HrInit();
|
||||||
|
void AddTab(IntPtr hwnd);
|
||||||
|
void DeleteTab(IntPtr hwnd);
|
||||||
|
void ActivateTab(IntPtr hwnd);
|
||||||
|
void SetActiveAlt(IntPtr hwnd);
|
||||||
|
// ITaskbarList2
|
||||||
|
void MarkFullscreenWindow(IntPtr hwnd, [MarshalAs(UnmanagedType.Bool)] bool fFullscreen);
|
||||||
|
// ITaskbarList3
|
||||||
|
void SetProgressValue(IntPtr hwnd, ulong ullCompleted, ulong ullTotal);
|
||||||
|
void SetProgressState(IntPtr hwnd, TBPFLAG tbpFlags);
|
||||||
|
//void RegisterTab(IntPtr hwndTab, IntPtr hwndMDI);
|
||||||
|
//void UnregisterTab(IntPtr hwndTab);
|
||||||
|
//void SetTabOrder(IntPtr hwndTab, IntPtr hwndInsertBefore);
|
||||||
|
//void SetTabActive(IntPtr hwndTab, IntPtr hwndMDI, uint dwReserved);
|
||||||
|
//void ThumbBarAddButtons(IntPtr hwnd, uint cButtons, THUMBBUTTON[] pButton);
|
||||||
|
//void ThumbBarUpdateButtons(IntPtr hwnd, uint cButtons, THUMBBUTTON[] pButton);
|
||||||
|
//void ThumbBarSetImageList(IntPtr hwnd, IntPtr himl);
|
||||||
|
//void SetOverlayIcon(IntPtr hwnd, IntPtr hIcon, string pszDescription);
|
||||||
|
//void SetThumbnailTooltip(IntPtr hwnd, string pszTip);
|
||||||
|
//void SetThumbnailClip(IntPtr hwnd, ref RECT prcClip);
|
||||||
|
}
|
||||||
|
|
||||||
|
[ComImport, Guid("56FDF344-FD6D-11d0-958A-006097C9A090")]
|
||||||
|
internal class TaskbarList { }
|
||||||
|
|
||||||
|
internal static class TaskbarManager
|
||||||
|
{
|
||||||
|
private static readonly ITaskbarList3 taskbarList = (ITaskbarList3)new TaskbarList();
|
||||||
|
|
||||||
|
static TaskbarManager()
|
||||||
|
{
|
||||||
|
taskbarList.HrInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetProgressState(IntPtr windowHandle, TBPFLAG state)
|
||||||
|
{
|
||||||
|
taskbarList.SetProgressState(windowHandle, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SetProgressValue(IntPtr windowHandle, ulong completed, ulong total)
|
||||||
|
{
|
||||||
|
taskbarList.SetProgressValue(windowHandle, completed, total);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user