Tabs werden nicht richtig geöffnet

10/09/2012 09:59 ExChill#1
Hallo,

Ich schreibe zurzeit an einem Programm mit mehreren Tabs.


Wenn ich das Programm starte wird jedoch im Tab Prozesse immer der Inhalt des Tabs Streams angezeigt. Wenn ich dann auf Streams klicke wird immer noch der Tab Streams angezeigt und erst wenn ich dann wieder auf Prozesse klicke werden die Prozesse angezeigt.

Weiß jemand woran das liegt?

MfG ExChill
10/09/2012 10:06 Havelock_Vetinari#2
Quote:
Originally Posted by ExChill View Post
Hallo,

Ich schreibe zurzeit an einem Programm mit mehreren Tabs.


Wenn ich das Programm starte wird jedoch im Tab Prozesse immer der Inhalt des Tabs Streams angezeigt. Wenn ich dann auf Streams klicke wird immer noch der Tab Streams angezeigt und erst wenn ich dann wieder auf Prozesse klicke werden die Prozesse angezeigt.

Weiß jemand woran das liegt?

MfG ExChill
Code:
$gui = GUICreate("Programm", 300, 500)
$tab = GUICtrlCreateTab (0, 0, 300, 20)
$tpitem = GUICtrlCreateTabItem ("Prozesse") ;Tab Process Item
GUICtrlCreateLabel("testets",60,60)
$tsitem = GUICtrlCreateTabItem ("Streams") ;Tab Stream Item
GUICtrlCreateLabel("testetdggfgdgs",120,120)
GUISetState(@SW_SHOW)
While Sleep(10)
    $msg = GUIGetMsg()
    Select
        Case $msg = -3
            Exit
    EndSelect
WEnd
funktioniert
10/09/2012 10:14 ExChill#3
Hm, dann liegt es wohl am Inhalt der Tabs.
Im zweiten Tab hab ich den Befehl _IECreateEmbedded() benutzt.
Liegt es vielleicht daran?
10/09/2012 10:16 Havelock_Vetinari#4
Quote:
Originally Posted by ExChill View Post
Hm, dann liegt es wohl am Inhalt der Tabs.
Im zweiten Tab hab ich den Befehl _IECreateEmbedded() benutzt.
Liegt es vielleicht daran?
sollte normalerweise nicht daran liegen . Kommentier mal am besten alles aus und probier ob es dann funktioniert . Wenn ja , immer der reihe nach wieder was hinzufügen und testen ob es noch funktioniert
Und schön das GuiSetStae(@SW_SHOW) an das ende der GUI ;)
10/09/2012 10:46 ExChill#5
Das @SW_SHOW hat schon gereicht. Vielen Dank :)

Habe aber noch ein ähnliches Problem.
Im zweiten Tab steht folgender Code:

Code:
$ieoname = _IECreateEmbedded() ;IE Status Browser
	$ieoname2 = GUICtrlCreateObj ($ieoname, 0, 0, 0, 0) ;IE Name Object
	_IEAction ($ieoname2, "invisible")
	_IENavigate ($ieoname, $ourl)
	$onamehtml = _IEDocReadHTML ($ieoname2)
	$oname = _StringBetween ($onamehtml, $onamestart, $onameend)
Das Browserfenster, was eigentlich unsichtbar sein sollte, da ich nur was aus dem Quelltext auslesen will. Aber manchmal wird es trotzdem angezeigt (nicht immer). Liegt das vllt auch an einer falschen Reihenfolge oder sowas?
10/09/2012 11:35 Havelock_Vetinari#6
Quote:
Originally Posted by ExChill View Post
Das @SW_SHOW hat schon gereicht. Vielen Dank :)

Habe aber noch ein ähnliches Problem.
Im zweiten Tab steht folgender Code:

Code:
$ieoname = _IECreateEmbedded() ;IE Status Browser
	$ieoname2 = GUICtrlCreateObj ($ieoname, 0, 0, 0, 0) ;IE Name Object
	_IEAction ($ieoname2, "invisible")
	_IENavigate ($ieoname, $ourl)
	$onamehtml = _IEDocReadHTML ($ieoname2)
	$oname = _StringBetween ($onamehtml, $onamestart, $onameend)
Das Browserfenster, was eigentlich unsichtbar sein sollte, da ich nur was aus dem Quelltext auslesen will. Aber manchmal wird es trotzdem angezeigt (nicht immer). Liegt das vllt auch an einer falschen Reihenfolge oder sowas?
Kenne mich damit leider nicht aus . Versuche aber mal die Zeilen :
_IEAction ($ieoname2, "invisible")
_IENavigate ($ieoname, $ourl)
zu vertauschen. Vllt. hilfts
10/09/2012 12:20 ExChill#7
Hat leider nichts gebracht :(

Aber vielleicht kannst du mir bei nem anderen Problem helfen :P

Code:
;Status-Übersicht

$onamestart = "<live_name>"
$onameend = "</live_name>"
$ostatusstart = "<live_is_live>"
$ostatusend = "</live_is_live>"
$oviewerstart = "<live_viewers>"
$oviewerend = "</live_viewers>"
$ogamestart = "<game_name>"
$ogameend = "</game_name>"

$ooliveid = 2721

Local $ourl = "http://api.own3d.tv/rest/live/status.xml?liveid=" & $ooliveid

	$ieostatus = _IECreateEmbedded() ;IE Status Browser
	$ieostatus2 = GUICtrlCreateObj ($ieostatus, 0, 0, 0, 0) ;IE Name Object
	_IEAction ($ieostatus2, "invisible")
	_IENavigate ($ieostatus[COLOR="Red"]2[/COLOR], $ourl)
	$ostatushtml = _IEDocReadHTML ($ieostatus2)
	$oname = _StringBetween ($ostatushtml, $onamestart, $onameend)
	$ostatus = _StringBetween ($ostatushtml, $ostatusstart, $ostatusend)
	$oviewer = _StringBetween ($ostatushtml, $oviewerstart, $oviewerend)
	$ogame = _StringBetween ($ostatushtml, $ogamestart, $ogamestart)


$overviewlist = GUICtrlCreateListView ("Stream | Status | Viewer |Game", 800, 470)
GUICtrlCreateListViewItem ($oname & "|" & $ostatus & "|" & $oviewer & "|" & $ogame, $overviewlist)
In der ListView sollte dann eigentlich der Name, der Status, die Vieweranzahl, etc. angezeigt werden, allerdings steht überall nur 0.
Daher gehe ich davon aus, dass das auslesen nicht ganz geklappt hat.
Vielleicht findest du ja den Fehler :)

MfG ExChill

EDIT: Hab den Fehler wegen dem Invisible gefunden :P Hab ihn im Code rot markiert.
10/09/2012 12:23 Havelock_Vetinari#8
Quote:
Originally Posted by ExChill View Post
Hat leider nichts gebracht :(

Aber vielleicht kannst du mir bei nem anderen Problem helfen :P

Code:
;Status-Übersicht

$onamestart = "<live_name>"
$onameend = "</live_name>"
$ostatusstart = "<live_is_live>"
$ostatusend = "</live_is_live>"
$oviewerstart = "<live_viewers>"
$oviewerend = "</live_viewers>"
$ogamestart = "<game_name>"
$ogameend = "</game_name>"

$ooliveid = 2721

Local $ourl = "http://api.own3d.tv/rest/live/status.xml?liveid=" & $ooliveid

	$ieostatus = _IECreateEmbedded() ;IE Status Browser
	$ieostatus2 = GUICtrlCreateObj ($ieostatus, 0, 0, 0, 0) ;IE Name Object
	_IEAction ($ieostatus2, "invisible")
	_IENavigate ($ieostatus, $ourl)
	$ostatushtml = _IEDocReadHTML ($ieostatus2)
	$oname = _StringBetween ($ostatushtml, $onamestart, $onameend)
	$ostatus = _StringBetween ($ostatushtml, $ostatusstart, $ostatusend)
	$oviewer = _StringBetween ($ostatushtml, $oviewerstart, $oviewerend)
	$ogame = _StringBetween ($ostatushtml, $ogamestart, $ogamestart)


$overviewlist = GUICtrlCreateListView ("Stream | Status | Viewer |Game", 800, 470)
GUICtrlCreateListViewItem ($oname & "|" & $ostatus & "|" & $oviewer & "|" & $ogame, $overviewlist)

In der ListView sollte dann eigentlich der Name, der Status, die Vieweranzahl, etc. angezeigt werden, allerdings steht überall nur 0.
Daher gehe ich davon aus, dass das auslesen nicht ganz geklappt hat.
Vielleicht findest du ja den Fehler :)

MfG ExChill
_stringbeetwen gibt ein Array zurück ;)
10/09/2012 12:34 ExChill#9
Code:
;Status-Übersicht

$onamestart = "<live_name>"
$onameend = "</live_name>"
$ostatusstart = "<live_is_live>"
$ostatusend = "</live_is_live>"
$oviewerstart = "<live_viewers>"
$oviewerend = "</live_viewers>"
$ogamestart = "<game_name>"
$ogameend = "</game_name>"

$ooliveid = 2721

Local $ourl = "http://api.own3d.tv/rest/live/status.xml?liveid=" & $ooliveid
Local $oname[1]
Local $ostatus[1]
Local $oviewer[1]
Local $ogame[1]

	$ieostatus = _IECreateEmbedded() ;IE Status Browser
	$ieostatus2 = GUICtrlCreateObj ($ieostatus, 0, 0, 0, 0) ;IE Name Object
	_IEAction ($ieostatus2, "invisible")
	_IENavigate ($ieostatus2, $ourl)
	$ostatushtml = _IEDocReadHTML ($ieostatus2)
	$oname[0] = _StringBetween ($ostatushtml, $onamestart, $onameend)
	$ostatus[0] = _StringBetween ($ostatushtml, $ostatusstart, $ostatusend)
	$oviewer[0] = _StringBetween ($ostatushtml, $oviewerstart, $oviewerend)
	$ogame[0] = _StringBetween ($ostatushtml, $ogamestart, $ogamestart)


$overviewlist = GUICtrlCreateListView ("Stream | Status | Viewer |Game", 800, 470)
GUICtrlCreateListViewItem ($oname[0] & "|" & $ostatus[0] & "|" & $oviewer[0] & "|" & $ogame[0], $overviewlist)
Jetzt kommt zwar keine Fehlermeldung mehr, aber es kommt immer noch überall 0 raus :(
10/09/2012 12:56 Havelock_Vetinari#10
Quote:
Originally Posted by ExChill View Post
Code:
;Status-Übersicht

$onamestart = "<live_name>"
$onameend = "</live_name>"
$ostatusstart = "<live_is_live>"
$ostatusend = "</live_is_live>"
$oviewerstart = "<live_viewers>"
$oviewerend = "</live_viewers>"
$ogamestart = "<game_name>"
$ogameend = "</game_name>"

$ooliveid = 2721

Local $ourl = "http://api.own3d.tv/rest/live/status.xml?liveid=" & $ooliveid
Local $oname[1]
Local $ostatus[1]
Local $oviewer[1]
Local $ogame[1]

	$ieostatus = _IECreateEmbedded() ;IE Status Browser
	$ieostatus2 = GUICtrlCreateObj ($ieostatus, 0, 0, 0, 0) ;IE Name Object
	_IEAction ($ieostatus2, "invisible")
	_IENavigate ($ieostatus2, $ourl)
	$ostatushtml = _IEDocReadHTML ($ieostatus2)
	$oname[0] = _StringBetween ($ostatushtml, $onamestart, $onameend)
	$ostatus[0] = _StringBetween ($ostatushtml, $ostatusstart, $ostatusend)
	$oviewer[0] = _StringBetween ($ostatushtml, $oviewerstart, $oviewerend)
	$ogame[0] = _StringBetween ($ostatushtml, $ogamestart, $ogamestart)


$overviewlist = GUICtrlCreateListView ("Stream | Status | Viewer |Game", 800, 470)
GUICtrlCreateListViewItem ($oname[0] & "|" & $ostatus[0] & "|" & $oviewer[0] & "|" & $ogame[0], $overviewlist)
Jetzt kommt zwar keine Fehlermeldung mehr, aber es kommt immer noch überall 0 raus :(
Code:
$onamestart = "<live_name>"
$onameend = "</live_name>"
$ostatusstart = "<live_is_live>"
$ostatusend = "</live_is_live>"
$oviewerstart = "<live_viewers>"
$oviewerend = "</live_viewers>"
$ogamestart = "<game_name>"
$ogameend = "</game_name>"

$ooliveid = 2721

Local $ourl = "http://api.own3d.tv/rest/live/status.xml?liveid=" & $ooliveid
Local $oname
Local $ostatus
Local $oviewer
Local $ogame

	$ieostatus = _IECreateEmbedded() ;IE Status Browser
	$ieostatus2 = GUICtrlCreateObj ($ieostatus, 0, 0, 0, 0) ;IE Name Object
	_IEAction ($ieostatus2, "invisible")
	_IENavigate ($ieostatus2, $ourl)
	$ostatushtml = _IEDocReadHTML ($ieostatus2)
	$oname = _StringBetween ($ostatushtml, $onamestart, $onameend)
	$ostatus = _StringBetween ($ostatushtml, $ostatusstart, $ostatusend)
	$oviewer = _StringBetween ($ostatushtml, $oviewerstart, $oviewerend)
	$ogame = _StringBetween ($ostatushtml, $ogamestart, $ogamestart)


$overviewlist = GUICtrlCreateListView ("Stream | Status | Viewer |Game", 800, 470)
GUICtrlCreateListViewItem ($oname[0] & "|" & $ostatus[0] & "|" & $oviewer[0] & "|" & $ogame[0], $overviewlist)
10/09/2012 13:02 ExChill#11
Quote:
Originally Posted by Alex_II View Post
Das hatte ich am Anfang auch. Da kommt jedoch wieder der Fehler "Subscript used with non-Array variable" in der letzten Zeile.
10/09/2012 13:07 Havelock_Vetinari#12
Quote:
Originally Posted by ExChill View Post
Das hatte ich am Anfang auch. Da kommt jedoch wieder der Fehler "Subscript used with non-Array variable" in der letzten Zeile.
Dann wurde der string von _stringbeetwen nicht gefunden
10/10/2012 11:46 ExChill#13
So, der Großteil funktioniert jetzt schonmal.

Nocheinmal der komplette Code:

Code:
#include <GuiConstants.au3>
#include <GuiComboBoxEx.au3>
#include <GuiListView.au3>
#include <Array.au3>
#include <IE.au3>
#include <String.au3>


$gui = GUICreate("Programm", 1905, 1000)

$tab = GUICtrlCreateTab (0, 0, 1920, 20)

$tstreamsitem = GUICtrlCreateTabItem ("Streams") ;Tab Streams Item

;~~~~~~~~~~~~~~~~~~~~~~
;OWN3D STREAM ÜBERSICHT
;~~~~~~~~~~~~~~~~~~~~~~

    $onamestart = ">live_name</span>></a>"
    $onameend = "<span xmlns="
    $oviewerstart = ">live_viewer</span>></a>"
    $oviewerend = "<span xmlns="
    $ogamestart = ">game_short</span>></a>"
    $ogameend = "<span xmlns="
    $ostatusstart = ">live_is_live</span>></a>"
    $ostatusend = "<span xmlns="

    $ooliveid = 2721 ;Ocelote Live ID
    $oaliveid = 42146 ;Athene Live ID

Func _CheckOwn3dStatus($oliveid)

    $ourl = "http://api.own3d.tv/rest/live/status.xml?liveid=" & $oliveid

    $ieostatus = _IECreate ($ourl, 0, 0) ;IE Status Browser
    _IELoadWait ($ieostatus)
    $ostatushtml = _IEDocReadHTML ($ieostatus)

    Global $ostatus[4]
    Local $aRead[1]

    $aRead = _StringBetween ($ostatushtml, $onamestart, $onameend) ;Name
    If Not @error Then $ostatus[0] = $aRead[0]
    $aRead = _StringBetween ($ostatushtml, $oviewerstart, $oviewerend) ;Viewer
    If Not @error Then $ostatus[1] = $aRead[0]
    $aRead = _StringBetween ($ostatushtml, $ogamestart, $ogamestart) ;Game
    If Not @error Then $ostatus[2] = $aRead[0]
    $aRead = _StringBetween ($ostatushtml, $ostatusstart, $ostatusend) ;Status
    If Not @error Then $ostatus[3] = $aRead[0]

EndFunc

    $ooverviewlist = GUICtrlCreateListView ("Stream | Viewer |Game", 1600, 470, 300, 450) ;own3d Stream Liste

Func _CreateListViewItemIfLive()
    If $ostatus[3] = 1 Then

    GUICtrlCreateListViewItem ($ostatus[0] & "|" & $ostatus[1] & "|" & $ostatus[2], $ooverviewlist)

    EndIf
EndFunc

;_CheckOwn3dStatus ausführen und ListViewItem erstellen
    _CheckOwn3dStatus($ooliveid) ;Ocelote Live ID
    _CreateListViewItemIfLive()
    _CheckOwn3dStatus($oaliveid) ;Athene Live ID
    _CreateListViewItemIfLive()

;ENDE
GUISetState(@SW_SHOW)

While Sleep(10)
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            Exit
    EndSelect
WEnd

Es funktioniert jetzt zwar die Überprüfung von Name und Status, jedoch nicht von Viewer und Game.