上帝玩骰子
       --shadowk
博客园 | 首页 | 发新随笔 | 发新文章 | 联系 | 订阅 订阅 | 管理

2011年9月8日

一个右键编译.sln的工具 - VSBuild
摘要: 一个好方法,可以不用打开VS2010,右键菜单直接编译*.sln,*.csproj。原理就是改注册表,生成右键菜单,再关联一个.bat文件使用msbuild.exe进行编译。阅读全文
posted @ 2011-09-08 16:28 ShadowK 阅读(97) 评论(0) 编辑
 

2009年5月15日

ConsoleHelper
Code
 public static class ConsoleHelper
    {
        
private const int CTRL_CLOSE_EVENT = 2;

        
public delegate bool ConsoleCtrlDelegate(int dwCtrlType);


        [DllImport(
"kernel32.dll")]
        
private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine, bool Add);

        
private static bool HandlerRoutine(int CtrlType)
        {
            
switch (CtrlType)
            {
                
case CTRL_CLOSE_EVENT:
                    
                    
break;
            }

            
return false;
        }

        
public static void SetHandler()
        {
            ConsoleCtrlDelegate newDategate 
= HandlerRoutine;
            SetConsoleCtrlHandler(newDategate, 
true);
        }
posted @ 2009-05-15 16:42 ShadowK 阅读(63) 评论(0) 编辑
 
DllHelper
Code
 public static class DllHelper
    {
        
private static IntPtr libHandle = IntPtr.Zero;

        [DllImport(
"kernel32")]
        
private static extern IntPtr LoadLibrary(string lpLibFileName);

        [DllImport(
"kernel32")]
        
private static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName);

        [DllImport(
"kernel32")]
        
private static extern IntPtr FreeLibrary(IntPtr hLibModule);

        
public static object Invoke(string fileName, string funName, object[] objParams, Type returnType)
        {
            
try
            {
                
//获取函数地址
                if (libHandle == IntPtr.Zero)
                    libHandle 
= LoadLibrary(fileName);
                
if (libHandle == IntPtr.Zero) 
                    
return null;

                IntPtr procAddres 
= GetProcAddress(libHandle, funName);
                
if (procAddres == IntPtr.Zero) return null;

                
//获取参数类型
                Type[] paramTypes = new Type[objParams.Length];
                
for (int i = 0; i < objParams.Length; ++i)
                {
                    paramTypes[i] 
= objParams[i].GetType();
                }

                
//构建调用方法模型
                AssemblyName asembyName = new AssemblyName();
                asembyName.Name 
= "WinDllInvoke_Assembly";
                AssemblyBuilder asembyBuilder 
= AppDomain.CurrentDomain.DefineDynamicAssembly(asembyName, AssemblyBuilderAccess.Run);
                ModuleBuilder moduleBuilder 
= asembyBuilder.DefineDynamicModule("WinDllInvoke");
                MethodBuilder methodBuilder 
= moduleBuilder.DefineGlobalMethod("InvokeFun", MethodAttributes.Public | MethodAttributes.Static, returnType, paramTypes);

                
//获取一个 ILGenerator ,用于发送所需的 IL 
                ILGenerator IL = methodBuilder.GetILGenerator();
                
for (int j = 0; j < paramTypes.Length; ++j)
                {
                    
//将参数压入堆栈
                    if (paramTypes[j].IsValueType)
                    {
                        IL.Emit(OpCodes.Ldarg, j); 
//By Value
                    }
                    
else
                    {
                        IL.Emit(OpCodes.Ldarga, j); 
//By Addrsss
                    }
                }

                
// 判断处理器类型
                if (IntPtr.Size == 4)
                {
                    IL.Emit(OpCodes.Ldc_I4, procAddres.ToInt32());
                }
                
else if (IntPtr.Size == 8)
                {
                    IL.Emit(OpCodes.Ldc_I8, procAddres.ToInt64());
                }
                
else
                {
                    
throw new PlatformNotSupportedException("不好意思,偶不认得你哦!");
                }

                IL.EmitCalli(OpCodes.Calli, CallingConvention.StdCall, returnType, paramTypes);
                IL.Emit(OpCodes.Ret); 
// 返回值 
                moduleBuilder.CreateGlobalFunctions();

                
// 取得方法信息 
                MethodInfo methodInfo = moduleBuilder.GetMethod("InvokeFun");

                
return methodInfo.Invoke(null, objParams); // 调用方法,并返回其值
            }
            
catch { return null; }
        }

        
public static void FreeLibrary()
        {
            
if (libHandle != IntPtr.Zero) FreeLibrary(libHandle);
        }
posted @ 2009-05-15 16:12 ShadowK 阅读(56) 评论(0) 编辑
 

2009年1月8日

C# C++ 相互序列化
posted @ 2009-01-08 18:21 ShadowK 阅读(999) 评论(0) 编辑
 

2008年9月26日

QQ大家来找茬外挂

 

在网上找了一个原型,用不起,自已改了下,现在更快,更方便.

 

下载 QQ大家来找茬外挂2009(含源码)
posted @ 2008-09-26 12:18 ShadowK 阅读(1887) 评论(11) 编辑
 

2008年3月29日

迅雷漫画下载 v1.0(绿色版) 附源码
摘要: 发现迅雷网站漫画很全,写了一个用于下载迅雷网站上漫画的工具. 阅读全文
posted @ 2008-03-29 02:35 ShadowK 阅读(13238) 评论(36) 编辑
 

2007年6月3日

测试浏览器,网络环境的好工具
posted @ 2007-06-03 01:18 ShadowK 阅读(120) 评论(0) 编辑
 

2007年4月29日

冷笑话集锦
摘要: 有一只企鹅,他的家离北极熊家特别远,要是靠走的话,得走20年才能到。有一天,企鹅在家里呆着特别无聊,准备去找北极熊玩,与是他出门了,可是走到路的一半的时候发现自己忘记锁门了,这就已经走了10年了,可是门还是得锁啊,于是企鹅又走回家去锁门。锁了门以后,企鹅再次出发去找北极熊,等于他花了40年才到了北极熊他们家……然后企鹅就敲门说:“北极熊北极熊,企鹅找你玩来了!”
  结果北极熊开门以后你猜他说什么?……阅读全文
posted @ 2007-04-29 10:50 ShadowK 阅读(352) 评论(0) 编辑
 

2006年12月27日

(转载)动态控件的状态问题
摘要: 下面两页差别很小,就是一句语句的前后次序有所不同,但PostBack后显示效果有所不同,请解释为什么显示效果不同,并且解释正确显示的那页(你知道是哪页,对么?)中Response.Write的输出结果。阅读全文
posted @ 2006-12-27 10:10 ShadowK 阅读(469) 评论(1) 编辑
 

2006年12月7日

(转载)基于.net开发平台项目案例集锦
摘要: 作者:郑佐 2006-10-31
经过微软.net Framework 2.0的革新,.net平台的开发越来越精彩。笔者收集基于.net开发的n个项目,一方面为新手提供有价值学习资源,培养起软件开发的乐趣,另一方面共勉已从事.net领域工作多年并有明确发展目标的同仁,提高自己,更上一层楼。阅读全文
posted @ 2006-12-07 09:46 ShadowK 阅读(1878) 评论(16) 编辑
 

2006年11月29日

我的第一个像模像样的程序:虹影 [远程监控]
摘要: 写的一个木马程序.主要那时候在学校里喜欢整人家的机子玩,就写了一个木马类的程序,大二的时候开始的吧,那时候还在用VB,写的一个程序.仅作记念.程序是开源的,如果要的话,请联系我. 我把它放到网上126的邮箱里了,在"草稿"里,有兴趣的朋友可以去下 www.126.com 用户名:rsroom 密码:11111111阅读全文
posted @ 2006-11-29 08:49 ShadowK 阅读(506) 评论(0) 编辑
 

2006年11月28日

(转载)Ajax.NET与Atlas的比较
摘要: 简介:
Ajax.NET是一款免费的面向.Net的Ajax Library
Atlas是微软提供给开发者的Ajax开发包
两者都可以让ASP.Net具备Ajax功能
近日,利用空闲时间把这两个东西做了不完全的比较阅读全文
posted @ 2006-11-28 14:01 ShadowK 阅读(460) 评论(0) 编辑
 
(转载)用好VS2005之扩展membership服务
摘要: ASP.NET 2.0中新增的最佳功能之一是新的成员身份服务,它提供了用于创建和管理用户帐户的易于使用的API
  ASP.NET 2.0中新增的最佳功能之一是新的成员身份服务,它提供了用于创建和管理用户帐户的易于使用的API。ASP.NET 1.x大规模引入了窗体身份验证,但仍然要求您编写相当数量的代码来执行实际操作中的窗体身份验证。成员身份服务填补了ASP.NET 1.x窗体身份验证服务的不足,并且使实现窗体身份验证变得比以前简单得多。
  成员身份API通过两个新的类公开:Membership和MembershipUser。前者包含了用于创建用户、验证用户以及完成其他工作的静态方法。MembershipUser代表单个用户,它包含了用于检索和更改密码、获取上次登录日期以及完成类似工作的方法和属性。通过这两个新的类,我们可以不用写一行代码,方便得完成对用户的管理。 但是在实际开发过程中,绝对不能满足我们日常开发的需要。经过日常项目的开发和网络上资料的搜索,现将其一一列出:阅读全文
posted @ 2006-11-28 14:00 ShadowK 阅读(762) 评论(2) 编辑
 

2006年11月23日

(转载)关于asp.net的配置文件说明。
摘要: Contents

Machine.config
Web.config
Changing Settings
Using the Section
Using NameValueFileSectionHandler
Custom Configuration Sections
Conclusion阅读全文
posted @ 2006-11-23 17:11 ShadowK 阅读(421) 评论(1) 编辑
 

2006年11月22日

(转载).NET 2.0的Provider模式
摘要: Provider设计模式是在.NET 1.1 framework中被首次介绍到,特别是在ASP.NET快速入门中,以及后来在ASP.NET Whidbey中作为membership management provider API被正式化。它的主要目的在于为一个API进行定义和实现的分离。这样就通过核心功能的灵活性和易于修改的特点使得API具有灵活性。阅读全文
posted @ 2006-11-22 14:25 ShadowK 阅读(928) 评论(0) 编辑
 
仅列出标题  下一页
随笔:18 文章:16 评论:90 引用:19
<2012年2月>
日一二三四五六
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

公告

广交喜欢技术和创业的朋友 QQ:50248291 msn: NewShadowk@hotmail.com
昵称:ShadowK
园龄:5年7个月
粉丝:0
关注:0

搜索

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论
  • 我的标签

最新随笔

  • 1. 一个右键编译.sln的工具 - VSBuild
  • 2. ConsoleHelper
  • 3. DllHelper
  • 4. C# C++ 相互序列化
  • 5. QQ大家来找茬外挂
  • 6. 迅雷漫画下载 v1.0(绿色版) 附源码
  • 7. 测试浏览器,网络环境的好工具
  • 8. 冷笑话集锦
  • 9. (转载)动态控件的状态问题
  • 10. (转载)基于.net开发平台项目案例集锦

我的标签

  • 迅雷(1)
  • 漫画下载(1)
  • 漫画(1)
  • 下载(1)
  • QQ大家来找茬外挂(1)
  • 大家来找茬(1)
  • 外挂(1)
  • 右键编译 工具(1)

随笔档案(18)

  • 2011年9月 (1)
  • 2009年5月 (2)
  • 2009年1月 (1)
  • 2008年9月 (1)
  • 2008年3月 (1)
  • 2007年6月 (1)
  • 2007年4月 (1)
  • 2006年12月 (2)
  • 2006年11月 (7)
  • 2006年7月 (1)

文章分类(16)

  • 设计模式学习日志(16) (rss)

文章档案(16)

  • 2006年7月 (16)

相册

  • 虹影

积分与排名

  • 积分 - 35247
  • 排名 - 3048

最新评论

阅读排行榜

评论排行榜

推荐排行榜


Powered by: 博客园
模板提供:沪江博客
Copyright ©2012 ShadowK