08/02/12 10:49
en666
Buongiorno a tutti!
Mi scuso per l'assenza questi mesi. Ho già fatto questa domanda e volevo postare i miei risultati, per i quali ringrazio tutti quelli che hanno contribuito (Renny e Il Totem) ma non ho potuto perché di là non c'è il tastino 'risposta':
Il problema originale: creare un programma che individuasse le coordinate e le dimensioni di un qualsiasi controllo presente sul monitor, un po' come fa la funzione di Snagit! per lo screenshot dei singoli controlli.
pierotofy.it/pages/extras/forum/16/1032320-%5Bvisual_c_2005_lettura_propriet_dei_controlli_di_una_finestra_qualsiasi/
Grazie agli aiuti appunto, ciò che sono riuscito a fare questi mesi, è evidenziare ogni 'finestra' sulla quale passa il cursore del mouse. 'Finestra' è messa fra virgolette perché Windows costruisce le finestre con altre finestre più piccole, corrispondenti ai singoli pannelli (che so, la barra dei menù, le barre di scorrimento, le caselle di testo) che hanno ciascuna il loro numero Handle.
Di seguito un video seguito dal codice di cosa sono riuscito a fare.
youtube.com/…
Ora la richiesta: io vorrei andare verso l'infinito e oltre a recuperare dimensioni e posizione dei singoli oggetti (bottoni, voci di menù, caselle di testo etc) come si fa?
Mi scuso per l'assenza questi mesi. Ho già fatto questa domanda e volevo postare i miei risultati, per i quali ringrazio tutti quelli che hanno contribuito (Renny e Il Totem) ma non ho potuto perché di là non c'è il tastino 'risposta':
Il problema originale: creare un programma che individuasse le coordinate e le dimensioni di un qualsiasi controllo presente sul monitor, un po' come fa la funzione di Snagit! per lo screenshot dei singoli controlli.
pierotofy.it/pages/extras/forum/16/1032320-%5Bvisual_c_2005_lettura_propriet_dei_controlli_di_una_finestra_qualsiasi/
Grazie agli aiuti appunto, ciò che sono riuscito a fare questi mesi, è evidenziare ogni 'finestra' sulla quale passa il cursore del mouse. 'Finestra' è messa fra virgolette perché Windows costruisce le finestre con altre finestre più piccole, corrispondenti ai singoli pannelli (che so, la barra dei menù, le barre di scorrimento, le caselle di testo) che hanno ciascuna il loro numero Handle.
Di seguito un video seguito dal codice di cosa sono riuscito a fare.
youtube.com/…
private void timer1_Tick(object sender, EventArgs e) { //Coordinate di formato Point del mouse. mouse = MousePosition; //Finestra Padre windowsUnderMouse = WindowFromPoint(mouse); GetWindowRect(windowsUnderMouse, ref rct); /* //Finestra figlia con coordinate giuste childUnderMouse = ChildWindowFromPoint(windowsUnderMouse, mouse, CWP_SKIPINVISIBILE); //GetWindowRect(childUnderMouse, ref rct); */ //Questo è un Form che uso solo come evidenziatore. form2.Width=(rct.Right - rct.Left); form2.Height = 2;//(rct.Bottom - rct.Top); form2.Top=(rct.Top); form2.Left = (rct.Left); form2.TopMost = true; //Mi dice il numero di Handle della finestra che sta sotto il mouse. textBox1.Text = "Window Handle: " + windowsUnderMouse + "\r\n"; //textBox1.Text += "Child Handle: " + childUnderMouse + "\r\n"; //textBox1.Text += "Control ID: " + controlUnderMouse + "\r\n"; //Mi dice la posizione del mouse e la dimensione della finestra che sta sotto il mouse. textBox1.Text += " (" + mouse.X + " - " + mouse.Y + ") " + " Dimensioni Finestra: " + (rct.Right - rct.Left) + ", " + (rct.Bottom - rct.Top)+"\r\n"; Application.DoEvents(); }
Ora la richiesta: io vorrei andare verso l'infinito e oltre a recuperare dimensioni e posizione dei singoli oggetti (bottoni, voci di menù, caselle di testo etc) come si fa?
Ultima modifica effettuata da en666 08/02/12 10:52
aaa