mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-04-23 19:40:23 +10:00
Coding for Package Manager.
This commit is contained in:
120
ModernNotice/Notice.cs
Normal file
120
ModernNotice/Notice.cs
Normal file
@@ -0,0 +1,120 @@
|
||||
using System.Xml;
|
||||
using System.Runtime.InteropServices;
|
||||
using HResult = DataUtils._I_HResult;
|
||||
using System;
|
||||
|
||||
namespace ModernNotice
|
||||
{
|
||||
public static class Notice
|
||||
{
|
||||
private static XmlDocument XmlStringToDom (string xmlContent)
|
||||
{
|
||||
var ret = new XmlDocument ();
|
||||
ret.LoadXml (xmlContent);
|
||||
return ret;
|
||||
}
|
||||
private static string XmlDomToString (XmlDocument xmlDom) { return xmlDom.OuterXml; }
|
||||
private static HResult BuildHResult (int hr, IntPtr err, IntPtr msg) { return new HResult (hr, Marshal.PtrToStringUni (err), Marshal.PtrToStringUni (msg)); }
|
||||
private static HResult BuildHResult (HRESULT hr, IntPtr err, IntPtr msg) { return BuildHResult (hr.Value, err, msg); }
|
||||
private static HResult BuildHResult (int hr, IntPtr msg) { return new HResult (hr, "", Marshal.PtrToStringUni (msg)); }
|
||||
private static HResult BuildHResult (HRESULT hr, IntPtr msg) { return BuildHResult (hr.Value, msg); }
|
||||
private static HResult BuildHResult (int hr) { return new HResult (hr); }
|
||||
private static HResult BuildHResult (HRESULT hr) { return BuildHResult (hr.Value); }
|
||||
public static string GetTemplateString (string templateName)
|
||||
{
|
||||
var ptr = Native.GetToastNoticeXml (templateName);
|
||||
try { var ret = Marshal.PtrToStringUni (ptr) ?? ""; return ret; }
|
||||
finally { Native.NoticeApiFreeString (ptr); }
|
||||
}
|
||||
public static XmlDocument GetTemplate (string templateName) { return XmlStringToDom (GetTemplateString (templateName)); }
|
||||
public static string GetSimpleTemplateString (string content, string imagePath)
|
||||
{
|
||||
var ptr = Native.GenerateSimpleToastNoticeXml (content, imagePath);
|
||||
try { var ret = Marshal.PtrToStringUni (ptr) ?? ""; return ret; }
|
||||
finally { Native.NoticeApiFreeString (ptr); }
|
||||
}
|
||||
public static XmlDocument GetSimpleTemplate (string content, string imagePath = null) { return XmlStringToDom (GetSimpleTemplateString (content, imagePath)); }
|
||||
public static string GetSimpleTemplateString2 (string title, string content = null, string imagePath = null)
|
||||
{
|
||||
var ptr = Native.GenerateSimpleToastNoticeXml2 (title, content, imagePath);
|
||||
try { var ret = Marshal.PtrToStringUni (ptr) ?? ""; return ret; }
|
||||
finally { Native.NoticeApiFreeString (ptr); }
|
||||
}
|
||||
public static XmlDocument GetSimpleTemplate2 (string title, string content = null, string imagePath = null) { return XmlStringToDom (GetSimpleTemplateString2 (title, content, imagePath)); }
|
||||
public static HResult Create (string appUserId, XmlDocument xml)
|
||||
{
|
||||
IntPtr dt = IntPtr.Zero;
|
||||
try
|
||||
{
|
||||
var hr = Native.CreateToastNoticeFromXmlDocument (appUserId, XmlDomToString (xml), null, IntPtr.Zero, out dt);
|
||||
return BuildHResult (hr, dt);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (dt != IntPtr.Zero) Native.NoticeApiFreeString (dt);
|
||||
}
|
||||
}
|
||||
public static HResult Create (string appUserId, string content, string imagePath = null)
|
||||
{
|
||||
var xml = GetSimpleTemplate (content, imagePath);
|
||||
return Create (appUserId, xml);
|
||||
}
|
||||
public static HResult Create (string appUserId, string title, string content, string imagePath = null)
|
||||
{
|
||||
var xml = GetSimpleTemplate2 (title, content, imagePath);
|
||||
return Create (appUserId, xml);
|
||||
}
|
||||
public static HResult Create (string appUserId, string content, IntPtr img)
|
||||
{
|
||||
IntPtr dt = IntPtr.Zero;
|
||||
try
|
||||
{
|
||||
var hr = Native.CreateToastNoticeWithIStream (appUserId, content, img, null, IntPtr.Zero, out dt);
|
||||
return BuildHResult (hr, dt);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (dt != IntPtr.Zero) Native.NoticeApiFreeString (dt);
|
||||
}
|
||||
}
|
||||
public static HResult Create (string appUserId, string title, string content, IntPtr img)
|
||||
{
|
||||
IntPtr dt = IntPtr.Zero;
|
||||
try
|
||||
{
|
||||
var hr = Native.CreateToastNoticeWithIStream2 (appUserId, title, content, img, null, IntPtr.Zero, out dt);
|
||||
return BuildHResult (hr, dt);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (dt != IntPtr.Zero) Native.NoticeApiFreeString (dt);
|
||||
}
|
||||
}
|
||||
public static HResult CreateWithImgBase64 (string appUserId, string content, string imageBase64)
|
||||
{
|
||||
IntPtr dt = IntPtr.Zero;
|
||||
try
|
||||
{
|
||||
var hr = Native.CreateToastNoticeWithImgBase64 (appUserId, content, imageBase64, null, IntPtr.Zero, out dt);
|
||||
return BuildHResult (hr, dt);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (dt != IntPtr.Zero) Native.NoticeApiFreeString (dt);
|
||||
}
|
||||
}
|
||||
public static HResult CreateWithImgBase64 (string appUserId, string title, string content, string imageBase64)
|
||||
{
|
||||
IntPtr dt = IntPtr.Zero;
|
||||
try
|
||||
{
|
||||
var hr = Native.CreateToastNotice2WithImgBase64 (appUserId, title, content, imageBase64, null, IntPtr.Zero, out dt);
|
||||
return BuildHResult (hr, dt);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (dt != IntPtr.Zero) Native.NoticeApiFreeString (dt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user