如何在Space或Blog里设置网络计数器?
MSN空间添加计数器的步骤:
第一步 添加用于置顶的HTML模块,步骤如下:
注意:模块里的字符数不要超过512个,不然不能保存
第二步 去提供计数器服务的网站申请计数器的代码:
这是四个提供计数器网站的地址,和申请的方法
第三步 把你申请到的代码,粘贴到第一步申请的HTML代码模块中,保存即可(注意:保存的代码字符不要超过512个,否则不能保存!)
我的空间:
如果问题还是没有解决,请给我留言!
完全清除网络实名
方法::
重新启动计算机,按 F8 进入安全模式(F8 只能按一次,千万不要多按!)
之后,单击 开始 - 运行 regedit.exe 打开注册表,进入:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
删除键:CnsMin
其键值为:Rundll32.exe C:WINNTDOWNLO~1CnsMin.dll,Rundll32
(如果是win98,这里的 C:WINNTDOWNLO~1 为 C:WINDOWSDOWNLO~1)
HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerAdvancedOptions
删除整个目录:!CNS
这个目录在 Internet 选项 - 高级 中加入了3721网络实名的选项。
HKEY_LOCAL_MACHINESOFTWARE3721 以及 HKEY_CURRENT_USERSoftware3721
删除整个目录:3721
注:如果您安装了3721的其它软件,如“极品飞猫”等,则应删除
整个目录:HKEY_LOCAL_MACHINESOFTWARE3721CnsMin
以及 HKEY_CURRENT_USERSoftware3721CnsMin
HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerMain
删除键:CNSEnable 其键值为:a2c39d5f
删除键:CNSHint 其键值为:a2c39d5f
删除键:CNSList 其键值为:a2c39d5f
在删除完注册表中的项之后,还需要删除存储在硬盘中的3721网络实名文件。
删除如下文件:
C:WINNTDOWNLO~1 目录下
(如果是win98,这里的 C:WINNTDOWNLO~1 为 C:WINDOWSDOWNLO~1 下同)
2001-08-09 15:34
3721
2001-08-02 17:03 40,960 cnsio.dll
2001-08-08 14:14 102,400 CnsMin.dll
2001-08-24 23:14 42 CnsMin.ini
2001-08-09 10:18 13,848 CnsMinEx.cab
2001-07-06 17:57 32,768 CnsMinEx.dll
2001-08-25 02:52 115 CnsMinEx.ini
2001-08-25 02:51 17,945 CnsMinIO.cab
2001-08-02 17:02 32,768 CnsMinIO.dll
2001-08-24 23:15 40,793 CnsMinUp.cab
C:WINNTDOWNLO~13721 目录下
2001-08-02 17:03 40,960 cnsio.dll
2001-08-24 15:53 102,400 CnsMin.dll
2001-07-06 17:59 213 CnsMin.inf
2001-08-24 15:48 28,672 CnsMinIO.dll
以上文件全部删除,这样3721网络实名“病毒”就从您的计算机中全部清除了。
最后,重新启动计算机,进入正常模式。现在已经完全没有3721网络实名的困扰了!
多试几次最后把碎片清理一下就ok!!!!!
如何发送文件到网络打印机,并打印(使用C#)?
问题
.Net Framework 1.1给我们提供了一个PrinterSettings类,以提供指定有关文档打印方式的信息,其中包括打印文档的打印机。其中的静态属性InstalledPrinters可以使我们获取安装在计算机上所有打印机的名称。
但是可惜的是,该属性仅仅能够提供已安装的打印机的名称。对于获取该打印机的相关信息(如打印机类型等)却无能为力。问题就产生了,由于客户无法提供打印机的SDK,所以对打印机的筛选(处于商业目的,客户要求软件只能在使用他们的打印机时才能输出)只能通过打印机驱动的辨认来实现。
----------------------------------------------
解决方案一 使用WMI获取打印机信息
WMI,全称Windows Management Instrumentation。是可伸缩的系统管理结构,它采用一个统一的、基于标准的、可扩展的面向对象接口。WMI 为您提供与系统管理信息和基础 WMI API 交互的标准方法。WMI 主要由系统管理应用程序开发人员和管理员用来访问和操作系统管理信息。
.Net Framework中System.Management类提供了对WMI的支持,其中ManagementObjectSearcher用于根据指定的查询或枚举检索 ManagementObject 或 ManagementClass 对象的集合。
/**//// summary
/// Code 1:WMI搜索示例
/// summary
/// param name=\"strDrivername\"驱动名称/param
/// returns返回找到的打印机列表/returns
/// remarksstrDrivername支持”%“以及”_“通配符查询,类似于SQL语句中的查询remarks
public StringCollection GetPrintsWithDrivername( string strDrivername )
{
StringCollection scPrinters = new StringCollection();
string strcheck = \"\";
if( strDrivername !=\"\" strDrivername != \"*\" )
strcheck = \" where DriverName like \\\'\" + strDrivername + \"\\\'\";
string searchQuery = \"SELECT Name FROM Win32_Printer\" + strcheck;
ManagementObjectSearcher searchPrinters =
new ManagementObjectSearcher(searchQuery);
ManagementObjectCollection printerCollection = searchPrinters.Get();
foreach(ManagementObject printer in printerCollection)
{
string printname = printer.Properties[\"Name\"].Value.ToString();
scPrinters.Add(printname);
}
searchPrinters.Dispose();
printerCollection.Dispose();
return scPrinters;
}
问题看上去基本解决了,运行程序的确是获得了正确的打印机列表。可是用户用了一段时间后发现,有的时候打印机无法正确获得,看来DOTNET调用WMI稳定性的确有点问题啊。。。。。。
WMI本身功能还是相当强大的,通过VBS基本可以涵盖WINDOWS最基本的操作。详细可以参加MSDN的文档。
-------------------------------------------
解决方案二 使用WIN32API获取打印机
转来转去,又回到WIN32API上来了,无奈啊。。。。。。怪不得C++依然这么吃香 啊。。。。。
.Net给我们提供了DllImport来操作非托管的DLL(发现C#如此的强啊~~~~暗自偷笑)。
主要使用到winspool.drv中的EnumPrinters函数,代码如下:
[DllImport(\"winspool.drv\", SetLastError = true, CharSet = CharSet.Auto)] [return: MarshalAs(UnmanagedType.Bool)]private static extern bool EnumPrinters ([MarshalAs(UnmanagedType.U4)] PRINTER_ENUM flags,
[MarshalAs(UnmanagedType.LPStr)] string sName,
uint iLevel,
IntPtr pPrinterDesc,
uint iSize,
[MarshalAs(UnmanagedType.U4)] ref uint iNeeded,
[MarshalAs(UnmanagedType.U4)] ref uint iReturned
);
说明:Marshal属性提供了对托管代码与非托管代码见数据封送。
EnumPrinters 的 WIN32 API的定义如下:
BOOL EnumPrinters(
DWORD Flags, // printer object types
LPTSTR Name, // name of printer object
DWORD Level, // information level
LPBYTE pPrinterEnum, // printer information buffer
DWORD cbBuf, // size of printer information buffer
LPDWORD pcbNeeded, // bytes received or required
LPDWORD pcReturned // number of printers enumerated
);
问题又来啦,EnumPrinters通过Level来获取PRINTER_INFO,而能获得打印机驱动的是PRINTER_INFO_2,而C#中又没有PRINTER_INFO_2结构。
查了半天资料,网上基本上都是PRINTER_INFO_1的定义,而PRINTER_INFO_2不同与PRINTER_INFO_1,其中还包括DEVMODE结构,非托管的结构套结构,偶开始飘了~~~~
最后发现与其在C#中定义结构来对应非托管的结构,还不如直接用类来替代。所以定义了两个类
PRINTER_INFO_2以及DEVMODE(注:由于PRINTER_INFO_2中只用到了DEVMODE结构来接收打印机驱动的信息,所以只定义了这个类,对于其他类都没有做具体实现)。
在PRINTER_INFO_2中,对于所有的DWORD类型数据,全部对应到Int32类型上面,而对于所有LPTSTR、LPDEVMODE以及PSECURITY_DESCRIPTOR一律对应到IntPtr指针类型。
为了获取非托管中的数据,使用了一下函数获取打印机信息
.
PRINTER_INFO_2 pi = new PRINTER_INFO_2();
//把数据从非托管内存传送到到托管内存
for(int i = 0; i numPrinters; i++)
{
Marshal.PtrToStructure( prInfo, pi ); //prInfo是由上面EnumPrinters获得的打印机
string driver = Marshal.PtrToStringAuto( pi.pDriverName );
if ( printerdriver == \"\" || driver.ToLower().IndexOf( printerdriver ) != -1)
{
// 做相关处理
}
prInfo = new IntPtr(prInfo.ToInt32() + Marshal.SizeOf(typeof(PRINTER_INFO_2))); // 获取下一个打印机信息段开始
}
.
问题至此基本解决。但C#中对非托管函数的调用,以及相互之间的数据封装还是一个比较难的地方,有空还需要整理一下。
文章来源:
补充:在2.0中,fixed关键字可以用于定义一个固定大小的数组缓存,而不是像1.x中那样还需要定义一个数字大小。但这种方式只能用于结构(struct)而不能用于类(class)的定义。
北京联通ADSL赠送的GWH-11做无线路由器如何设置?高手进!!在线等!!
1:猫是把数字信号和模拟信号互相转换的设备,你电话线上面过来的是模拟信号,你电脑上的是数字信号。网关就是协议转换器,路由就是网关的一种。
2:路由不能代替猫,2个的功能都不一样。
3:有集成了猫和路由功能的设备。
通俗的来讲,网关可以理解为就是路由器
如何让IE7也支持网络实名?
IE7装了雅虎助手也不管用的,因为IE7已不再支持网络实名了,但有一个办法,就是,在IE7的搜索工具栏上下手,添加一个3721搜索或网络实名搜索:进入
在URL中填入 ;source=new3721_hpcosite=3721sslocation=3721ss
字符编码 选择 Chinese Simplified(GB2312)
接着,输入任意一个热门关键词(如“索尼”),在弹出对话框的选项中,点击:“总是允许来自此站点的弹出窗口”
这样,你在搜索引擎中用该搜索引擎输入关键词,就能使用与网络实名一样的功能了。