中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
C#中与未操控语句交互运作
作者:未知 时间:2005-07-27 21:31 出处:CSDN 责编:chinaitpower
              摘要:C#中与未操控语句交互运作

using System;
using System.Runtime.InteropServices;

namespace FastCSharp
{
 class Class1
 {

  
  [STAThread]
  unsafe static void Main(string[] args)
  {
//   comInvoke();
//   helloWorld();
//   StructInvoke();   
//   classInvode();
//   PointerInvoke();
   unsafeMethod();
  }

//  调用一个com组件
//  tlbimp工具
  public static void comInvoke()
  {
   //string fileName = "c:\\windows\\clock.avi";
   string fileName = @"C:\Documents and Settings\Administrator\桌面\WebApplication1\心中心密咒\dgmz.wma";
   QuartzTypeLib.FilgraphManager graphManager = new QuartzTypeLib.FilgraphManagerClass();
   QuartzTypeLib.IMediaControl mc = (QuartzTypeLib.IMediaControl)graphManager;
   mc.RenderFile(fileName);
   mc.Run();
   Console.WriteLine("Hello World");
   Console.ReadLine();
  }
  public static void helloWorld()
  {
   Win32Invoke.MessageBox(0,"Hello World","Platform Invoke Sample",0);
  }
//  传递结构变量
  public static void StructInvoke()
  {
   Point p = new Point();
   p.x = 1;
   p.y = 1;
   Rect r = new Rect();
   r.left = 0;
   r.bottom = 2;
   r.right = 2;
   r.top = 0;
   bool b = Win32Invoke.PtInRect(ref r,p);
   System.Console.WriteLine("Point[1,1] is int Rect[0,0,2,2] ?" +b );
  }
//  传递一个对象
  public static void classInvode()
  {
   MySystemTime t = new MySystemTime();
   Win32Invoke.GetSystemTime(t);
   Console.WriteLine("System time is "
    + t.wYear + "/"
    + t.wMonth + "/"
    + t.wDay + " "
    + t.wHour + ":"
    + t.wMinute + ":"
    + t.wSecond
    );

  }
//  传送一个C#函数指针给Dll函数
  public static void PointerInvoke()
  {
   CallBack myCallBack = new CallBack(Class1.Report);
   Win32Invoke.EnumWindows(myCallBack,0);
  }
  public static bool Report(int hwnd, int lParam)
  {
   Console.WriteLine("Window handle is" + hwnd);
   return true;
  }
//  指针函数
  unsafe static void SquareParam(int *p)
  {
   //unsafe mthod:takes pointer to int
   *p *= *p;
  }
//  unsafe method : user address-of operator (&)
  unsafe public static void unsafeMethod()
  {
   int i = 5;
   SquareParam(&i);
   Console.WriteLine("5 * 5 == " + i );
   P pt = new P();
   pt.x = 5;
   pt.y = 6;
   //fixed 关键字是告诉c#资源回收器接下来不要对某过变量的地址进行运算,不要对此变量的地址有任何改动
   //pin pt in place
   fixed(int* pointer =&pt.x)
   {
    
    SquareParam(pointer);
   }
   //pt now nupinned
   Console.WriteLine("pt.x == {0} pt.y == {1}",pt.x,pt.y);
  }
 }
 public class Win32Invoke
 {
  [DllImport("user32.dll",CharSet = CharSet.Auto)]
   public static extern int MessageBox(int hWnd,String text,String caption,uint type);
  [DllImport("user32.dll")]
   public static extern bool PtInRect(ref Rect r, Point p);
  [DllImport("Kernel32.dll")]
   public static extern void GetSystemTime(MySystemTime st);
  [DllImport("user32.dll")]
   public static extern int EnumWindows(CallBack x, int y);
 }

 public struct Point
 {
  public int x;
  public int y;
 }
 public class P
 {
  public int x;
  public int y;
 }
 [StructLayout(LayoutKind.Explicit)]
 public struct Rect
 {
  [FieldOffset(0)] public int left;
  [FieldOffset(4)] public int top;
  [FieldOffset(8)] public int right;
  [FieldOffset(12)] public int bottom;
 }
 [StructLayout(LayoutKind.Sequential)]
 public class MySystemTime
 {
  public ushort wYear;
  public ushort wMonth;
  public ushort wDayOfWeek;
  public ushort wDay;
  public ushort wHour;
  public ushort wMinute;
  public ushort wSecond;
  public ushort wMilliseconds;
 }
// delegate
 public delegate bool CallBack(int hwnd, int lParam);


 
}


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有