Premetto che uso Visual Basic 2005,o comunque .Net
Allora io ho un semplice form con un bottone,al click del bottone voglio che mi mostri una finestra di messaggio msgbox e muova il mouse sul pulsante ok del msgbox,un po' come succede in windows quando in 'pannello di controllo>mouse'si seleziona la casella di spunta "posiziona automaticamente sul pulsante predefinito in una finestra di dialogo".Posto il codice seguente,con cui ho tentato di farlo ma che mi ritorna errore
codice:
Public Structure RECT
Dim Left As Long
Dim Top As Long
Dim Right As Long
Dim Bottom As Long
End Structure
Private Declare Function GetClientRect Lib "user32" Alias "GetClientRect" (ByVal hwnd As Integer, ByVal lpRect As RECT) As Integer
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("ciao", MsgBoxStyle.OkOnly, "ciccio")
Dim twnd, bwnd As Integer
Dim pt As RECT
twnd = FindWindow(vbNullString, "ciccio")
bwnd = FindWindowEx(twnd, 0&, "BUTTON", "OK")
GetClientRect(bwnd, pt)
Windows.Forms.Cursor.Position = New Point(pt.Left + ((pt.Right - pt.Left) / 2), pt.Top + ((pt.Bottom - pt.Top) / 2))
End Sub
Perché non mi funzia?
Mi da un errore sull'API GetClientRect,dicendo che sbilancia lo stack
Naturalmente sono aperto anche ad altre soluzioni,del tipo un modo alternativo di far posizionare il mouse sul pulsante predefinito.