关于作者

用户名:designs
笔名:小懒虫
地区: 湖南-邵东
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



友情连接

访问统计:
文章个数:59
评论个数:17
留言条数:3




Powered by BlogDriver 2.1

小懒虫的家

 

文章

XP系统装不了MSN,系统出错0x80070643

运行 输入cmd 回车在命令提示符下输入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

即可搞定

- 作者: 小懒虫 2008年03月14日, 星期五 16:13  回复(1) |  引用(0) 加入博采

Linux下面多串口卡的使用

Linux下面系统默认支持4个串口,超过4个串口必须手动配置才能使用。只要是标准的16550设备在Linux可用命令setserial进行配置。

命令行示例:

setserial /dev/ttyS5 port 0xc800 UART 16550A irq 10 Baud_base 115200

如需系统重新启动后,也能自动使用该串口需要将命令加到/etc/rc.d/rc.local里面

- 作者: 小懒虫 2007年06月22日, 星期五 12:55  回复(1) |  引用(0) 加入博采

商品管理程序发布了

近日,LP的同事在超市开了个柜台。需要一个商品管理程序。

,/VB/VC……,都会一点。还好Asp的Vbscript,还好点。

就用它,前几天没什么时间,做了点基础框架。呵呵,后来直接在网上找了个做了参照,晚上弄了个快3点。搞定。

凑合用吧。别强求了。

现在上传到网上,也就共享共享吧。呵呵!

程序下载

- 作者: 小懒虫 2006年08月2日, 星期三 12:27  回复(1) |  引用(0) 加入博采

好久没有时间写东西了

最近一直忙于 IXP425系统的移植,好长时间都没有来更新日记了。

系统现在进入最后阶段,还需要做部分的配置就可以完成了。希望后续的学习能够顺利进行……

- 作者: 小懒虫 2006年05月19日, 星期五 14:44  回复(1) |  引用(0) 加入博采

Windows XP OEM 标志
各大厂商分OEM版修改BISO免激活的方法,内容出自网上,不保证全部正确:

LEGEND: 在BIOS任意地方加入"
LEGEND Dragon
"字符串,注意大小写。

清华同方: 在BIOS任意地方加入"
TSINGHUA TONGFANG COMPUTER
"字符串,大小写无所谓。

TCL: 在BIOS任意地方加入"
TCL123
"字符串。

七喜: 在BIOS任意地方加入"
HEDYCOMPUTER
"字符串。

COMPAQ: 在BIOS中加入
"COMPAQ
"字符串

HP: 在BIOS中加入
"Hewlett-Packard
"。

ACER: 在BIOS任意地方加入"
AcerSystem
"字符串,注意大小写。

IBM:在BIOS任意地方加入"
IBM CORPORATION
"字符串,不分大小写。

方正: 在BIOS任意地方加入"
Founder PC"字符串,注意大小写。

- 作者: 小懒虫 2006年03月7日, 星期二 16:55  回复(1) |  引用(0) 加入博采

巧妙修改虚拟机的BIOS信息
  出于各种需要,很多朋友都安装了Microsoft Virtual PC或VMware等虚拟机软件,这样可以安全试用各种最新的操作系统和应用软件,不会影响到原有系统的稳定性。

  修改Virtual PC虚拟机BIOS

  由于Virtual PC已于2003年被微软收购,因此软件与更名为Microsoft Virtual PC,它的优势是内存占用小,与操作系统的兼容性强。通过修改虚拟机BIOS信息中的OEM字符,这样就可以安装OEM版本的Windows XP实现免激活了。

  1. 需要准备的工具软件

  为了修改虚拟机的BIOS信息,我们需要准备好如下工具软件:

  (1)Microsoft Virtual PC 2004:安装SP1补丁包后版本号为5.3.582.27。

  (2)ResScope:这是一个类似于eXeScope的软件资源分析和编辑工具,功能已超过eXeScope。目前最新版本为1.92。

  (3)MMTool:这是一款可以对AMI BIOS文件添加或删除相应模块的小工具软件(Microsoft Virtual PC虚拟机的BIOS正好是AMI的),不需要安装,解压后直接运行即可。

  2. 备份主文件

在操作之前,我们首先需要备份Microsoft Virtual PC安装目录中的Virtual PC.exe文件,这样万一修改时出现什么问题可以将其恢复回去。

  3. 获取BIOS源文件

用ResScope打开Virtual PC.exe,定位到“BIOS”资源,选择“文件→导出资源”菜单命令将编号为13500的资源导出为bios.rom文件,注意文件名的后缀必须是.rom,这样才能被MMTool所打开。

  4. 导出BIOS的OEM模块

运行MMTool程序,切换到“Power MMTool”模式,执行“Load ROM”命令载入刚才导出的BIOS文件:bios.rom。在列表中可以看到各个模块的编号、大小、百分比等信息,由于我们主要的目的是修改OEM信息,因此选择06 DMI这个模块,在“Extract”标签页中将该模块从BIOS文件中分离出来,注意导出为未压缩格式的文件(In uncempressed from),例如命名为dmi.rom,不要立即关闭MMTool程序。

  5. 修改BIOS的OEM信息

接下来用UltraEdit打开刚才导出的dmi.rom模块,找到相应的地址,接下来就可以进行修改了。如果你愿意,甚至还可以对BIOS的生成日期和版本进行修改,当然修改后要记得保存下来。

  6. 替换06模块

切换回MMTool窗口,仍旧选中06 DMI,切换到“Replac”页面,打开已修改好的dmi.rom文件,定位到06模块,单击“Replace”按钮进行替换,最后对bios.rom文件进行保存后退出程序。

  7. 更新BIOS资源

切换回ResScope窗口,仍旧定位到BIOS资源的13500,选择“文件→导入资源”命令导入已编辑完毕的bios.rom文件进行更新,保存后退出。接着就可以启动Microsoft Virtual PC进行测试了。
  修改WMware虚拟机BIOS

  可能有些朋友更喜欢合适VMware,我们可以借助两款第三方软件进行修改,这里以V5.0 Build 13124 Beta版本进行介绍。

  1. 需要准备的软件

  首先,请准备好一款二进制编辑工具,这里笔者推荐使用ResScope;另外,我们还需要准备BIOS编辑器,推荐Phoenix BIOS Editor,最新版本是2.0.18E。

  2. 导出VMware BIOS

  VMware BIOS隐藏的位置比较深,我们需要处理的是C:\Program Files\VMware\VMware Workstation\bin文件夹中的vmware-vmx.exe文件。

  首先将这个文件复制到另一个路径备份下来,然后用ResScope打开这个文件,从左侧的资源中选择BINRES,找到6006模块,提取后保存为bios.rom备用,注意暂时不要关闭ResScope窗口。

  3. 修改BIOS

  运行Phoenix BIOS Editor,调入刚才保存的bios.rom文件对DMI信息进行修改,对“Motherboard Version”的内容进行修改,修改完毕后选择“File→Build BIOS”命令。

  4. 重写vmware-vmx.exe

  返回ResScope窗口,选中6006模块,然后选择“文件→导入资源”菜单命令导入已编辑完毕的bios.rom文件,然后单击工具栏上的保存图标更新当前资源项,然后就可以退出程序了。

  可能看到这里,你已经跃跃欲试,准备去修改虚拟机的BIOS,然后体验OEM版本的XP了吧?

- 作者: 小懒虫 2006年03月7日, 星期二 15:59  回复(1) |  引用(0) 加入博采

NextRecordset 和 GetRows 双簧合奏
NextRecordset 和 GetRows 大家可能用的很少!
最近使用使用,不错的好东东!
对提高批量查询,查询纪录集不是巨海量的情况很有效果
NextRecordset 和 GetRows 是Recordset的两个属性(属性还是方法我是常混淆是非#$#$,弄不清四下五除一)

GetRows ---> 将recordset记录集提取到一个二维数组中,我们对recordset数据的行为就转移到该数组,可以早早的断开纪录集,不用再使用元数据操作,rs.movnext, while not rs.eof等可以省掉

NextRecordset ----> 就是在一次提交多个查询,形成多个reordset结果集的情况下,提供一个离开当前工作的recordset,转移到第二个recordset的方法!
主要是用在多个SELECT形成的结果集的情况

示例如下:

dim SQL,Rs,arrA,arrB,rowsA,rowsB

''======提取数据库库记录====

(adodb.connection 的连接部分省略,假定CONN.open CONNstr)
SQL=" select Ca1,Ca2,Ca3,Ca4 from TableA " ''---------------SELECTa
SQL=SQL&" select Cb1,Cb2,Cb3,Cb4,Cb5 from TableB " ''-------------SELECTb

Set Rs=conn.execute(SQL) 
''执行结果将有两个select 的结果集,当前第一个select的recordset处于激活状态 

arrA=rs.GetRows ''----------取得SElECTa Recordset的二维数组

set rs=rs.NextRecordset 
''------------最关键的一步,使用Nextrecordset激活下一个recordset

arrB=rs.GetRows ''----------再次取得第二个SElECTb Recordset的二维数组 

Rs.close
set rs=nothing ''---------尽早释放数据库对象,关闭记录集
CONN.close
set CONN=Nothing
这样,我们所有关于数据库的数据干干净净的提取完成,用最早的时间释放数据库资源 
''-----------//

''========用取得的arrA arrB进行页面处理,显示数据结果======
''注意,arrA=GetRows 后得到的数组,第一维是代表列,第二维代表行

rowsA=ubound(arrA,2) ''----提取arrA的第二维下标,相当于取得recordset 的记录行数
rowsB=ubound(arrB,2) ''-----同上,提取arrB的第二维下标 

''做数据循环:

''第一个select表的循环
response.write "<table>"
For i=0 to rowsA
response.write "<tr>
response.write "<td>"&arrA(i,0)&"</td>" ''tableA.Ca1 
response.write "<td>"&arrA(i,1)&"</td>" ''tableA.Ca2 
response.write "<td>"&arrA(i,2)&"</td>" ''tableA.Ca3 
response.write "<td>"&arrA(i,3)&"</td>" ''tableA.Ca4 
response.write "</tr>"
Next
response.write "</table>

''第二个select表循环
response.write "<table>"
For i=0 to rowsB
response.write "<tr>
response.write "<td>"&arrB(i,0)&"</td>" ''tableB.Cb1 
response.write "<td>"&arrB(i,1)&"</td>" ''tableB.Cb2 
response.write "<td>"&arrB(i,2)&"</td>" ''tableB.Cb3 
response.write "<td>"&arrB(i,3)&"</td>" ''tableB.Cb4 
response.write "<td>"&arrB(i,4)&"</td>" ''tableB.Cb5 
response.write "</tr>"
Next
response.write "</table>

''--------OVER

REM ''============小结========

这样的结果,再清楚不过!
(1)使用Nextrecordset,可以处理多个select语句一次发送形成的结果集,减少网络流量,必定加快速度!
不使用NextRecordset 则会这样操作:
SQL="select Ca1,Ca2,Ca3, Ca4 From TableA "
set Rs=CONN.execute (SQL)
SQL=" select Cb1,Cb2,Cb3,Cb4,Cb5 from TableB "
Set Rs=CONN.execute (SQL)
(2)使用GetRows将记录集提取到数组中(放到内存,所以要求记录集不要海大啦)
用内存的数组工作,而且省掉EOF,movenext等的判断,谁更快!自不必说!
(3)最最主要的,我们利用上二者,一次性将所有的数据提完,快速断开数据库连接和摧毁建立recordset数据库对象,大大减少网络流量!性能自然要提高很多!

- 作者: 小懒虫 2006年02月4日, 星期六 17:33  回复(1) |  引用(0) 加入博采

Rs.open sql,conn,A,B 的A、B各代表什么?
RS.OPEN SQL,CONN,A,B
A: ADOPENFORWARDONLY(=0) 只读,且当前数据记录只能向下移动
ADOPENSTATIC(=3) 只读,当前数据记录可自由移动
ADOPENKEYSET(=1) 可读写,当前数据记录可自由移动
ADOPENDYNAMIC(=2) 可读写,当前数据记录可自由移动,可看到新增记录
B: ADLOCKREADONLY(=1) 默认值,用来打开只读记录
ADLOCKPESSIMISTIC(=2) 悲观锁定
ADLOCKOPTIMISTIC(=3) 乐观锁定
ADLOCKBATCHOPTIMISTIC(=4) 批次乐观锁定 
PS:
乐观锁定:完全依靠数据库来管理锁的工作。
悲观锁定:应用程序自己管理数据或对象上的锁处理

- 作者: 小懒虫 2006年02月4日, 星期六 17:30  回复(1) |  引用(0) 加入博采

WEB打印设置解决方案四

 使用到的技术:  
ASP,WSH,VBScript  
文件ASPPrint.asp代码如下:  
<%@ Language=VBScript %>  
<%  
     Option Explicit   

     Dim strSubmit             ' Form中用来保存提交按钮的值  
     Dim strPrinterPath      ' Form中保存网络打印机路径的值  
     Dim strUsername       ' Form中用户名的值  
     Dim strPassword        ' Form中密码的值  
     Dim strMessage          ' Form打印内容的值  
     Dim objFS                    ' VBScript中的文件系统对象  
     Dim objWSHNet         ' WSH中的网络对象  
     Dim objPrinter             ' 打印对象   
 
    strSubmit = Request.Form("Submit")  
%>  

  <HTML>  
  <HEAD>  
  <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">  
  </HEAD>  
  <BODY>  
 
<%  
     If strSubmit = "" Then  
%>  

  注意的是:  
      由于我是演示起见,其中有关NT的帐号和密码都是使用了不加密的手段在ASP中传递的真正的运用中应该对该登录过程进行安全处理。  
  <FORM action="ASPPrint.asp" method=POST id=form name=form>  
     <TABLE WIDTH=100% ALIGN=center BORDER=0 CELLSPACING=1 CELLPADDING=1>  
         <TR>  
              <TD ALIGN=right NOWRAP>网络打印机路径:</TD>  
              <TD ALIGN=left NOWRAP><INPUT type="text" id=printerpath name=printerpath value="\\< Domain >\< Printer >"></TD>  
         </TR>  
         <TR>  
              <TD ALIGN=right NOWRAP>登录帐号:</TD>  
              <TD ALIGN=left NOWRAP><INPUT type="text" id=username name=username   
              value="<% = strUsername %>"></TD>  
         </TR>  
         <TR>  
              <TD ALIGN=right NOWRAP>登录口令:</TD>  
              <TD ALIGN=left NOWRAP><INPUT type="password" id=password name=password></TD>  
         </TR>  
         <TR>  
             <TD ALIGN=right NOWRAP>请输入你想打印的文字:</TD>  
             <TD ALIGN=left NOWRAP><TEXTAREA rows=2 cols=20 id=message name=message></TEXTAREA></TD>  
         </TR>  
         <TR>  
             <TD ALIGN=right NOWRAP> </TD>  
             <TD ALIGN=left NOWRAP><INPUT type="submit" value="Submit" id=submit name=submit></TD>  
         </TR>  
     </TABLE>  
  </FORM>  

  当以上信息被提交后,就可以按照下面的代码进行打印了。  
  <%  
  Else  
     ' 从form中取得响应信息。  
     strPrinterPath = Request.Form("printerpath")  
     strUsername = Request.Form("username")  
     strPassword = Request.Form("password")  
     strMessage = Request.Form("message")  

       We will now use the VBScript FileSystemObject object and the WSH Net work object. The Network object will
  give us the methods we need to open a printer connection, and the FileSystemObject will allow us to stream our  
  output to the printer. We create these objects in the following code
 
  example:   
     ' 使用WSH连接网络打印机
     Set objWSHNet = CreateObject("WScript.Network")     
     objWSHNet.AddPrinterConnection "LPT1", strPrinterPath, False, strUsername, strPassword  
     '使用文件系统对象将打印设备作为一个文件使用  
     Set objFS = CreateObject("Scripting.FileSystemObject")
     Set objPrinter = objFS.CreateTextFile("LPT1:", True)  
     ' 给打印设备送出文本  
     objPrinter.Write(strMessage)  
     '关闭打印设备对象并进行错误陷阱处理  
     On Error Resume Net  
     objPrinter.Close  
     ' 如果发生错误,关闭打印连接,并输出错误信息  
     If Err Then  
        Response.Write ("Error # " & CStr(Err.Number) & " " & Err.Description)  
        Err.Clear      
     Else  
        ' 操作成功,输出确认信息  
        Response.Write("<CENTER>")  
        Response.Write("<TABLE WIDTH=100% ALIGN=center BORDER=0 CELLSPACING=1 CELLPADDING=1>")  
        Response.Write("<TR><TD ALIGN=RIGHT><B>打印消息送出:</B></TD>")  
        Response.Write("<TD ALIGN=LEFT>" & strMessage & "</TD></TR>")  
        Response.Write("<TR><TD ALIGN=RIGHT><B>网络打印机路径:</B></TD>")  
        Response.Write("<TD ALIGN=LEFT>" & strPrinterPath & "</TD></TR>")  
        Response.Write("<TR><TD ALIGN=RIGHT><B>登录帐号:</B></TD>")  
        Response.Write("<TD ALIGN=LEFT>" & strUsername & "</TD></TR>")  
        Response.Write("</TABLE>")  
        Response.Write("</CENTER>")  
     End If  
     ' 取消打印连接  
     objWSHNet.RemovePrinterConnection "LPT1:"  
     Set objWSHNet  = Nothing  
     Set objFS      = Nothing  
     Set objPrinter = Nothing  
  End If  
  %>  
  </BODY>  
  </HTML>

- 作者: 小懒虫 2006年02月4日, 星期六 17:24  回复(1) |  引用(0) 加入博采

WEB打印设置解决方案三

程序代码:
<script Language=VBScript> 
 Function print_onclick //打印函数 
  Dim label 
  label=document.printinfo.label.value //获得HTML页面的数据 
  set objfs=CreateObject("Scripting.FileSystemObject") //创建FileSystem组件对象的实例 
  set objprinter=objfs.CreateTextFile ("LPT1:",true) //建立与打印机的连接 
  objprinter.Writeline("__________________________________") //输出打印的内容 
  objprinter.Writeline("| |") 
  objprinter.Writeline("| 您打印的数据是:"&label& " |”) 
  objprinter.Writeline("| |") 
  objprinter.Writeline("|_________________________________|") 
  objprinter.close //断开与打印机的连接 
  Set objprinter = nothing 
  Set objfs = nothing // 关闭FileSystem组件对象 
 End Function 
</script> 

服务器端脚本: 
<% 
 Set conn=server.CreateObject ("adodb.connection") 
 conn.Open "DSN=name;UID=XXXX;PWD=XXXX;" 
 Set Rs = server.CreateObject("adodb.recordset") 
 Rs.Open("select ……"),conn,1,1 
%> //与数据库进行交互 

HTML页面编码: 
<HTML> 
……… 
<FORM ID=printinfo NAME="printinfo" > 
<INPUT type="button" value="打印>>" id=print name=print > //调用打印函数 
<INPUT type="hidden" id="text1" name="label" value=<%=………%>> //保存服务器端传来的数据 
……… 
</HTML>

- 作者: 小懒虫 2006年02月4日, 星期六 17:23  回复(1) |  引用(0) 加入博采