博文
窗体控件按比例缩放(2005-10-27 21:19:00)
摘要:Option Explicit
Private FormOldWidth As Long '保存窗体的原始宽度Private FormOldHeight As Long '保存窗体的原始高度
'在调用ResizeForm前先调用本函数Public Sub ResizeInit(FormName As Form) Dim Obj As Control FormOldWidth = FormName.ScaleWidth FormOldHeight = FormName.ScaleHeight On Error Resume Next For Each Obj In FormName Obj.Tag = Obj.Left & " " & Obj.Top & " " & Obj.Width & " " & Obj.Height & " " Next Obj On Error GoTo 0End Sub
'按比例改变表单内各元件的大小,在调用ReSizeForm前先调用ReSizeInit函数Public Sub ResizeForm(FormName As Form) Dim Pos(4) As Double Dim i As Long, TempPos As Long, StartPos As Long Dim Obj As Control Dim ScaleX As Double, ScaleY As Double ScaleX = FormName.ScaleWidth / FormOldWidth '保存窗体宽度缩放比例 ScaleY = FormName.ScaleHeight / FormOldHeight '保存窗体高度缩放比例  ......
在VB中用按钮打开网页(2005-10-24 22:01:00)
摘要:'用按钮打开网页
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 LongPrivate Sub Command1_Click()ShellExecute Me.hwnd, "open", "http://www.programfan.com/club", "", "", 5End Sub......
QQwry.dat格式分析和查询IP位置的PHP及VB程序(2005-10-23 22:31:00)
摘要:QQwry.dat格式分析和查询IP位置的PHP程序
By Strongc http://strongc.51.net/d2x/ 转载时不要去掉我的名字和我的主页链接,谢谢!
以前的追捕数据库太大,而且很久没有更新了。所以我想到利用QQwry.dat这个文件查询IP所在位置,QQwry.dat在很多地方都能找到,一般看IP地址的QQ压缩包中都有。但是没有任何相关格式资料。
我分析了这个文件的格式,目前如下结论。
格式如下:
①、文件头,共8字节;②、若干条记录的结束地址+国家和区域;③、按照从小到大排列的若干条起始地址+结束地址偏移,定长,7字节;④、所有的IP都是用4字节整数记录的,并且遵照Intel次序,高位在后,低位在前;⑤、所有偏移量都是绝对偏移,就是从文件最开头计算;⑥、除了文件头用了两个4字节偏移,其余偏移量都用3字节;⑦、所有的偏移量也是低位在前,高位在后;⑧、采用了一些字符串压缩技术;
①、文件头,共8字节。 FirstStartIpOffset:4 第一个起始IP的绝对偏移 LastStartIpOffset:4 最后一个起始IP的绝对偏移
②、起始地址+结束地址偏移记录区 每条记录7字节,按照起始地址从小到大排列 StartIp: 4 起始地址,整数形式的IP EndIpOffset: 3 结束地址绝对偏移
③、结束地址+国家+区域记录区 EndIP: 4 国家+区域记录:不定长
④、国家+区域记录,有几种形式4.1 国家字符串,以 0x0 结束 区域字符串,以 0x0 结束
4.2 Flag:1 标识取值 0x1,后面没有Local记录 0x2,后面还有Local记录......
用VB编制病毒(2005-10-23 22:28:00)
摘要:谈起病毒的编制,大家都认为是很高深的东西。高手用的都是汇编语言,次一点的也是 VC或 C++。那么用 VB也能编病毒吗?答案是肯定的。只不过由于技术上的限制(比如VB不能对底层硬件进行直接的操作,不能生成独立的可执行文件等等),编出来的程序不可能象汇编或VC编出来的程序那么小巧和功能强大。但是VB编出来的病毒也不可小窥噢 ! 在谈病毒的编制以前,我们先说说什么是病毒。只有先把概念搞清楚了,才能编出 真正的病毒程序。关于病毒的标准解释,我就不说了,我想我也说不清楚,大家可以到 一些大的杀毒厂商的网站去看看,那里有比较完整、全面的定义。香水百合就自己的理 解来谈谈病毒。病毒最少应该满足以下的二个条件: 一、自启动和自恢复 只要机器染上病毒后,每次启动就会自动加载。如果无意中被你发现并杀掉后,病毒程 序会自己通过备份来恢复。自动运行一般是通过以下几种方法来实现的。 1.最简单的方法是通过自动批处理文件Autoexec.bat来加载。 从DOS 时代就开始玩电脑的人应该都很熟悉这个文件了。不为别的,就为游戏能够玩的 更加流畅,为了从640K基本内存中抠出更多的可用内存,都绞尽脑汁的来修改、配置这 个文件。现在到了Windows 时代,这个文件基本上已经成了被人遗忘的角落了,不过也 不能放过噢!因为被人遗忘,所以才要利用啊! 2.通过Win.ini文件来加载 [windows] load=expl0rer.exe run=expl0rer.exe 看到load和run 两个字段了,正常的情况应该是空的。但是病毒程序可以通过将这两段 写上病毒自身的名字来达到自动运行的目的。而且病毒将自身的名字改为expl0rer.exe ,注意了,是0而不是O噢!如果不细看,还以为运行的是资源管理器程序(explorer.ex e)呢! 3.通过system.ini文件来加载 [boot] shell=Explorer.exe server.exe 正常的情况下,shell后面跟的应该只有Explorer.exe 这一个变量。但是很多病毒程序 就是通过在后面加上自己的名字来实现自动运行。 4.通过在注册表中加载自动运行键值来实现 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run] [HKEY_LOCAL_MACH......
共享蠕虫的原理及用VB编程的实现方法(2005-10-23 22:25:00)
摘要:共享蠕虫的原理及用VB编程的实现方法 VB是一个非常“美好”的编程语言,至少我是这么认为的。原因有二:其一是,VB的英文名可以解释为Very Beautiful,这是VB的“美”;其二是,“好”字的五笔输入码是什么?"VB"是也,这就是我所谓的VB的“好”。嘻嘻,这样的解释够Cool吧! 但事物都是有两面性的,这么美的语言在有些人手里却成了搞“破坏”的工具,被用来编写病毒。最近网络上的各种病毒层出不穷,其中有相当一部分就是VB的杰作。比较有代表性的是共享蠕虫病毒。今天我们就来让它现出原形! 所谓的共享蠕虫的病毒(network.vbs),它体积不但小巧(只有1K), 而且很具有破坏性!只要被这个病毒感染了的机器,所有的硬盘就会被完全共享,并且可以在局域网和因特网中传播。下面我们先谈谈它的原理。 我们知道,把一个目录设置为共享的时候,如果在共享名后面加上$ 符号,那么这个目录将变成一个隐含的共享目录,即对方的机器上看不见这个共享目录。但是如果对方知道共享目录名,仍然是可以访问的,只要在这个目录后面加上$ 符号就可以了。 虽然对方看不见这个共享目录,但是自己是可以看见的。这样也是不行的,虽然我们已经加上$ 符号,但是我们仍然可以发现这个共享目录的图标下面已经加上了一个小手,表示这个目录已经被设置为共享。这样使用者就会知道机器被人改动过了。而共享蠕虫的高明之处就在于:不光是对方看不见这个共享目录,而且连自己也是看不见这个共享目录的,这样就可以做到神不知,鬼不觉了。当你把这个程序发过对方,对方执行完以后,对方的机器就会被全部被共享,而对方却不知道。 做到对方看不见很容易,只要在共享目录名后面加上$ 符就可以了;而共享蠕虫程序是怎么做到连自己也看不出来的呢?其实道理说出来也是很简单的,秘密就在注册表中。请看下面的例子: ①、运行Regedit命令,打开注册表; ②、找到下面的子键:  ......
SHELL 命令大全(2005-10-23 22:24:00)
摘要:
SHELL 命令大全
1.命令: rundll32.exe shell32.dll,Control_RunDLL 功能: 显示控制面板2.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1 功能: 显示“控制面板->辅助选项->键盘”选项视窗3.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2 功能: 显示“控制面板->辅助选项->声音”选项视窗4.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3 功能: 显示“控制面板->辅助选项->显示”选项视窗5.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4 功能: 显示“控制面板->辅助选项->鼠标”选项视窗6.命令: rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5 功能: 显示“控制面板->辅助选项->常规”选项视窗7.命令: rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl @1 功能: 执行“控制面板->添加新硬件”向导。8.命令: rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL AddPrinter 功能: 执行“控制面板->添加新打印机”向导。9.命令: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,1 功能: 显示 “控制面板->添加/删除程序->安装/卸载” 面板。10.命令: rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,2 功能: 显示 “控制面板->添加/删除程序->安装Windows” 面板。11.命令: rundll32.exe shell32.dll,Control_RunDLL a......
将1,2,3,4组合成互不相同且不重复的三位数(2005-10-23 21:11:00)
摘要:Private Sub Command1_Click()b = "1234"s = 1For i = 1 To 4 a1 = Mid(b, i, 1) b1 = Replace(b, a1, "") For j = 1 To 3 a2 = Mid(b1, j, 1) b2 = Replace(b1, a2, "") For k = 1 To 2 a3 = Mid(b2, k, 1) Print s, a1 & a2 & a3 s = s + 1 Next NextNextEnd Sub......
更改无标题窗体的大小(2005-10-23 01:35:00)
摘要:'添加一个Label控件,作为右下角的标记'Tcmcz制作
Private Sub Form_Load() With Label1 .Caption = "" .BackColor = RGB(0, 0, 255) '如觉得右下角这个点不好看,可改为:.BackStyle = 0 .Height = 100 .Width = 100 .Left = Me.ScaleWidth - 100 .Top = Me.ScaleHeight - 100 .MousePointer = 8 End WithEnd Sub
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Static OldX, OldY As Single OldX = X: OldY = YEnd Sub
Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) PianyiX = X - OldX: PianyiY = Y - OldY Label1.Left = Label1.Left + PianyiX Label1.T......
一组小技巧(2005-10-10 13:17:00)
摘要:路径问题
很多程序员在打开文件、调用程序时喜欢使用绝对文件路径,结果在另一台计算机上运行时便会遇到路径不对或需要重新拷贝到该目录的问题。其实,只要使用相对路径,就完全可以避免这个问题。在Windows下,某个程序一旦运行,除非特别指定了工作目录,一般该程序文件所在的目录就是工作目录,其他目录可以用工作目录为参照系。在编程中"App.Path"即为当前工作目录。另外,用安装程序向导制作安装盘时,只要在步骤"文件小结"中添加某文件时指定"文件详细资料"的路径即可安装该文件到指定的目录下。
生成透明窗体
利用API函数可做出透明窗体。以下为一种方法:
Me.AutoRedraw = True
hBitmap = CreateCompatibleBitmap(Me.hdc, 0, 0)
SelectObject Me.hdc, hBitmap
调用Bitblt API函数
在编程中我们经常遇到需要拷贝图形的问题,一般利用API函数Bitblt或Stretchblt(后者可缩放).
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeigh......
VB_小技巧(2005-10-10 00:20:00)
摘要:获取X字符串包含字母“B”的数量,最简单方法=========================== UBound(Split(x, "B"))剪贴板相关=========================================================== '全选 Private Sub mnuSelectAll_Click() RichTextBox1.SelStart = 0 RichTextBox1.SelLength = Len(RichTextBox1.Text) End Sub '粘贴 Private Sub mnuPaste_Click() RichTextBox1.SelText = Clipboard.GetText End Sub '查找 Private Sub mnuFind_Click() sFind = InputBox("请输入要查找的字、词:", "查找内容", sFind) RichTextBox1.Find sFind End Sub '继续查找 Private Sub mnuFindOn_Click() RichTextBox1.SelStart = RichTextBox1.SelStart + RichTextBox1.SelLength + 1 RichTextBox1.Find sFind, , Len(RichTextBox1) End Sub TextBox操作==========================================================1、限制只能输入数字参考下列程序:Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii < 48 Or KeyAscii > 57 ThenKeyAscii = 0End IfEnd Sub2、屏蔽特定字符Private Sub Text1_KeyPress(KeyAscii As Integer) Dim sTemplate As String s......
