Silverlight 5 RC新特性探索系列:12.Silverlight 5 RC 窗口模式下访问自定义DLL和WIN32 API

简介:

  在Silverlight 5 RC版本中针对访问权限进行了相应的提升,它的项目属性中新增了一个复选框“在浏览器内运行时需要提升的信任”,如下图:

         它将为在浏览器模式下运行的应用程序提升一些访问权限,例如我的上篇SaveFileDialog保存文件指定默认名称---OpenFileDialog打开文件指定默认路径就需要提升权限。另外在其OOB模式下也进行了相应的提升,比如访问WIN 32 API,或者访问在C:\Windows\System32目录下的自己编写的DLL文件。

      A:在OOB模式下的提升权限来访问WIN32API。

         一、我们提升应用程序权限,如下图

        二、键入以下代码以访问WIN 32 DLL的API函数,需要using System.Runtime.InteropServices。

///<summary>
        /// 弹出窗口
        ///</summary>
        ///<param name="h">弹出窗口的父窗口,在这里没有,所以为0</param>
        ///<param name="message">需要显示的消息</param>
        ///<param name="title">窗口的标题</param>
        ///<param name="type">窗口的类型 0为确定按钮,1为确定、取消双按钮</param>
        ///<returns></returns>
        [DllImport("user32.dll", EntryPoint = "MessageBoxA")]
        public static extern int MsgBox(int h, string message, string title, int type);

   B:我们访问C:\Windows\System32目录下的自己编写的DLL文件.

         一、首先找一个使用C++编写的外部DLL文件将其复制到System32目录下(这个DLL文件请参看22.Silverlight使用WebService调用C++,Delphi编写的DLL文件),此DLL文件内有一个函数GetNum(double a,double b),作用是将a和b两个数字相加并且返回结果。

        二、键入一下代码,以调用IlasLinkDll.dll。

///<summary>
        /// 获取到DLL的值
        ///</summary>
        ///<param name="Anumber">数字A</param>
        ///<param name="Bnumber">数字B</param>
        ///<returns></returns>
        [DllImport("IlasLinkDll.dll", CharSet = CharSet.Ansi, EntryPoint = "GetNum", ExactSpelling = false)]
        public static extern double GetNum(double Anumber, double Bnumber);

三、最后我们在客户端调用上面两个函数,以观察效果。
public MainPage()
        {
            InitializeComponent();
            MessageBox.Show("调用IlasLinkDll.dll获得的结果:"+GetNum(500.0, 23.0).ToString());

            MsgBox(0, "这是调用User32.dll弹出的窗口", "提示信息",1);
        }

        最后我们来看运行效果如下,如需源码请点击SL5Cmd.zip 下载:

   

相关文章
|
2月前
|
JSON API 开发工具
【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
|
2月前
|
人工智能 测试技术 API
MatGPT - 访问 OpenAI™ ChatGPT API 的 MATLAB® 应用程序
MatGPT - 访问 OpenAI™ ChatGPT API 的 MATLAB® 应用程序
43 0
|
16天前
|
API iOS开发 开发者
Snapchat API 访问:Objective-C 实现示例
Snapchat API 访问:Objective-C 实现示例
|
2月前
|
API 开发者
【API管理 APIM】APIM集成内部VNet后,自我访问出现(Unable to connect to the remote server)问题,而Remote Server正是APIM它自己
【API管理 APIM】APIM集成内部VNet后,自我访问出现(Unable to connect to the remote server)问题,而Remote Server正是APIM它自己
|
2月前
|
Web App开发 缓存 小程序
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
|
2月前
|
Kubernetes Serverless API
Kubernetes 的架构问题之利用不可变性来最小化对API Server的访问如何解决
Kubernetes 的架构问题之利用不可变性来最小化对API Server的访问如何解决
72 7
|
2月前
|
程序员 数据库连接 API
分享一个解决 EF 性能低的思路,通过 Python 访问心跳侦测 API 保持 EF 在线
分享一个解决 EF 性能低的思路,通过 Python 访问心跳侦测 API 保持 EF 在线
|
2月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之海外是否可以访问人物动漫化的api版本
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
40 0
|
2月前
|
存储 安全 API
【Azure API Management】实现在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account
【Azure API Management】实现在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account
|
2月前
|
API C#
【Azure API 管理】APIM如何实现对部分固定IP进行访问次数限制呢?如60秒10次请求
【Azure API 管理】APIM如何实现对部分固定IP进行访问次数限制呢?如60秒10次请求
下一篇
无影云桌面