Newsgroup: it.comp.programmare.win32
Titolo: FindWindowEx, handle e ricerca di un controllo all'interno di una  'window' esterna

Salve,
ho il seguente breve codice C (uso il Borland per compilare sotto
Windows) :
---------------------------------------------------------------------------
#include <condefs.h>
#include <windows.h>
#include <stdio.h>
int main(int argc, char **argv)
{
    HANDLE parentWindow, childWindow; //variabili usate,
rispettivamente, per l'handle della classe PADRE e l'handle della
classe FIGLIA
    parentWindow=FindWindow(NULL, "Senza nome - Blocco note");
    if (parentWindow == NULL) { //vuol dire che notepad.exe NON e'
ancora stato avviato
     printf("Notepad NON e' stato ancora avviato !\n");
     system("PAUSE");
     return(0);
    }
    childWindow=FindWindowEx(parentWindow, NULL, "Edit", NULL);
    if (childWindow == NULL) {
     printf("NON riesco a trovare l'handle della finestra EDIT !\n");
     system("PAUSE");
     return(1);
    }
    SendMessage(childWindow, WM_PASTE, 0, 0); //scrivo il contenuto
della clipboard sul controllo Edit
    system("PAUSE");
    return(0);
}
------------------------------------------------------
Il problema e' che NON riesco a scrivere sul controllo Edit che vorrei
(vorrei scrivere sull'oggetto 'Edit' contenuto all'interno della
finestra di dialogo "Tipo di carattere", a cui accedo agendo dal menù
di notepad.exe), poichè il contenuto della clipboard mi viene sparato
all'interno del controllo Edit della finestra principale.
Sono sicuro che ho fatto casini con la funzione FindWindowEx : ma
dove?
Se non avete la pazienza o la competenza per aiutarmi, sapreste
indicarmi dei paper ben fatti che spiegano (anche e soprattutto con
degli esempi commentati in C) COME usare le funzioni per navigare gli
handles delle window?
Sto impazzendo da tre giorni ! :-(
Vi ringrazio per l'attenzione,
BreckBlue

Sto impazzendo da tre giorni ! :-(
Vado a memoria e non vorrei dire castronerie ma mi se4mbra di
ricordare che solo alcuni messaggi possono essere passati attraverso
la SendMessage fra processi differenti ,sempre che gli handle delle
finestre trovati siano corretti.

Sto impazzendo da tre giorni ! :-(
Il codice funziona al volo sotto Visual C, ho solo tolto l'include
condefs e modificato la dichiarazione HANDLE in HWND.
Auguri.

 BreckBlue
Forse, nel frattempo avrai gi� risolto, comunque...
Quello che stai facendo � incollare nella edit della finestra principale 
e non nella finestra di dialogo "Tipo di carattere".
Per fare quello, dovresti fare, invece:
int main(int argc, char **argv)
{
     HWND parentWindow, childWindow; //variabili usate, rispettivamente, 
per l'handle della classe PADRE e l'handle della classe FIGLIA
     parentWindow=FindWindow(NULL, "Tipo di carattere");
     if (parentWindow == NULL) { //vuol dire che notepad.exe NON e' 
ncora stato avviato
      printf("Notepad NON e' stato ancora avviato !\n");
      system("PAUSE");
      return(0);
     }
     childWindow=FindWindowEx(parentWindow, NULL, "ComboBox", NULL);
     if (childWindow == NULL) {
      printf("NON riesco a trovare l'handle della finestra ComboBox !\n");
      system("PAUSE");
      return(1);
     }
     childWindow=FindWindowEx(childWindow, NULL, "Edit", NULL);
     if (childWindow == NULL) {
      printf("NON riesco a trovare l'handle della finestra EDIT !\n");
      system("PAUSE");
      return(1);
     }
     SendMessage(childWindow, WM_PASTE, 0, 0); //scrivo il contenuto 
della clipboard sul controllo Edit
     system("PAUSE");
     return(0);
}
A me il paste non va a sostituire, ma va ad aggiungere al testo 
precedente, non s� perch�.
Adesso non ho tempo di verificarlo, ma ti dovrebbe comunque essere utile.
Ciao