Notice: This forum has been recovered from an old backup, so some content, links, and dates may be outdated. The forum is currently read-only while we restore sign-in and registration functionality. Details

If you find this forum valuable and would like to help keep it online, donations to help cover hosting and domain costs are greatly appreciated, but never expected. You can support the forum through Buy Me a Coffee or Ko-fi. Thank you for helping preserve the EventGhost community.

OSD Menu/OSRemote

Allgemeines zum Thema EventGhost
Post Reply
MonsterMagnet
Plugin Developer
Posts: 137
Joined: Fri Feb 10, 2006 12:04 pm

OSD Menu/OSRemote

Post by MonsterMagnet »

Beispiel f├╝r ein EG Men├╝, das nicht nur Events triggert sondern selbst von EG gepimpt wird. :)

Reagiert auf onmouseover, onmousewheel, onkeydown. (Fernbedienung mit "Emuliere Tastatureingabe")

Als

Code: Select all

EGOSD.hta
speichern

Code: Select all

<HTML>
<HEAD>
<TITLE>EG Menu</TITLE>
<HTA:APPLICATION ID="EGMenu" 
    APPLICATIONNAME="EGMenu" 
    navigable="no"    
    SYSMENU="no"
    CONTEXTMENU="no"
    SCROLL = "no"
    WINDOWSTATE="normal"
    BORDER="none"
    INNERBORDER="no"
    CAPTION="no"
    SELECTION="no"
    SHOWINTASKBAR="no"
>

<STYLE>
body
{
  background-image:
  url("your_image.png");
  background-attachment:fixed;
  background-repeat: no-repeat;
  background-color:black;
  text-decoration:none;
  color:white;
  font-size:18px;
  font-family: arial;
  margin:0px;
  border:0;
  padding:0px;
}


{
  table-layout:fixed;
}


{
  position:absolute;
  top:0px;
  left:0px;
  width:140px;
  height:210px;
  overflow:auto;
  overflow:hidden;
}

.abcbutton_blur
{
  width:140px;
  height:40px;
  text-align:center;
  color:white;
  font-size:18px;
  font-family:arial;
  cursor:pointer;
  background:
  url('your_image.gif');
  background-color:red;
}

.abcbutton_focus
{
  width:140px;
  height:40px;
  text-align:center;
  color:blue;
  font-size:18px;
  font-family:arial;
  cursor:pointer;
  background:
  url('your_image.gif');
  background-color:yellow;
}
</STYLE>

<SCRIPT>
//Define table row/cells count
var g = 0; //table cells
//var gmax = 3; //max table cells(left/right)
var h = 0; //table rows
var hmax = 10; //max table rows(up/down)

var EventGhost = new ActiveXObject("EventGhost");

//Don't loose menu focus (useful for large menus with 2 or more tables) 
document.oncontextmenu = mousehandle;
document.onclick = mousehandle;

function mousehandle() {
    if (window.event.srcElement.tagName != "TD" ) lfocus.focus();
}

//Set window position and transparency
function onInit(){
    Menu.rows[h].cells[g].className = "abcbutton_focus";
    Menu.rows[h].cells[g].focus();
    lfocus = Menu.rows[h].cells[g];
    window.resizeTo (150,220);
    window.moveTo (600,100);
    trigger('HTA_Opaque');
}

function trigger(event){
    EventGhost.TriggerEvent(event);
} 

//Keyboard navigation	
function Menu_Key(){
    switch (event.keyCode){

	case 40: // down
                          if (h==hmax) break;  
                          Menu.rows[h].cells[g].className = "abcbutton_blur";
	            h++; 
	            Menu.rows[h].cells[g].className = "abcbutton_focus";                
                          Menu.rows[h].cells[g].focus();
                          lfocus = Menu.rows[h].cells[g];      	
	break;

	case 38: // up
                          if (h==0) break;
                           Menu.rows[h].cells[g].className = "abcbutton_blur";
	             h--;
                           Menu.rows[h].cells[g].className = "abcbutton_focus";
                           Menu.rows[h].cells[g].focus();
                           lfocus = Menu.rows[h].cells[g];        		
	break;

/*	case 37: // left
                          if (g==0) break;
                          Menu.rows[h].cells[g].className = "abcbutton_blur";
                          g--;
                          Menu.rows[h].cells[g].className = "abcbutton_focus";
                          Menu.rows[h].cells[g].focus();
                          lfocus = Menu.rows[h].cells[g];              
	break;

	case 39:// rigth
	            if (g==gmax) break; 
                          Menu.rows[h].cells[g].className = "abcbutton_blur";
                          g++;
                          Menu.rows[h].cells[g].className = "abcbutton_focus";
                          Menu.rows[h].cells[g].focus();
                          lfocus = Menu.rows[h].cells[g];
              break;
*/
	case 32:// space            		     
                           Menu.rows[h].cells[g].click();
    }
}

function mousewheel(){
    var nWert = event.wheelDelta;
    if (nWert==120) EGDiv.scrollTop-= 42;
    if (nWert==-120) EGDiv.scrollTop+= 42;
}

function Menu_Mouse(){
     if (window.event.srcElement.tagName == "TD"){
         Menu.rows[h].cells[g].className = "abcbutton_blur";
         g = window.event.srcElement.cellIndex
         h =  window.event.srcElement.parentElement.rowIndex;
         Menu.rows[h].cells[g].className = "abcbutton_focus";
         Menu.rows[h].cells[g].focus();
         lfocus = Menu.rows[h].cells[g];
         trigger('HTA_Focus');
     }
}
</script>
</HEAD>
<BODY ONLOAD="onInit()">
<DIV ID="EGDiv" ONMOUSEWHEEL="mousewheel()">
<TABLE ID="Menu" ONKEYDOWN="Menu_Key()" ONMOUSEOVER="Menu_Mouse()">
 <TBODY>
  <TR>
    <TD CLASS="abcbutton_blur" ONCLICK="trigger('MyAction')">On/Off</TD>
  </TR>
  <TR>
    <TD CLASS="abcbutton_blur" ONCLICK="trigger('MyAction')">TV/Radio</TD>
  </TR>
  <TR>
    <TD CLASS="abcbutton_blur" ONCLICK=" trigger('MyAction')">Hottest Hits</TD>
  </TR>
  <TR>
    <TD CLASS="abcbutton_blur" ONCLICK=" trigger('MyAction')">German Hits</TD>
  </TR>
  <TR>
    <TD CLASS="abcbutton_blur" ONCLICK=" trigger('MyAction')">Metal</TD>
  </TR>
  <TR>
    <TD CLASS="abcbutton_blur" ONCLICK=" trigger('MyAction')">German Rock</TD>
  </TR>
  <TR>
    <TD CLASS="abcbutton_blur" ONCLICK=" trigger('MyAction')">UK Hits</TD>
  </TR>
  <TR>
    <TD CLASS="abcbutton_blur" ONCLICK=" trigger('MyAction')">80's Hits</TD>
  </TR>
  <TR>
    <TD CLASS="abcbutton_blur" ONCLICK=" trigger('MyAction')">90's Hits</TD>
  </TR>
  <TR>
    <TD CLASS="abcbutton_blur" ONCLICK=" trigger('MyAction')">Classic Rock</TD>
  </TR>
  <TR>
    <TD CLASS="abcbutton_blur" ONCLICK=" trigger('MyAction')">Dance</TD>
  </TR>
 </TBODY>
</TABLE>
</DIV>
</BODY>
</HTML>
Und der EG xml file:

Code: Select all

<?xml version="1.0" encoding="UTF-8" ?>
<EventGhost Version="620">
    <Folder Name="EG OSRemote">
        <Macro Name="MyAction">
            <Event Name="MyAction">
            </Event>
            <Action>
                System.Execute(u'notepad.exe', u'', 0, False, 2)
            </Action>
        </Macro>
        <Macro Name="SetWindowOpaque">
            <Event Name="HTA_Opaque">
            </Event>
            <Action>
                EventGhost.PythonScript(u'import win32gui\nfrom win32con import *\nimport ctypes\n\nSetLayeredWindowAttributes = ctypes.windll.user32.SetLayeredWindowAttributes\nSetWindowLongA = ctypes.windll.user32.SetWindowLongA\n\ntry:\n    hwnd = win32gui.FindWindow(\'HTML Application Host Window Class\',None)\n    SetWindowLongA(hwnd, GWL_EXSTYLE, WS_EX_LAYERED)\n    SetLayeredWindowAttributes(hwnd, 0, 0, LWA_COLORKEY) #entweder schwarz durchsichtig\n    #SetLayeredWindowAttributes(hwnd, 0, 127, LWA_ALPHA) #oder transparent   \n    #win32gui.SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE)#Immer im Vordergrund\nexcept:\n    print "Error"')
            </Action>
        </Macro>
        <Macro Name="GetWindowFocus">
            <Event Name="HTA_Focus">
            </Event>
            <Action>
                EventGhost.PythonScript(u"import win32gui\n\nhwnd = win32gui.FindWindow('HTML Application Host Window Class',None)\nfwnd = win32gui.GetForegroundWindow()\nif hwnd != fwnd:\n    eg.result = 1\n")
            </Action>
            <Action>
                EventGhost.NewJumpIf(XmlIdLink(152), 0, False)
            </Action>
        </Macro>
        <Macro Name="SetWindowFocus" id="152">
            <Action>
                Window.FindWindow(u'mshta.exe', u'EG Menu', u'HTML Application Host Window Class', u'', u'Internet Explorer_Server', 1, False, 0.0, 0)
            </Action>
            <Action>
                Window.BringToFront()
            </Action>
        </Macro>
    </Folder>
</EventGhost>
Das ist nur ein einfaches Bsp. kann jedoch beliebig erweitert werden (Bilder, mehrere Tabellen etc.) der Code hierzu ist weitestgehenst enthalten.

Falls jemand einen Verbesserungsvorschlag hat, immer her damit... :lol:
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Hehe, zwei Idioten und zweimal fast der gleiche Gedanke. Schaue dir mal dieses Plugin an:

__info__.py

Code: Select all

name = "On Screen Menu"
author = "Bitmonster"
version = "0.0.1"
description = "Plugin to show a simple on screen menu system."
__init__.py

Code: Select all

import eg
       
import wx
import time
import thread
import threading
import win32gui
import win32con
import winxpgui
from wx.lib.buttons import GenButton
from eg.WinAPI.win32types import GUITHREADINFO, GetGUIThreadInfo
from ctypes import pointer

btnList = [
    (
        "Play",
        "ZPPlay",
    ), (
        "Stop",
        "Stop",
    ), (
        "Open",
        "FileNav",
    ), (
        "DVD Menu",
        "DVDMenu"
    ), (
        "Mute",
        "Mute"
    ),
]


class AnimateButton(GenButton):
    
    def __init__(self, parent, label):
        GenButton.__init__(self, parent, -1, label)
        self.SetForegroundColour((255, 255, 255))
        self.SetBackgroundColour((0, 0, 200))
        self.Bind(wx.EVT_SET_FOCUS, self.OnGainFocus)
        self.Bind(wx.EVT_KILL_FOCUS, self.OnLoseFocus)
        self.Bind(wx.EVT_ENTER_WINDOW, self.SetFocusWrapper)
        self.Bind(wx.EVT_LEAVE_WINDOW, self.OnButtonLeave)
        self.Bind(wx.EVT_BUTTON, self.OnButton)
        self.SetUseFocusIndicator(False)
        self.SetFont(font)
        
        
    def OnGainFocus(self, event):
        GenButton.OnGainFocus(self, event)
        self.SetBackgroundColour((200, 0, 0))
        self.Refresh()
        self.GetParent().GetParent().currentButton = self
        
        
    def OnLoseFocus(self, event):
        GenButton.OnLoseFocus(self, event)
        self.SetBackgroundColour((0, 0, 200))
        self.Refresh()
        
        
    def OnButton(self, event):
        self.GetParent().GetParent().ShowMenu(False)
        self.GetParent().GetParent().TriggerEvent(self.eventString)
        event.Skip()
        
        
    def SetFocusWrapper(self, event):
        self.GetParent().GetParent().OnEnter(event)
        self.SetFocus()
        
        
    def OnButtonEnter(self, event):
        self.GetParent().GetParent().OnEnter(event)
        self.SetFocus()
        self.SetBackgroundColour((200, 0, 0))
        self.Refresh()
            
            
    def OnButtonLeave(self, event):
        self.GetParent().GetParent().OnLeave(event)
        #self.SetBackgroundColour((0, 0, 200))
        #self.Refresh()
            
    def EmulateDownClick(self):
        self.up = False
        self.Refresh()
        self.Update()
        
        
    def EmulateUpClick(self):
        self.up = True
        self.Notify()
        self.Refresh()
        self.Update()
        
        
        
class AnimatedFrame(wx.Frame):
    
    def __init__(self):
        self.lastHwnd = None
        self.menuVisible = False
        self.currentButton = None
        self.enterCount = 0
        self.direction = False
        self.timer = threading.Timer(0, self.FireTimer)
        style = wx.NO_BORDER|wx.STAY_ON_TOP|wx.FRAME_NO_TASKBAR|wx.FRAME_SHAPED
        wx.Frame.__init__(self, None, -1, "OSD Menu", style=style)
        
        self.SetBackgroundColour((0, 0, 0))
        panel = wx.Panel(self)
        self.Bind(wx.EVT_ENTER_WINDOW, self.OnEnter)
        self.Bind(wx.EVT_ENTER_WINDOW, self.OnEnter)
        self.Bind(wx.EVT_ACTIVATE, self.OnActivate)
        
        sizer = wx.BoxSizer(wx.VERTICAL)
        self.region = wx.Region()
        buttons = []
        for buttonData in btnList:
            button = AnimateButton(panel, buttonData[0])
            button.eventString = buttonData[1]
            sizer.Add(button, 0, flag=wx.ALL|wx.EXPAND, border=5)
            buttons.append(button)
        self.buttons = buttons
        
        panel.SetFocus()
        panel.SetSizer(sizer)
        panel.SetAutoLayout(True)
        sizer.Fit(panel)
        minSize = sizer.GetMinSize()
        panel.SetMinSize(minSize)
        self.SetSize(minSize)
        self.width = self.GetSizeTuple()[0]
        
        #self.offset = 2100
        self.offset = 0
        for btn in buttons:
            self.region.UnionRect(btn.GetRect())
        self.SetShape(self.region)
        self.SetPosition((self.offset - self.width, 220))
        self.ShowOnNewPosition(-self.width, True)
        self.Show()
        thread.start_new_thread(self.Animate, ())


    def ShowOnNewPosition(self, x, direction):
        w, h = self.GetSizeTuple()
        region = wx.Region(-1 * x, 0, w - x, h)
        region.IntersectRegion(self.region)
        if region.IsEmpty():
            region = wx.Region(-1 * x, 0, w - x, h)
        if direction:
            self.SetPosition((self.offset + x, -1))
            self.SetShape(region)
        else:
            self.SetShape(region)
            self.SetPosition((self.offset + x, -1))
        #self.Update()
            
            
    def ShowMenu(self, show_flag=True):
        self.direction = show_flag
        if show_flag and not self.menuVisible:
            self.menuVisible = True
            guiTreadInfo = GUITHREADINFO()
            if GetGUIThreadInfo(0, pointer(guiTreadInfo)):
                self.lastHwnd = guiTreadInfo.hwndFocus
            else:
                self.lastHwnd = None
            #self.lastHwnd = win32gui.GetForegroundWindow()
            #eg.WinAPI.Utils.BringHwndToFront(self.GetHandle())
            #win32gui.SetWindowPos(self.GetHandle(),
            #                    win32con.HWND_TOPMOST,
            #                    0,0,0,0,
            #                    win32con.SWP_NOMOVE|win32con.SWP_NOSIZE)#|win32con.SWP_NOACTIVATE)
            self.currentButton.SetFocus()
        
        
    def Animate(self):
        x = 0
        width = self.width
        while 1:
            if self.direction:
                if x < width:
                    x += 8
                    x = min(x, width)
                    wx.CallAfter(self.ShowOnNewPosition, x - width, True)
            else:
                if x > 0:
                    x -= 8
                    x = max(0, x)
                    wx.CallAfter(self.ShowOnNewPosition, x - width, False)
                elif x == 0:
                    if self.menuVisible:
                        self.menuVisible = False
                        #win32gui.SetWindowPos(self.GetHandle(),
                        #    win32con.HWND_BOTTOM,
                        #    0,0,0,0,
                        #    win32con.SWP_NOMOVE|win32con.SWP_NOSIZE)
                        #if self.lastHwnd:
                        #    wx.CallAfter(eg.WinAPI.Utils.BringHwndToFront, self.lastHwnd)
                    
                    ms = wx.GetMouseState()
                    if ms.x == 0:
                        #self.buttons[0].SetFocus()
                        self.ShowMenu()
            time.sleep(0.01)


    def FireTimer(self, direction):
        self.ShowMenu(direction)
        
        
    def OnActivate(self, event):
        eg.whoami()
        if (event.GetActive()):
            return
        self.ShowMenu(event.GetActive())
        
        
    def OnEnter(self, event):
        self.enterCount += 1
        if self.enterCount == 1:
            self.timer.cancel()
            self.ShowMenu(True)
            
            
    def OnLeave(self, event):
        self.enterCount -= 1
        if self.enterCount == 0 and self.IsShown():
            self.timer.cancel()
            self.timer = threading.Timer(1.0, self.FireTimer, (False,))
            self.timer.start()
            
            
    def DoDown(self):
        try:
            pos = self.buttons.index(self.currentButton)
        except:
            pos = 0
        pos += 1
        if pos >= len(self.buttons):
            pos = 0
        self.buttons[pos].SetFocus()
        
    
    def DoUp(self):
        try:
            pos = self.buttons.index(self.currentButton)
        except:
            pos = len(self.buttons)
        pos -= 1
        if pos < 0:
            pos = len(self.buttons) - 1
        self.buttons[pos].SetFocus()
    
    
    def DoEnter(self):
        if self.currentButton is not None:
            wx.CallAfter(self.currentButton.EmulateDownClick)
            eg.event.AddUpFunc(wx.CallAfter, self.currentButton.EmulateUpClick)
            
            
font = wx.Font(18, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)



class OsdMenu(eg.PluginClass):
    
    def __init__(self):
        def make():
            self.frame = AnimatedFrame()
            self.frame.TriggerEvent = self.TriggerEvent
        wx.CallAfter(make)
        self.AddAllActions()
        
    
    
class Show(eg.ActionClass):
    
    def __call__(self):
        frame = self.plugin.frame
        frame.ShowMenu(not frame.direction)
        
        
        
class Down(eg.ActionClass):
    
    def __call__(self):
        self.plugin.frame.DoDown()
        
        
        
class Up(eg.ActionClass):
    
    def __call__(self):
        self.plugin.frame.DoUp()
        
        
        
class Enter(eg.ActionClass):
    
    def __call__(self):
        self.plugin.frame.DoEnter()
        
War mal so ein Test von mir. Bin mir aber nicht sicher, ob ich diesen Ansatz weiterverfolge.
MonsterMagnet
Plugin Developer
Posts: 137
Joined: Fri Feb 10, 2006 12:04 pm

Post by MonsterMagnet »

Mir gefällts und ich werde das auch so benutzen. :D

W├╝rde ich auf jeden Fall ausbauen und EG hinzuf├╝gen.
maps
Posts: 5
Joined: Thu Aug 03, 2006 1:27 pm

Post by maps »

Hi,

habe gerade das OSD Menu plugin versucht, bekomme aber die Fehlermeldung: Import Error: no module named buttons.

Ich benutze die 0.3.3.655.

Was mache ich verkehrt?
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Mal mit der 657 versuchen.

Dieses Plugin hier ist aber nur ein Demo und kann sowieso kaum f├╝r etwas sinnvolles benutzt werden.
maps
Posts: 5
Joined: Thu Aug 03, 2006 1:27 pm

Post by maps »

Das klappt wunderbar.

Ich finde es auch (auf den ersten Blick zumindest) durchaus benutzbar.
Wird es denn eine "offizielle" Art ein Men├╝ darzustellen in absehbarer Zeit geben?

Danke und Gruss

Michael
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Na ja, da fehlt einfach noch zuviel, wie z.B. Untermen├╝s. Irgendwann wird es da sicher etwas geben, aber nicht so schnell. Insofern kann man nicht von "absehbar" sprechen, weil ich auch keine Vorstellung habe, wann ich mich mal wieder darum k├╝mmere.
maps
Posts: 5
Joined: Thu Aug 03, 2006 1:27 pm

Post by maps »

OK, danke.

Also werde ich erstmal damit leben, bzw MonsterMagnet's Variante auch mal ausprobieren.

Vorab ein sch├Ânes WE!
drummer83
Posts: 37
Joined: Wed Jul 12, 2006 1:47 pm

Post by drummer83 »

Hi,

ich habe eine Idee, wie ich das Men├╝ (die Variante von Bitmonster) gerne benutzen k├Ânnte, habe aber keine Ahnung, OB das ├╝berhaupt und wenn ja WIE das geht. Also hier mein Plan:

Ich nehme f├╝r meine Freundin im Moment immer einige Sendungen auf, die sie sich sp├ñter ansehen m├Âchte. Dazu m├Âchte sie sich nat├╝rlich am liebsten einfach mit der X10 vor den Fernseher setzen, die Sendung ausw├ñhlen und genie├ƒen.
Und da kommt euer Men├╝ ins Spiel: ich m├Âchte, dass das Men├╝ nicht die Play, Stop, Open-Schaltfl├ñchen anzeigt, sondern alle Dateien, die sich in einem bestimmten Ordner auf der Festplatte befinden. Da kann man dann eine ausw├ñhlen und die soll dann vom MediaPlayerClassic abgespielt werden.

Geht das? Wenn ja, wie? Bin nat├╝rlich gerne bereit einen Beitrag zu leisten, sofern ich das kann. Hab von Python leider keinen Plan.

In der Variante von MonsterMagnet kann ich zwar selbst rumprogrammieren (HTML kann ich etwas), aber ob ich da zum gew├╝nschten Ergebnis komme bezweifle ich.

Ein weiteres (erstmal nicht so wichtiges Problem noch: Ich verwende den "Theatermodus" meiner ATI-Readon 9800, d.h. Videos werden auf meinem primären Monitor in einem Fenster angezeigt und auf dem zweiten Monitor (TV) als Vollbild. Das Menü sollte natürlich (nur oder auch) auf dem zweiten Monitor zu sehen sein. Wie ist das denn nun wieder machbar?

Ich habe volles Vertrauen, dass ihr mir helfen k├Ânnt, hoffe wir kriegen da vielleicht gemeinsam was hin. Meine Freundin w├╝rds euch danken :wink:

edit:
Wie kann ich denn das Men├╝ von Monstermagnet ├╝berhaupt per EG starten? Wenn ich es ├╝ber "Starte Anwendung" mache kommt eine Fehlermeldung:

Code: Select all

Starte Anwendung: EGOSD.hta
%1 ist keine zulässige Win32-Anwendung.
drummer83
Posts: 37
Joined: Wed Jul 12, 2006 1:47 pm

Post by drummer83 »

Also ich bin jetzt so weit, dass ich die EGOSD.hta per CGI-Skript erstellen lasse, das den Inhalt des Ordners ausliest, die entsprechenden Buttons im OSD darstelt und f├╝r jeden Button ein anderes Ereignis an EG sendet.

Ob das allerdings wirklich weiterhilft bezweifle ich. Denn EG muss ja nun auch noch irgendwie wissen, welche Datei denn bei welchem Ereignis abgespielt werden soll. Das muss ja auch dynamisch sein, weil Dateien gel├Âscht oder hinzugef├╝gt werden.

Per CGI(Perl) ist sicherlich auch keine sch├Âne Variante, weil ich immer meinen Webserver anschmei├ƒen muss. F├╝r andere User ist es auch nicht leicht zu ├╝bernehmen, aber es ist der einzige Weg, den ich mit meinen Kenntnissen gehen kann. Wie gesagt, zum Ziel f├╝hrt er aber m├Âglicherweise sowieso nicht.

Oje, bin mal sehr auf eure Kommentare gespannt.

Bis dann.
MonsterMagnet
Plugin Developer
Posts: 137
Joined: Fri Feb 10, 2006 12:04 pm

Post by MonsterMagnet »

http://mediacentral.atspace.com/

Unter video.js findest Du was Du suchst.

Oder einfach:

http://www.gomplayer.com/main.html
drummer83
Posts: 37
Joined: Wed Jul 12, 2006 1:47 pm

Post by drummer83 »

Hi,

also ich bin jetzt ein St├╝ck weiter (auch dank deiner Hilfe). Ein Problem habe ich aber noch, bei dem ihr mir hoffentlich die entscheidenden Tipps geben k├Ânnt:

Wie kann ich die EGOSD.hta von EG aus starten? Wie oben beschrieben erhalte ich eine Fehlermeldung.

Vielen Dank.
Bartman
Plugin Developer
Posts: 881
Joined: Sun Feb 12, 2006 9:03 am

Post by Bartman »

Du musst immer die zugeh├Ârige exe (mshta.exe) starten und nicht die Datei selbst.
Die Datei muss dann als Parameter ├╝bergeben werden. Wenn Leerzeichen enthalten sind die doppelten Anf├╝hrungsstriche nicht vergessen.
drummer83
Posts: 37
Joined: Wed Jul 12, 2006 1:47 pm

Post by drummer83 »

Ah, alles klar.

Vielen Dank.
Post Reply