﻿<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沙罗树下]]></title> 
<link>http://www.xsal.net/index.php</link> 
<description><![CDATA[Under the SAL-Tree]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沙罗树下]]></copyright>
<item>
<link>http://www.xsal.net/read.php/483.htm</link>
<title><![CDATA[一个VB整蛊小程序]]></title> 
<author>鬼谷军师 &lt;cntale@gmail.com&gt;</author>
<category><![CDATA[自言自语[文章]]]></category>
<pubDate>Sun, 16 Dec 2007 10:43:33 +0000</pubDate> 
<guid>http://www.xsal.net/read.php/483.htm</guid> 
<description>
<![CDATA[ 
	这个程序功能很简单，就是打开之后窗口最大化，上面有一句话，可以自己写咯。我写的是：你喜欢我么？这句话下面有两个按钮，一个是“喜欢”，一个是“不喜欢”。<br/>程序要实现的功能就是点击“喜欢”弹出对话框：“嘿嘿，你说喜欢俺咯，啦啦啦~~”；如果要点“不喜欢”的话，那个按钮会跑一边儿去，让你点不到。同样，程序屏蔽了tab、win、alt+F4等热键，只能点“喜欢”的，除非按下“ctrl+alt+del”组合键调出任务管理器结束进程。本来可以屏蔽所有按键的，不过有些小题大做了，实现起来也很麻烦，就暂且如此吧。<br/>打开vb6.0，新建一个工程，添加一个标签，标签的caption属性自己写上想说的话。添加两个按钮：command1和command2，command2的tabstop设置为false。设置好form1的属性，borderstyle为0-none，windowstat为2-maximized。<br/>大体上就是这么简单，废话少说，代码如下：<br/><br/>添加一个模块module1.bas（屏蔽系统热键的）：<br/>Option Explicit<br/><br/>Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)<br/>Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer<br/>Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long<br/>Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long<br/>Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long<br/>Public Const HC_ACTION = 0<br/>Public Const WM_KEYDOWN = &H100<br/>Public Const WM_KEYUP = &H101<br/>Public Const WM_SYSKEYDOWN = &H104<br/>Public Const WM_SYSKEYUP = &H105<br/>Public Const VK_TAB = &H9<br/>Public Const VK_CONTROL = &H11<br/>Public Const VK_ESCAPE = &H1B<br/><br/>Public Const WH_KEYBOARD_LL = 13<br/>Public Const LLKHF_ALTDOWN = &H20<br/><br/>Public Type KBDLLHOOKSTRUCT<br/>&nbsp;&nbsp;&nbsp;&nbsp;vkCode As Long<br/>&nbsp;&nbsp;&nbsp;&nbsp;scanCode As Long<br/>&nbsp;&nbsp;&nbsp;&nbsp;flags As Long<br/>&nbsp;&nbsp;&nbsp;&nbsp;time As Long<br/>&nbsp;&nbsp;&nbsp;&nbsp;dwExtraInfo As Long<br/>End Type<br/><br/>Dim p As KBDLLHOOKSTRUCT<br/><br/>Public Function LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long<br/>&nbsp;&nbsp; Dim fEatKeystroke As Boolean<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp; If (nCode = HC_ACTION) Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_KEYUP Or wParam = WM_SYSKEYUP Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CopyMemory p, ByVal lParam, Len(p)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fEatKeystroke = _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((p.vkCode = VK_TAB) And ((p.flags And LLKHF_ALTDOWN) <> 0)) Or _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((p.vkCode = VK_ESCAPE) And ((p.flags And LLKHF_ALTDOWN) <> 0)) Or _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((p.vkCode = VK_ESCAPE) And ((GetKeyState(VK_CONTROL) And &H8000) <> 0)) Or _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((p.vkCode = 91) Or (p.vkCode = 92) Or (p.vkCode = 93)) '左右Win 和徽标键<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;End If<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;If fEatKeystroke Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LowLevelKeyboardProc = -1<br/>&nbsp;&nbsp;&nbsp;&nbsp;Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LowLevelKeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)<br/>&nbsp;&nbsp;&nbsp;&nbsp;End If<br/>End Function<br/><br/>添加工程代码如下：<br/>Option Explicit<br/>Dim hhkLowLevelKybd As Long<br/><br/><br/>Private Sub Form_Unload(Cancel As Integer)<br/>If hhkLowLevelKybd <> 0 Then UnhookWindowsHookEx hhkLowLevelKybd<br/>End Sub<br/><br/>Private Sub Command1_Click()<br/>Dim ddmm As String<br/>ddmm = MsgBox("嘿嘿，你说喜欢俺咯，啦啦啦~~", vbInformation, "好高兴哦")<br/><br/>UnhookWindowsHookEx hhkLowLevelKybd<br/>hhkLowLevelKybd = 0<br/>Unload Me<br/>End<br/>End Sub<br/><br/>Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)<br/> Dim a As Integer<br/> Dim b As Integer<br/> a = Int(Rnd() * 20000)<br/> b = Int(Rnd() * 16000)<br/> Command2.Top = a + 3 * Rnd() '#随机数<br/> Command2.Left = b + Rnd() '#随机数<br/> If Command2.Left < 0 Then Command2.Left = Rnd() + Command2.Width<br/>&nbsp;&nbsp;If Command2.Top < 0 Then Command2.Top = Rnd() + Command2.Height<br/> If Command2.Left > Me.Width - Command2.Width Then Command2.Left = 10 * Rnd()<br/> If Command2.Top > Me.Height - Command2.Height Then Command2.Top = 10 * Rnd()<br/>End Sub<br/><br/>Private Sub Form_Load()<br/>hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)<br/><br/>Form1.Width = Screen.Width<br/>Form1.Height = Screen.Height<br/>Command1.Left = Screen.Width / 2 - Command1.Width - 450<br/>Command2.Left = Screen.Width / 2 + 450<br/>Label1.Left = (Screen.Width - Label1.Width) / 2<br/>Image1.Left = (Screen.Width - Image1.Width) / 2<br/>End Sub<br/><br/>好了，大体上就是这个样子，具体的美化和功能添加可以再补充咯，写完收工。生成可执行文件，等mm来了发给她~~
]]>
</description>
</item><item>
<link>http://www.xsal.net/read.php/483.htm#blogcomment53353</link>
<title><![CDATA[[评论] 一个VB整蛊小程序]]></title> 
<author>婉婉 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Tue, 18 Dec 2007 03:34:50 +0000</pubDate> 
<guid>http://www.xsal.net/read.php/483.htm#blogcomment53353</guid> 
<description>
<![CDATA[ 
	乱七八糟的。。。。啥也看不懂<br/><br/>这个小东东还算好玩，不过够损滴，看在你忙了一天的份上，我还是要奖励你一朵大红花
]]>
</description>
</item>
</channel>
</rss>