Enjoy.NET

博客园 首页 新随笔 联系 订阅 管理
  5 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

公告

2006年9月26日 #

自从机器上装了 VS2003 和VS2005 在调试程序的时候就会总出现,

编译器错误信息: CS0016: 未能写入输出文件“d:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\****\****\****.dll” --“拒绝访问。 ”
这样的错误,虽然具体原因尚未找到,可是已经找到了最简便的解决
在微软的网站搜到了这个问题的解决方法,其实很简单,只要在windows/temp权限设置里

面把Network service(如果是win2000则是asp.net用户)的权限加上就行。

具体解决方法请参照
http://support.microsoft.com/default.aspx?scid=kb;en-us;825791

posted @ 2006-09-26 09:08 Enjoy.NET 阅读(1217) 评论(4) 编辑

2006年9月12日 #

   由于各种原因更多的是关注园子里的技术性文章,自己能写的东西很少了。作为一个程序员可能会因为工作的压力以及各方面的原因,只是希望把手头的工作做好,不关心其他人的想法,自己会就得了,写出来可能也是丢人的东西。但是我觉得dudu建博客园的原因也是为了更好的促进大家的交流。希望用大家的力量把整个.net界的伙伴们联合在一起,促进大家的学习。而我则像一个逃兵把所有的事情交给大家,自己坐享其成 呵呵。以后我要把我掌握的东西以及自己的心得写到园子,哪怕是迎来大家的板砖,那也是说明大家还是关心我的。希望我以后有所长进的。hoho,希望大家以后关注我!!
posted @ 2006-09-12 15:13 Enjoy.NET 阅读(43) 评论(1) 编辑

2006年2月28日 #

其实 自己是.NET甚至在程序开发方面是一个初学者,只有以一颗不断学习的心。正确的定位自己才能有所成就
posted @ 2006-02-28 14:09 Enjoy.NET 阅读(71) 评论(0) 编辑

2006年2月27日 #

因为客户需要,要做一个自动换行大标题,以前用的是Label 由于考虑到 TextBox有多行现实的功能所以 想试试。但是,TextBox的大小不能控制,我很郁闷。找了很多办法。结果 有人告诉我用API 能实现 我就试了一下:

用API计算行数,然后在TextChanged中动态改变其客户区的大小:

[DllImport("user32.dll",   EntryPoint="SendMessageA")]
private   static   extern   int   SendMessage   (IntPtr   hwnd,   int   wMsg,   IntPtr   wParam,     string   lParam);

private   void   textBox1_TextChanged(object   sender,   System.EventArgs   e)
{
int   EM_GETLINECOUNT   =   0x00BA;//获取总行数的消息号
int   lc   =   SendMessage(this.textBox1.Handle,EM_GETLINECOUNT,IntPtr.Zero,"");
int   sf   =   this.textBox1.Font.Height   *   lc;
this.textBox1.ClientSize   =   new   Size(this.textBox1.ClientSize.Width,sf   +   5);
}


以下内容节选自《Visual Basic编程晋级:ActiveX控件》:
    要发送消息,我们就需要使用API函数SendMessage。这个函数的定义如下:
    Declare Function SendMessage Lib "user32" _
     Alias "SendMessageA" (ByVal hwnd As Long, _
     ByVal wMsg As Long, ByVal wParam As Long, _
     lParam As Any) As Long
    这个函数有四个参数,它们的含义如下:
    第一个参数hwnd是窗口句柄,是一个长整型数。Windows给每个控件一个编号,这个编号就称为窗口句柄。有了这个句柄,我们就可以告诉Windows我们要控制哪个控件,所以这个句柄在API调用中至关重要。Visual Basic的大多数控件都包括hwnd属性,如下拉框、TreeView等,窗体也有这个属性。但也有一些控件没有这个属性,如标签控件。没有这个属性就无法利用Windows API函数,但可以节省系统资源。
    第二个参数是要传递的消息。API文档中包括了所有消息的含义和用法,而每个消息所定义的常数在Win32api.txt中有可以找到。使用SendMessage传递消息,大多是为了完成以下几个工作:
    1、设置控件的一些选项,象我们要使用的CB_SETDROPPEDWIDTH的就属于这种情况。尽管Visual Basic的每个控件都提供了许多属性,但仍然有许多控件的选项没有包括在其中。而这些选项中的大多数都可以利用SendMessage进行设置。
    2、获得控件的一些设置。同上一种情况相反,有时我们需要获得控件的一些设置,这相当于读取属性。例如,如果想知道一个下拉框的下拉部分的宽度是多少,就可以向控件发送CB_GETDROPPEDWIDTH消息。对于这种情况,SendMessage函数的返回值就是结果。
    3、执行一定的操作。例如,我们要在下拉框中寻找是否"ABC"这个字符串。当然,我们可以编写一个循环,逐条比较看是否存在这样的字符串。如果使用API,我们只需要向下拉框发送CB_FINDSTRING消息,这条消息就会自动进行查找工作并返回结果。
    4、模拟用户操作。我们有时希望模拟用户的操作,比如关闭其他应用程序的窗口。其实只要我们能知道那个窗口的句柄,我们就可以发送WM_CLOSE消息给那个窗口,窗口接受到这条消息就会关闭,如同用户关闭窗口一样。
    API消息的妙用很多,我们这里只是介绍如何使用SendMessage来发送消息,更进一步的应用就留给读者继续探索了。
    SendMessage还有两个参数wParam和lParam。每个消息都具有这两个参数,它们可能包括一些其他信息,其含义由具体的消息来决定的。比如,我们要调用的CB_SETDROPPEDWIDTH消息,其wParam 表示要设置下拉部分的宽度是多少,以象素为单位;而lParam参数没有使用,必须设置为0。
    可能你已经注意到了,这里SendMessage中的lParam定义为Any类型。前面我们已经提到,指定 Any类型禁止Visual Basic进行类型检查,从而允许将任意数据类型传递给该过程。由于每条消息对参数的类型和传递方式的要求都不同:有的可能要求为Long型,有的可能要求为自定义类型;大多数要求按传值方式传递,但也有一些要求按传地址方式。为了满足各种要求,我们将这个参数定义为Any类型。比如,我们要传递一个Long型变量lData。如果消息要求传地址方式传递,可以使用:
    SendMessage ……, lData
    而如果要求传值方式传递,则使用
    SendMessage ……, ByVal lData
    如果传递常数,我们则需要使用类型后缀来指定常数的类型,比如"0&",表示Long型的常数0,如
    SendMessage ……, ByVal 0&
    我们也可以使用类型转换函数CLng将常数指定为Long型,如CLng(0)。
posted @ 2006-02-27 14:07 Enjoy.NET 阅读(862) 评论(0) 编辑

2006年2月21日 #

因为公司使用的飞天诚信公司ePass1000的USBKEY,在B/S下无法采用像C/S下通过调用其提供的动态库的方法实现从USBKEY中读取其文件内容的方法。而且,由飞天诚信公司提供的帮助文档也写得过于简单,我通过从网上搜索只能找到本公司李会军写的关于此方面的例子。于是我找飞天诚信公司寻求帮助,并通过实验实现了文件读取的功能。以下是用VBSCRIPT实现的文件读取功能: 
例:
<OBJECT id="ePass" style="LEFT: 0px; TOP: 0px" height="0" width="0" classid="clsid:E740C5DF-3XXX-46A7-80EC-364D1ADB6CF0"
   name="ePass" VIEWASTEXT>
  </OBJECT>
  <script language="vbscript">
   function ReadKey()
    On Error Resume Next  
    ePass.GetLibVersion
    ‘判断是否正确驱动
    If Err.number = &H1B6 Then
     MsgBox "USBKEY驱动程序未安装或安装不正确!"
     document.Form1.txtUserName.value=""
     document.Form1.txtIkeyNum.value="Bad"
     Exit function
    end if
    ePass.OpenDevice 1, ""
    ‘打开USBKEY 判读是否插入KEY
    If Err then
     MsgBox " 请 插 入 USBKEY ! "
     document.Form1.txtUserName.value=""
     document.Form1.txtIkeyNum.value="Bad"
     ePass.CloseDevice
     Exit function
    End if
    dim results
    dim filesize
    dim filecontent
    filecontent = ""
    filesize = 0
    results = ""
    '取得key号    
    results = ePass.GetStrProperty(7,0,0)     
    ‘打开一个文件此处为第0个文件
    ePass.OpenFile 0,0
    '取得key文件的size 3为文件的SIZE其他在帮助文件中有注明
    filesize = ePass.GetFileInfo(0,3,0,0)
    '取得key文件内容 不能超过文件内容的大小
          filecontent =ePass.Read (0,0,0,filesize)
     filecontent = left(filecontent,filesize)
    ePass.CloseFile
    ePass.CloseDevice
    document.Form1.txtIkeyNum.value=results 
    document.Form1.TextBox2.value=filecontent  
   End function    
  </script>
posted @ 2006-02-21 09:46 Enjoy.NET 阅读(1313) 评论(3) 编辑

仅列出标题