Newsgroup: it.comp.programmare.win32
Titolo: Come 'premere' un tasto ad un programma Windows ?

Avrei bisogno di 'premere' un tasto (non da tastiera ma un button) di un
programma che gira regolarmente su Windows, tale pressione deve essere
eseguita dal mio gestionale.
In pratica e' come se dal mio applicativo volessi avviare Excel e poi
premere questo e quest'altro bottone sulla buttonbar presente sotto al menu
principale.
Premesso che del programma da controllare dispongo solo degli eseguibili,
come posso fare???
Grazie mille e ciao.
RobertoA

...

Correggimi se sbaglio.
Tu devi sostanzialmente eseguire un metodo da un applicativo diverso
dal tuo giusto ??? Ovviamente il metodo che richiami deve essere
quello richiamato dalla pressione del bottone .
Se e' cosi , devi vendere se la maschera "server" è disponibile a
parlare sulla DDE oppure se l' applicazione Sever ti mette a
disposizione delle interfacce.
Ciao
-- Fix

 ha scritto nel messaggio
news:51f3e037.04012...@posting.google.com...


 Avrei bisogno di 'premere' un tasto (non da tastiera ma un button) di un

Un'idea è:
::PostMessage(FindWindow(NULL,"nome della finestra"),WM_MYMESS,0,0);
Tenedo presente che il nome della finestra è possibile conoscerla
con SPY++ e che si può navigare tra le finestre (quindi i controlli)
con altre API tipo GetNextWindow direi che il gioco è fatto.
Se non si vuole usare SPY++ perché si cerca a Run-Time...
bé su MSDN c'è il punto "Enumerating All Processes" 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/enumerating_all_processes.asp
che può essere molto interessante.
Chiaramente se la finestra non c'é si possono avere alcuni problemini
;-)
Saluti 
JJ
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Chiaramente se la finestra non c'é si possono avere alcuni problemini
Ciao.
Io sto usando già da un po' le psapi, che includono enumProcesses,
e quello che mi serve, come fra l'altro ho scritto in un post
più avanti, è proprio rilevar queste finestrelle di errori di run-time,
che compaiono a schermo, ma non vengono elencate quell'esempio proposto su
msdn.
ho notato che sul task manager (su winnt 4 server), tale finestra compare
nella scheda "Applicazioni", ma non in quella "Processi",
e comunque mantine lo stesso nome del processo andato in errore.
cosa posso fare, considerando che ho la necessità di lavorare in remoto via
testo?
grazie
    Stefano

 PostMessage(FindWindow(NULL,"nome della finestra"),WM_MYMESS,0,0);
Ancora piů potente č SendMessageTimeout() ! :-)
-- 
........This message is best viewed with fixed spaced font..........
 
http://digilander.libero.it/fantoibed
 -=SpP=-

 inviare il comando di pressione del bottone.
SendMessageTimeout()
con uMsg==WM_COMMAND (e gli altri param come da SDK)
Io  ho  usato  questo  sistema   per  fare  il  bruteforcing  su  un
programmino (un crackme basato su  un emulatore di CPU) che chiedeva
una password. Con WM_SETTEXT scrivevo la  password in una EDIT e con
WM_COMMAND (uno dei  due param è la CTRL_ID del  BUTTON da premere e
l'altro è l'evento BN_PRESSED) premevo  in BUTTON "Check" per vedere
se  la  password  era  giusta.  Quindi  Con  FindWindow  trovavo  la
MessageBox  "Password errata!"  che appariva  e la  chiudevo (sempre
simulando  la pressione  del tasto  "OK"). Ho  iterato il  tutto per
tutte le password di un dizionario che avevo e.... non ho trovato la
password giusta perchè non era nel dizionario... :-(((
3  ore di  debugging con  SoftICE (  8888- )  e ho  tirato fuori  la
password giusta... 
Scusate   la   consecutio   temporum  generata   da   un   algoritmo
pseudocasuale, ma sono un po' di fretta e non ho tempo di riscrivere
il tutto in "itagliano corregiuto" :-)


     Stefano
Tutto quello che riesco a vedere con SPY++ posso ottenerlo a partire
dalle
funzioni già menzionate (e un grado di dettaglio superiore lo ha 
riportato fantoibed).
Per chiudere le finestre di errore senza conoscerne il nome
si potrebbe caratterizzarle con altri attributi come la dimensione:
di solito quelle finestre sono piccoline...
E' solo un suggerimento in attesa che qualcuno dia una soluzione
definitiva,
si intende (ammesso che esista).
