|
142
|
Programación / Programación Visual Basic / Re: Ayuda... Algo está mal.
|
en: 12 Febrero 2010, 19:25 pm
|
Solo Usuarios V.I.P, deberias de leerte un manual de Visual Basic 6, si no sabes que es Load, no sabes hacer nada!
+1 una duda, prueba asi, solo para ver si desaparece el error 13 Private Sub cmd3_Click()
'declaracion de variables Dim decimal1 As Double Dim decimal2 As Double 'coger datos para variables decimal1 = Val(Txt7.Text) decimal2 = Val(Txt8.Text) 'acción Text9.Text = decimal1 + decimal2
End Sub
|
|
|
147
|
Programación / Programación Visual Basic / Re: copiar datos de listview externo con sendmessage ?
|
en: 10 Febrero 2010, 16:24 pm
|
A ver si te sirve este MODULO Option Explicit
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, ByVal lpAddress As Long, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long Private Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 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 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 Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Public 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 Public 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 Long Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Private Type LVITEM mask As Long iItem As Long iSubitem As Long state As Long stateMask As Long pszText As Long cchTextMax As Long iImage As Long lParam As Long iIndent As Long End Type
Private Const LVIF_IMAGE = &H2 Private Const LVIF_TEXT = &H1 Private Const LVM_FIRST As Long = &H1000 Private Const LVM_GETITEM As Long = (LVM_FIRST + 5) Private Const LVM_GETITEMCOUNT = (LVM_FIRST + 4) Private Const LVM_GETITEMSTATE = (LVM_FIRST + 44) Private Const LVIS_SELECTED = &H2 Private Const LVM_SETITEMSTATE = (LVM_FIRST + 43) Private Const LVIF_STATE = &H8& Private Const PAGE_READWRITE = &H4& Private Const MEM_RESERVE = &H2000 Private Const MEM_COMMIT = &H1000 Private Const MEM_RELEASE = &H8000 Private Const PROCESS_VM_OPERATION = &H8 Private Const PROCESS_VM_READ = &H10 Private Const PROCESS_VM_WRITE = &H20
Private hWndlvw As Long
Function ListViewGetText(ByVal hwnd As Long, ByVal iSubitem As Integer, ByVal iItem As Integer) As String Dim lngProcID As Long, lngProcHandle As Long Dim typLvItem As LVITEM, strLvItem As String Dim lngVarPtr1 As Long, lngVarPtr2 As Long Dim lngMemVar1 As Long, lngMemVar2 As Long Dim lngMemLen1 As Long, lngMemLen2 As Long Call GetWindowThreadProcessId(hwnd, lngProcID) If lngProcID <> 0 Then lngProcHandle = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, lngProcID) If lngProcHandle <> 0 Then strLvItem = String(255, vbNullChar) lngVarPtr1 = StrPtr(strLvItem) lngVarPtr2 = VarPtr(typLvItem) lngMemLen1 = LenB(strLvItem) lngMemLen2 = LenB(typLvItem) lngMemVar1 = VirtualAllocEx(lngProcHandle, 0, lngMemLen1, MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE) lngMemVar2 = VirtualAllocEx(lngProcHandle, 0, lngMemLen2, MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE) With typLvItem .cchTextMax = 255 .iItem = iItem .iSubitem = iSubitem .mask = LVIF_TEXT .pszText = lngMemVar1 End With Call WriteProcessMemory(lngProcHandle, ByVal lngMemVar1, ByVal lngVarPtr1, lngMemLen1, 0) Call WriteProcessMemory(lngProcHandle, ByVal lngMemVar2, ByVal lngVarPtr2, lngMemLen2, 0) Call SendMessage(hwnd, LVM_GETITEM, ByVal 0, ByVal lngMemVar2) Call ReadProcessMemory(lngProcHandle, ByVal lngMemVar1, ByVal lngVarPtr1, lngMemLen1, 0) strLvItem = StrConv(strLvItem, vbUnicode) strLvItem = Left(strLvItem, InStr(1, strLvItem, vbNullChar) - 1) ListViewGetText = strLvItem Call VirtualFreeEx(lngProcHandle, ByVal lngMemVar1, lngMemLen1, MEM_RELEASE) Call VirtualFreeEx(lngProcHandle, ByVal lngMemVar2, lngMemLen2, MEM_RELEASE) Call CloseHandle(lngProcHandle) End If End If End Function
Public Function SelectedItem(ByVal hwnd As Long, ItemPos As Long) Dim lProcID As Long Dim hProc As Long Dim lxprocLVITEM As Long Dim LV_ITEM As LVITEM GetWindowThreadProcessId hwnd, lProcID If lProcID <> 0 Then hProc = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, lProcID) ' makwe sure we have read write permissions in the process space If hProc <> 0 Then lxprocLVITEM = VirtualAllocEx(hProc, 0, LenB(LV_ITEM), MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE) ' Grab enough memory in the other procedure's space to hold our LV_ITEM LV_ITEM.mask = LVIF_STATE LV_ITEM.state = True LV_ITEM.stateMask = LVIS_SELECTED WriteProcessMemory hProc, ByVal lxprocLVITEM, ByVal VarPtr(LV_ITEM), LenB(LV_ITEM), 0 SendMessage hwnd, LVM_SETITEMSTATE, ItemPos, ByVal lxprocLVITEM VirtualFreeEx hProc, ByVal lxprocLVITEM, LenB(LV_ITEM), MEM_RELEASE CloseHandle hProc End If End If End Function
Function GetListViewCount(ByVal hwnd As Long) As Long GetListViewCount = SendMessage(hwnd, LVM_GETITEMCOUNT, 0, ByVal 0) End Function
Function GetItemSelected(hwnd As Long) As Long Dim i As Long, Index As Long For i = 1 To GetListViewCount(hwnd) Index = SendMessage(hwnd, LVM_GETITEMSTATE, i - 1, ByVal LVIS_SELECTED) If Index > 0 Then GetItemSelected = i Exit For End If Next End Function
|
|
|
|
|
|
|