Esecuzione e controllo di un'applicazione esterna

di Anonimizzato1884 il
13 risposte
Ciao,
ho un'applicazione eseguibile per windows (no sorgenti, no linea di comando) che mostra una GUI in cui ci sono dei pulsanti e delle combobox

Devo sviluppare in C# un'altra applicazione che la esegue (possibilmente in background) e manda ad essa dei comandi del tipo: premi tasto X, apri combobox Y, scegli terzo valore della combobox Y e così via

Come si può fare questa cosa in C#?

grazie

13 Risposte

  • Occorre inviare messaggi Windows all'altra applicazione, ammesso che il sistema operativo non li blocchi.
    in ogni caso, preparati ad un bagno di sangue, perché occorre una conoscenza approfondita dei messaggi di Windows, delle funzioni API , ecc.
    Ovviamente è un argomento vastissimo, impossibile da discutere su un Forum.
  • In particolare, di che applicazione si tratta (quella da controllare)? Come è scritta? Cosa fa?

    E' una applicazione standard con componenti standard o sono textbox, combobox particolari (personalizzati o simili )?
  • oregon ha scritto:


    In particolare, di che applicazione si tratta (quella da controllare)? Come è scritta? Cosa fa?

    E' una applicazione standard con componenti standard o sono textbox, combobox particolari (personalizzati o simili )?

    L'applicazione si connette ad una board, gli da dei comandi e legge i risultati.
    E' un'applicazione con controlli standard. Ciò che devo controllare sono pulsanti e combobox.
  • Una board??

    Dipende moltissimo dal tipo di applicazione e da come i controlli sono inseriti nella gui. Puoi utilizzare i messaggi di Windows o altri metodi ma tutti complessi e che prevedono molto tempo nelle prove con il programma in questione. Se questo è scaricabile da internet per dare un'occhiata si può dire qualcosa in più.
  • Non vorrei sbagliarmi ma se l'applicazione non ha esposto esplicitamente il componente COM allora non c'è modo di poterci comunicare
  • gabry90 ha scritto:


    non vorrei sbagliarmi ma se l'applicazione non ha esposto esplicitamente il componente COM allora non c'è modo di poterci comunicare
    Siamo sul forum di C# (.NET) cosa c'entra il COM?
  • Ma infatti ho scritto "non vorrei sbagliarmi"....quindi mi sono sbagliato ok xD
  • gabry90 ha scritto:


    ma infatti ho scritto "non vorrei sbagliarmi"....quindi mi sono sbagliato ok xD
    In realtà il punto non è né .NET né COM (cosa che è del tutto ininfluente) perché tutti i messaggi di Windows richiedono l'handle della finestra a cui inviarli (quindi non ha importanza che sia un oggetto .NET o COM).

    Il punto è un'altro, ovvero che quando si opera a 'questo livello' entrano in gioco diversi fattori, ad esempio:
    - non sempre i messaggi inviati ad applicazioni esterne sono permessi dal sistema operativo
    - a volte gli 'oggetti' a cui si tenta di accedere non espongono un handle, oppure per altri motivi (non sto qui a dilungarmi)

    Per cui, come ho già indicato nella mia prima risposta, si può rischiare di perderci ore ed ore, sudare sangue, senza cavare un ragno dal buco.

  • @koby hai letto il link che ho postato? C'è un esempio di FindWindow/SendMessage; naturalmente per capire a chi spedire i messaggi devi iniziare ad utilizzare Spy++ (presente in Visual Studio) o similare come WinSpy++.
    Consiglio comunque di fare una prova con il codice presente nel link (lavora sulla calcolatrice di Windows).
  • candaluar ha scritto:


    @koby hai letto il link che ho postato? C'è un esempio di FindWindow/SendMessage
    Evidentemente hai letto frettolosamente..
    Quella che indichi è una richiesta di aiuto, non è una soluzione.
  • Quella che indichi è una richiesta di aiuto, non è una soluzione.
    Non esiste da nessuna parte la pappa pronta e comunque di meglio, online, non ho trovato.
    Chi ha postato la richiesta ha lavorato in questo modo:
    - Spy++ e analisi della finestra a cui spedire i messaggi
    - codice con FindWindow e SendMessage
    che poi è quello che deve provare l'OP.

    E comunque, se leggi bene nelle risposte, c'è la soluzione!!!
  • candaluar ha scritto:


    E comunque, se leggi bene nelle risposte, c'è la soluzione!!!
    Ah, ti riferisci ai Commenti!
    Capito.
Devi accedere o registrarti per scrivere nel forum
13 risposte