View Full Version : [DOMANDONA!] Cambiare le proprietà di un controllo in un'applicazione, dalla PROPRIA!
Non sò se mi sono spiegato...:p
Ho la mia applicazione che ravana in una qualsiasi finestra alla ricerca di informazioni: handle, style, class ecc...e ok questo e facile! veniamo al dunque: vorrei trovare il modo di evidenziare un controllo (una textbox ad esempio) quando sempre per esempio ci clicco sopra...posso cambiare il colore di fondo di quella textbox? grazie! :)
Se ho ben capito, tu vuoi accedere a finestre create da un thread di un altro processo; se è così lo puoi fare tranquillamente perché gli handle di finestre sono globali (l'unica cosa che non si può fare dall'esterno è leggere il testo degli edit).
intanto grazie per l'intervento!
sicuramente l'handle del controllo che ho sotto al mouse ce l'ho eccome...il problema non è leggere il contenuto della casella di testo (tra l'altro lo puoi fare con GetWindowText) ma cambiarne una proprietà come la backcolor! non riesco a trovare un'api che mi permetta di fare questo...tra l'altro ho sotto mano un programma (compilato purtroppo, il source code costa 100 € :muro: ) che riesce a cambiare addirittura le dimensioni, le coordinate, il visible e l'enable di un controllo su una qualsiasi form...quindi almeno questo si può fare!
il programma è Greatis Windowse (http://www.greatis.com/wdsetup.exe), se ti và di dargli un'occhiata!
Scusa se ti contraddico, ma ribadisco: da un processo esterno non puoi utilizzare GetWindowText; se la usi ti ritorna una stringa vuota (provare per credere...). Comunque per cambiare il colore di sfondo devi cambiare l'handle del brush della WNDCLASS utilizzando SetWindowLong, SetClassLong, ecc.
Se invece vuoi modificare le dimensioni basta che usi MoveWindow oppure SetWindowPos, e se vuoi abilitarla/disabilitarla usa EnableWindow; infine per nasconderla o mostrarla usa ShowWindow. A tutte queste belle funzioni API corrispondo altrettanti messaggi, come WM_ENABLE, WM_SHOWWINDOW, WM_MOVE, WM_SIZE, ecc.
scusa ma credo proprio che abbia ragione io sulla getwindowtext, la uso decine di volte all'interno della mia applicazione! d'altra parte vuole un handle! prova a passargli l'handle di una textbox di una form esterna, che non fà parte del progetto, e vedrai che ti ritorna il contenuto della textbox stessa...e ricorda di dimensionare la stringa che ti ritornerà il testo!
ma torniamo a noi! :p
ho notato, sempre usando windowse, che esiste una proprietà della classe che è bkg brush...forse è questo l'handle del brush di cui mi parli...ma purtroppo su una form che ha textbox con colori differenti questo valore è sempre lo stesso!
io continuo a sbattermi...se hai qualcosina di già pronto, magari un esempietto...:p
Per cambiare lo sfondo c'è SetBKColor...
Il problema è che per farlo persistente credo che tu debba settare un hook di sistema sul messaggio WM_PAINT e riapplicarlo tutte le volte...
il fatto della persistenza non è un problema, devo colorare i controlli solo quando gli dò il focus dalla mia applicazione...come si una la setbkcolor?
Devi ottenere l' HDC del controllo e poi ci applichi la SetBKColor...
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/pantdraw_433m.asp
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.