IMetroMode::IsLauncherVisible in C# via pInvoke?(IMetroMode::IsLauncherVisible 在 C# 中通过 pInvoke?)
问题描述
在 Windows 8 的 C# 中,如何 pInvoke IMetroMode::IsLauncherVisible 方法?
In C# in Windows 8, how can I pInvoke the IMetroMode::IsLauncherVisible method?
该方法的详细信息可在此处找到:http://msdn.microsoft.com/en-us/library/windows/desktop/hh404166(v=vs.85).aspx
Details for the method are found here: http://msdn.microsoft.com/en-us/library/windows/desktop/hh404166(v=vs.85).aspx
推荐答案
使用IAppVisibility 接口而不是 过时的 IMetroMode 接口
这里是示例代码:
/* From ShObjIdl.idl
// CLSID_AppVisibility
[ uuid(7E5FE3D9-985F-4908-91F9-EE19F9FD1514)] coclass AppVisibility { interface IAppVisibility; }
*/
Type tIAppVisibility = Type.GetTypeFromCLSID(new Guid("7E5FE3D9-985F-4908-91F9-EE19F9FD1514"));
IAppVisibility appVisibility = (IAppVisibility)Activator.CreateInstance(tIAppVisibility);
bool launcherVisible;
if(HRESULT.S_OK == appVisibility.IsLauncherVisible(out launcherVisible)) {
// Here you can use the launcherVisible flag
}
IAppVisibility 接口定义:
The IAppVisibility interface definition:
[ComImport, Guid("2246EA2D-CAEA-4444-A3C4-6DE827E44313"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IAppVisibility {
HRESULT GetAppVisibilityOnMonitor([In] IntPtr hMonitor, [Out] out MONITOR_APP_VISIBILITY pMode);
HRESULT IsLauncherVisible([Out] out bool pfVisible);
HRESULT Advise([In] IAppVisibilityEvents pCallback, [Out] out int pdwCookie);
HRESULT Unadvise([In] int dwCookie);
}
//...
public enum HRESULT : long {
S_FALSE = 0x0001,
S_OK = 0x0000,
E_INVALIDARG = 0x80070057,
E_OUTOFMEMORY = 0x8007000E
}
public enum MONITOR_APP_VISIBILITY {
MAV_UNKNOWN = 0, // The mode for the monitor is unknown
MAV_NO_APP_VISIBLE = 1,
MAV_APP_VISIBLE = 2
}
[ComImport, Guid("6584CE6B-7D82-49C2-89C9-C6BC02BA8C38"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IAppVisibilityEvents {
HRESULT AppVisibilityOnMonitorChanged(
[In] IntPtr hMonitor,
[In] MONITOR_APP_VISIBILITY previousMode,
[In] MONITOR_APP_VISIBILITY currentMode);
HRESULT LauncherVisibilityChange([In] bool currentVisibleState);
}
这篇关于IMetroMode::IsLauncherVisible 在 C# 中通过 pInvoke?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:IMetroMode::IsLauncherVisible 在 C# 中通过 pInvoke?
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- 输入按键事件处理程序 2022-01-01