Altro problema col mio chiptune player, ho provato ad integrare un visualizzatore musicale (fische) tramite embedder, il codice sembra funzionare in modo random.
Mi spiego meglio, su kubuntu funziona quasi sempre, testando l'applicativo su Lubuntu ho notato che embedder non riesce a rintracciare correttamente il titolo della finestra, pur essendo quest'ultimo esatto.
Il mio dubbio è che gambas3 abbia un qualche bug relativo a questo componente anche perchè il codice mi sembra corretto
Vi posto la porzione di codice relativa all'embedder per chiarire meglio il concetto:
Public Sub Form_Open()
Dim aHandle As Integer[]
Dim iHandle As Integer
Dim version As Integer
If Exist("/usr/bin/fische") Then
filtro.anchor
version = 0
pfische = Exec ["fische", "-e", "-p", "-g 357x392"]
Wait 0.2
verifica:
aHandle = Desktop.FindWindow("fische 3." & Str(version))
If ahandle.count = 0 Then
version = version + 1
If version > 5 Then
Me.Close
Return
End If
Goto verifica
End If
iHandle = aHandle[0]
Try embEmbedder.Embed(iHandle)
If Error Then Message.Warning(Error.Text)
Else
Message("Fische Visualizer is not installed in this computer" & "\n" & "Please install it from official repository", "&Close")
Me.close
End If
End
...è vero, fino a poco tempo fa funzionava perfettamente! :-\
Più precisamente facendo una prova analoga al tuo esempio, a me ora a volte va, altre volte non va... :hatecomputer: In quest'ultimo caso sulla riga:
iHandle = aHandle[0]
mi esce l'errore: Out of Bounds.
Però ripetendo la prova, altre volte - come ho detto - va bene. :-\
Ma..."c'è sempre un'alternativa al battersi" (Obi Wan Kenobi - Guerre Stellari), prova quest'altro modo: :D
Public Sub Button1_Click()
Dim dWindow As DesktopWindow
Dim a As Integer
For Each dWindow In Desktop.Windows
' cerca la finestra avente nome "nome_finestra_programma"...
If dWindow.name = "nome_finestra_programma" Then
' ...per estrarne il Pid (già in decimale !)...
a = dWindow.Id
Endif
Next
' ...che va ad inserire in Embed:
Embedder1.Embed(a)
End
(anche qui bisogna avere il componente gb.desktop attivato)
http://www.gambas-it.org/wiki/index.php/Embedder