mikebai.com

  • Home
  • dev
  • DotNET
  • M365
  • 搞笑
  • 杂七杂八
  • FocusDict
DotNET
DotNET

IIS7.5配置

第一步,进入控制面板,点击程序图标 第二步,点击打开或关闭Windows功能 第三步,勾选Internet信息服务全部功能,或根据需要,点击确定,安装 第四步,进入控制面板,点击管理工具 第五步,点击Internet 信息服务(IIS)管理器 第六步,点击ASP,将启用父路径设为True 第七步,点击默认文档,根据需要添加   第八步,失效,不需要设置 第九步,点击默认网站,然后点击右边的基本设置,选择自己网站所在目录 第十步,进入C:\Windows\ServiceProfiles\NetworkService\AppData\Local\,设置Temp文件夹的安全属性。右键点击属性—安全—编辑—添加 第十一步,点击立刻查找,然后点击Authenticated Users—确定—添加—确定   其他问题 IIS7错误:服务器配置为将传递身份验证和内置帐户一起使用,以访问指定的物理路径... IIS7配置完后,总是提示HTTP500内部服务器错误,启用调试属性显示详细错误信息后,发现错误提示如下:错误摘要HTTP 错误 500.19 - Internal Server Errorweb.config 文件的 system.webServer/httpErrors 节中不允许绝对物理路径“C:\inetpub\custerr”。请改用相对路径。点击IIS管理器右边的“基本设置”,然后单击“测试连接”,发现有“授权”错误提示,详细信息提示为:服务器配置为将传递身份验证和内置帐户一起使用,以访问指定的物理路径。但是,IIS 管理器无法验证此内置帐户是否有访问权。请确保应用程序池标识具有该物理路径的读取访问权。如果此服务器加入到域中,并且应用程序池标识是 NetworkService 或 LocalSystem,则验证<domain>\<computer_name>$ 具有该物理路径的读取访问权,然后重新测试这些设置。 图1 IIS7授权错误提示 原因与解决方法:通过反复测试后发现,这里是物理路径读取访问权限的问题,我们只需要修改“路径凭据”的验证方式,改为“特定用户”并将特定用户设为管理员的账号即可。比如输入账号为:administrator,密码为该账号的登录密码。如果该账号没有设置密码,这里是确定不了的,所以你可以去控制面板给该账号设置一个密码。具体操作如图2所示。 图2 更改IIS7“连接凭据”为特定管理员账号 (提示:系统有密码时,有的人不喜欢每次打开电脑都需要登录,这个问题你只需要使用一个微软提供的自动登录小工具即可轻松解决。该小工具为Autologon.exe,具体介绍及下载可参考这里:windows系统自动登录小工具Autologon: http://www.zhiwenweb.cn/article.asp?id=1242)如此简单的设置完后,你就发现问题得到解决了。如图3所示。 图3 iis7授权错误得到解决 设置应用池 打开当前网站所指定的应用池,将"托管管道模式"设置为"经典" 2012年02月14日追记 1)使用4.0框架开发的网站,在执行完上述操作后,可能会出现以下错误 Description of HRESULT: The page you are requesting cannot be served because of the ISAPI and CGI Restriction list settings on the Web server. 解决方法,进入iis 点击根目录(最最上面的server节点,不是某个网站的根节点),双击打开ISAPI and CGI Restrictions.将被禁止的4.0选项打开即可2)远程连接无效的问题防火墙端口没有开放导致无法远程访问在控制面板中,打开防火墙,高级,受信规则 ,添加规则,增加你网站的端口号即可。具体详细的规则设置等,就看需求了,这里就不多说了。  

2011-12-10 0comments 94hotness 0likes mikebai Read all
DotNET

SQL SERVER数据类型与C#数据类型对照表

SQL SERVER类型 C#类型 精确数字 bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。 Int64 int 从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。 Int32 smallint 从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。 Int16 tinyint 从 0 到 255 的整型数据。存储大小为 1 字节。 System.Byte bit 1 或 0 的整数数据。 Boolean decimal 从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。 System.Decimal numeric 功能上等同于 decimal。 System.Decimal money 货币数据值介于 -2^63 (-922,337,203,685,477.5808) 与 2^63 - 1 (+922,337,203,685,477.5807) 之间,精确到货币单位的千分之十。 System.Decimal smallmoney 货币数据值介于 -214,748.3648 与 +214,748.3647 之间,精确到货币单位的千分之十。 System.Decimal 近似数字 float 从 -1.79E + 308 到 1.79E + 308 的浮点精度数字。 System.Double real 从 -3.40E + 38 到 3.40E + 38 的浮点精度数字。 System.Single datetime 从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到百分之三秒(或 3.33 毫秒)。 System.DateTime smalldatetime 从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,精确到分钟。 System.DateTime 字符串 char 固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。 String varchar 可变长度的非 Unicode 数据,最长为 8,000 个字符。 String text 可变长度的非 Unicode 数据,最大长度为 2^31 - 1 (2,147,483,647) 个字符。 String Unicode 字符串 nchar 固定长度的 Unicode 数据,最大长度为 4,000 个字符。 String nvarchar 可变长度 Unicode 数据,其最大长度为 4,000 字符。sysname 是系统提供用户定义的数据类型,在功能上等同于 nvarchar(128),用于引用数据库对象名。 String ntext 可变长度 Unicode 数据,其最大长度为 2^30 - 1 (1,073,741,823) 个字符。 String 二进制字符串 binary 固定长度的二进制数据,其最大长度为 8,000 个字节。 System.Byte[] varbinary 可变长度的二进制数据,其最大长度为 8,000 个字节。 System.Byte[] image 可变长度的二进制数据,其最大长度为 2^31 - 1 (2,147,483,647) 个字节。 System.Byte[] 其它数据类型 timestamp 数据库范围的唯一数字,每次更新行时也进行更新。 System.DateTime uniqueidentifier 全局唯一标识符 (GUID)。 System.Guid Variant Object

2010-10-02 0comments 94hotness 0likes mikebai Read all
DotNET

ConnectionString连接字符串分割

这2天写个小程序,需要分割app.config里面的连接字符串 发现如果密码里面有双引号或者分号的时候,用string.split就不好用了 头疼了好一会.一google.发现ms已经帮你做好了.........         System.Data.Common.DbConnectionStringBuilder builder = new System.Data.Common.DbConnectionStringBuilder();         builder.ConnectionString = "Provider=\"Some;Provider\";Initial Catalog='Some;Catalog';";         foreach (string key in builder.Keys)         {             Response.Write(String.Format("{0}: {1}<br>", key , builder[key]));         } 

2010-09-28 0comments 91hotness 0likes mikebai Read all
DotNET

IIS7.5上使用asp

控制面板中“程序”的位置   “程序”中“打开或关闭Windows功能”的位置   如图,安装IIS7时需要选择要使用的功能模块   IIS7安装完成之后可以在开始菜单的所有程序中看到“管理工具”,其中有一个“Internet信息服务管理器”,如果没有可以按以下步骤添加:开始》右击属性》“开始”菜单选项卡》自定义》把“系统管理工具”设置为“在所有程序菜单显示”或者“在所有程序菜单和开始菜单上显示”。   打开Internet信息服务管理器就可以看到IIS7的主页了   IIS7配置ASP+Access使用环境 默认装完IIS7之后,使用ASP程序会发现提示数据库连接失败,在网上找了找,说是因为MSJet引擎改变了临时目录的位置,但是又没有对临时的存取权限,导致数据库使用失败。 先要设置应用程序池(ApplicationPool)为Classic.NETAppPool,而不是默认的DefaultAppPool,可以在网站目录里对每个站点设置,也可以在站点进行单独设置。选择好要设置的站点之后,点右边的“基本设置”即可调出应用程序池设置对话框。     然后再给“C:\Windows\ServiceProfiles\NetworkService\AppData\Local”目录添加一个“Authenticated Users”的用户,其中AppData目录是隐藏的,在进入的时候可以直接在地址栏输入路径,或者在文件夹选项里显示隐藏文件。 设置权限步骤:右击Temp文件夹,选择“属性”》选择“安全”选项卡》单击“编辑”》出来“Temp的权限”对话框,单击“添加”,在下面的“输入对象名称来选择”中输入AuthenticatedUsers,确定》返回到“Temp的权限”,将AuthenticatedUsers的权限中的完全控制给勾上,确定》确定。   启用父路径支持 在站点主页上选择“ASP”,然后在“行为”组中将“启用父路径”设置为True即可。   至此,完成了WindowsVista中IIS7的安装及使用ASP+Access的配置。

2010-08-27 0comments 93hotness 0likes mikebai Read all
DotNET

同步调用和异步调用

      操作系统发展到今天已经十分精巧,线程就是其中一个杰作。操作系统把 CPU 处理时间划分成许多短暂时间片,在时间 T1 执行一个线程的指令,到时间 T2 又执行下一线程的指令,各线程轮流执行,结果好象是所有线程在并肩前进。这样,编程时可以创建多个线程,在同一期间执行,各线程可以“并行”完成不同的任务。       在单线程方式下,计算机是一台严格意义上的冯·诺依曼式机器,一段代码调用另一段代码时,只能采用同步调用,必须等待这段代码执行完返回结果后,调用方才能继续往下执行。有了多线程的支持,可以采用异步调用,调用方和被调方可以属于两个不同的线程,调用方启动被调方线程后,不等对方返回结果就继续执行后续代码。被调方执行完毕后,通过某种手段通知调用方:结果已经出来,请酌情处理。       计算机中有些处理比较耗时。调用这种处理代码时,调用方如果站在那里苦苦等待,会严重影响程序性能。例如,某个程序启动后如果需要打开文件读出其中的数据,再根据这些数据进行一系列初始化处理,程序主窗口将迟迟不能显示,让用户感到这个程序怎么等半天也不出来,太差劲了。借助异步调用可以把问题轻松化解:把整个初始化处理放进一个单独线程,主线程启动此线程后接着往下走,让主窗口瞬间显示出来。等用户盯着窗口犯呆时,初始化处理就在背后悄悄完成了。程序开始稳定运行以后,还可以继续使用这种技巧改善人机交互的瞬时反应。用户点击鼠标时,所激发的操作如果较费时,再点击鼠标将不会立即反应,整个程序显得很沉重。借助异步调用处理费时的操作,让主线程随时恭候下一条消息,用户点击鼠标时感到轻松快捷,肯定会对软件产生好感。       异步调用用来处理从外部输入的数据特别有效。假如计算机需要从一台低速设备索取数据,然后是一段冗长的数据处理过程,采用同步调用显然很不合算:计算机先向外部设备发出请求,然后等待数据输入;而外部设备向计算机发送数据后,也要等待计算机完成数据处理后再发出下一条数据请求。双方都有一段等待期,拉长了整个处理过程。其实,计算机可以在处理数据之前先发出下一条数据请求,然后立即去处理数据。如果数据处理比数据采集快,要等待的只有计算机,外部设备可以连续不停地采集数据。如果计算机同时连接多台输入设备,可以轮流向各台设备发出数据请求,并随时处理每台设备发来的数据,整个系统可以保持连续高速运转。编程的关键是把数据索取代码和数据处理代码分别归属两个不同的线程。数据处理代码调用一个数据请求异步函数,然后径自处理手头的数据。待下一组数据到来后,数据处理线程将收到通知,结束 wait 状态,发出下一条数据请求,然后继续处理数据。       异步调用时,调用方不等被调方返回结果就转身离去,因此必须有一种机制让被调方有了结果时能通知调用方。在同一进程中有很多手段可以利用,笔者常用的手段是回调、event 对象和消息。       回调方式很简单:调用异步函数时在参数中放入一个函数地址,异步函数保存此地址,待有了结果后回调此函数便可以向调用方发出通知。如果把异步函数包装进一个对象中,可以用事件取代回调函数地址,通过事件处理例程向调用方发通知。       event 是 Windows 系统提供的一个常用同步对象,以在异步处理中对齐不同线程之间的步点。如果调用方暂时无事可做,可以调用 wait 函数等在那里,此时 event 处于 nonsignaled 状态。当被调方出来结果之后,把 event 对象置于 signaled 状态,wait 函数便自动结束等待,使调用方重新动作起来,从被调方取出处理结果。这种方式比回调方式要复杂一些,速度也相对较慢,但有很大的灵活性,可以搞出很多花样以适应比较复杂的处理系统。       借助 Windows 消息发通知是个不错的选择,既简单又安全。程序中定义一个用户消息,并由调用方准备好消息处理例程。被调方出来结果之后立即向调用方发送此消息,并通过 WParam 和 LParam 这两个参数传送结果。消息总是与窗口 handle 关联,因此调用方必须借助一个窗口才能接收消息,这是其不方便之处。另外,通过消息联络会影响速度,需要高速处理时回调方式更有优势。       如果调用方和被调方分属两个不同的进程,由于内存空间的隔阂,一般是采用 Windows 消息发通知比较简单可靠,被调方可以借助消息本身向调用方传送数据。event 对象也可以通过名称在不同进程间共享,但只能发通知,本身无法传送数据,需要借助 Windows 消息和 FileMapping 等内存共享手段或借助  MailSlot 和 Pipe 等通信手段。       异步调用原理并不复杂,但实际使用时容易出莫名其妙的问题,特别是不同线程共享代码或共享数据时容易出问题,编程时需要时时注意是否存在这样的共享,并通过各种状态标志避免冲突。Windows 系统提供的 mutex 对象用在这里特别方便。mutex 同一时刻只能有一个管辖者。一个线程放弃管辖权后,另一线程才能接管。当某线程执行到敏感区之前先接管 mutex,使其他线程被 wait 函数堵在身后;脱离敏感区之后立即放弃管辖权,使 wait 函数结束等待,另一个线程便有机会光临此敏感区。这样就可以有效避免多个线程进入同一敏感区。       由于异步调用容易出问题,要设计一个安全高效的编程方案需要比较多的设计经验,所以最好不要滥用异步调用。同步调用毕竟让人更舒服些:不管程序走到哪里,只要死盯着移动点就能心中有数,不至于象异步调用那样,总有一种四面受敌、惶惶不安的感觉。必要时甚至可以把异步函数转换为同步函数。方法很简单:调用异步函数后马上调用 wait 函数等在那里,待异步函数返回结果后再继续往下走。

2010-08-11 0comments 106hotness 0likes mikebai Read all
DotNET

同步方法和异步方法的区别

    同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果;  异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作   异步编程概览  .NET Framework 允许您异步调用任何方法。定义与您需要调用的方法具有相同签名的委托;公共语言运行库将自动为该委托定义具有适当 签名的 BeginInvoke 和 EndInvoke 方法。   BeginInvoke 方法用于启动异步调用。它与您需要异步执行的方法具有相同的参数,只不过还有两个额外的参数(将在稍后描述)。 BeginInvoke 立即返回,不等待异步调用完成。BeginInvoke 返回 IasyncResult,可用于监视调用进度。   EndInvoke 方法用于检索异步调用结果。调用 BeginInvoke 后可随时调用 EndInvoke 方法;如果异步调用未完成,EndInvoke 将一直阻 塞到异步调用完成。EndInvoke 的参数包括您需要异步执行的方法的 out 和 ref 参数(在 Visual Basic 中为 <Out> ByRef 和 ByRef)以及 由BeginInvoke 返回的 IAsyncResult。   四种使用 BeginInvoke 和 EndInvoke 进行异步调用的常用方法。调用了 BeginInvoke 后,可以:   1.进行某些操作,然后调用 EndInvoke 一直阻塞到调用完成。   2.使用 IAsyncResult.AsyncWaitHandle 获取 WaitHandle,使用它的 WaitOne 方法将执行一直阻塞到发出WaitHandle 信号,然后调用 EndInvoke。这里主要是主程序等待异步方法,等待异步方法的结果。   3.轮询由 BeginInvoke 返回的 IAsyncResult,IAsyncResult.IsCompeted确定异步调用何时完成,然后调用EndInvoke。此处理个人认为 与相同。   4.将用于回调方法的委托传递给 BeginInvoke。该方法在异步调用完成后在 ThreadPool 线程上执行,它可以调用EndInvoke。这是在强制 装换回调函数里面IAsyncResult.AsyncState(BeginInvoke方法的最后一个参数)成委托,然后用委托执行EndInvoke。警告 始终在异步调用完 成后调用 EndInvoke。   以上有不理解的稍后可以再理解。   例子  1)先来个简单的没有回调函数的异步方法例子   请再运行程序的时候,仔细看注释,对理解很有帮助。还有,若将注释的中的两个方法都同步,你会发现异步运行的速度优越性。 using System; namespace ConsoleApplication1{  class Class1  {    //声明委托    public delegate void AsyncEventHandler();     //异步方法    void Event1()    {      Console.WriteLine("Event1 Start");      System.Threading.Thread.Sleep(4000);      Console.WriteLine("Event1 End");    }     // 同步方法    void Event2()    {      Console.WriteLine("Event2 Start");      int i=1;      while(i<1000)      {        i=i+1;        Console.WriteLine("Event2 "+i.ToString());      }      Console.WriteLine("Event2 End");    }     [STAThread]    static void Main(string[] args)    {      long start=0;      long end=0;      Class1 c = new Class1();      Console.WriteLine("ready");      start=DateTime.Now.Ticks;       //实例委托      AsyncEventHandler asy = new AsyncEventHandler(c.Event1);      //异步调用开始,没有回调函数和AsyncState,都为null      IAsyncResult ia = asy.BeginInvoke(null, null);      //同步开始,      c.Event2();      //异步结束,若没有结束,一直阻塞到调用完成,在此返回该函数的return,若有返回值。       asy.EndInvoke(ia);       //都同步的情况。      //c.Event1();      //c.Event2();       end =DateTime.Now.Ticks;      Console.WriteLine("时间刻度差="+ Convert.ToString(end-start) );      Console.ReadLine();    }  }}   2)下面看有回调函数的WebRequest和WebResponse的异步操作。 using System;using System.Net;using System.Threading;using System.Text;using System.IO; // RequestState 类用于通过// 异步调用传递数据public class RequestState{  const int BUFFER_SIZE = 1024;  public StringBuilder RequestData;  public byte[] BufferRead;  public HttpWebRequest Request;  public Stream ResponseStream;  // 创建适当编码类型的解码器  public Decoder StreamDecode = Encoding.UTF8.GetDecoder();   public RequestState()  {    BufferRead = new byte[BUFFER_SIZE];    RequestData = new StringBuilder("");    Request = null;    ResponseStream = null;  }} // ClientGetAsync 发出异步请求class ClientGetAsync{  public static ManualResetEvent allDone = new ManualResetEvent(false);  const int BUFFER_SIZE = 1024;   public static void Main(string[] args)  {     if (args.Length < 1)    {      showusage();      return;    }     // 从命令行获取 URI    Uri HttpSite = new Uri(args[0]);     // 创建请求对象    HttpWebRequest wreq = (HttpWebRequest)WebRequest.Create(HttpSite);     // 创建状态对象    RequestState rs = new RequestState();     // 将请求添加到状态,以便它

2010-08-11 0comments 107hotness 0likes mikebai Read all
DotNET

小白日语学习词典

2010-07-11 0comments 108hotness 0likes mikebai Read all
DotNET

window.open相关

http://dev.firnow.com/course/1_web/javascript/jsjs/200855/113518.html window.open文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/1_web/javascript/jsjs/200855/113518.html   if   (xxx   &&   xxx.open   &&   !xxx.closed) { //页面已经打开~~~~ } else {         xxx   =   window.open.... }   <script> var   xxx; function   clickHref() { if   (xxx   &&   xxx.open   &&   !xxx.closed) { return; } xxx   =   window.open( "2.htm "); document.all.aaa.style.display   =   "none "; } function   ajax() { //取信息状态 ............. if   (xxx   &&   xxx.open   &&   !xxx.closed) { //隐藏信息 document.all.aaa.style.display   =   "none "; } else { //显示新信息 document.all.aaa.style.display   =   " "; } setInterval( 'ajax() ',1000); } </script> <form   id= "form1 "   onload= "ajax() "> <a   name= "aaa "   href= "# "   onclick= "clickHref() "   target= "_self "> 信息 </a> </form>           <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>打开指定URL的窗口/改变链接时候状态栏的文字</title><script language="javascript">//申明一个代表窗体对象的变量,这是关键,他作为全局变量,后面两个函数都可以访问他var SunWindows;function newWindow(url){//这里申明一个根据传来的地址打开新窗口的函数 if   (SunWindows&&SunWindows.open&&SunWindows.closed)  {   return;  }     SunWindows=window.open(url,"","width=400,height=300,left=200,top=200");//将打开的窗口对象作为值赋给SunWindows对象}function closeWind(){    //关闭打开的新窗口,否则提示    if(SunWindows)//如果SunWindows对象存在    {        SunWindows.close();//调用关闭方法        SunWindows=null//并把值赋成null    }    else    {        //alert("没有打开的窗口");    }}</script></head> <body onunload="closeWind();"><p>  <input type="submit" name="tijiao" value="打开fengyan博客" onclick="newWindow('http://eflylab.cnblogs.com')" />  打开博客后,关闭本窗体。打开的子窗体会自动关闭</p><p>  <input type="submit" name="close" value="直接在本窗体中关闭刚才打开的窗口" onclick="closeWind()" /></p><p><a href="http://eflylab.cnblogs.com" >http://eflylab.cnblogs.com</p></body></html> http://www.cnblogs.com/eflylab/archive/2008/06/06/1215166.html  Definition and Usage定义与用法 The onunload event occurs when a user exits a page.当用户关闭一个页面时触发 onunload 事件。 Syntax语法 onunload="SomeJavaScriptCode"onunload="所要执行的脚本" Parameter参数 Description描述 SomeJavaScriptCodeJavaScript脚本 Required. Specifies a JavaScript to be executed when the event occurs.必选项目。当事件被触发

2010-06-01 0comments 102hotness 0likes mikebai Read all
DotNET

Windows API函数之PlaySound函数以及sndPlaySound函数用法总结

     本人在wince应用程序编程中遇到了播放关机音乐的问题,还有同步播放和异步播放的问题,这些问题主要是PlaySound函数的问题。现将相关内容整理如下。 一、PlaySound函数用法 PlaySound函数的声明为:BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound); 1、参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。 2、参数hmod是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL。参数fdwSound是标志的组合,如下表所示。若成功则函数返回TRUE,否则返回FALSE。 3、播放标志以及含义: SND_APPLICATION用应用程序指定的关联来播放声音。 SND_ALIASpszSound参数指定了注册表或WIN.INI中的系统事件的别名。 SND_ALIAS_IDpszSound参数指定了预定义的声音标识符。 SND_ASYNC用异步方式播放声音,PlaySound函数在开始播放后立即返回。 SND_FILENAMEpszSound参数指定了WAVE文件名。 SND_LOOP重复播放声音,必须与SND_ASYNC标志一块使用。 SND_MEMORY播放载入到内存中的声音,此时pszSound是指向声音数据的指针。 SND_NODEFAULT不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。 SND_NOSTOPPlaySound不打断原来的声音播出并立即返回FALSE。 SND_NOWAIT如果驱动程序正忙则函数就不播放声音并立即返回。 SND_PURGE停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。 SND_RESOURCEpszSound参数是WAVE资源的标识符,这时要用到hmod参数。 SND_SYNC同步播放声音,在播放完后PlaySound函数才返回。 4、举例:     在C:\WINDOWS\MEDIA目录下有一个名为The Microsoft Sound.wav的声音文件,在Windows 95启动时会播放这个声音。下面我们用三种方法来调用PlaySound函数播出Windows 95的启动声音。 第一种方法是直接播出声音文件,相应的代码为: PlaySound("c:\\win95\\media\\The Microsoft Sound.wav", NULL, SND_FILENAME | SND_ASYNC); 注意参数中的路径使用两个连续的反斜杠转义代表一个反斜杠。 第二种方法是把声音文件加入到资源中,然后从资源中播放声音。Visual C++支持WAVE型资源,用户在资源视图中单击鼠标右键并选择Import命令,然后在文件选择对话框中选择The Microsoft Sound.wav文件,则该文件就会被加入到WAVE资源中。假定声音资源的ID为IDR_STARTWIN,则下面的调用同样会输出启动声音: PlaySound((LPCTSTR)IDR_STARTWIN, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC); 第三种方法是用PlaySound播放系统声音,Windows启动的声音是由SystemStart定义的系统声音,因此可以用下面的方法播放启动声音: PlaySound("SystemStart",NULL,SND_ALIAS|SND_ASYNC); 5、MSDN上关于PlaySound这个函数的说明如下: This function plays a sound specified by a file name, resource, or system event. BOOL WINAPI PlaySound(   LPCSTR pszSound,   HMODULE hmod,   DWORD fdwSound ); Parameters   pszSound Pointer to a null-terminated string that specifies the sound to play. If this parameter is NULL, any currently playing waveform sound is stopped. To stop a non-waveform sound, specify SND_PURGE in the fdwSound parameter. Three flags in fdwSound (SND_ALIAS, SND_FILENAME, and SND_RESOURCE) determine whether the name is interpreted as an alias for a system event, a file name, or a resource identifier. If none of these flags are specified, PlaySound searches the registry or the WIN.INI file for an association with the specified sound name. If an association is found, the sound event is played. If no association is found in the registry, the name is interpreted as a file name. hmod Handle to the executable file that contains the resource to be loaded. This parameter must be NULL unless SND_RESOURCE is specified in fdwSound.   fdwSound Flags for playing the sound. The following table shows the possible values. Value Description SND_ALIAS The pszSound parameter is a system-event alias in the registry or the WIN.INI file. Do not use with either SND_FILENAME or SND_RESOURCE. SND_ASYNC The sound…

2010-05-24 0comments 103hotness 0likes mikebai Read all
DotNET

C#正则表达式中的转义字符

字符匹配语法:  \d   匹配数字(0~9) ‘\d’匹配8,不匹配12;  \d   匹配非数字 ‘\d’匹配c,不匹配3; \w   匹配任意单字符 ‘\w\w’ 匹配a3,不匹配@3;  \w   匹配非单字符 ‘\w’匹配@,不匹配c;  \s   匹配空白字符 ‘\d\s\d’匹配3 d,不匹配abc;  \s   匹配非空字符 ‘\s\s\s’匹配a#4,不匹配3 d;  .     匹配任意字符 ‘....’匹配a$ 5,不匹配换行;  […] 匹配括号中任意字符 [b-d]匹配b、c、d, 不匹配e;  [^…] 匹配非括号字符 [^b-z]匹配a,不匹配b-z的字符; 重复匹配语法: {n} 匹配n次字符 \d{3}匹配\d\d\d,不匹配\d\d或\d\d\d\d  {n,} 匹配n次和n次以上 \w{2}匹配\w\w和\w\w\w以上,不匹配\w  {n,m} 匹配n次上m次下 \s{1,3}匹配\s,\s\s,\s\s\s,不匹配\s\s\s\s  ? 匹配0或1次 5?匹配5或0,不匹配非5和0  + 匹配一次或多次 \s+匹配一个以上\s,不匹配非一个以上\s  * 匹配0次以上 \w*匹配0以上\w,不匹配非n*\w 字符定位语法: ^ 定位后面模式开始位置    $ 前面模式位于字符串末端    \a 前面模式开始位置    \z 前面模式结束位置 \z 前面模式结束位置(换行前)    \b 匹配一个单词边界    \b 匹配一个非单词边界    转义匹配语法: “\”+实际字符 \ . * + ? | ( ) { }^ $  例如:\\匹配字符“\”  \n 匹配换行    \r 匹配回车    \t 匹配水平制表符    \v 匹配垂直制表符    \f 匹配换页    \nnn 匹配一个8进制ascii    \xnn 匹配一个16进制ascii    \unnnn 匹配4个16进制的uniode     \c+大写字母 匹配ctrl-大写字母 例如:\cs-匹配ctrl+s

2010-05-13 0comments 91hotness 0likes mikebai Read all
1…56789…16

Recent Posts

  • c# winform适配高dpi
  • com.microsoft.sqlserver.jdbc.SQLServerException “trustServerCertificate”属性设置为“false”,但驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server建立安全连接
  • java -cp 用法介绍
  • HTML 容器元素
  • MVC的cshtml的介绍

Recent Comments

No comments to show.

COPYRIGHT © 2025 mikebai.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang