Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569

    [VB6] SendMessageA non funziona!

    Sto provando delle operazioni semplici con SendMessageA.
    Però, non so perché, quando provo ad eseguirlo, funziona solo in un posto e nell' altro no!

    Questo NON funziona:
    codice:
    Private Sub ChangeCaptionByHWND()
        Dim daproc As String, fwnd As Long, exe As String, newcap As String, ok As Boolean
        
        Command3.Enabled = False ' Disabilito il pulsante che esegue questa funzione
        
        daproc = List1.Text ' Ottengo il path completo del processo
        exe = GetFileName(daproc) ' Ottengo application.exe dal path
        
        fwnd = FindEXEhWnd(exe) ' Ottengo hWnd da exe (funziona)
        
        If fwnd = 0 Then ' hWnd Non valido
            MsgBox ("Errore! hWnd non valido!")
            Exit Sub
        End If
        
        newcap = InputBox("Nuovo titolo per " & exe, "")
        
        ok = SendMessage(fwnd, WM_SETTEXT, 0, ByVal newcap)
    End Sub
    Questo sì:
    codice:
    Private Sub ChangeCaption()
        Dim esito As Long
        Dim newcapt As String
        
        On Error GoTo notok
        newcapt = InputBox("Nuova caption:", "")
        esito = SendMessage(daWin, WM_SETTEXT, 0, ByVal newcapt) ' daWin è l'hWnd
        
        Exit Sub
    notok:
        MsgBox "Errore!", vbCritical, ":("
    End Sub
    
    'Questo imposta hwnd nella Private daWin As Long
    Private Sub SelectExecutable()
        target_name = InputBox("Caption esatta dell' app:", "")
        target_hwnd = FindWindow(vbNullString, target_name)
        If target_hwnd = 0 Then
            MsgBox "Non trovato!", vbCritical, ":("
            Exit Sub
        End If
        
        daWin = target_hwnd
    End Sub
    Cos'è che sbaglio???

  2. #2
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Ok, risolto!

    Io conosco l' hWnd, e siccome il secondo metodo funziona (quello per titolo completo), ho utilizzato GetWindowTextA per ottenere il titolo e poi uso FindWindow e SendMessage.

    Grazie a tutti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.