开发者社区> 煦风满裳> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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 下载:

   

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java 近期新闻:JDK 18 GA、JMC 8.2、Spring 升级、MicroStream 7.0-Beta1、WildFly 26.1-Beta1
本期 Java 新闻综述内容主要涉及 JDK 18、JDK 19、JDK Mission Control 8.2、Amazon Corretto 18、BellSoft LibericaJDK 18、多个 Spring 里程碑版本及点版本、Micronaut 3.4.0、GraalVM Native Build Tools 0.9.11、WildFly 26 Beta 1、Hibernate Reactive 1.1.4.Final、MicroStream 7.0-M1、JReleaser 1.0-RC1 和 TornadoVM 0.13。
70 0
+关注
煦风满裳
程兴亮,专注于C#方面的开发工作,喜欢钻研Silverlight,CIL等方面的知识。平时喜欢看书、写技术博客、摄影、旅游和运动。
32
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载