Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

di il
11 risposte

Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

Salve volevo sapere se era possibile leggere/scrivere, quindi apportare modifiche alle proprietà di una textbox di un'altra applicazione. E se la proprietà System.Windows.Forms.FormCollection è utilizzabile per leggere anche le form esterne all'applicazione da cui viene utilizzata.
Non so se sia una domanda che abbia un senso e se sia posta bene. In ogni caso grazie

11 Risposte

  • Re: Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

    " possibile leggere/scrivere, quindi apportare modifiche alle proprietà di una textbox di un'altra applicazione" ,intendi proprio un'altra applicazione oppure un altro form? ,puoi cambiare i valori di un altra applicazione ad esempio usando "wcf",magari spiega meglio il tuo scopo,
    "System.Windows.Forms.FormCollection è utilizzabile...." questo tipo di collection è ritornata da Application.OpenForms (https://docs.microsoft.com/it-it/dotnet/api/system.windows.forms.application.openforms?view=netframework-4.8) ,
    , ciao
  • Re: Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

    Si intendo proprio un'altra applicazione. Ho bisogno di cambiare la proprietà text della textbox di un'altra applicazione e volevo capire se possiibile e come fare.
  • Re: Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

    No almeno non facilmente altrimenti i malware potrebbero fare quello che vogliono...

    Quindi, che devi fare ESATTAMENTE?
  • Re: Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

    Allora vedrò di essere chiaro e sintetico.
    Ho un applcazione che usiamo in ufficio che naturalmente non creato io.
    Per effettuare delle ricerche, devo inserire un testo in una textbox di questa applicazione. Ora per motivi che non sto qui a scrivere perchè poco importa, ho bisogno che mi copi una stringa che ho già copiato negli appunti nella textbox dell'applicazione esterna per poi procedere alla ricerca. Il tutto senza fare il copia e incolla, ma con un comando di un'altra applicazione da me creata. Spero di essere stato chiaro. L'applicazione è una web Framework. Grazie
  • Re: Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

    Intanto, non è corretto parlare di "proprietà Text di una TextBox di un Form di un'altra applicazione", poiché questi termini si riferiscono a tipi specifici della Class Library del .NET Framework che stai utilizzando per costruire la tua applicazione, ma non è detto che quella esterna sia stata creata con lo stesso framework, o che sia addirittura un'applicazione .NET.

    In ogni caso, tutto questo sarebbe irrilevante in quanto, a prescindere dal framework usato, finestre e oggetti grafici delle applicazioni in Windows vengono create tramite chiamate alle funzioni API del sistema operativo, allocando delle "finestre" (intese come aree rettangolari, visibili o meno, a cui è associato un handle), che possono rappresentare finestre intese come Form, controlli grafici, caselle di testo, ecc.

    Sempre se non si tratta di un'applicazione WinRT, e in tal caso abbandonerei il desiderio perché la procedura è ancora più complessa.

    Il sistema per poter inviare un messaggio a un'altra applicazione richiede la conoscenza di diverse "tecniche" per poter importare le funzioni API di Windows che servono, individuare in qualche modo la finestra che contiene e rappresenta l'applicazione esterna risalendo all'ID del processo nonché all'handle della finestra principale e/o del controllo interessato (la presunta TextBox) e infine invocare la funzione API SendMessage() per inviare un messaggio alla finestra del controllo per eseguire - ad esempio - la chiamata del comando "Incolla" per recuperare e incollare il testo precedentemente copiato dagli appunti all'interno del controllo in questione.

    L'unica cosa che posso suggerire è iniziare a documentarsi sulle varie fasi e sui vari aspetti della procedura facendo una e iniziare a sperimentare passo per passo le varie fasi per raggiungere l'applicazione richiesta e inviare il messaggio corretto al controllo interessato.

    Good luck!
  • Re: Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

    Grazie Alka.Darò un occhiata alle funzioni API così da allargare i miei orizzonti. Mi pare che la realizzazione di quello che ho chiesto sia abbastanza complessa. Ma l'argomento delle API merita sicuramente di essere trattato. Ancora grazie!
  • Re: Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

    Ciao Giuseppe,
    a grandi linee ti ha già risposto Alka spiegandoti come devi affrontare la situazione.
    Io ho fatto un programma simile proprio questa settimana, dove dovevo appunto identificare il "form" di un programma, ricavarmi l'handle (cioè l'identificativo) di una textbox al suo interno, scriverci del testo e premere il pulsante conferma, e poi chiudere la finestra stessa.

    Ecco cosa fare e quali API devi studiare:
    1) tramite EnumWindows ti fai una lista delle finestre che in quel momento esistono e sono visibili (tramite IsWindowVisible), e ti memorizzi il relativo Handle (chiamato hWnd) e il testo del titolo (con GetWindowText)
    2) a quel punto, una volta individuata la finestra corretta, tramite FindWindowEx fai una ricerca dell'elemento corretto all'interno del form. Qui la cosa è un po' complicata perchè devi conoscere la struttura del form, ma ti viene in aiuto il programma Spy++ (oppure Winspector) che ti mostra come è strutturato il form.
    3) una volta individuato il textbox (e quindi ricavato il suo hWnd) ci scrivi dentro tramite SendMessage(WM_SETTEXT)
    4) se devi fare click su di un pulsante, prima lo identifichi sempre tramite il punto (2), e poi usi SendMessage(BM_CLICK)

    Comincia a buttar giù un po' di codice e poi vediamo di aiutarti

    Sergio
  • Re: Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

    Ciao a tutti , ho scaricato Winspector e volevo chiedere se c'è qualche altra applicazione che permetta anche di scrivere e non solo leggere i valori dei "componenti" delle windows (ad esempio una textbox ) ? grazie ciao
    P.S. scusate l'ignoranza ma gli antivirus non dovrebbero intercettare situazioni in cui un applicazione cerca di scrivere i "valori" di un altra?
  • Re: Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

    Che vuoi dire? Ti ha appena detto sirjo come scrivere con le api.
    Alcuni antivirus rilevano queste api come sospette ma non tutti bloccano anche perché con i corretti permessi il so consente tali operazioni del tutto lecite.
  • Re: Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

    X SirJo : grazie dell'indicazione di Winspector
  • Re: Leggere e scrivere la proprietà text di una textboxt di un form di altra applicazione

    Puoi usare il classico tool incluso con Visual Studio

    Spy++

    in versione 32 e 64 bit ... disponibile dalle prime versioni di VS (lo usavo con la 6)

    https://docs.microsoft.com/it-it/visualstudio/debugger/introducing-spy-increment?view=vs-2019
Devi accedere o registrarti per scrivere nel forum
11 risposte