Ora vorrei intercettare la richiesta di chiusura dell'applicazione gambas da parte ..... dell'utente quando preme il pulsante STOP nell'ide di gambas.Suppongo da queste due righe che, quando l'utente preme il tasto rosso dello "Stop" nell'IDE, tu voglia che l'applicazione che si sta appunto per chiudere intercetti l'evento della sua morte. :death:
l'evento DEACTIVATE non si puo' usare, perche' viene lanciato anche semplicemente la finestra dell'app viene nascosta da altre finestre del desktop manager.
in realta' il DEACTIVATE me lo lancia anche quando metto una finestra sopra quella dell'applicazione gambas ....Ma certamente non quando la finestra dell'applicazione è stata nascosta, abbassata.
si un supervisor come appunto "supervisor" (un utile app linux) potrebbe essere interessante.Basta un'applicazioncina Gambas che periodicamente va a vedere se il processo dell'applicazione monitorata è ancora eistente.
potrei scansionare i processi (sospettamente) figli di una precedente istanzaScusa, ma 'sti fiji de na...... come vengono lanciati ?
' Gambas class file
Private Player As Process
......
Public Sub PlayFile(Path As String)
Player = Shell "mpv \x22" & Path & "\x22 --no-osc --input-unix-socket=/tmp/mpvsocket" For Output As "Osserva"
End
.....
Public Sub Osserva_Read()
If Player.EndOfFile = True Then
Debug "fine" & Time
Else
Player.ReadLine
Endif
End
' Gambas class file'
'' La proprietà Stacking su Above.
Private $bAttivo As Boolean
Public Sub Form_Deactivate()
If $bAttivo = False Then Print "Hanno cliccato sull'ide allora faccio qualcosa"
End
Public Sub Attiva()
' Viene attivato dalle altre form dell'applicazione''
$bAttivo = True
End
E una cosa così?:
...
sembra non possa funzionareRipeto che l'uso dell'evento _Deactivate( ) non può andare bene, poiché non viene sollevato qualora la finestra interessata dell'applicazione sia stata abbassata.
Ora vorrei intercettare la richiesta di chiusura dell'applicazione gambas......ma tu quale delle due cose vuoi ?
Non so cosa inventarmi per terminare i processi figli che il mio applicativo lancia dopo il suo avvio.
Ripeto che l'uso dell'evento _Deactivate( ) non può andare bene, poiché non viene sollevato qualora la finestra interessata dell'applicazione sia stata abbassata.
Se la finestra principale ha la proprietà Stacking su AboveForse non sono in grado di esprimermi tecnicamente in modo preciso.
...e lavorare direttamente nella routine Form_close? :-\
:ciao:
Penso occorra rivolgersi al componente gb.desktop.Qualunque diavoleria si voglia utilizzare .....magari una bella Macchina del Tempo (http://forum.ubuntu-it.org/images/smilies/love.gif) ...bisognerà comunque avere un secondo programma che constati la chiusura del'applicazione principale.
Non funziona, come del resto aveva già constatato allegfede, ti basta fare una semplice prova crei un progetto graficose nella routine -Clouse richiamo una routine che mi stampa in una textarea e poi metto un wait, la form aspetta a chiudersi e scrive prima nella textarea.
.bisognerà comunque avere un secondo programma che constati la chiusura del'applicazione principale.io ho capito che l'ultima cosa che deve accadere è la chiusura del main, e che questa deve attendere la chiusura di altri form...
' Gambas class file
Private bol As Boolean = False
Public Sub Form_close()
TextArea1.text = "QQQQ"
Repeat
If bol = False Then
Wait 0.1
Endif
Until bol = True
End
Public Sub Button1_Click()
bol = True
Endma sei sicuro di aver inquadrato il problema?no, non sono sicuro! :P
Mi sa che hai frainteso il pulsantekicco, effettivmente non è che hai premuto quello sbagliato ? :-X
Tu mi risponderai Chiedilo a lui!C'è anche un'altra domanda:
Allegfede perchè?
Public Sub ClearSystem()
WriteToSocket("stop")
End
......
Function WriteToSocket(comando As String) As String
Dim ritorno As String
Select Case comando
Case "add-logo"
comando = "echo overlay-add 0 630 450 \x22/mnt/Qnap2OTVA/Tele_Galileo/LOGHI/StationLogoSD.data\x22 1 \x22bgra\x22 100 100 400 | socat - /tmp/mpvsocket"
Case "remove-logo"
comando = "echo overlay-remove 0 | socat - /tmp/mpvsocket"
Case "stop"
comando = "echo \x22stop\x22 | socat - /tmp/mpvsocket"
End Select
Shell comando To ritorno
Debug ritorno
End
Non so se ti può servireUn'abile ed interessante proposta, ma allegfede, quando chiude il programma Gambas, dice che preme "il pulsante STOP dell'IDE di gambas."......
Non so se ti può servireUn'abile ed interessante proposta, ma allegfede, quando chiude il programma Gambas, dice che preme "il pulsante STOP dell'IDE di gambas."......
Si tratterebbe di intercettare la pressione del pulsante "STOP" dell'IDE di Gambas..... non so se mi spiego............... (https://www.foxestalk.co.uk/forums/uploads/emoticons/default_rolleyes.gif)
Poiché in tal caso l'interruzione non avviene agendo "dal" programma lanciato, resto del parere che la sua interruzione è "osservabile" soltanto attraverso un altro programma "spione", che svolga appunto la funzione di verificare l'esistenza in ogni momento del programma Gambas principale, ed eventualmente chiudere i programmi "figli", uccidendone i processi, aperti dal quel programma Gambas principale quando era "in vita".
Allora, siccome l'interfaccia NON ha il pulsante di chiusura (per evitare che l'utente finale possa accidentalmente terminare il "demone" (il mio gestore della playlist scritto in gambas), premo il pulsante STOP dell'IDE di gambas.
Public Sub btClose_Click()
WriteToSocket("stop")
Wait 0.2
Me.Close
End
si il post effettivamente ha una doppia valenza, quella pratica a cui Gianluigi ha sopperito con un interessante suggerimento, e quella didattica a cui pensava Vuott.
che scrivo sul thread [(semi)RISOLTO] ? :D
Ma... scusa... allora la questione che dovevi porre non era " come intercettare la chiusura di un programma effettuata premendo il tasto Stop dell'IDE ", bensì " come chiudere un programma, affinché la chiusura possa essere intercettata dal programma medesimo prima di chiudersi ". (http://forum.ubuntu-it.org/images/smilies/grrr.gif)
Allora, siccome l'interfaccia NON ha il pulsante di chiusura (per evitare che l'utente finale possa accidentalmente terminare il "demone" (il mio gestore della playlist scritto in gambas), premo il pulsante STOP dell'IDE di gambas.
Non è facile farsi comprendere perché non tutti interpretiamo le cose allo stesso modo, anzi direi che le interpretiamo quasi sempre in modi differenti ;DPuò non essere errata questa tua considerazione (http://forum.ubuntu-it.org/images/smilies/sisi.gif) , ma... allora che scriviamo a fare qua sopra ? :rotfl:
Rischiamo ora di rotolare sul suolo della gnoseologia. :-X
Insomma tutta roba che non ha niente a che vedere con sane Macchine del Tempo ! :hatecomputer: