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。

 

 
 
  1. ///<summary> 
  2. /// 弹出窗口 
  3. ///</summary> 
  4. ///<param name="h">弹出窗口的父窗口,在这里没有,所以为0</param> 
  5. ///<param name="message">需要显示的消息</param> 
  6. ///<param name="title">窗口的标题</param> 
  7. ///<param name="type">窗口的类型 0为确定按钮,1为确定、取消双按钮</param> 
  8. ///<returns></returns
  9. [DllImport("user32.dll", EntryPoint = "MessageBoxA")] 
  10. 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。

 
 
  1. ///<summary> 
  2. /// 获取到DLL的值 
  3. ///</summary> 
  4. ///<param name="Anumber">数字A</param> 
  5. ///<param name="Bnumber">数字B</param> 
  6. ///<returns></returns
  7. [DllImport("IlasLinkDll.dll", CharSet = CharSet.Ansi, EntryPoint = "GetNum", ExactSpelling = false)] 
  8. public static extern double GetNum(double Anumber, double Bnumber); 
 三、最后我们在客户端调用上面两个函数,以观察效果。
 
 
  1. public MainPage()   
  2. {   
  3.     InitializeComponent();   
  4.     MessageBox.Show("调用IlasLinkDll.dll获得的结果:"+GetNum(500.0, 23.0).ToString());   
  5.    
  6.     MsgBox(0, "这是调用User32.dll弹出的窗口""提示信息",1);}   

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

   



本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/827053

目录
打赏
0
0
0
0
344
分享
相关文章
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
在掌握了鸿蒙系统的开发基础后,我挑战了蓝牙功能的开发。通过Bluetooth A2DP和Access API,实现了蓝牙音频流传输、设备连接和权限管理。具体步骤包括:理解API作用、配置环境与权限、扫描并连接设备、实现音频流控制及动态切换设备。最终,我构建了一个简单的蓝牙音频播放器,具备设备扫描、连接、音频播放与停止、切换输出设备等功能。这次开发让我对蓝牙技术有了更深的理解,也为未来的复杂项目打下了坚实的基础。
134 58
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
|
5月前
|
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
89 4
【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
|
7月前
|
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
183 0
Java 8 新特性之 Stream API:函数式编程风格的数据处理范式
Java 8 引入的 Stream API 提供了一种新的数据处理方式,支持函数式编程风格,能够高效、简洁地处理集合数据,实现过滤、映射、聚合等操作。
113 6
像素流送api ue多人访问需要什么显卡服务器
本文总结了关于像素流送技术的五大常见问题,包括是否支持Unity模型推流、UE多人访问的最大并发数、所需服务器配置、稳定性问题及API支持情况,旨在帮助开发者更好地理解和应用这一技术。
138 1
深入理解 Vue 3 的 Composition API 与新特性
本文详细探讨了 Vue 3 中的 Composition API,包括 setup 函数的使用、响应式数据管理(ref、reactive、toRefs 和 toRef)、侦听器(watch 和 watchEffect)以及计算属性(computed)。我们还介绍了自定义 Hooks 的创建与使用,分析了 Vue 2 与 Vue 3 在响应式系统上的重要区别,并概述了组件生命周期钩子、Fragments、Teleport 和 Suspense 等新特性。通过这些内容,读者将能更深入地理解 Vue 3 的设计理念及其在构建现代前端应用中的优势。
90 1
深入理解 Vue 3 的 Composition API 与新特性
Vue 3新特性详解:Composition API的威力
【10月更文挑战第25天】Vue 3 引入的 Composition API 是一组用于组织和复用组件逻辑的新 API。相比 Options API,它提供了更灵活的结构,便于逻辑复用和代码组织,特别适合复杂组件。本文将探讨 Composition API 的优势,并通过示例代码展示其基本用法,帮助开发者更好地理解和应用这一强大工具。
65 2
如何申请微店的API访问权限?
申请微店API访问权限需先注册账号并完成实名认证,随后提交开发申请,学习API接口,实现功能和数据传输,申请授权获取API Key,测试接口,最后正式上线并持续维护优化。
API实现跨平台访问的方式
【10月更文挑战第16天】API实现跨平台访问的方式
75 2

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等