C#语言开发Windows Shell扩展

开发 后端
这里介绍C#语言开发Windows Shell扩展,.NET平台是微软公司推出的作为未来软件运行和开发的环境,C#是微软力荐的在.NET平台下开发应用软件的首选语言。

C#语言有很多值得学习的地方,这里我们主要介绍C#语言开发Windows Shell扩展,包括介绍结构声明等方面。

.NET平台是微软公司推出的作为未来软件运行和开发的环境,C#是微软力荐的在.NET平台下开发应用软件的***语言。本文将讨论在.NET环境下如何使用C#语言开发Windows Shell扩展问题。如今Windows家族已发展到XP世代了,想必每个程序员都对Shell Extension不会感到陌生吧,在这里我不想花太多的时间介绍Shell Extension的原理知识,本文中将通过一个实例介绍用C#创建一个Shell Extension,在此过程中也会简单介绍一些Shell Extension的原理知识。

本实例实现一个ShellExecuteEx Win32调用的钩子操作,Windows Explorer常常会用到这个调用,如打开、编辑、打印等等Shell操作都要用到这个调用。在Windows注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks项下安装了所有实现Shell扩展的组件信息。当Windows Explorer执行Shell操作前,先在注册中查找到已注册的Shell扩展组件,并将其实例化,每个Shell扩展组件必须至少实现了IShellExecuteHook接口,此接口提供了一个Execute()函数,Explorer将通过组件实例对象调用Execute()函数,如此函数返回为S_FALSE继续后面的操作,如返回S_OK则停止后面的所有操作。根据以上原理,本实例要实现使用C#语言开发Windows Shell扩展。

结构声明

在Execute()方法中有一个SHELLEXECUTEINFO结构体参数sei,接下来要声明结构体:

  1. [StructLayout(LayoutKind.Sequential)]  
  2. public class SHELLEXECUTEINFO {  
  3. public int cbSize;  
  4. public int fMask;  
  5. public int hwnd;  
  6. [MarshalAs(UnmanagedType.LPWStr)]  
  7. public string lpVerb; /* 动作,如edit,open,print... */  
  8. [MarshalAs(UnmanagedType.LPWStr)]  
  9. public string lpFile; /* 根据lpVerb的值而定,常为文件名 */  
  10. [MarshalAs(UnmanagedType.LPWStr)]  
  11. public string lpParameters; /* 参数字符串 */  
  12. [MarshalAs(UnmanagedType.LPWStr)]  
  13. public string lpDirectory; /* 路径名 */  
  14. public int nShow;  
  15. public int hInstApp;  
  16. public int lpIDList;  
  17. public string lpClass;  
  18. public int hkeyClass;  
  19. public int dwHotKey;  
  20. public int hIcon;  
  21. public int hProcess;  

【编辑推荐】

  1. C# this关键字详解
  2. C#调用析构方法详解
  3. C#释放托管资源简单描述
  4. C#单路代理简单分析
  5. C#文法产生式概述
责任编辑:佚名 来源: IT168
相关推荐

2009-08-27 18:04:01

c#扩展方法string

2009-08-10 17:36:17

C#扩展方法

2009-09-02 17:10:45

C#语言入门

2009-09-01 11:04:59

C#调用扩展方法

2009-09-01 11:19:47

C# 3.0扩展重载抉

2009-08-13 17:04:09

C#语言C#程序

2009-08-31 14:45:10

C#扩展方法

2009-08-19 16:50:32

Visual C#C#语言特性

2009-08-27 09:27:49

C#扩展方法

2009-08-26 15:53:48

C#扩展方法

2009-08-18 14:14:45

C#扩展方法性能测试

2009-08-28 14:25:57

C# byte数组

2009-08-27 16:24:48

扩展方法C# 3.0新特性

2009-08-03 16:28:53

Java语言与C#语言

2009-09-11 10:44:55

C#语言

2009-08-25 16:32:24

C#语言

2009-08-17 09:57:00

C# Windows

2009-09-03 17:33:08

C#常规扩展性模型

2009-09-03 17:18:40

C#扩展性对象模型

2009-10-30 14:21:00

VB.NET开发语言
点赞
收藏

51CTO技术栈公众号