Ir ao conteúdo
  • Cadastre-se

Ajuda com API Sendmessage


Posts recomendados

Boa noite,

 

estou começando a trabalhar com API`s agora e ainda estou tendo dificuldades. Queria conseguir automatizar o uso do putty mandando comandos para ele.

 

Por enquanto tudo que consegui foi abrir o putty:

 

 

 

 

Sub AbrirPutty()
 
Dim DesktopPath As String
 
DesktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")
 
Shell DesktopPath & "\putty.exe [email protected] -pw login", vbNormalFocus
 
End Sub
 
 
 
Essa rotina abre o putty que está na minha area de trabalho. Agora não sei como poderia mandar comandos para ele e colher as "respostas"  esses comandos...
 
sei que devo declarar algo do tipo:
 
Public Declare PtrSafe Sub SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
 
ou  
 
Public Declare PtrSafe Function SendMessageStr Lib "USER32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
 
 
e depois?
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • 3 semanas depois...

 Boa noite galera, depois de muita pesquisa avancei um pouco no meu programa:

 

 

 

Option Explicit
 
Public Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare PtrSafe Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare PtrSafe Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Public Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Public Const GW_HWNDNEXT = 2
Public Const SW_MAXIMIZE = 3
 
Public Function FindWindowPartial(TitleStart As String) As Long
    Dim hWndTmp
    Dim nRet
    Dim TitleTmp As String
    hWndTmp = FindWindow(vbNullString, vbNullString)
    Do Until hWndTmp = 0
        If GetParent(hWndTmp) = 0 Then
            TitleTmp = Space(256)
            nRet = GetWindowText(hWndTmp, TitleTmp, Len(TitleTmp))
            If nRet Then
                TitleTmp = UCase(Left(TitleTmp, nRet))
                If InStr(TitleTmp, UCase(TitleStart)) Then
                    FindWindowPartial = hWndTmp
                    Exit Do
                End If
            End If
        End If
    hWndTmp = GetWindow(hWndTmp, GW_HWNDNEXT)
    Loop
End Function
 
 
 
Public Declare PtrSafe Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
 
Sub AbrirPutty()
    
    Dim DesktopPath As String
        DesktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    
        Shell DesktopPath & "\putty.exe [email protected] -pw password", vbNormalFocus
    
    
    ' Procura o handle da janela "JaneladoPutty"
    Dim PuTTyHwnd As Long
        PuTTyHwnd = FindWindowPartial("JaneladoPutty")
    
    ' Maximiza a janela
    'Const SW_MAXIMIZE = 3
        ShowWindow PuTTyHwnd, SW_MAXIMIZE
    
    Const WM_KEYUP As Long = &H101
    Const WM_KEYDOWN As Long = &H100
        Call SendMessage(PuTTyHwnd, WM_KEYDOWN, 53, 1075773441)
    
End Sub
 
 
 
Os problemas que estou enfrentando agora sao:
 
o handle parece nao funcionar sempre nao sei porque. E o outro é que ainda nao consegui mandar uma mensagem como eu queria, apenas o numero 5, senod que na verdade tentei mandar um S hehehe. Acho que tem a ver com os parametros lparam e wparam, que ainda nao sei se estou utilizando certo ou como conseguir. QUeria mandar uma string p o putty! Alguem pode me ajudar?
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...