Autore Topic: Risolto richiamare programmi esterni  (Letto 1808 volte)

Offline Cri

  • Gamberetto
  • *
  • Post: 43
    • Mostra profilo
Risolto richiamare programmi esterni
« il: 25 Maggio 2009, 16:58:12 »
Salve a tutti! Sono nuovo dell'ambiente gambas, ma ho usato vb, diverso tempofa, devo dire.
Ho appena scaricato gambas e mi pare che il passaggio da vb a gambas sia semplice e molto piacevole!
Come da oggetto, vorrei sapere come fare a richiamare un programma esterno (ad esempio io dovrei richiamare gedit o un altro editor testuale).
 :-D Grazie!

Ho trovato googolando: shell !!!

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Risolto richiamare programmi esterni
« Risposta #1 il: 26 Maggio 2009, 13:02:52 »
SHELL "gedit"

Funziona con qualsiasi comando da terminale.

Offline pier

  • Gamberetto
  • *
  • Post: 4
    • Mostra profilo
Re: Risolto richiamare programmi esterni
« Risposta #2 il: 16 Giugno 2009, 19:55:03 »
Salve a tutti, ho programmato in VB tanti anni fa e adesso sto provando con Gambas.
Sono riuscito a far partire un'applicazione esterne con SHELL, ma se volessi chiuderla?
Ho visto KILL ma non credo di aver capito come fare...

Grazie

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Risolto richiamare programmi esterni
« Risposta #3 il: 16 Giugno 2009, 21:21:42 »
per killarla devi conoscere il pid del programma che hai lanciato

puoi lanciare il programma cosi:
Codice: [Seleziona]

 DIM comando as string 'stringa contenente il programma da lanciare
 
  hProcess = SHELL comando FOR READ WRITE AS "hProcess"
  pid = hProcess.Id

 


la variabile pid dovrà essere di tipo globale e quindi dichiarata subito dopo

Codice: [Seleziona]
' Gambas class file

con
Codice: [Seleziona]

PRIVATE pid AS Integer


per killare il programma fai:

Codice: [Seleziona]

pid=pid+1
SHELL "kill " & pid


spesso  il programma lanciato non è uguale a pid bensì a pid+1

dipende da cosa vai a lanciare
se un programma esterno probabilmente sarà pid=pid+1

se invece è un comando shell sarà pid=pid

  • Visitatore
Re: Risolto richiamare programmi esterni
« Risposta #4 il: 16 Giugno 2009, 23:16:52 »
Ma perchè non fai
Codice: [Seleziona]
hprocess.kill
   

e perchè dichiari
Codice: [Seleziona]
FOR READ WRITE AS "hprocess" 

se non hai bisogno di legger un output ???

I'm a little bit confused ...
 :-?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Risolto richiamare programmi esterni
« Risposta #5 il: 16 Giugno 2009, 23:35:23 »
siccome se lanci un programma esterno il pid di hprocess non sarà quello del programma bensi quello del comando shell (ovvero un terminale) percui ho dovuto usare kill .....pid aumentando il pid di 1
o perlomeno questo è quello che succedeva a me

in quel caso il comando e tzap con altri non saprei come ho scritto prima è da verificare

ho usato

Codice: [Seleziona]
FOR READ WRITE AS "hprocess"


semplicemente perche così mi funzionava se non ricordo male diversamente non funzionava , sicuramente mi sbaglio visto che questo codice l'ho scritto mesi   mesi fa per un mio programma e potrebbe essere stata una svista oppure facevo anche operazioni di lettura dello stato .

comunque credo non faccia male a nessuno quel read write
bisognerebbe fare delle prove

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Risolto richiamare programmi esterni
« Risposta #6 il: 17 Giugno 2009, 08:44:59 »
Si potrebbe anche usare

SHELL "killall " & nome_programma

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Risolto richiamare programmi esterni
« Risposta #7 il: 17 Giugno 2009, 10:18:36 »
Ovviamente le implementazioni possibili sono diverse, e tutte dipendono dalle necessità progettuali dell'applicazione ;-)

Mi unisco al coro di suggerimenti ricordando il comodo
Codice: [Seleziona]

SHELL "comando" WAIT

che blocca l'esecuzione del programma in Gambas ed attende il termine dell'applicazione lanciata. Ovviamente se se ne deve attendere il termine ;-)
Visita il mio sito personale: http://www.leonardomiliani.com

Offline pier

  • Gamberetto
  • *
  • Post: 4
    • Mostra profilo
Re: Risolto richiamare programmi esterni
« Risposta #8 il: 17 Giugno 2009, 21:31:35 »
Abbiate pazienza, è il primo giorno che sbirulo con Gambas...
Comunque ho risolto con un
Shell "killall " che me la chiude, avevo visto hprocess ma mi sembrava un po' complicato il primo giorno.
Sto tentando di fare un programmino che mi permetta di registrare da scheda di acquisizione tv, però anche il canale composito.
Sono riuscito a fare il preview con mplayer passandogli i parametri da Gambas e a registrare con mencoder (dando dei parametri ottimali). Prima di modificare con Gambas i parametri di registrazione, che non dovrebbe essere un grosso problema, ho un inconveniente e cioè che non posso vedere mentre registro perchè mencoder non registra se mplayer è aperto e se chiudo mplayer e lo riapro dopo aver lanciato la registrazione vedo una bella schermata verde... insomma i due insieme non vanno d'accordo.
Usavo XDTV ma da quando hanno aggiornato le GCC non riesco più a compilarlo...
Prima che diventi stupido a cercare, si può usare Moviebox per vedere dei filmati?
Grazie

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Risolto richiamare programmi esterni
« Risposta #9 il: 17 Giugno 2009, 21:56:53 »
no moviebox visualizza solo gif

guarda il programma di esempio mywebcam presente in gambas , ti permette di visualòizzare uno streamin video prelevato da una webcam o da una qualsiasi scheda acquisizione compatibile con v4l

Offline pier

  • Gamberetto
  • *
  • Post: 4
    • Mostra profilo
Re: Risolto richiamare programmi esterni
« Risposta #10 il: 18 Giugno 2009, 18:27:01 »
Mywebcam è bello, sono riuscito in poco tempo a modificare i parametri di visualizzazione, posso vedere il composito, ecc... Il problema è che non mi sembra che il programma possa fornire anche un output su file (a parte lo screenshot) e se tento (anche da shell) di registrare con mencoder trova il driver v4l2 già occupato e non registra. Analogamente se faccio partire prima mencoder, Mywebcam non mi fa vedere nulla... devo leggere un po'... che si possa fare è evidente, sul come è un'altra cosa....

Offline pier

  • Gamberetto
  • *
  • Post: 4
    • Mostra profilo
Re: Risolto richiamare programmi esterni
« Risposta #11 il: 02 Luglio 2009, 21:00:21 »
Ho praticamente ripetuto il post di prima, chiedo scusa...

Offline giulio

  • Maestro Gambero
  • ****
  • Post: 280
    • Mostra profilo
Re: Risolto richiamare programmi esterni
« Risposta #12 il: 02 Luglio 2009, 22:38:31 »
Post errato.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.307
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Risolto richiamare programmi esterni
« Risposta #13 il: 15 Marzo 2012, 04:51:42 »
Riguardo alla chiusura dei programmi esterni ho provato  :-[ a fare un riassuntino qui:
http://www.gambas-it.org/wiki/index.php/Chiudere_programmi_esterni
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »