Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET]Prelevare valori da altri programmi
Forum - C# / VB.NET - [VB.NET]Prelevare valori da altri programmi

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 18:15
Mercoledì, 25/11/2009
Salve a tutti ho un piccolo problema...Io dovrei prelevare dei valori da un'altro programma al difuori del mio cioè ad esempio un programma scritto in C++ quando è in eseguzione mi indica i valori 5 sotto la stringa "a:" e il valore 10 sotto la stringa "b:" come posso prelevare i valori 5 e 10? conoscendo le stringhe dove sono i valori...mi potete aiutare:hail::hail::hail::hail:????? Grazie:k::hail::hail::hail:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:07
Giovedì, 26/11/2009
Cosa significa il "valore sotto la stringa"? Hai un dizionario? Un albero? Una lista? Due array? Un'istruzione cout?

Comunque, se devi leggere la memoria di processo, in Vista non si può fare.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 21:28
Giovedì, 26/11/2009
Io vorrei prendere dal programma ffmpeg dei valori che mi indichino la percentuale di avanzamento della conversione come posso fare?:hail::k:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:56
Venerdì, 27/11/2009
Ma al posto di fare esempi campati per aria, non potevi subito dire quello che volevi fare? Devo sempre fare un mucchio di domande per sapere cosa pensa la gente.

In quel caso devi redirigere l'output del programma verso uno stream di memoria gestito dalla tua applicazione. C'è un esempio di come fare nei sorgenti di Wav Converter. E' necessario, però, che sia tu ad avviare il processo.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 18:59
Venerdì, 27/11/2009
Ok...Io l'avevo già visto il sorgente di Wav Converter ma nn riesco a capire...potresti spiegarmi???:hail::hail::hail:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 14:53
Domenica, 29/11/2009
Codice sorgente - presumibilmente VB.NET

  1. P = New Process
  2.             P.StartInfo.FileName = Lame
  3.             P.StartInfo.Arguments = Info.Arguments & String.Format("{0}{1}{0} {0}{2}{0}", Chr(34), File, Info.Folder & "\" & IO.Path.GetFileNameWithoutExtension(File) & ".mp3")
  4.             P.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
  5.             P.StartInfo.UseShellExecute = False
  6.             P.StartInfo.RedirectStandardError = True
  7.             P.StartInfo.CreateNoWindow = True
  8.             AddHandler P.ErrorDataReceived, AddressOf Process_DataReceived
  9.  
  10.             P.Start()
  11.             P.BeginErrorReadLine()


Vedi, qua ho scritto StartInfo.RedirectStandardError = True: significa che i dati passati a stderr verranno redirezionati all'applicazione. La stessa cosa vale per RedirectStandardOutput (il tuo caso).
Dopo che il processo è iniziato, si deve richiamare BeginErrorReadLine (o BeginOutputReadLine) per comunicare di iniziare a prelevare i dati in arrivo sullo stream di errore (o di output). Questa è una procedura asincrona, quindi lavora su un thread separato. Quando vengono ricevuti nuovi dati, viene generato l'evento ErrorDataReceived (o OutputDataReceived): per ottenere tali dati, devi creare un nuovo gestore d'evento per quell'evento, come è scritto nel codice di cui sopra.
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Process_DataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs)
  2. '...
  3. End Sub


e.Data contiene i dati ricevuti.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 19:09
Martedì, 01/12/2009
Ok funziona alla grande grazie...ma adesso un'altro problema cioè:
in Nella Sub Process_DataReceived ho inserito due if per controllare quale stringa mi mostrava cioè se la stringa è: "Codifica audio fallita!" allora mi mostra il messaggio di errore invece se mi mostra un'altra stringa mi dice conversione terminata con successo! ma nel secondo if (visto che la stringa che mi indica il termine della conversione non è solo "Conversione terminata" ma un bel pò di stringa differenti) ho preso la stringa uguale per tutte le conversioni e l'ho inserita in un Containts o  in uno StartWith o in un'IndexOf ma x tutti e 3 mi da sempre lo stesso errore cioè: Riferimento a un oggetto non impostato su un'istanza di oggetto...Il codice è questo:
Codice sorgente - presumibilmente Delphi

  1. If e.Data.Contains("video:") Then
  2. MessageBox.show("Conversione Terminata!")
  3. End If


Potete aiutarmi?:hail::hail::hail::k:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:24
Mercoledì, 02/12/2009
Evidentemente, e.Data è Nothing... (anche se non dovrebbe, dato che l'evento viene generato quando si ricevono dei dati)


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 14:44
Mercoledì, 02/12/2009
Testo quotato

Postato originariamente da Il Totem:

Evidentemente, e.Data è Nothing... (anche se non dovrebbe, dato che l'evento viene generato quando si ricevono dei dati)



Ma se ad esempio la conversione genera un'errore mi dice che la conversione è stata interrotta e quindi non è possibile che e.Data sia Nothing...:-|

Edit:
     Risolto...avevi ragione totem..il e.Data alcune volte è null perciò mi dava questo errore, mi è bastato fare così:
Codice sorgente - presumibilmente VB.NET

  1. ElseIf e.Data <> "" Then
  2. If e.Data.Contains("video:") Then 'etc.
  3. End If
  4. End If


Grazie per l'aiuto...:k:

Ultima modifica effettuata da LittleHacker il 02/12/2009 alle 15:20


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo