[Gambas-user] Problem with EXEC and GB.Desktop

Lewis Balentine lewis at ...3412...
Thu Nov 27 00:24:38 CET 2014


Oh, I waited long enough. Here is the work around ...
-----------------
   WW = Desktop.FindWindow(WindowTitle)
   ' WW[?] ALWAYS returns an 'out of bounds' error regardless of what 
value "?" is.
   ' However WW does hold a valid Window ID
   WorkStr = Str$(WW)
   ' this gives us a string of the form "(Integer[] 0xc25688)"
   ' now we need to extract HEX digits and convert them to an integer
   p = InStr(WorkStr, "0x")
   WorkStr = Mid(WorkStr, InStr(WorkStr, "0x") + 2)
   WorkStr = Left(WorkStr, Len(WorkStr) - 1)
   n = Val("&H" & WorkStr)
--------------------------------

Regards,

Lewis

P.S.

"Artificial Intelligence is no match for natural stupidity."

I like that :>)

Send Gambas-user mailing list submissions to
	gambas-user at lists.sourceforge.net
------------------------------

Message: 3
Date: Wed, 26 Nov 2014 13:55:48 -0500
From: T Lee Davidson <t.lee.davidson at ...626...>
Subject: Re: [Gambas-user] Problem with EXEC and GB.Desktop
To: gambas-user at lists.sourceforge.net
Message-ID: <54762234.4010207 at ...626...>
Content-Type: text/plain; charset=utf-8; format=flowed

On 11/26/2014 07:45 AM, Lewis Balentine wrote:
> /' Gambas module file
> ' uses:
> '  gb
> '  gb.desktop
> '  gb.desktop.x11(automatically selected by gb.desktop)
> '  gb.image(automatically selected by gb.desktop)
> '  gb.qt4 (alternates are: gb.gtk, gb.gtk3, gb.gui)
>
> Public Sub Main()
>     Dim S0, S1, S2 As String
>     Dim ww As Integer[]
>     Dim n, WinId As Integer
>
>     S0 = "/usr/bin/mate-terminal"
>     S1 = "--title=" & Chr(34) & "Exec Terminal" & Chr(34)
>     S2 = "DISPLAY=:0.0"
>     Exec [S0, S1] With [S2]
>     ' at list 0.25 second delay required between exec and Desktop.FindWindow
>     ' may vary according to hardware
>     Wait 2
>     ww = Desktop.FindWindow("Shell Terminal")
>     n = ww.Count - 1
>     'WinId is the same as xwininfo id
>     WinId = ww[n]
>     WinId = ww[0]
>     Desktop.ActiveWindow = WinId
>     Desktop.SendKeys("ls -l \n")
>     Quit
> End
> /----------------------------------------------------------------------------------------------------------/
> /
>
> /With ALL component options ww.Count returns 0 although ww[0] holds a
> valid ID.
> With ALL component options *ww[0] *generates *?out of bounds? error*..
> With gb.gui.opengl (select GTK+3) the program crashes at the first line
> of code.

I think maybe you are not waiting long enough. I have to "Wait 5" (on my
admittedly slow system) to keep from getting the "out of bounds error".
When I do that, all works just fine.


-- 
Lee
__________

"Artificial Intelligence is no match for natural stupidity."







More information about the User mailing list