【你共享小弟我给分】版内活动:挖掘VB潜能,征集变态应用

【你共享我给分】版内活动:挖掘VB潜能,征集变态应用挖掘VB潜能,请把你认为经典的、变态的代码贴上来。让大家共

【你共享我给分】版内活动:挖掘VB潜能,征集变态应用
挖掘VB潜能,请把你认为经典的、变态的代码贴上来。
让大家共同研究、共同进步,也让更多的人看看VB的厉害。
严重注意:仅限VB源码,可内嵌机器码。

本帖300分只给大家公认的最杰出的两个人,分配比例待定。
其他经典代码可获得100-1000不等的可用分。

贴代码请注明版权或来源,谢谢。

[解决办法]
哇哈哈!!!我来占沙发~~~

发一个简易ListView类,希望可以代替那一堆OCX!

目前功能比较单一,我会慢慢完善它的.

链接:(10-14楼)

http://topic.csdn.net/u/20080529/00/3a4031d5-6d1b-4d31-bb3f-30a7c4473dd8.html

不敢说原创,因为这些都是MSDN或网上资料里能查到的,我只是将其组合一下,纯体力活.....
[解决办法]
占个狙击位......

[解决办法]

当了好多年工人
都是东拼西凑的
没原创过
[解决办法]
先頂起,再學習
[解决办法]
贴个上次C代码的提权函数,这次改成VB的了比较爽一个API

Option Explicit
'提权相关常数
Public Const SE_MIN_WELL_KNOWN_PRIVILEGE = 2
Public Const SE_CREATE_TOKEN_PRIVILEGE = 2
Public Const SE_ASSIGNPRIMARYTOKEN_PRIVILEGE = 3
Public Const SE_LOCK_MEMORY_PRIVILEGE = 4
Public Const SE_INCREASE_QUOTA_PRIVILEGE = 5

' end_wdm
'
' Unsolicited Input is obsolete and unused.
'

Public Const SE_UNSOLICITED_INPUT_PRIVILEGE = 6

' begin_wdm
Public Const SE_MACHINE_ACCOUNT_PRIVILEGE = 6
Public Const SE_TCB_PRIVILEGE = 7
Public Const SE_SECURITY_PRIVILEGE = 8
Public Const SE_TAKE_OWNERSHIP_PRIVILEGE = 9
Public Const SE_LOAD_DRIVER_PRIVILEGE = 10
Public Const SE_SYSTEM_PROFILE_PRIVILEGE = 11
Public Const SE_SYSTEMTIME_PRIVILEGE = 12
Public Const SE_PROF_SINGLE_PROCESS_PRIVILEGE = 13
Public Const SE_INC_BASE_PRIORITY_PRIVILEGE = 14
Public Const SE_CREATE_PAGEFILE_PRIVILEGE = 15
Public Const SE_CREATE_PERMANENT_PRIVILEGE = 16
Public Const SE_BACKUP_PRIVILEGE = 17
Public Const SE_RESTORE_PRIVILEGE = 18
Public Const SE_SHUTDOWN_PRIVILEGE = 19
Public Const SE_DEBUG_PRIVILEGE = 20
Public Const SE_AUDIT_PRIVILEGE = 21
Public Const SE_SYSTEM_ENVIRONMENT_PRIVILEGE = 22
Public Const SE_CHANGE_NOTIFY_PRIVILEGE = 23
Public Const SE_REMOTE_SHUTDOWN_PRIVILEGE = 24
Public Const SE_UNDOCK_PRIVILEGE = 25
Public Const SE_SYNC_AGENT_PRIVILEGE = 26
Public Const SE_ENABLE_DELEGATION_PRIVILEGE = 27
Public Const SE_MANAGE_VOLUME_PRIVILEGE = 28
Public Const SE_IMPERSONATE_PRIVILEGE = 29
Public Const SE_CREATE_GLOBAL_PRIVILEGE = 30
Public Const SE_MAX_WELL_KNOWN_PRIVILEGE = SE_CREATE_GLOBAL_PRIVILEGE
Public Const STATUS_NO_TOKEN = &HC000007C
Private Declare Function RtlAdjustPrivilege Lib "ntdll.dll" (ByVal Privilege As Long, ByVal Enable As Boolean, ByVal Client As Boolean, WasEnabled As Long) As Long

Public Function EnablePrivilege(ByVal Privilege As Long, Enable As Boolean) As Boolean
Dim ntStatus As Long
Dim WasEnabled As Long
ntStatus = RtlAdjustPrivilege(Privilege, Enable, True, WasEnabled)
If ntStatus = STATUS_NO_TOKEN Then
ntStatus = RtlAdjustPrivilege(Privilege, Enable, False, WasEnabled)
End If
If ntStatus = 0 Then
EnablePrivilege = True
Else
EnablePrivilege = False
End If
End Function

[解决办法]
强贴留名~
[解决办法]
那我发个管道重定向的代码,上次花200分买来的哈哈。

管道重定向将stdin/stdout重定向到程序定义的输入输出流中,这样就可以截获多数控制台应用程序的输出,也可以向其输入内容。

VB code
'新建工程,添加两个文本框txtMessage与txtCommand.'前者的MultLine=True,用于显示命令行程序的回显;'后者用于输入命令.Option ExplicitPrivate Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As LongPrivate Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongPrivate Declare Function CreatePipe Lib "kernel32" (phReadPipe As Long, phWritePipe As Long, lpPipeAttributes As Any, ByVal nSize As Long) As LongPrivate Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As LongPrivate Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As LongPrivate Declare Function SetHandleInformation Lib "kernel32" (ByVal hObject As Long, ByVal dwMask As Long, ByVal dwFlags As Long) As LongPrivate Declare Function SetNamedPipeHandleState Lib "kernel32" (ByVal hNamedPipe As Long, lpMode As Long, lpMaxCollectionCount As Long, lpCollectDataTimeout As Long) As LongPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Private Type STARTUPINFO    cb As Long    lpReserved As String    lpDesktop As String    lpTitle As String    dwX As Long    dwY As Long    dwXSize As Long    dwYSize As Long    dwXCountChars As Long    dwYCountChars As Long    dwFillAttribute As Long    dwFlags As Long    wShowWindow As Integer    cbReserved2 As Integer    lpReserved2 As Long    hStdInput As Long    hStdOutput As Long    hStdError As LongEnd TypePrivate Type PROCESS_INFORMATION    hProcess As Long    hThread As Long    dwProcessId As Long    dwThreadId As LongEnd TypePrivate Const STARTF_USESTDHANDLES = &H100Private Const HANDLE_FLAG_INHERIT = 1Private Const DETACHED_PROCESS = &H8Private Const PIPE_NOWAIT = &H1Dim hReadPipe As LongDim hWritePipe As LongDim hChildReadPipe As LongDim hChildWritePipe As Long'上面是公共部分.Private Sub Form_Load()    txtCommand.Text = ""    txtMessage.Text = ""    txtMessage.Locked = True        ' 创建管道    CreatePipe hReadPipe, hWritePipe, ByVal 0, ByVal 0    CreatePipe hChildReadPipe, hChildWritePipe, ByVal 0, ByVal 0    SetHandleInformation hWritePipe, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT    SetHandleInformation hChildReadPipe, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT    Dim dwMode As Long    dwMode = PIPE_NOWAIT    SetNamedPipeHandleState hReadPipe, dwMode, ByVal 0, ByVal 0        ' 创建CMD进程    Dim stProcessInfo As PROCESS_INFORMATION    Dim stStartInfo As STARTUPINFO    stStartInfo.cb = LenB(stStartInfo)    stStartInfo.dwFlags = STARTF_USESTDHANDLES    stStartInfo.hStdError = hWritePipe    stStartInfo.hStdOutput = hWritePipe    stStartInfo.hStdInput = hChildReadPipe        Dim strExe As String    strExe = "cmd"    If False = CreateProcess(ByVal vbNullString, ByVal strExe, ByVal 0, ByVal 0, ByVal True, ByVal DETACHED_PROCESS, ByVal 0, ByVal vbNullString, stStartInfo, stProcessInfo) Then        MsgBox "启动进程失败!"        Exit Sub    Else        CloseHandle stProcessInfo.hThread        CloseHandle stProcessInfo.hProcess    End If    ReadFromChildPipeEnd SubPrivate Sub Form_Unload(Cancel As Integer)    CloseHandle hReadPipe    CloseHandle hWritePipe    CloseHandle hChildReadPipe    CloseHandle hChildWritePipeEnd SubPrivate Sub txtCommand_KeyPress(KeyAscii As Integer)    If KeyAscii = vbKeyReturn Then        Dim nWrite As Long        Dim strBuffer As String        strBuffer = txtCommand.Text & vbCrLf        Dim bResult As Boolean        bResult = WriteFile(ByVal hChildWritePipe, ByVal strBuffer, ByVal Len(strBuffer), nWrite, ByVal 0)        If bResult = True Then            ReadFromChildPipe        Else            MsgBox "写入失败."        End If        txtCommand.Text = ""    End IfEnd SubPrivate Sub ReadFromChildPipe()    Dim nRead As Long    Dim strBuffer As String    Dim nBufferLen As Long    nRead = -1    Do While nRead <> 0        nBufferLen = 65536        strBuffer = String(nBufferLen, Chr(0))        Sleep 10        ReadFile hReadPipe, ByVal strBuffer, ByVal nBufferLen, nRead, ByVal 0        Sleep 10        If nRead <> 0 Then            strBuffer = Left(strBuffer, nRead)            txtMessage.Text = txtMessage.Text & strBuffer            txtMessage.SelStart = Len(txtMessage.Text)        End If    LoopEnd Sub 


[解决办法]
转一个VB结合汇编提高VB效率的:比 SuperCopyMemory 还快的 IcyCopyMemory!

VB code
' IcyCopyMemory [code by iceboy] - 40% faster than RtlMoveMemory' Tested on WinXP SP3 / E2160 oc 3Ghz / DDR2 800 - 2.79GB/s' MSN: icediy#non-spam#hotmail#dot#com / QQ: 41785691' API DeclarationPrivate Declare Function CallWindowProcW Lib "user32" (ByRef lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Declare Function VirtualProtect Lib "kernel32" (ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flNewProtect As Long, ByRef lpflOldProtect As Long) As LongPrivate Declare Sub RtlMoveMemory Lib "ntdll" (ByVal pDst As Long, ByVal pSrc As Long, ByVal dwLength As Long)Dim Asm(37) As Long, AsmStub(1) As Long, AsmPtr As Long, IDEMode As LongPrivate Const PAGE_EXECUTE_READWRITE As Long = &H40Private Function RetLng(ByVal dwAny As Long) As Long    RetLng = dwAnyEnd FunctionPrivate Sub InitAsm()    Dim FuncAddr As Long, OldProtect As Long    Asm(0) = &H8B575651: Asm(1) = &H8B10247C: Asm(2) = &H8B142474: Asm(3) = &H5118244C    Asm(4) = &HF33FE183: Asm(5) = &HE18359A4: Asm(6) = &H6850FC0: Asm(7) = &H5F000000    Asm(8) = &HCC2595E: Asm(9) = &H3E9C100: Asm(10) = &H8DCE348D: Asm(11) = &HD9F7CF3C    Asm(12) = &HCE84180F: Asm(13) = &H200&: Asm(14) = &HCE046F0F: Asm(15) = &HCE4C6F0F    Asm(16) = &H4E70F08: Asm(17) = &H4CE70FCF: Asm(18) = &H6F0F08CF: Asm(19) = &HF10CE44    Asm(20) = &H18CE4C6F: Asm(21) = &HCF44E70F: Asm(22) = &H4CE70F10: Asm(23) = &H6F0F18CF    Asm(24) = &HF20CE44: Asm(25) = &H28CE4C6F: Asm(26) = &HCF44E70F: Asm(27) = &H4CE70F20    Asm(28) = &H6F0F28CF: Asm(29) = &HF30CE44: Asm(30) = &H38CE4C6F: Asm(31) = &HCF44E70F    Asm(32) = &H4CE70F30: Asm(33) = &HC18338CF: Asm(34) = &HFA57508: Asm(35) = &H770FF8AE    Asm(36) = &HC2595E5F: Asm(37) = &HC&    AsmStub(0) = &HFF505A58: AsmStub(1) = &HE2&    AsmPtr = VarPtr(Asm(0))    FuncAddr = RetLng(AddressOf IcyCopyMemory)    VirtualProtect FuncAddr, 5, PAGE_EXECUTE_READWRITE, OldProtect    RtlMoveMemory FuncAddr, VarPtr(&HE9), 1    RtlMoveMemory FuncAddr + 1, VarPtr(AsmPtr - (FuncAddr + 5)), 4    VirtualProtect FuncAddr, 5, OldProtect, OldProtectEnd SubPrivate Function SetIDE() As Boolean    IDEMode = -1    SetIDE = TrueEnd FunctionPublic Sub IcyCopyMemory(ByVal pDst As Long, ByVal pSrc As Long, ByVal dwLength As Long)    If AsmPtr = 0 Then InitAsm    Debug.Assert SetIDE    If IDEMode = 0 Then        IcyCopyMemory pDst, pSrc, dwLength    Else        CallWindowProcW AsmStub(0), AsmPtr, pDst, pSrc, dwLength    End IfEnd Sub
[解决办法]
看大家发的代码都是API方面的应用,我就不发哪方面的了
我发一个超简单的VB小代码吧!
long to byte


VB code
Option ExplicitPrivate Type byt    b1 As Byte    b2 As Byte    b3 As Byte    b4 As ByteEnd TypePrivate Type itg    l As LongEnd TypePrivate Sub Form_Load()Dim bb As bytDim i As itgi.l = 2345LSet bb = iDebug.Print bb.b1, bb.b2, bb.b3, bb.b4End Sub
[解决办法]
进来学习

[解决办法]
收藏 ,都是vb强人
[解决办法]
从二进制中加载图片!
VB code
Public Function LoadFile(ByVal FileName As String) As Byte()    Dim FileNo As Integer, b() As Byte    On Error GoTo Err_Init    If Dir(FileName, vbNormal Or vbArchive) = "" Then        Exit Function    End If    FileNo = FreeFile    Open FileName For Binary Access Read As #FileNo    ReDim b(0 To LOF(FileNo) - 1)    Get #FileNo, , b    Close #FileNo    LoadFile = b    Exit FunctionErr_Init:    MsgBox Err.Number & " - " & Err.DescriptionEnd FunctionPublic Function PictureFromByteStream(b() As Byte) As IPicture    Dim LowerBound As Long    Dim ByteCount  As Long    Dim hMem  As Long    Dim lpMem  As Long    Dim IID_IPicture(15)    Dim istm As stdole.IUnknown    On Error GoTo Err_Init    If UBound(b, 1) < 0 Then        Exit Function    End If        LowerBound = LBound(b)    ByteCount = (UBound(b) - LowerBound) + 1    hMem = GlobalAlloc(&H2, ByteCount)    If hMem <> 0 Then        lpMem = GlobalLock(hMem)        If lpMem <> 0 Then            MoveMemory ByVal lpMem, b(LowerBound), ByteCount            Call GlobalUnlock(hMem)            If CreateStreamOnHGlobal(hMem, 1, istm) = 0 Then                If CLSIDFromString(StrPtr("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"), IID_IPicture(0)) = 0 Then                  Call OleLoadPicture(ByVal ObjPtr(istm), ByteCount, 0, IID_IPicture(0), PictureFromByteStream)                End If            End If        End If    End If        Exit Function    Err_Init:    If Err.Number = 9 Then        'Uninitialized array        MsgBox "You must pass a non-empty byte array to this function!"    Else        MsgBox Err.Number & " - " & Err.Description    End IfEnd Function 


[解决办法]
超强,好深奥哦,佩服一下
[解决办法]
up !
[解决办法]
你们都发API的,我发一个简单的,也是自己的:
前段时间有人说PictureBox控件不能显示GIF动画,主要是动画不能动。我说,可以动!

PictureBox控件显示GIF动画

VB code
'在PictureBox控件中显示GIF动画(图片),凡有句柄hwnd的窗体控件均可以'在窗体Form1上添加2个命令按钮Command1,Command2和1个图片框控件Picture1Option Explicit'调用运动图像类型库Quartz.dll,在c:\windows\system32目录下Private pMC As FilgraphManager '定义pMC为FilgraphManager对象Private pVW As IVideoWindow '定义pVW为IVideoWindow对象Private Sub Command1_Click()                 On Error Resume Next        Set pMC = New FilgraphManager        pMC.Stop        pMC.RenderFile ""                '加载GIF文件         On Error GoTo Lhandle        pMC.RenderFile "E:\offline.gif" '加载GIF动画(图片)                 On Error Resume Next        Set pVW = pMC        pVW.WindowStyle = CLng(&H6000000)                '限定动画在Picture1的大小中         pVW.Left = 0: pVW.Top = 0        pVW.Width = Picture1.ScaleWidth        pVW.Height = Picture1.ScaleHeight                pVW.Owner = Picture1.hWnd '在Picture1中显示         pVW.MessageDrain = Picture1.hWnd '此行非常重要,用来定义动画的右键菜单所必须         pMC.Run                  Exit SubLhandle:        MsgBox ("加载文件错误!")End SubPrivate Sub Command2_Click()        pMC.Stop        Set pVW = Nothing        Set pMC = NothingEnd SubPrivate Sub Form_Load()        Me.ScaleMode = 3        Picture1.ScaleMode = 3End Sub
[解决办法]

抗议!
上面的代码都是正常得不能再正常的应用,没有一个[b]变态[/b]的!

应改加一个规矩:贴正常代码的要受罚!

[解决办法]
写菜单类时用到的例程,用各种风格画边框和填充,拿来干别的也很通用。尤其是支持非矩形渐变色 Alpha 填充,可以实现很漂亮的效果。

VB code
'[作者 Soyokaze]Private Enum BorderStyle '边框风格    BS_NONE = 0    BS_RAISED = BDR_RAISEDINNER    BS_SUNKEN = BDR_SUNKENINNER    BS_ETCHED = EDGE_ETCHED    BS_BUMP = EDGE_BUMP    BS_SOLID = &H11    BS_DASH = &H12    BS_DOT = &H13    BS_ROUNDRECT = &H20End EnumPrivate Enum FillStyle '背景填充风格    FS_NONE = 0    FS_SOLIDCOLOR = &H1    FS_GRADIENT_H = &H2    FS_GRADIENT_V = &H4    FS_MIRROREFFECT = &H20End Enum'绘制边框与填充Private Function StyleDrawFill(ByVal hDCDst As Long, _                               tRectDst As RECT, _                               ByVal eBorder As BorderStyle, _                               ByVal eFill As FillStyle, _                               ByVal crBorder As Long, _                               ByVal crFill1 As Long, _                               Optional ByVal crFill2 As Long, _                               Optional ByVal byFillAlpha As Byte = 255) As Boolean    Dim hDCSrc As Long, hDCMask As Long        Dim hBmpSrc As Long, hBmpOld1 As Long    Dim hBmpMask As Long, hBmpOld2 As Long    Dim hPen As Long, hPenOld As Long    Dim hBrush As Long, hBrushOld As Long        Dim tRect As RECT    Dim tPoint(2) As POINTAPI    Dim tBlend As BLENDFUNCTION    Dim lpBlend As Long    Dim tVertex(3) As TRIVERTEX    Dim tGRect(1) As GRADIENT_RECT        Dim nBorderWidth As Long        '边框    Select Case eBorder    Case BS_NONE        Case BS_RAISED, BS_SUNKEN        Call DrawEdge(hDCDst, tRectDst, eBorder, BF_RECT)    Case BS_ETCHED, BS_BUMP        Call DrawEdge(hDCDst, tRectDst, eBorder, BF_RECT)        nBorderWidth = nBorderWidth + 1    Case Else        hPen = CreatePen(Choose(eBorder And &HF, PS_SOLID, PS_DASH, PS_DOT), 1, crBorder)        hBrush = GetStockObject(NULL_BRUSH)        hPenOld = SelectObject(hDCDst, hPen)        hBrushOld = SelectObject(hDCDst, hBrush)        If CBool(eBorder And BS_ROUNDRECT) Then            Call RoundRect(hDCDst, tRectDst.Left, tRectDst.Top, tRectDst.Right, tRectDst.Bottom, 6, 6)        Else            Call Rectangle(hDCDst, tRectDst.Left, tRectDst.Top, tRectDst.Right, tRectDst.Bottom)        End If        Call DeleteObject(SelectObject(hDCDst, hPenOld))        Call SelectObject(hDCDst, hBrushOld)    End Select    nBorderWidth = nBorderWidth + 1 


[解决办法]
不管怎样,偶先收藏再说……………………
[解决办法]
用MSXML2.FreeThreadDomDocument 的 OnReadyStateChange 事件来做多线程算不算变态?
代码找不到了……


[解决办法]
好贴,记录下!
[解决办法]
[Quote=引用:]
好贴,记录下!
[/Quote]

现在这年头,有Vb.net了,咋还要用VB呢》
[解决办法]
俺贴点逻辑方面的

VB中解决两个大数相与(and)

VB code
Option ExplicitPrivate Sub Command1_Click()    Debug.Print dec2hex("12379814471884843981")        Debug.Print hex2dec("ABCDEFABCDEFABCD")        Debug.Print hex2dec(myand(dec2hex("429496729742949672974294967297"), dec2hex("429442949672974294967297967296")))End SubPrivate Function myand(ByVal hexa As String, ByVal hexb As String) As String    Dim m As Long    Dim n As Long    Dim a As Byte    Dim b As Byte    Dim c As Byte    Dim r As String        m = Len(hexa)    n = Len(hexb)        If m < n Then        hexa = String(n - m, "0") & hexa        m = n    End If    If n < m Then        hexb = String(m - n, "0") & hexb        n = m    End If        Dim l As Long    l = Len(hexa)        Dim i As Long    For i = 1 To l        a = Val("&h" & Mid(hexa, i, 1))        b = Val("&h" & Mid(hexb, i, 1))        c = a And b                r = r & Trim(Hex$(c))    Next i        myand = r            End FunctionPrivate Function dec2hex(ByVal dec As String) As String    Dim n(1 To 100) As Byte    Dim c As Byte        Dim l As Long    Dim i As Long    Dim j As Long        l = Len(dec)        For i = 1 To l        c = Val(Mid(dec, i, 1))        For j = 100 To 2 Step -1            n(j) = n(j) * 10        Next j        n(100) = n(100) + c                For j = 100 To 2 Step -1            If n(j) > 15 Then                n(j - 1) = n(j - 1) + n(j) \ 16                n(j) = n(j) Mod 16            End If        Next j    Next i        Dim s As String    For i = 1 To 100        If n(i) > 0 Then            For j = i To 100                s = s & Trim(Hex$(n(j)))            Next j            dec2hex = s            Exit Function        End If    Next iEnd FunctionPrivate Function hex2dec(ByVal hexx As String) As String    Dim n(1 To 100) As Byte    Dim c As Byte        Dim l As Long    Dim i As Long    Dim j As Long        l = Len(hexx)        For i = 1 To l        c = Val("&h" & Mid(hexx, i, 1))        For j = 100 To 2 Step -1            n(j) = n(j) * 16        Next j        n(100) = n(100) + c                For j = 100 To 2 Step -1            If n(j) > 9 Then                n(j - 1) = n(j - 1) + n(j) \ 10                n(j) = n(j) Mod 10            End If        Next j    Next i        Dim s As String    For i = 1 To 100        If n(i) > 0 Then            For j = i To 100                s = s & Trim(CStr(n(j)))            Next j            hex2dec = s            Exit Function        End If    Next iEnd Function
[解决办法]
强VB高人....
....
[解决办法]
VB code
MessageBox "Hello World!"
[解决办法]
赞,赞 赞!!!
[解决办法]
看看我写的

用ActiveReport1.1解决2000,XP下无法使用自定义纸张的程序



ActiveReport数据源设置和自定义纸张程序,放置在打印按钮的程序中:
Set rs3=New Recordset
rs3.CursorLocation=adUseClient
rs3.Open "select * from back_produce where 单据编号="&Val(Text1),conn, adOpenKeyset,adLockPessimistic
If rs3.RecordCount=0 Then
Me.MousePointer=0
Exit Sub
End If
With ActiveReport4
Set .DataControl1.Recordset=rs3
.Printer.DeviceName=""'清空打印设置
.Printer.PaperSize=256'设置纸张为自定义
.Printer.PaperHeight=14*567'设置纸张高度
.Printer.PaperWidth=24.1*567'设置纸张宽度
.Printer.Orientation=ddOPortrait'设置纸张走向[现在的设置是横向]
.Show 1'设置显示方式,置顶
End With

在Private Sub ActiveReport_DataInitialize()中添加的程序
On Error Resume Next'设置错误陷阱
If ActiveReport4.DataControl1.Recordset.EOF Then Exit Sub
With ActiveReport4
.Field2.DataSource="DataControl1"'设置控件的数据源
.Field2.DataField="商品编号"'设置控件的数据字段
.Field3.DataSource="DataControl1"
.Field3.DataField="商品全名"
.Field4.DataSource="DataControl1"
.Field4.DataField="单位"
.Field5.DataSource="DataControl1"
.Field5.DataField="数量"
.Field6.DataSource="DataControl1"
.Field6.DataField="单价"
.Field7.DataSource="DataControl1"
.Field7.DataField="金额"
End With
Err.Clear'清除错误
Printer.DeviceName ="Canon BJC-265SP"'设置打印机默认项为不存在的打印类型
注:在Private Sub ActiveReport_DataInitialize()中添加的程序是在报表控件中选择的,在选项中有此一项。
[解决办法]
好贴。
[解决办法]
LZ这个提意真是好,把大家的积极性都调出来了,,多搞点这种贴子。
大家顶住贴,过二天我贴个纯VB KILL Rising2008的代码出来。

昨晚已经在Win 2000 Server测试通过,今天回去在WIN XP上测试一下
然后整理一下代码贴出来

虽然没有过主动防御,但既使被它抓住了,一样让瑞星崩掉,而且没有任何
系统提示的错误信息,只是在用户下次使用瑞星时,瑞星将只能调用出个CMD
然后就退出,至于里面瑞星写了什么我也不知道。
[解决办法]

引用楼主 Modest 的帖子:
挖掘VB潜能,请把你认为经典的、变态的代码贴上来。
让大家共同研究、共同进步,也让更多的人看看VB的厉害。
严重注意:仅限VB源码,可内嵌机器码。

本帖300分只给大家公认的最杰出的两个人,分配比例待定。
其他经典代码可获得100-1000不等的可用分。

贴代码请注明版权或来源,谢谢。

[解决办法]
好贴!
林子大了,总有个别S鸟,不要因他们影响心情啊。
[解决办法]
不错,支持!
[解决办法]
赫赫,现在没见到入法眼的,阿弥陀法
[解决办法]
好地方,关注,学习。
[解决办法]
这个帖子强!!!我进来学习下!!!!
[解决办法]
@@
[解决办法]
vb程序镶入汇编语言实现一些vb不太好实现的功能是不是可以的分?
[解决办法]
这样算不算BT呢
VB code
Dim 十六进制字符集() As StringDim 八进制字符集() As StringDim 二进制字符集() As StringFunction N进制to十进制(n进制字符 As String, 字符集() As String, Optional 区分大小写 As Boolean = False) As Variant   Dim 进制数 As Long   Dim X As Long   Dim TempStr As String   Dim ReturnLong As Long   Dim NowData As Long   Dim RetDate As Long   进制数 = UBound(字符集) - LBound(字符集) + 1      If 区分大小写 = False Then      '如果不区分大小写就统一字符      n进制字符 = UCase(n进制字符)   End If      For X = 1 To Len(n进制字符)      TempStr = Mid(n进制字符, X, 1)      NowData = -1      RetDate = -1      For Y = LBound(字符集) To UBound(字符集)         NowData = NowData + 1         If TempStr = 字符集(Y) Then            RetDate = NowData            Exit For         End If      Next Y      If RetDate <> -1 Then         ReturnLong = ReturnLong + 进制数 ^ (Len(n进制字符) - X) * RetDate      Else         '非法的进制符号         N进制to十进制 = Null         Exit Function      End If   Next X   N进制to十进制 = ReturnLongEnd FunctionPrivate Sub Form_Load()   ReDim 十六进制字符集(0 To 15)   ReDim 八进制字符集(0 To 7)   ReDim 二进制字符集(0 To 1)   Dim X As Long   '初始化二进制字符集   For X = 0 To 1      二进制字符集(X) = CStr(X)   Next X   '初始化八进制字符集   For X = 0 To 7      八进制字符集(X) = CStr(X)   Next X   '初始化十六进制字符集   For X = 0 To 9      十六进制字符集(X) = CStr(X)   Next X   For X = 10 To 15      十六进制字符集(X) = Chr(65 + (X - 10))   Next X   '函数使用范例   Msgbox N进制to十进制("FFFF", 十六进制字符集)   Msgbox N进制to十进制("7777", 八进制字符集)   Msgbox N进制to十进制("110011", 二进制字符集)End Sub 


[解决办法]
为什么论坛帖子没分页啊。看的辛苦死了