大哥大姐帮忙啊,小弟被这个问题缠了好久了……(等待)
Private Const LVM_FIRST As Long = &H1000
Private Const LVM_GETITEMCOUNT As Long = (LVM_FIRST + 4)
Private Const LVIS_SELECTED As Long = &H2
Private Const LVM_GETITEMSTATE As Long = (LVM_FIRST + 44)
'Private Const LRESULT As Long = LONG_PTR
Private Type LVITEM
mask As Long
iItem As Long
iSubItem As Long
state As Long
stateMask As Long
pszText As String
cchTextMax As Long
iImage As Long
lParam As Long
iIndent As Long
End Type
Private Const LVIF_TEXT As Long = &H1
Private Const LVM_GETITEMTEXTW As Long = (LVM_FIRST + 45)
Private Const LVM_GETITEMTEXTA As Long = (LVM_FIRST + 115)
Private Const MAX_PATH As Long = 260
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Sub Command1_Click()
Me.Show
r2= '一个syslistview32控件的句柄
r3 = SendMessage(R2, LVM_GETITEMCOUNT, 0, 0)
Dim aLVITEM As LVITEM
Cls
astr = String$(128, Chr$(0))
aLVITEM.pszText = astr
aLVITEM.cchTextMax = Len(astr)
' Get the subitem's text
SendMessage R2, LVM_GETITEMTEXTA, 1, aLVITEM
astr = Left$(aLVITEM.pszText, InStr(aLVITEM.pszText, Chr$(0)) - 1)
Debug.Print astr
End Sub
Private Sub Form_Load()
Command1_Click
End Sub
这个程序是用来得到一个syslistview32控件内容的程序,我能够成功得到列表的数量(r3),但是用sendmessage取得指定项的内容的时候那个正被操作的程序就非法操作推出了,astr为空。不知道是为什么取得列表数量(getitemcount)时没问题,后来的getitemtexta就有问题了哪?小生见识浅薄望高人指教!