Esecuzione e controllo di un'applicazione esterna

di il
13 risposte

Esecuzione e controllo di un'applicazione esterna

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

  • Re: Esecuzione e controllo di un'applicazione esterna

    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.
  • Re: Esecuzione e controllo di un'applicazione esterna

    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 )?
  • Re: Esecuzione e controllo di un'applicazione esterna

    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.
  • Re: Esecuzione e controllo di un'applicazione esterna

    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ù.
  • Re: Esecuzione e controllo di un'applicazione esterna

    Sostanzialmente devi richiamare una FindWindow() e poi spedire i messaggi con SendMessage(), come viene fatto in questo esempio http://www.codeproject.com/Questions/881482/csharp-Sendmessage-click-button-API che intercetta la calcolatrice.
    Naturalmente si tratta di un argomento molto vasto, difficilmente spiegabile in un forum!
  • Re: Esecuzione e controllo di un'applicazione esterna

    Non vorrei sbagliarmi ma se l'applicazione non ha esposto esplicitamente il componente COM allora non c'è modo di poterci comunicare
  • Re: Esecuzione e controllo di un'applicazione esterna

    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?
  • Re: Esecuzione e controllo di un'applicazione esterna

    Ma infatti ho scritto "non vorrei sbagliarmi"....quindi mi sono sbagliato ok xD
  • Re: Esecuzione e controllo di un'applicazione esterna

    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.

  • Re: Esecuzione e controllo di un'applicazione esterna

    @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).
  • Re: Esecuzione e controllo di un'applicazione esterna

    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.
  • Re: Esecuzione e controllo di un'applicazione esterna

    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!!!
  • Re: Esecuzione e controllo di un'applicazione esterna

    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