Ho l'esigenza di poter leggere il contenuto di una label di un altro programma fatto in VB6. Esiste un modo per arrivare a leggere queste info?
Ho l'esigenza di poter leggere il contenuto di una label di un altro programma fatto in VB6. Esiste un modo per arrivare a leggere queste info?
Il 90% dei problemi di un pc si trova
tra la tastiera e la sedia.
Beh, è possibile, anche non difficile ma prevede qualche cognizione di base delle API di Windows e del sistema di gestione dei messaggi tra processi.
In pratica, dovresti
1) inviare con la API SendMessage il messaggio WM_GETTEXTLENGTH alla finestra del textbox (ovviamente utilizzando l'handle di tale textbox ...) per ottenere la lunghezza del contenuto
2) allocare una stringa con il numero di caratteri restituiti dalla prima chiamata + 1 (per il terminatore)
3) inviare con la API SendMessage il messaggio WM_GETTEXT alla finestra del textbox (sempre utilizzando l'handle di tale textbox ...) indicando la stringa allocata in 2) per ottenere il testo cercato
Una cosa da fare prima è trovare l'handle del textbox da usare in 1) e 3) e per farlo devi fare una "ricerca" con le API FindWindowEx, GetWindow fino ad arrivare al textbox voluto.
Buon lavoro ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
purtroppo l'oggetto che mi interessa sniffare è una label, non una textbox, e molti mi hanno detto che essendo un'oggetto statico non possiede handler. In realtà con WinSpy++ sono riuscito a trovare un handler ma non so se andrebbe comunque bene.
Non c'è già del codice di esempio per realizzare ciò che dici tu?
Il 90% dei problemi di un pc si trova
tra la tastiera e la sedia.
Ah ... avevo letto textbox ... non per la label quel metodo non è utilizzabile.Originariamente inviato da hacker_nait
purtroppo l'oggetto che mi interessa sniffare è una label, non una textbox, e molti mi hanno detto che essendo un'oggetto statico non possiede handler. In realtà con WinSpy++ sono riuscito a trovare un handler ma non so se andrebbe comunque bene.
In effetti con la label non si può dato che non è una window.
Non ti servirebbe per la label e poi basta google ...Non c'è già del codice di esempio per realizzare ciò che dici tu?
No MP tecnici (non rispondo nemmeno!), usa il forum.
In realtà prima di postare qui ho Googlato un po', l'unica cosa che ho trovato è un codice che va a leggere la heap del processo cercando di estrapolare la label... ma non funziona:Originariamente inviato da oregon
Non ti servirebbe per la label e poi basta google ...
http://www.codeguru.com/forum/showthread.php?t=304429
Il 90% dei problemi di un pc si trova
tra la tastiera e la sedia.
Beh, la strada potrebbe essere quella ma entriamo in un discorso un po' borderline ...
Accedere alla memoria di un processo è una tecnica consentita ma piuttosto discutibile ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Beh... tenendo conto del fatto che l'eseguibile da spiare è sempre lo stesso, quindi gli indirizzi di memoria non cambiano, mi sembra al momento l'unica strada fattibile... poi non saprei...Originariamente inviato da oregon
Beh, la strada potrebbe essere quella ma entriamo in un discorso un po' borderline ...
Accedere alla memoria di un processo è una tecnica consentita ma piuttosto discutibile ...
Il 90% dei problemi di un pc si trova
tra la tastiera e la sedia.
Non hai compreso la mia risposta ... non dicevo "discutibile" dal punto di vista tecnico ...Originariamente inviato da hacker_nait
Beh... tenendo conto del fatto che l'eseguibile da spiare è sempre lo stesso, quindi gli indirizzi di memoria non cambiano, mi sembra al momento l'unica strada fattibile... poi non saprei...
P.S. Dimenticavo ... il codice che hai indicato funziona bene ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
A me no... o meglio mi dice che "This function only works on VB RunTime 6 Forms ThunderFormRT6DC".Originariamente inviato da oregon
P.S. Dimenticavo ... il codice che hai indicato funziona bene ...
Invece la finestra del programma in questione è una "RTClass"...
Il 90% dei problemi di un pc si trova
tra la tastiera e la sedia.
RTClass ? Ma non era un programma in VB6?
P.S. Di quale SO parliamo? Il codice è funzionante con XP ...
No MP tecnici (non rispondo nemmeno!), usa il forum.