博文
用C#屏敝3721网络实名(2006-05-23 22:41:00)
摘要:3721特别的可恶,每次装系统一上网就自动帮人装上去,打都不打声招呼,打着“网络实名”的招牌,实际上是在侵蚀用户的系统。其实我们如果想将其屏蔽,原理很简单,就是把注册表里的3721的某个键给改掉即达到屏敝它的目的。 代码如下:
//这个是主要方法,用来修改注册表的 private bool SetValue(string temp){try{RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{B83FC273-3522-4CC6-92EC-75CC86678DA4}",true);object str = key.GetValue("Compatibility Flags");if(str.ToString() != String.Empty)key.SetValue("Compatibility Flags",temp);//修改键值key.Flush();key.Close();return true;}catch{return false;}}屏敝,调用上面的修改方法
private void kill_Click(object sender, System.EventArgs e){if(SetValue("1024")){lblMsg.Text = ("3721已被清除出系统门外:)");}else{lblMsg.Text = ("免疫失败:(");}}恢复网络实名
private void release_Click(object sender, System.EventArgs e){if(SetValue("0")){lblMsg.Text = ("3721已被重新招入Windows门下:)");}else{lblMsg.Text = ("免疫失败:(");}}......
跟3721比狠:VB6.0实现中文实名搜索(2006-05-23 22:38:00)
摘要: 中文实名无非是用ie的iurlsearchhook,但是3721可不是这么玩的,它是使用api hook拦截ie commbox的消息,你根本就快不过他,嘿嘿,3721阴险吧,虽然我们不能实现全局钩子,在vb中也只能使用sub class 子类技术,这个东西我们不玩,我们玩另外一种(说白了就是找个中间层,让它翻译成vb能够认识的玩意)。
首先实现IObjectWithSite、IUnknown这两个接口。我们需要创建一个odl文件,通过它来创建一个tlb:
[ uuid(CF9D9B76-EC4B-470D-99DC-AEC6F36A9261), helpstring("VB IObjectWithSite Interface"), version(1.0) ] library IObjectWithSiteTLB { importlib("stdole2.tlb"); typedef [public] long GUIDPtr; typedef [public] long VOIDPtr; [ uuid(00000000-0000-0000-C000-000000000046), odl ] interface IUnknownVB { HRESULT QueryInterface( [in] GUIDPtr priid, [out] VOIDPtr *pvObj ); long AddRef(); long Release(); } [ uuid(FC4801A3-2BA9-11CF-A229-00AA003D7352), odl ] interface IObjectWithSite:IUnknown { typedef IObjectWithSite *LPOBJECTWITHSITE; HRESULT SetSite([in] IUnknownVB* pSite); HRESULT GetSite([in] GUIDPtr priid, [in, out] VOIDPtr* ppvObj); } }; 把它保存为odl然后,用typelib创建一个tlb文件,创建后我们引用这个文件。 添加如下代码
Implements IObjectWithSiteTLB.IObjectWithSite Dim WithEvents IE As ......
好东东 分享一下:使用起泡法按照时间排列文件(2006-05-20 17:54:00)
摘要:Function qipaosorting(path) 'path = "D:\spreadtrum magazine\" Set FSO = Server.CreateObject("Scripting.FileSystemObject") 'FSO对象 Set FD = FSO.GetFolder(path) '获得文件夹 Set F = FD.Files '获得文件夹内文件 For Each OneFile in F '列出所有的htm文件 filename = OneFile.Name If LCase(right(filename,3)) = "htm" Then '只对htm文件处理 filename_arr0 = filename_arr0 & Left(filename,Len(filename)) & " ¦" '获得主文件名,保存在变量中,0 ¦0 ¦形式 filename_arr1 = filename_......
Shell_NotifyIcon->作一个放在windows托盘的程序(2006-05-20 17:46:00)
摘要:'相信您的机器上一定装有"金山词霸",试着启动它您发现了什么?启动画面过后它"不见了"。把鼠标移到 桌面的右下角,原来它以图标的形式"藏在" Windows的托盘中。用鼠标右击它还会弹出一个菜单功能项供您选择。现在您一定想把自己的程序也放到托盘,这样您的 程序多具有专业水准! '下面是此功能的实现步骤: '1.这里我们调用的API函数是: '"Shell_NotifyIcon",在您的模块中添加如下的函 '数声明和常量声明: '以下常量告诉系统在托盘中您的图标上发生了什么 操作 '常量声明 Public Const WM_MOUSEMOVE = &H200 '在图标上移动鼠标 Public Const WM_LBUTTONDOWN = &H201 '鼠标左键按下 Public Const WM_LBUTTONUP = &H202 '鼠标左键释放 Public Const WM_LBUTTONDBLCLK = &H203 '双击鼠标左键 Public Const WM_RBUTTONDOWN = &H204 '鼠标右键按下 Public Const WM_RBUTTONUP = &H205 '鼠标右键释放 Public Const WM_RBUTTONDBLCLK = &H206 '双击鼠标右键 Public Const WM_SETHOTKEY = &H32 '响应您定义的热键 'API函数声明 ......
如何在vb中调用autocad r14 打开一个dwg 文件(2006-05-20 17:45:00)
摘要:要求与Dwg文件已经建立关联: Private Declare Function ShellExecute _ Lib "shell32.dll" Alias "ShellExecuteA" _ ( _ ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long _ ) As Long Private Sub cmdOpen_Click() ......
注册表的API编程(2006-05-14 13:30:00)
摘要: 注册表的API编程关于注册表的知识相信您通过前面专题的介绍已经有了较深入的了解。系统有六个预定义好的关键字,这六个关键字是用户或系统访问注册表的入口点。我们常用到的只有前四个关键字。而在编程时我们一般用到只是HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE这两个关键字,因为与应用程序相关的数据存在于这两个关键字下。许多商品化的软件或专业化的软件在您的机器上首次安装的时候都会通过改写注册表来完成软件的正确安装运行,梦想成为编程高手的你当然需要掌握读写注册表这一技术。利用好注册表会为您的应用程序增色不少。虽然VB本身提供了四个关于注册表的函数GetSetting,SaveSetting、GetAllSettings、DeleteSetting(这四个函数的使用比较简单读者可以参考VB的联机帮助),但是这四个函数只能在“HKEY_CURRENT_USER\Software\VB and VBA ProgramSettings”下读取、删除、修改键值。对于一般的应用程序利用它们可以达到您的目的,对于特殊的要求利用它们就显的无能为力了。下面举一个例子说明它们的局限性。熟悉DOS操作系统的读者都知道,可以编写一个“Autoexec.bat”的批处理文件来实现某一个应用程序在系统启动的时候自动运行,在Win95中我们可以把应用程序的快捷方式放到系统的启动组中来达到同样的效果。但是,假如我需要在我的应用程序首次安装以后就能自动达到这种效果,那该如何呢?其实,注册表中提供了三个这样的键:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices这三个键字的区别是:Run:此键字下的应用程序在系统启动的时候会自动运行;RunOnce:此键字下的应用程序在系统下一次启动的时候会自动运行,以后不再运行;RunServices:功能和“Run”一样,只是应用程序被启动的时候不同而已。现在您一定知道该如何利用注册表......
调用Windows API的注意事项(2006-05-14 13:27:00)
摘要:Visual Basic (VB)作为一种高效编程环境,它封装了部分Windows API函数,但也牺牲了一些API的功能。调用API时稍有不慎就可能导致API编程错误,出现难于捕获或间歇性错误,甚至出现程序崩溃。要减少API编程错误,提高VB调用API时的安全性,应重点注意下列八个问题: (1)指定“Option Explicit" 编程前最好将VB编程环境中的“Require Variable Declaration(要求变量申明)项选中。如果该项未被指定,任何简单的录入错误都可能会产生一个“Variant”变量,在调用API时,VB对该变量进行强制转换以避免冲突,这样一来,VB就会为字符串、长整数、整数、浮点数等各种类型传递NULL值,导致程序无法正常运行。 (2)注意VB整数和Win32整数的区别在VB环境下,涉及到的所有integer(整型数),都是16位,而一旦涉及C/C++Win32文档时,则是32位,阅读与Windows API函数或与32位动态链接库有关的资料或应用程序时,尤其要注意分析理解环境背景,以利于分清数据类型和数据结构,正确地声明API函数。 (3)减少和避免使用As Any 虽然用As Any的方法声明库,可使Windows API函数能接受多种类型的参数,但更严重的是,即使是一个很小的错误,比如遗漏类型标识符或错误地使用了ByVal关键字,都可能导致系统崩溃或很难发现的其他数据错误。 (4)注意检查参数类型API错误中,除了因遗漏ByVal关键字导致的错误外,大约有50%是因为声明中有不正确的参数类型。在Win32环境下,无论是8位、16位,还是32位数值变量都是以32位传递,如果同时使用,则很难发现其中错误。如果声明的参数类型不同,被VB视为Variant传递给API函数,会出现“错误的DLL调用规范”的消息。 (5)勿忘ByVal,确保函数声明的完整性ByVal是“按值”调用,参数传递时,不将指向DLL的指针传递给参数变量本身,而是将传递参数值的一份拷贝传递给DLL。比如传递字符串参数时,VB与DLL之间的接口支持两种类型的字符串,如未使用ByVal关键字,VB将指向DLL的函数指针传递给一个OLE2.0字符串(即BSTR数据类型),而Windows API函数往往不支持这种数据类型,导致错误。而使用ByVal关键字后VB将字符串......
The Tao of programming(2006-05-03 21:52:00)
摘要:Book One - The Silent Void Thus spake the master programmer: 编程大师如是说: "When you have learned to snatch the error code from the trap frame, it will be time for you to leave." “当你从我手中夺走水晶球时,就是你离开的时候了。” 1.1 Something mysterious is formed, born in the silent void. Waiting alone and unmoving, it is at once still and yet in constant motion. It is the source of all programs. I do not know its name, so I will call it the Tao of Programming. 寂静的虚空里诞生了神秘的东西,这种东西恒久存在永不消失,它是所有程序的 根源所在,我不知道怎么形容它,姑且称它为编程之道。 If the Tao is great, then the operating system is great. If the operating system is great, then the compiler is great. If the compiler is greater, then the applications is great. The user is pleased and there is harmony in the world. 如果道是完美的,那么操作系统就是完美的,如果操作系统是完美的,那么编译 嚣就是完美的,如果编译嚣是完美的,那么应用程序就是完美的,所以用户心满 意足,整个世界因此和谐。 The Tao of Programming flows far away and returns on the wind of morning. 编程之道去如黄鹤来如晨风。 1.2 The Tao gave birth to machine language. Machine language gave birth to the assembler. 道生机器......
如何使用VB编写组件来访问win2000 server(2006-03-25 20:26:00)
摘要:『如何使用 VB编写组件来访问win2000 server 和 exchange 2000 server』
这是一个标准LDAP路径字符串LDAP://MainServer.mydomain.com/CN=Mailbox Store (SERVER),CN=First Storage Group,CN=InformationStore,CN=MAINSERVER,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=ExServer,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=mydomain,DC=com
上面这个路径可以通过ADSI Edit查到。(在W2K Server的安装盘上有一个Supports目录,里面有一个Tools....好像是... 安装即可。)
'我所做的操作就是利用iADs以及CDO实现的'首先,在VB的工程中引入'Active DS Type Library'Microsoft CDO For Exchange Management Library'Microsoft CDO For Exchange 2000 Library
'代码实现:'定义变量,由于Active DS Type Library不能对Mailbox进行操作,所以在对MailBox操作部分只能使用Microsoft CDO For Exchange Management Library来实现
Dim objUser As IADsUser '定义用户对象Dim objContainer As IADsContainer '定义容器对象Dim objMailb......
网络传输部分中涉及到了Winsock编程(2006-03-24 22:21:00)
摘要:网络传输部分中涉及到了Winsock编程1. 简介在Windows下的各种网络编程接口中,Windows Sockets脱颖而出,这是因为indows Sockets规范是一套开放的、支持多种协议的Windows下的网络编程接口。利用 WinSock 控件可以与远程计算机建立连接,并通过用户数据文报协议 (UDP)或者传输控制协议 (TCP)进行数据交换。这两种协议都可以用来创建客户与服务器应用程序。Windows Sockets规范是建立在Beckley套接口模型上的, 这个模型现在已是TCP/IP网络的标准,所谓套接口就是指通信的一端。套接口通常和同一个域中的套接口交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。目前可以使用两种套接口,即流套接口和数据报套接口。流套接口提供了双向的,有序的,无重复并且无记录边界的数据流服务。数据报套接口支持双向的数据流,但并不保证是可靠,有序,无重复的。我们在编程中只用到了流式套接口,无序的、可靠性较低的数据报套接口不能满足系统对准确高效数据传输的要求。
2. 客户机\服务器模型一个在建立分布式应用时最常用的范例便是客户机/服务器模型。在这种方案中客户应用程序向服务器程序请求服务,服务器程序请求服务响应客户端的请求。通信的基石是套接口,所有的请求、响应工作都是由套接口完成的。
3. 套接口网络编程原理流式套接口定义了一种可靠的面向连接的服务,实现了无差错无重复的顺序数据传输。使用面向连接的套接口编程,其流程可由下图表示:
服务器Socket 客户端Socket4. Peer- to- Peer 通信程序 现在做一个具体的程序。这个程序是用VB写的,因为VB把Socket做成了控件,使用起来非常方便。这是一个点到点通信程序,功能是通信双方双工传送字符串。这个程序屏蔽了一个事实,及C\S模型,但在程序运行时必须先启动服务器。
服务器端:建立一个新的工程,把Microsoft Winsock Control 控件加进来,如下图放置控件,主要就五个:两个文本框用于显示收到数据以及输入发送数据;一个CommandBotton于发送数据;一个小图标显示是否联接(联接了就显示出来visible=True);最主要的是Winsock控件,所有的事都是它干的,而且从不显示出来(默默无闻)。下面是代码,注释的较为清楚:......
