Newsgroup: it.comp.lang.visual-basic
Titolo: Recuperare l'handle di un pulsante

Ciao ragazzi!
Qualcuno sa come si può recuperare l'handle di un pulsante di una finestra
non VB? Mi spiego meglio. Con la funzione "FindWindow" recupero l'handle
della finestra "Proprietà - Schermo"; a questo punto, devo ottenere l'handle
della casella di controllo "Protezione". Per fare questo, nella Win32
Programmer's Reference ho letto che è possibile usare la funzione
"FindWindowEx", passandogli come primo parametro l'handle della finestra
"principale". Tuttavia, con essa sono riuscito solo a recuperare gli handle
dei pulsanti "OK", "Annulla" e "Applica".
Qualcuno sa darmi una mano? Grazie in anticipo.
--
Marco Minerva, 
vbco...@libero.it
http://marcominerva.cjb.net

 dei pulsanti "OK", "Annulla" e "Applica".
utilizzando GetWindow puoi passarti tutti i 'figli', prova così:
(window_hwnd è l'handle della finestra principale, che hai trovato con
FindWindow)
    child_hwnd = GetWindow(window_hwnd, GW_CHILD)
    Do While child_hwnd <> 0
        [...]
        child_hwnd = GetWindow(child_hwnd, GW_HWNDNEXT)
    Loop
occhio che mi sa che non ti trova "Protezione" (il checkbox, intedi?) finchè
non premi sulla scheda "Screen Saver"
Ciao  :)
Faber

 wrote in message
1Nq75.6772$2s6....@news.infostrada.it...


 La routine funziona per trovare l'hndw delle voci contenute in un menu'?
no
Ciao  :)
Faber

 (window_hwnd č l'handle della finestra principale, che hai trovato con


        GetText = Left$(m_Buffer, InStr(1, m_Buffer, Chr$(0)) - 1)
questo lo puoi fare più semplicemente con
    L = SendMessage(hWnd, WM_GETTEXT, Len(m_Buffer), ByVal m_Buffer)
    GetText = Left$(m_Buffer, L)
Ciao

Ho provato con la finestra "Proprietą - Schermo" (usando la routine vedi
sotto) ma i risultati sono i seguenti:
Screen saver
OK
Annulla
&Applica
?
Del check box e degli altri bottoni (impostazioni, prova, cambia, ecc.)
nessuna traccia.
Con ApiSpy mi sono accorto che tutto cio' che e' contenuto nel frame Screen
saver (frame stesso compreso) viene trattato come un insieme definito come
Button:
handle: nnnn
text: &Screen saver
class: Button
ed il suo parent e':
handle: nnnn
text: Screen saver
class: #32770
Api Spy stesso non riconosce gli oggetti interni al frame.
Mi sa che e' dura!
Ciao, Roby
*    *    *    *    *    *    *    *    *
Private Sub FindWinObjects()
  Dim MotherHwnd As Long
  Dim ChildHwnd As Long
  Dim ChildText As String
  MotherHwnd = FindWindow(vbNullString, "Proprietą - Schermo")
  ChildHwnd = GetWindow(MotherHwnd, GW_CHILD)
  Do While ChildHwnd <> 0
      ChildText = GetText(ChildHwnd)
      ChildHwnd = GetWindow(ChildHwnd, GW_HWNDNEXT)
  Loop
End Sub

Trovato!
Private Sub FindWinObjects()
  Dim MotherHwnd1 As Long
  Dim MotherHwnd2 As Long
  Dim ChildHwnd As Long
  Dim ChildText
  MotherHwnd1 = FindWindow(vbNullString, "Proprietą - Schermo")
  MotherHwnd2 = FindChildByClass(MotherHwnd1, vbNullString)
  ChildHwnd = GetWindow(MotherHwnd2, GW_CHILD)
  Do While ChildHwnd <> 0
  ChildText = GetText(ChildHwnd)
  ChildHwnd = GetWindow(ChildHwnd, GW_HWNDNEXT)
  Loop
End Sub
Grazie a Faber che mi ha messo sulla strada giusta
Ciao, Roby
*    *    *    *    *
Function FindChildByClass(parentw, childhand)
  Dim Firs As Integer, Firss As Integer, Room As String
  Firs% = GetWindow(parentw, 5)
  If UCase(Mid(Get_Class(Firs%), 1, Len(childhand))) Like UCase(childhand)
Then GoTo Digital
    Firs% = GetWindow(parentw, GW_CHILD)
  If UCase(Mid(Get_Class(Firs%), 1, Len(childhand))) Like UCase(childhand)
Then GoTo Digital
  While Firs%
    Firss% = GetWindow(parentw, 5)
    If UCase(Mid(Get_Class(Firss%), 1, Len(childhand))) Like
UCase(childhand) Then GoTo Digital
    Firs% = GetWindow(Firs%, 2)
    If UCase(Mid(Get_Class(Firs%), 1, Len(childhand))) Like UCase(childhand)
Then GoTo Digital
  Wend
  FindChildByClass = 0
Digital:
  Room$ = Firs%
  FindChildByClass = Room$
End Function

> Grazie a Faber che mi ha messo sulla strada giusta
prego  :)
Faber

 wrote in message 8jmqgi$q7n$1...@nslave2.tin.it...


 wrote in message
ZbK75.11013$2s6.1...@news.infostrada.it...
