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???