c#与WMI使用技巧集第1/2页

1、 什么是WMI 
WMI是英文Windows Management Instrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然你必须要拥有足够的权限),比如:重启,关机,关闭进程,创建进程等。 
2、 如何用WMI获得本地磁盘的信息? 
首先要在VS.NET中创建一个项目,然后在添加引用中引用一个.net的装配件:System.Management.dll,这样你的项目才能使用WMI。代码如下: 
using System; 
using System.Management;

class Sample_ManagementObject 

 public static int Main(string[] args)  
 { 
  SelectQuery query=new SelectQuery("Select * From Win32_LogicalDisk"); 
  ManagementObjectSearcher searcher=new ManagementObjectSearcher(query); 
  foreach(ManagementBaseObject disk in searcher.Get()) 
  { 
   Console.WriteLine("\r\n"+disk["Name"] +" "+disk["DriveType"] + " " + disk["VolumeName"]); 
  }

Console.ReadLine();

return 0;

}

}

disk["DriveType"] 的返回值意义如下:

1 No type  
2 Floppy disk  
3 Hard disk  
4 Removable drive or network drive  
5 CD-ROM  
6 RAM disk

3、如何用WMI获得指定磁盘的容量? 
using System; 
using System.Management;

// This example demonstrates reading a property of a ManagementObject. 
class Sample_ManagementObject 

 public static int Main(string[] args)  
 { 
  ManagementObject disk = new ManagementObject( 
   "win32_logicaldisk.deviceid=\"c:\""); 
  disk.Get(); 
  Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes"); 
  Console.ReadLine();  
  return 0; 
 } 
}

4、 如何列出机器中所有的共享资源? 
using System; 
using System.Management;

class TestApp { 
 [STAThread] 
 static void Main() 
 { 
  ManagementObjectSearcher searcher = new ManagementObjectSearcher( 
   "SELECT * FROM Win32_share"); 
  foreach (ManagementObject share in searcher.Get()) 
  { 
   Console.WriteLine(share.GetText(TextFormat.Mof)); 
  } 
 }


别忘记在引用中把System.Management添加进来。

5、 怎样写程控制让系统中的某个文件夹共享或取消共享.? 
首先,这需要以有相应权限的用户登录系统才行。然后,试试下面的代码: 
using System; 
using System.Management;

class CreateShare 

 public static void Main(string[] args) 
 { 
  ManagementClass _class = new ManagementClass(new ManagementPath("Win32_Share"));

object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""};

_class.InvokeMethod("create",obj); 
 } 

将 
object[] obj = {"C:\\Temp","我的共享",0,10,"Dot Net 实现的共享",""}; 
改为 
object[] obj = {"C:\\Temp","我的共享",0,null,"Dot Net 实现的共享",""}; 
就可以实现授权给最多用户了。

6、 如何获得系统服务的运行状态? 
private void getServices() 

 ManagementObjectCollection queryCollection; 
 string[] lvData =  new string[4];

try 
 { 
  queryCollection = getServiceCollection("SELECT * FROM Win32_Service"); 
  foreach ( ManagementObject mo in queryCollection) 
  { 
   //create child node for operating system 
   lvData[0] = mo["Name"].ToString(); 
   lvData[1] = mo["StartMode"].ToString(); 
   if (mo["Started"].Equals(true)) 
    lvData[2] = "Started"; 
   else 
    lvData[2] = "Stop"; 
    lvData[3] = mo["StartName"].ToString();

//create list item 
    ListViewItem lvItem = new ListViewItem(lvData,0); 
    listViewServices.Items.Add(lvItem); 
  } 
 } 
 catch (Exception e) 
 { 
  MessageBox.Show("Error: " + e); 
 } 
}

7、 通过WMI修改IP,而实现不用重新启动? 
using System; 
using System.Management; 
using System.Threading;

namespace WmiIpChanger 

 class IpChanger 
 { 
  [MTAThread] 
  static void Main(string[] args) 
  { 
   ReportIP(); 
   // SwitchToDHCP(); 
   SwitchToStatic(); 
   Thread.Sleep( 5000 ); 
   ReportIP(); 
   Console.WriteLine( "end." ); 
  }

static void SwitchToDHCP() 
  { 
   ManagementBaseObject inPar = null; 
   ManagementBaseObject outPar = null; 
   ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
   ManagementObjectCollection moc = mc.GetInstances(); 
   foreach( ManagementObject mo in moc ) 
   { 
    if( ! (bool) mo["IPEnabled"] ) 
     continue;

inPar = mo.GetMethodParameters("EnableDHCP"); 
    outPar = mo.InvokeMethod( "EnableDHCP", inPar, null ); 
    break; 
   } 
  }

static void SwitchToStatic() 
  { 
   ManagementBaseObject inPar = null; 
   ManagementBaseObject outPar = null; 
   ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
   ManagementObjectCollection moc = mc.GetInstances(); 
   foreach( ManagementObject mo in moc ) 
   { 
    if( ! (bool) mo[ "IPEnabled" ] ) 
     continue;

inPar = mo.GetMethodParameters( "EnableStatic" ); 
    inPar["IPAddress"] = new string[] { "192.168.1.1" }; 
    inPar["SubnetMask"] = new string[] { "255.255.255.0" }; 
    outPar = mo.InvokeMethod( "EnableStatic", inPar, null ); 
    break; 
   } 
  }

static void ReportIP() 
  { 
   Console.WriteLine( "****** Current IP addresses:" ); 
   ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
   ManagementObjectCollection moc = mc.GetInstances(); 
   foreach( ManagementObject mo in moc ) 
   { 
    if( ! (bool) mo[ "IPEnabled" ] ) 
     continue;

Console.WriteLine( "{0}\n SVC: '{1}' MAC: [{2}]", (string) mo["Caption"], 
     (string) mo["ServiceName"], (string) mo["MACAddress"] );

string[] addresses = (string[]) mo[ "IPAddress" ]; 
    string[] subnets = (string[]) mo[ "IPSubnet" ];

Console.WriteLine( " Addresses :" ); 
    foreach(string sad in addresses) 
     Console.WriteLine( "\t'{0}'", sad );

Console.WriteLine( " Subnets :" ); 
    foreach(string sub in subnets ) 
     Console.WriteLine( "\t'{0}'", sub ); 
   } 
  } 
 } 
}

8、 如何利用WMI远程重启远程计算机? 
using System; 
using System.Management;   
namespace WMI3 

      /// <summary> 
      /// Summary description for Class1. 
      /// </summary>  
      class Class1 
      { 
            static void Main(string[] args) 
            { 
                  Console.WriteLine("Computer details retrieved using Windows Management Instrumentation (WMI)"); 
                  Console.WriteLine("mailto:Written%2002/01/02%20By%20John%20O'Donnell%20-%20csharpconsulting@hotmail.com"); 
                  Console.WriteLine("======================================== 
=================================");  
                   //连接远程计算机 
            ConnectionOptions co = new ConnectionOptions(); 
            co.Username = "john"; 
            co.Password = "john"; 
            System.Management.ManagementScope ms = new System.Management.ManagementScope("\\\\192.168.1.2\\root\\cimv2", co);       
                  //查询远程计算机 
           System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem");

ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms,oq); 
           ManagementObjectCollection queryCollection1 = query1.Get();             
                  foreach( ManagementObject mo in queryCollection1 )  
                  { 
                        string[] ss={""}; 
                        mo.InvokeMethod("Reboot",ss); 
                        Console.WriteLine(mo.ToString()); 
                  } 
            } 
      } 
}

9、 利用WMI创建一个新的进程? 
using System; 
using System.Management;

// This sample demonstrates invoking a WMI method using parameter objects 
public class InvokeMethod  
{     
 public static void Main()  
 {

//Get the object on which the method will be invoked 
  ManagementClass processClass = new ManagementClass("Win32_Process");

//Get an input parameters object for this method 
  ManagementBaseObject inParams = processClass.GetMethodParameters("Create");

//Fill in input parameter values 
  inParams["CommandLine"] = "calc.exe";

//Execute the method 
  ManagementBaseObject outParams = processClass.InvokeMethod ("Create", inParams, null);

//Display results 
  //Note: The return code of the method is provided in the "returnvalue" property of the outParams object 
  Console.WriteLine("Creation of calculator process returned: " + outParams["returnvalue"]); 
  Console.WriteLine("Process ID: " + outParams["processId"]); 
 } 
}

10、 如何通过WMI终止一个进程? 
using System;  
using System.Management;

// This example demonstrates how to stop a system service.  
class Sample_InvokeMethodOptions  
{  
    public static int Main(string[] args) { 
        ManagementObject service =  
            new ManagementObject("win32_service=\"winmgmt\""); 
        InvokeMethodOptions options = new InvokeMethodOptions(); 
        options.Timeout = new TimeSpan(0,0,0,5);

ManagementBaseObject outParams = service.InvokeMethod("StopService", null, options);

Console.WriteLine("Return Status = " + outParams["Returnvalue"]);

return 0; 
    } 
}

11、 如何用WMI 来获取远程机器的目录以及文件.比如如何列出一个目录下的所有文件,或者所有子目录;如何删除,舔加,更改文件? 
using System;

using System.Management;

// This example demonstrates reading a property of a ManagementObject.

class Sample_ManagementObject

{

public static int Main(string[] args) {

ManagementObject disk = new ManagementObject(

"win32_logicaldisk.deviceid=\"c:\"");

disk.Get();

Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes");

return 0;

}

}

13、 一些技巧 
我使用WMI可以取出网卡的MAC地址,CPU的系列号,主板的系列号,其中主板的系列号已经核对过没有错的,其余的有待于验证,因为我使用的是笔记本,笔记本背面有一个主板的系列号,所以可以肯定主板系列号没有问题

网卡的MAC地址

SELECT MACAddress FROM Win32_NetworkAdapter WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> 'Microsoft'))

结果:08:00:46:63:FF:8C

CPU的系列号

Select ProcessorId From Win32_Processor

结果:3FEBF9FF00000F24

主板的系列号

Select SerialNumber From Win32_BIOS

结果:28362630-3700521 
获取硬盘ID 
String HDid; 
ManagementClass cimobject = new ManagementClass("Win32_DiskDrive"); 
ManagementObjectCollection moc = cimobject.GetInstances(); 
foreach(ManagementObject mo in moc) 

 HDid = (string)mo.Properties["Model"].value;

MessageBox.Show(HDid  );  
}

14、 一个使用WMI后的异常处理的问题 
下面是我整理的一段代码.

ManagementObjectCollection queryCollection1; 
  ConnectionOptions co = new ConnectionOptions(); 
  co.Username = "administrator"; 
  co.Password = "111"; 
  try 
  { 
   System.Management.ManagementScope ms = new System.Management.ManagementScope(@"\\csnt3\root\cimv2", co); 
   System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem"); 
   ManagementObjectSearcher query1 = new ManagementObjectSearcher(ms,oq);

queryCollection1 = query1.Get(); 
   foreach( ManagementObject mo in queryCollection1 ) 
   { 
    string[] ss={""}; 
    mo.InvokeMethod("Reboot",ss); 
    Console.WriteLine(mo.ToString()); 
   } 
  } 
  catch(Exception ee) 
  {

Console.WriteLine("error");

}

15、Windows 管理规范 (WMI) 是可伸缩的系统管理结构,它采用一个统一的、基于标准的、可扩展的面向对象接口。WMI 为您提供与系统管理信息和基础 WMI API 交互的标准方法。WMI 主要由系统管理应用程序开发人员和管理员用来访问和操作系统管理信息。 
WMI 可用于生成组织和管理系统信息的工具,使管理员或系统管理人员能够更密切地监视系统活动。例如,可以使用 WMI 开发一个应用程序,用于在 Web 服务器崩溃时呼叫管理员。 
将 WMI 与 .NET 框架一起使用 
WMI 提供了大量的规范以便为许多高端应用程序(例如,Microsoft Exchange、Microsoft SQL Server 和 Microsoft Internet 信息服务 (IIS))实现几乎任何管理任务。管理员可以执行下列任务:  
? 监视应用程序的运行状况。  
? 检测瓶颈或故障。  
? 管理和配置应用程序。  
? 查询应用程序数据(使用对象关系的遍历和查询)。  
? 执行无缝的本地或远程管理操作。  
WMI 结构由以下三层组成:  
? 客户端  
使用 WMI 执行操作(例如,读取管理详细信息、配置系统和预订事件)的软件组件。  
? 对象管理器  
提供程序与客户端之间的中间装置,它提供一些关键服务,如标准事件发布和预订、事件筛选、查询引擎等。  
? 提供程序  
软件组件,它们捕获实时数据并将其返回到客户端应用程序,处理来自客户端的方法调用并将客户端链接到所管理的基础结构。  
通过定义完善的架构向客户端和应用程序无缝地提供了数据和事件以及配置系统的能力。在 .NET 框架中,System.Management 命名空间提供了用于遍历 WMI 架构的公共类。 
除了 .NET 框架,还需要在计算机上安装 WMI 才能使用该命名空间中的管理功能。如果使用的是 Windows Millennium Edition、Windows 2000 或 Windows XP,那么已经安装了 WMI。否则,将需要从 MSDN 下载 WMI。 
用 System.Management 访问管理信息 
System.Management 命名空间是 .NET 框架中的 WMI 命名空间。此命名空间包括下列支持 WMI 操作的第一级类对象:  
? ManagementObject 或 ManagementClass:分别为单个管理对象或类。  
? ManagementObjectSearcher:用于根据指定的查询或枚举检索 ManagementObject 或 ManagementClass 对象的集合。  
? ManagementEventWatcher:用于预订来自 WMI 的事件通知。  
? ManagementQuery:用作所有查询类的基础。  
System.Management 类的使用编码范例对 .NET 框架环境很适合,并且 WMI 在任何适当的时候均使用标准基框架。例如,WMI 广泛利用 .NET 集合类并使用推荐的编码模式,如 .NET 异步操作的“委托”模式。因此,使用 .NET 框架的开发人员可以使用他们的当前技能访问有关计算机或应用程序的管理信息。 
请参见 
使用 WMI 管理应用程序 | 检索管理对象的集合 | 查询管理信息 | 预订和使用管理事件 | 执行管理对象的方法 | 远程处理和连接选项 | 使用强类型对象

当前1/2页 12下一页阅读全文

(0)

相关推荐

  • C#新手常犯的错误汇总

    本文所述为C#新手常犯的错误,但是实际上很多有经验的程序员也经常犯这些错误,对此特别整理了一下,供大家参考.具体如下: 1.遍历List的错误,比如如下代码: List<String> strList =newList<String> for(int i =0; i<strList.Count; i++) { strList.RemoveAt(i); } 这段代码看上去是删除了所有元素,实际上每次调用RemoveAt方法会导致List元素索引重排,最后导致元素没有完全删除.

  • C#匿名方法与Delegate类型转换错误分析

    本文实例分析了C#匿名方法与Delegate类型转换错误.分享给大家供大家参考.具体分析如下: 问题描述 C#2.0出现了匿名方法, 这在一定程度上节省了我们维护代码上下文的精力, 也不需要思考为某个方法取什么名字比较合适. 在FCL的一些方法中要求传入一个Delegate类型的参数, 比如Control.Invoke或者Control.BeginInvoke方法: 复制代码 代码如下: public object Invoke(Delegate method); public IAsyncRe

  • C# FTP,GetResponse(),远程服务器返回错误

    FtpWebRequest类实现ftp功能的一般过程 1.创建一个FtpWebRequest对象,指向ftp服务器的uri 2.设置ftp的执行方法(上传,下载等) 3.给FtpWebRequest对象设置属性(是否支持ssl,是否使用二进制传输等) 4.设置登录验证(用户名,密码) 5.执行请求 6.接收相应流(如果需要的话) 7.如果没有打开的流,则关闭ftp请求 其中一些重要的属性如下: ·Credentials - 指定登录ftp服务器的用户名和密码. ·KeepAlive - 指定连接

  • C#中WinForm程序退出方法技巧总结

    本文实例总结了C#中WinForm程序退出方法技巧.分享给大家供大家参考.具体分析如下: 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0); 等他们各自的方法不一样,下面我们就来详细介绍一下. 1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退

  • C# yield在WCF中的错误使用(二)

    昨天写了<yield在WCF中的错误使用--99%的开发人员都有可能犯的错误[上篇]>,引起了一些讨论.关于yield关键字这个语法糖背后的原理(C#编译器将它翻译成什么)其实挺简单,虽然有时候因为误用它会导致一些问题,但是它本无过错.接下来,我们通过这篇短文简单地谈谈我所理解的yield. 目录 一.先看一个简单的例子 二.了解本质,只需要看看yield最终编译成什么 三.回到WCF的例子 一.先看一个简单的例子 我们现在看一个简单的例子.我们在一个Console应用中编写了如下一段简单的程

  • C#操作FTP出现500错误解决办法

    在网上也没有找到好的解决方案,于是自己研究了下给解决了,分享给大家,希望对大家能有所帮助. 一.异常信息 这种情况是因为FTP设置的默认目录引发的,以我现在的项目为例,在程序中我要访问的路径为 ftp://192.168.0.225/2007/35/0037/00001/1.jpg 这个路径,但服务器上设置的默认路径为 E:\pmserver\FTPServer\FTPSERVER , 我们打开相应的ftp目录看下,这个目录下面并没有我要访问的2007这个文件夹 那2007这个文件夹在什么位置呢

  • C#遍历文件夹后上传文件夹中所有文件错误案例分析

    asp.net是没有直接选取文件夹的控件的,我也不知道,如果大家有的话可以一起交流下.后来我想着应该有三种方法: ①先将文件夹压缩后上传服务器,然后再服务器上解压: ②获得文件夹名及目录,然后遍历文件夹下面的文件以及子文件夹,循环上传: ③是使用AcitiveX控件. 那我果断就先通过上传对话框获得文件夹名和文件夹所在的系统文件路径,可是接下来就错愕了,一开始是想使用javascript遍历文件夹的 1  var fso = new ActiveXObject("Scripting.FileSy

  • C#程序员最易犯的编程错误

    本文介绍了10种最常见的编程错误,或是C#程序员要避免的陷阱. 常见错误1: 像使用值一样使用参考或过来用 C++以及许多其他语言的程序员习惯于控制他们分配给变量的值是否为简易的值或现有对象的引用.在C#中呢,这将由写该对象的程序员决定,而不是由实例化该对象并对它进行变量赋值的程序员决定.这是新手C#程序员们的共同"问题". 如果你不知道你正在使用的对象是否是值类型或引用类型,你可能会遇到一些惊喜.例如: Point point1 = new Point(20, 30); Point

  • C# yield在WCF中的错误用法(一)

    在定义API的时候,对于一些返回集合对象的方法,很多人喜欢将返回类型定义成IEnumerable<T>,这本没有什么问题.这里要说的是另一个问题:对于返回类型为IEnumerable<T>的方法来说,我们可以使用yield return的方式来输出返回集合的元素.但是如果我们不了解yield 关键字背后的实现机制,很有可能造成很大的问题. 这是一个WCF相关的问题,我想99%的人都有可能会犯这样的错误--即使你对yield了解得非常透彻.闲话少说,我们通过一个简单的实例来说明这个问

  • c#与WMI使用技巧集第1/2页

    1. 什么是WMI  WMI是英文Windows Management Instrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然你必须要拥有足够的权限),比如:重启,关机,关闭进程,创建进程等.  2. 如何用WMI获得本地磁盘的信息?  首先要在VS.NET中创建一个项目,然后在添加引用中引用一个.net的装配件:System.Management.dll,这样你的项目才能使用WMI.代码如下:  using System;  using S

  • 收藏的SQLServer技巧集

    上次写了个ACCESS技巧集,反映良好,这次来个SQL语句特殊技巧吧 1.把某个字段重新生气序列(从1到n): DECLARE @i int Set @i = 0 Update Table1 Set @i = @i + 1,Field1 = @i 2.按成绩排名次 Update 成绩表 Set a.名次 = ( Select Count(*) + 1 From 成绩表 b Where a.总成绩 < b.总成绩 ) From 成绩表 a 3.查询外部数据库 Select a.* From Ope

  • Oracle 数据库操作技巧集

    正在看的ORACLE教程是:Oracle 数据库操作技巧集.[编者注:]提起数据库,第一个想到的公司,一般都会是Oracle(即甲骨文公司).Oracle在数据库领域一直处于领先地位.Oracle关系数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好.使用方便.功能强,适用于各类大.中.小.微机环境.Oracle9i是Oracle于今年6月份正式推出的数据库最新产品.Oracle9i在可伸缩性.可靠性和完整性方面有着上佳的表现,一推出就获得了开发者的认同.它是一种高效率.可靠性好的适

  • ASP 游标参数详解(ASP记录集)第1/2页

    rs.open sql,conn,A,B A: ADOPenforwardonly (=0) 只读,且当前数据记录只能向下移动. ADOPenkeyset (=1) 只读,当前数据记录可自由移动. ADOpendynamic (=2) 可读写,当前数据记录可自由移动. ADOpenstatic (=3) 可读写,当前数据记录可自由移动,可看到新增记录. B: ADLockreadonly (=1) 缺省锁定类型,记录集是只读的,不能修改记录. ADLockpessimistic (=2) 悲观锁

  • SqlServer 实用操作小技巧集合第1/2页

    包括安装时提示有挂起的操作.收缩数据库.压缩数据库.转移数据库给新用户以已存在用户权限.检查备份集.修复数据库等 (一)挂起操作 在安装Sql或sp补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法: 到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 删除PendingFileRenameOperations (二)收缩数据库 --重建索引 DBCC REINDEX DBCC IND

  • jQuery基础学习技巧总结第1/4页

    一.简介 1.1.概述          随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名的有Prototype.YUI.jQuery.mootools.Bindows以及国内的JSVM框架等,通过将这些JS框架应用到我们的项目中能够使程序员从设计和书写繁杂的JS应用中解脱出来,将关注点转向功能需求而非实现细节上,从而提高项目的开发速度. jQuery是继prototype之后的又一个优秀的Javascript框架.它是由 John Resig 

  • javascript创建页面蒙板的一些知识技巧总结第1/3页

    在ajax大行其道的今天,模拟弹出窗口,或者thinkbox,greybox等很多特效都用了蒙板的功能,其应用原来对于我们来说也很简单:创建一个绝对定位,top/left都为0,宽度和高度等于浏览器内容的高宽,然后索引设置的大点即可.可是这里有一些问题和技巧可能是您一直都不知道或者不清楚的,这里总结几点,这些都是个人学习的过程中发现的. 1.创建的蒙板如果要禁止对蒙板下部内容的操作必须设置background属性且必须设置一个有效的值,否则虽然遮罩层创建成功,但仍然可以对页面下部的元素进行操作.

  • 网页代码常用小技巧总结第1/3页

    1.让浏览器窗口永远都不出现滚动条. <body style="overflow-x:hidden;overflow-y:hidden">或<body style="overflow:hidden"> 或<body scroll=no> 2,没有水平滚动条 <body style="overflow-x:hidden"> 3,没有垂直滚动条 <body style="overflow

  • Office 2007 System 常见问题集第1/3页

    第1页:概述  第2页:功能  第3页:开放且不受版权限制的规范:Office XML 实现核心的桌面生产力的Microsoft Office组件是Microsoft Office system的核心.这些程序中的新功能提升了员工.合作伙伴以及客户如何更好地一起工作,以及帮助企业如何地更好使用信息.除了核心的桌面版本之外,2007 Office 提供了新的程序.服务器以及服务,它们基于您的员工业已拥有的生产力软件技巧.整个Microsoft Office system 能帮助您解决目前的商业需求

  • Javascript 小技巧全集第1/4页

    事件源对象  event.srcElement.tagName  event.srcElement.type  捕获释放  event.srcElement.setCapture();   event.srcElement.releaseCapture();   事件按键  event.keyCode  event.shiftKey  event.altKey  event.ctrlKey  事件返回值  event.returnValue  鼠标位置  event.x  event.y  窗体

随机推荐