通过PInvoke

时间:2016-06-01 07:20:17

标签: c# windows-8 windows-runtime

我尝试在我的C#应用​​程序中使用一些WinRT函数(一个普通的Windows程序而不是通用应用程序),正常的方法在我的情况下不起作用。如上所述:http://www.codeproject.com/Articles/457335/How-to-call-WinRT-APIs-from-NET-desktop-apps

所以我想通过P / Invoke调用WinRT API。我发现了很多关于另一种方式的问题(在WinRT中使用P / Invore)。

所以我的问题是否有人知道通过P / Invoke调用WinRt函数的方法?

谢谢, 丹尼尔

- 编辑 -

要完成我的问题,这是代码,它不起作用:

Task.Factory.StartNew(async () =>
        {

                // Check Microsoft Passport is setup and available on this machine
                if (await MicrosoftPassportHelper.MicrosoftPassportAvailableCheckAsync())
                {
                    Console.WriteLine("Microsoft Passport is setup!");
                }
                else
                {
                    // Microsoft Passport is not setup so inform the user
                    Console.WriteLine(("Microsoft Passport is not setup!\r\n" +
                                          "Please go to Windows Settings and set up a PIN to use it.");
                }

        });

public static async Task<bool> MicrosoftPassportAvailableCheckAsync()
        {
            var keyCredentialAvailable = KeyCredentialManager.IsSupportedAsync();
            if (keyCredentialAvailable.GetResults() == false)
            {
                // Key credential is not enabled yet as user 
                // needs to connect to a Microsoft Account and select a PIN in the connecting flow.
                Debug.WriteLine("Microsoft Passport is not setup!\nPlease go to Windows Settings and set up a PIN to use it.");
                return false;
            }

            return true;
        }

我从Line&#34获得了ArgumentException; if(keyCredentialAvailable.GetResults()== false)&#34;。

价值不在预期范围内。     在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)     在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)     在System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()     在PassportTest.MicrosoftPassportHelper.d__0.MoveNext()

正如我发现的那样,这是因为KeyCredentialManager不支持Universial Apps。这就是为什么我要检查p / invoke可能是一个选项。

0 个答案:

没有答案