Newsgroup: it.comp.lang.visual-basic
Titolo: Gestire programma esterno. Aiuto

 
          Ciao a tutti,
ho un grosso problema, devo gestire in modo autonomo un programma esterno
attraverso VB6.
Mi spiego meglio: attraverso VB6 devo poter controllare e interagire con un
programma lanciato precedentemente ovvero vorrei premere i pulsanti,
controllare le caselle di testo o avviare i menu di questo programma
attraverso una routine VB6 (possibilmente non con il movimento del mouse).
Ho cercato ovunque delle specifiche ma non ho trovato nulla.
Vi chiedo un aiuto, una piccola indicazione su come posso risolvere questo
problema.
Vi ringrazio di cuore anticipatamente
Sabrina
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Sperando che sia tutta una cosa legale, a mio parere dovresti lavorare con 
le API: prima intercettando il PID del processo con cui interagire e poi 
inviando messaggi (non quelli col subject! :-P ) ai vari controlli. Una cosa 
abbastanza complicata e nn certo per utenti medi. Piuttosto, nn per farmi 
gli affari tuoi, ma non č meglio riscrivere il vecchio programma ed 
inserirne le funzionalitą nel nuovo che combinare un tale pastrocchio!?
 :-)
ciao da striker 




 molto grata.
Prova un po a guardare qui:
http://www.devspy.com/public/Art/Lang/Art.aspx?lang=01&id=00009
naturalmente e solo un primo approcio alla tecnica del c.d. "subclassing".
Ti ripeto, non per scoraggiarti, ma è un approcio non da utenti medi e, per 
di più, molte volte crea problemi, se non ben strutturato ogni errore può 
mandare in crash il programma. 

base ad alcuni parametri [...]
http://www.freewebz.com/iosononiubbo/faq.htm#quotare
devi farlo proprio in Visual Basic ?
sei esperta in questo linguaggio ?
Perche' la cosa e fattibile me non per un principiante
se vuoi una cosa alla mano da fare in pochi minuti ti conviene
http://www.hiddensoft.com/autoit3/
che non c'entra niente con VB ma come detto ti permette di fare
tutto in pochi minuti
scarica il programma e fai partire la tua applicazione e subito dopo
C:\Programmi\Autoit3\AU3_Spy.exe
 avrai tutti i parametri con qui interagire
L'output di tutto volendo lo puoi salvare anche in un EXE come
un programma fatto in VB
--
Fosco

>>>>>>>>>> Last Control Under Mouse <<<<<<<<<<<
Control ID: 1136
Class: ComboBox2
Text:
;copia incolla su Notepad e salva come test.au3
 Run("notepad.exe","", 3)
 sleep(500)
   AutoItSetOption("WinTitleMatchMode", 4)
 WinWaitActive( "Senza nome - Blocco note", "", 5 )
WinMenuSelectItem("Senza nome - Blocco note","","&File", "&Salva")
WinWaitActive( "Salva con nome", "", 3 )
ControlFocus ( "Salva con nome","" , "ComboBox2" )
;interagisci col combo
$a =ControlGetText ( "Salva con nome", "", "ComboBox2" )
  MsgBox(0, "", $a)
ControlSend ( "Salva con nome", "", "ComboBox2", "T" )
$b =ControlGetText ( "Salva con nome", "", "ComboBox2" )
  MsgBox(0, "", $b)
--
Fosco

   Grazie a tutti per i consigli
Sabrina


> attraverso una routine VB6 (possibilmente non con il movimento del mouse).
Un paio di idee:
-----------------
Devi individuare l'Handle della finestra del tuo programma target
(API FindWindowEx...), 
per voi individuare l'Handle dei controlli child al suo interno
(API EnumChildWindows...), 
e quando hai questi Handles 
li bombardi con l' API SendMessage 
caricato degli Handles e relativa azione (click, settext...)
nota:
posso aver sbagliato il nome di qualche API 
ma la procedura è questa
-------
Puoi anche attivare la finestra del tuo programma target 
(mettendogli il fuoco) 
e poi usare SendKeys e/o usare le combinazioni di tasti
che supporta, per interagire coi controlli.

    Grazie a tutti per i consigli
Se preferisci farlo tutto in Visual Basic ecco un esempio pretico
 .. NON funziona sui win9x
http://www.developerfusion.co.uk/show/170/
--
Fosco