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.

FindWindow wie ist der richtige Aufruf?

Allgemeines zum Thema EventGhost
Milbrot
Plugin Developer
Posts: 79
Joined: Wed Mar 29, 2006 11:07 am

FindWindow wie ist der richtige Aufruf?

Post by Milbrot »

Der Name des App ist MyTheatre Class Name ist TDVBMainForm und MyTheatre.exe der exe Name.
Ich m├Âchte das f├╝r ein Plugin verwenden.
Also so: hMedia = FindWindow(" was muß hier stehen? ", None)

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

Post by Bitmonster »

win32gui.FindWindow sucht nach ClassName und WindowName. Die EXE wird dabei nicht berücksichtigt. In dem Fall wäre der Aufruf also:

hMedia = win32gui.FindWindow("TDVBMainForm", None)

wenn man nicht auch nach dem Titel suchen will. Falls der Titel auch bekannt ist und sich nicht verändert kann man auch den in die Suche reinnehmen mit:

hMedia = win32gui.FindWindow("TDVBMainForm", "MyTheatre")

Die FindWindow-Funktion von EG ist noch wesentlich ausgefeilter, weil sie z.B. auch die EXE mit einbezieht. Die Verwendung in einem Plugin ist aber auch etwas aufwendiger.
Milbrot
Plugin Developer
Posts: 79
Joined: Wed Mar 29, 2006 11:07 am

Post by Milbrot »

Hm irgendwie läuft das nicht er findet anscheinend das Fenster nicht.
Ich habe das Plugin von MediaPlayerClassic verwendet und abgeändert,
leider bekomme ich immer die Meldung "MyTheatre not running"
woran k├Ânnte das liegen?

Das ganze hab ich so gemacht:

Code: Select all






















CommonList = (
('num_0', 'num_0', 2399142008),
('num_1', 'num_1', 2399142009),
('num_2', 'num_2', 2399142010),
('num_3', 'num_3', 2399142011),
('num_4', 'num_4', 2399142012),
('num_5', 'num_5', 2399142013),
('num_6', 'num_6', 2399142014),
('num_7', 'num_7', 2399142015),
('num_8', 'num_8', 2399142016),
('num_9', 'num_9', 2399142017),
('pause/continue', 'pause/continue', 2399141991),
('fast_forward', 'fast_forward', 2399141990),
('rewind', 'fast_forward', 2399141989),
('vol_up', 'vol_up', 2399141993),
('vol_down', 'vol_down', 2399141992),
('mute', 'mute', 2399141994),
('sleep_timer', 'sleep_timer', 2399142001),
('fullscreen', 'fullscreen', 2399141995),
('OSD_info', 'OSD_info', 2399141996),
('DVD/file_to_live', 'DVD/file_to_live', 2399141997),
('live_to_DVD/file', 'live_to_DVD/file', 2399141998),
('OSD_menu', 'OSD_menu', 2399142000),
('optimize_for_widescreen', 'optimize_for_widescreen', 2399142022),
('cancel', 'cancel', 2399142087),
('exit_program', 'exit_program', 2399141999),
('pause/continue', 'pause/continue', 2399142019),
('fast_forward', 'fast_forward', 2399142020),
('fav1', 'fav1', 2399142021),
('fav2', 'fav2', 2399141993),
('fav3', 'fav3', 2399141992),
('open_file', 'open_file', 2399142023),
('sleep_timer_setup', 'sleep_timer_setup', 2399142024),
('best_fit', 'best_fit', 2399142025),
('stay_on_top_toggle', 'stay_on_top_toggle', 2399142026),
('show_on_primary_monitor', 'show_on_primary_monitor', 2399142027),
('settings', 'settings', 2399142028),
('background_mode_toggle', 'background_mode_toggle', 2399142029),
)

LiveList =(
('side_ch_list_toggle', 'side_ch_list_toggle', 2399142089),
('osd_fav_ch_list_toggle', 'osd_fav_ch_list_toggle', 2399142090),
('last', 'last', 2399142091),
('record', 'record', 2399142092),
('goto_rec_position', 'goto_rec_position', 2399142098),
('inc_speed', 'inc_speed', 2399142101),
('dec_speed', 'dec_speed', 2399142102),
('epg_window', 'epg_window', 2399142093),
('epg_osd', 'epg_osd', 2399142099),
('next_fav_ch', 'next_fav_ch', 2399142095),
('prev_fav_ch', 'prev_fav_ch', 2399142094),
('next_enum_ch', 'next_enum_ch', 2399141997),
('prev_enum_ch', 'prev_enum_ch', 2399141996),
('show_stream_info', 'show_stream_info', 2399142100),
('video_toggle', 'video_toggle', 2399142103),
('ivr/generic', 'ivr/generic', 2399142104),
('auto_pid', 'auto_pid', 2399142105),
('audio_ab', 'audio_ab', 2399142106),
('subtitles', 'subtitles', 2399142107),
('rec_timer_window', 'rec_timer_window', 2399142108),
('open_scheduler', 'open_scheduler', 2399142109),
('pid_grabber', 'pid_grabber', 2399142111),
('pid_list', 'pid_list', 2399142112),
('pid_statistic', 'pid_statistic', 2399142113),
('LNB_settings', 'LNB_settings', 2399142114),
('positioner_console', 'positioner_console', 2399142115),
('ci_console', 'ci_console', 2399142116),
)

FileList = (
('side_file_list', 'side_file_list', 2399142189),
('osd_file_list', 'osd_file_list', 2399142190),
('next_file', 'next_file', 2399142192),
('prev_file', 'prev_file', 2399142191),
)

DVDList = (
('dvd_subtitles', 'dvd_subtitles', 2399142291),
('next_chap', 'next_chap', 2399142293),
('prev_chap', 'prev_chap', 2399142292),
('osd_chap_list', 'osd_chap_list', 2399142294),
('chap_list', 'chap_list', 2399142290),
('dvd_menu', 'dvd_menu', 2399142289),
('dvd_move_up', 'dvd_move_up', 2399142295),
('dvd_move_dn', 'dvd_move_dn', 2399142296),
('dvd_move_left', 'dvd_move_left', 2399142297),
('dvd_move_right', 'dvd_move_right', 2399142298),
('dvd_select', 'dvd_select', 2399142299),
)

OSDList = (
('osd_up', 'dvd_subtitles', 2399142389),
('osd_dn', 'osd_dn', 2399142390),
('osd_left', 'osd_left', 2399142391),
('osd_right', 'osd_right', 2399142392),
('cat_up', 'cat_up', 2399142393),
('cat_down', 'cat_down', 2399142394),
('select', 'select', 2399142395),
('event_info', 'event_info', 2399142397),
)

SideList = (
('side_ch_file_up', 'side_ch_file_up', 2399142489),
('side_ch_file_down', 'side_ch_file_down', 2399142490),
('side_ch_file_select', 'side_ch_file_select', 2399142491),
('side_ch_file_delete', 'side_ch_file_delete', 2399142492),
('side_ch_file_sat', 'side_ch_file_sat', 2399142493),
('side_ch_file_prov', 'side_ch_file_prov', 2399142494),
('side_ch_file_provid', 'side_ch_file_provid', 2399142495),
('side_ch_file_transp', 'side_ch_file_transp', 2399142496),
('side_ch_file_fav', 'side_ch_file_fav', 2399142497),
('side_ch_file_all', 'side_ch_file_all', 2399142497),
)

EPGList = (
('epg_win_up', 'epg_win_up', 2399142589),
('epg_win_down', 'epg_win_down', 2399142590),
('epg_win_pgup', 'epg_win_pgup', 2399142591),
('epg_win_pgdn', 'epg_win_pgdn', 2399142592),
('epg_win_chup', 'epg_win_chup', 2399142593),
('epg_win_chdown', 'epg_win_chdown', 2399142594),
('epg_win_select', 'epg_win_select', 2399142595),
('epg_win_shedule', 'epg_win_shedule', 2399142596),
('epg_win_all/now/next', 'epg_win_all/now/next', 2399142597),
)

PresetsList = (
('preset1', 'preset1', 2399142689),
('preset2', 'preset2', 2399142690),
('preset3', 'preset3', 2399142691),
('preset4', 'preset4', 2399142692),
('preset5', 'preset5', 2399142693),
('preset6', 'preset6', 2399142694),
)

PluginsList = (
('plugin_up', 'plugin_up', 2399142789),
('plugin_down', 'plugin_down', 2399142790),
('plugin_left', 'plugin_left', 2399142791),
('plugin_right', 'plugin_right', 2399142792),
('plugin_pgup', 'plugin_pgup', 2399142793),
('plugin_pgdown', 'plugin_pgdown', 2399142794),
('plugin_select', 'plugin_select', 2399142795),
('plugin_altsel', 'plugin_altsel', 2399142796),
('plugin_cancel', 'plugin_cancel', 2399142797),
('plugin_tab', 'plugin_tab', 2399142798),
)

import eg
from win32gui import FindWindow
from win32api import SendMessage
from win32con import WM_COMMAND



class MyTheatreClassic(eg.PluginClass):

    def __init__(self):
        
        def makeActions(group_name, fn_list):
            subGroup = self.AddGroup(group_name)
            for tmp_name, tmp_description, tmp_value in fn_list:
               
                class tmp_action(eg.ActionClass):
                    name = tmp_description
                    description = tmp_description
                    value = tmp_value
                   
                    def __call__(self):
                        try:
                            hMedia = win32gui.FindWindow("TDVBMainForm", "MyTheatre")
                            PostMessage(hMedia, 3025, self.value, 0)
                        except:
                            eg.PrintError("MyTheatre not running") 
                           
                tmp_action.__name__ = tmp_name
                subGroup.AddAction(tmp_action)

        makeActions('Common functions', CommonList)
        makeActions('Live mode functions', LiveList)
        makeActions('File mode', FileList)
        makeActions('DVD mode', DVDList)
        makeActions('OSD', OSDList)
        makeActions('Side channel/file list functions', SideList)
        makeActions('EPG window mode', EPGList)
        makeActions('Presets', PresetsList)
        makeActions('Plugins', PluginsList)                
Last edited by Milbrot on Wed Aug 09, 2006 1:14 pm, edited 1 time in total.
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Mach noch Code-Tags um den Source, sonst ist die Einr├╝ckung nicht zu sehen.

EDIT: Habe es eben selber gemacht. Zum Gl├╝ck hat das Board die Einr├╝ckung noch behalten.
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Ok, da sind gleich eine Reihe von Problemen. Zuerst solltest du mal diesen Teil:

Code: Select all

                    def __call__(self):
                        try:
                            hMedia = win32gui.FindWindow("TDVBMainForm", "MyTheatre")
                            PostMessage(hMedia, 3025, self.value, 0)
                        except:
                            eg.PrintError("MyTheatre not running")
umschreiben, damit du die eigentlichen Fehlermeldungen kriegst:

Code: Select all

                    def __call__(self):
                        #try:
                            hMedia = win32gui.FindWindow("TDVBMainForm", "MyTheatre")
                            PostMessage(hMedia, 3025, self.value, 0)
                        #except:
                        #    eg.PrintError("MyTheatre not running")
Dann passt der win32gui.FindWindow nicht zu deinem import. Es muss in dem Fall also nur "FindWindow" ohne "win32gui." heißen.

Und dann hast du PostMessage gar nicht importiert, sondern nur SendMessage. Zudem ist das win32api.PostMessage mit dem gleichen Bug versehen, den du auch schon in dem anderen Thread gefunden hast. Daf├╝r kannst du es mal so versuchen:
Statt:
from win32api import SendMessage
nimmst du:
from eg.WinAPI.win32types import PostMessage
Milbrot
Plugin Developer
Posts: 79
Joined: Wed Mar 29, 2006 11:07 am

Post by Milbrot »

Das geänderte Plugin läuft schaut nun so aus:

Code: Select all






















CommonList = (
('num_0', 'num_0', 2399142008),
('num_1', 'num_1', 2399142009),
('num_2', 'num_2', 2399142010),
('num_3', 'num_3', 2399142011),
('num_4', 'num_4', 2399142012),
('num_5', 'num_5', 2399142013),
('num_6', 'num_6', 2399142014),
('num_7', 'num_7', 2399142015),
('num_8', 'num_8', 2399142016),
('num_9', 'num_9', 2399142017),
('pause/continue', 'pause/continue', 2399141991),
('fast_forward', 'fast_forward', 2399141990),
('rewind', 'fast_forward', 2399141989),
('vol_up', 'vol_up', 2399141993),
('vol_down', 'vol_down', 2399141992),
('mute', 'mute', 2399141994),
('sleep_timer', 'sleep_timer', 2399142001),
('fullscreen', 'fullscreen', 2399141995),
('OSD_info', 'OSD_info', 2399141996),
('DVD/file_to_live', 'DVD/file_to_live', 2399141997),
('live_to_DVD/file', 'live_to_DVD/file', 2399141998),
('OSD_menu', 'OSD_menu', 2399142000),
('optimize_for_widescreen', 'optimize_for_widescreen', 2399142022),
('cancel', 'cancel', 2399142087),
('exit_program', 'exit_program', 2399141999),
('pause/continue', 'pause/continue', 2399142019),
('fast_forward', 'fast_forward', 2399142020),
('fav1', 'fav1', 2399142021),
('fav2', 'fav2', 2399141993),
('fav3', 'fav3', 2399141992),
('open_file', 'open_file', 2399142023),
('sleep_timer_setup', 'sleep_timer_setup', 2399142024),
('best_fit', 'best_fit', 2399142025),
('stay_on_top_toggle', 'stay_on_top_toggle', 2399142026),
('show_on_primary_monitor', 'show_on_primary_monitor', 2399142027),
('settings', 'settings', 2399142028),
('background_mode_toggle', 'background_mode_toggle', 2399142029),
)

LiveList =(
('side_ch_list_toggle', 'side_ch_list_toggle', 2399142089),
('osd_fav_ch_list_toggle', 'osd_fav_ch_list_toggle', 2399142090),
('last', 'last', 2399142091),
('record', 'record', 2399142092),
('goto_rec_position', 'goto_rec_position', 2399142098),
('inc_speed', 'inc_speed', 2399142101),
('dec_speed', 'dec_speed', 2399142102),
('epg_window', 'epg_window', 2399142093),
('epg_osd', 'epg_osd', 2399142099),
('next_fav_ch', 'next_fav_ch', 2399142095),
('prev_fav_ch', 'prev_fav_ch', 2399142094),
('next_enum_ch', 'next_enum_ch', 2399141997),
('prev_enum_ch', 'prev_enum_ch', 2399141996),
('show_stream_info', 'show_stream_info', 2399142100),
('video_toggle', 'video_toggle', 2399142103),
('ivr/generic', 'ivr/generic', 2399142104),
('auto_pid', 'auto_pid', 2399142105),
('audio_ab', 'audio_ab', 2399142106),
('subtitles', 'subtitles', 2399142107),
('rec_timer_window', 'rec_timer_window', 2399142108),
('open_scheduler', 'open_scheduler', 2399142109),
('pid_grabber', 'pid_grabber', 2399142111),
('pid_list', 'pid_list', 2399142112),
('pid_statistic', 'pid_statistic', 2399142113),
('LNB_settings', 'LNB_settings', 2399142114),
('positioner_console', 'positioner_console', 2399142115),
('ci_console', 'ci_console', 2399142116),
)

FileList = (
('side_file_list', 'side_file_list', 2399142189),
('osd_file_list', 'osd_file_list', 2399142190),
('next_file', 'next_file', 2399142192),
('prev_file', 'prev_file', 2399142191),
)

DVDList = (
('dvd_subtitles', 'dvd_subtitles', 2399142291),
('next_chap', 'next_chap', 2399142293),
('prev_chap', 'prev_chap', 2399142292),
('osd_chap_list', 'osd_chap_list', 2399142294),
('chap_list', 'chap_list', 2399142290),
('dvd_menu', 'dvd_menu', 2399142289),
('dvd_move_up', 'dvd_move_up', 2399142295),
('dvd_move_dn', 'dvd_move_dn', 2399142296),
('dvd_move_left', 'dvd_move_left', 2399142297),
('dvd_move_right', 'dvd_move_right', 2399142298),
('dvd_select', 'dvd_select', 2399142299),
)

OSDList = (
('osd_up', 'dvd_subtitles', 2399142389),
('osd_dn', 'osd_dn', 2399142390),
('osd_left', 'osd_left', 2399142391),
('osd_right', 'osd_right', 2399142392),
('cat_up', 'cat_up', 2399142393),
('cat_down', 'cat_down', 2399142394),
('select', 'select', 2399142395),
('event_info', 'event_info', 2399142397),
)

SideList = (
('side_ch_file_up', 'side_ch_file_up', 2399142489),
('side_ch_file_down', 'side_ch_file_down', 2399142490),
('side_ch_file_select', 'side_ch_file_select', 2399142491),
('side_ch_file_delete', 'side_ch_file_delete', 2399142492),
('side_ch_file_sat', 'side_ch_file_sat', 2399142493),
('side_ch_file_prov', 'side_ch_file_prov', 2399142494),
('side_ch_file_provid', 'side_ch_file_provid', 2399142495),
('side_ch_file_transp', 'side_ch_file_transp', 2399142496),
('side_ch_file_fav', 'side_ch_file_fav', 2399142497),
('side_ch_file_all', 'side_ch_file_all', 2399142497),
)

EPGList = (
('epg_win_up', 'epg_win_up', 2399142589),
('epg_win_down', 'epg_win_down', 2399142590),
('epg_win_pgup', 'epg_win_pgup', 2399142591),
('epg_win_pgdn', 'epg_win_pgdn', 2399142592),
('epg_win_chup', 'epg_win_chup', 2399142593),
('epg_win_chdown', 'epg_win_chdown', 2399142594),
('epg_win_select', 'epg_win_select', 2399142595),
('epg_win_shedule', 'epg_win_shedule', 2399142596),
('epg_win_all/now/next', 'epg_win_all/now/next', 2399142597),
)

PresetsList = (
('preset1', 'preset1', 2399142689),
('preset2', 'preset2', 2399142690),
('preset3', 'preset3', 2399142691),
('preset4', 'preset4', 2399142692),
('preset5', 'preset5', 2399142693),
('preset6', 'preset6', 2399142694),
)

PluginsList = (
('plugin_up', 'plugin_up', 2399142789),
('plugin_down', 'plugin_down', 2399142790),
('plugin_left', 'plugin_left', 2399142791),
('plugin_right', 'plugin_right', 2399142792),
('plugin_pgup', 'plugin_pgup', 2399142793),
('plugin_pgdown', 'plugin_pgdown', 2399142794),
('plugin_select', 'plugin_select', 2399142795),
('plugin_altsel', 'plugin_altsel', 2399142796),
('plugin_cancel', 'plugin_cancel', 2399142797),
('plugin_tab', 'plugin_tab', 2399142798),
)

import eg
from win32gui import FindWindow
from eg.WinAPI.win32types import PostMessage
from win32con import WM_COMMAND



class MyTheatreClassic(eg.PluginClass):

    def __init__(self):
        
        def makeActions(group_name, fn_list):
            subGroup = self.AddGroup(group_name)
            for tmp_name, tmp_description, tmp_value in fn_list:
               
                class tmp_action(eg.ActionClass):
                    name = tmp_description
                    description = tmp_description
                    value = tmp_value
                   
                    def __call__(self):
                        try:
                            hMedia = FindWindow("TDVBMainForm", "MyTheatre")
                            PostMessage(hMedia, 3025, self.value, 0)
                        except:
                            eg.PrintError("MyTheatre not running") 
                           
                tmp_action.__name__ = tmp_name
                subGroup.AddAction(tmp_action)

        makeActions('Common functions', CommonList)
        makeActions('Live mode functions', LiveList)
        makeActions('File mode', FileList)
        makeActions('DVD mode', DVDList)
        makeActions('OSD', OSDList)
        makeActions('Side channel/file list functions', SideList)
        makeActions('EPG window mode', EPGList)
        makeActions('Presets', PresetsList)
        makeActions('Plugins', PluginsList)
Gruß Milbrot
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Ok, eine Sache ist mir noch aufgefallen:
('side_ch_file_fav', 'side_ch_file_fav', 2399142497),
('side_ch_file_all', 'side_ch_file_all', 2399142497),

Da steht zweimal die gleiche Nummer. Tippfehler?

Und dann hätte ich da noch einen Wunsch, damit ich das Plugin gleich mit aufnehmen kann. Ist aber ein ziemliche Fleißarbeit:

Mache mal vier Datenfelder in den Listen.
1. Der Python-Klassenname. Der sollte "Camel-Case" sein und außer Buchstaben und Zahlen nichts enthalten. Also z.B. "Num0", "OptimizeForWidescreen", etc.
2. Der Aktions-Name. Der kann Leerschritte, Sonderzeichen, etc. enthalten. Das ist der Name unter dem der User die Aktion sieht. Also z.B. "Number 0", "Optimize for widescreen", etc.
3. Ein Beschreibungs-String. Das ist die Hilfe die der User zu der Aktion bekommt. Wenn dir nichts einfällt, dann nimm für das Feld einfach None.
4. Das Zahlenparameter.

Ich schreib dir gleich mal den Source um, damit er diese Parameterform nimmt.
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Code: Select all

class MyTheatreClassic(eg.PluginClass):

    def __init__(self):
       
        def makeActions(group_name, fn_list):
            subGroup = self.AddGroup(group_name)
            for tmp_classname, tmp_name, tmp_description, tmp_value in fn_list:
               
                if tmp_description is None:
                    tmp_description = tmp_name
                    
                class tmp_action(eg.ActionClass):
                    name = tmp_name
                    description = tmp_description
                    value = tmp_value
                   
                    def __call__(self):
                        try:
                            hMedia = FindWindow("TDVBMainForm", "MyTheatre")
                            PostMessage(hMedia, 3025, self.value, 0)
                        except:
                            eg.PrintError("MyTheatre not running")
                           
                tmp_action.__name__ = tmp_classname
                subGroup.AddAction(tmp_action)

        makeActions('Common functions', CommonList)
        makeActions('Live mode functions', LiveList)
        makeActions('File mode', FileList)
        makeActions('DVD mode', DVDList)
        makeActions('OSD', OSDList)
        makeActions('Side channel/file list functions', SideList)
        makeActions('EPG window mode', EPGList)
        makeActions('Presets', PresetsList)
        makeActions('Plugins', PluginsList)
Und als Beispiel mal die PresetList:

Code: Select all

PresetsList = (
('Preset1', 'Preset 1', None, 2399142689),
('Preset2', 'Preset 2', None, 2399142690),
('Preset3', 'Preset 3', None, 2399142691),
('Preset4', 'Preset 4', None, 2399142692),
('Preset5', 'Preset 5', None, 2399142693),
('Preset6', 'Preset 6', None, 2399142694),
)
Milbrot
Plugin Developer
Posts: 79
Joined: Wed Mar 29, 2006 11:07 am

Post by Milbrot »

Oke das ├╝berarbeite ich dann noch.
Milbrot
Plugin Developer
Posts: 79
Joined: Wed Mar 29, 2006 11:07 am

Post by Milbrot »

Mit dem neuen Code gibt es ein Fehlermeldung beim laden des Plugins

Traceback (most recent call last):
File "C:\Programme\EventGhost\eg\PluginTools.py", line 132, in CreatePluginInstance
File "plugins/MyTheatre/__init__.py", line 200, in __init__
File "plugins/MyTheatre/__init__.py", line 180, in makeActions
ValueError: need more than 3 values to unpack
Error loading plugin: MyTheatre
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Dann hat ein Listeneintrag zuwenig Felder. Die m├╝ssen alle vier Felder haben.
Milbrot
Plugin Developer
Posts: 79
Joined: Wed Mar 29, 2006 11:07 am

Post by Milbrot »

Genau das war es.

Wie k├Ânnte ich es machen f├╝r das App gleich
eine Startfunktion in das Plugin einzubauen?

Es gibt 3 M├Âglichkeiten das App zu starten:

Live = C:\Programme\MyTheatre\MTStart.exe /toggle
File = C:\Programme\MyTheatre\MTStart.exe /remote F10
DVD = C:\Programme\MyTheatre\MTStart.exe /dvd
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Eine M├Âglichkeit ist z.B.:

Code: Select all

from win32api import ShellExecute
ShellExecute(0, None, "MTStart.exe", "/dvd", "C:\\Programme\\MyTheatre", 0)
Wobei man das Verzeichnis des Programmes nach M├Âglichkeit aus der Registry lesen sollte. Dazu kannst du dir mal das Foobar2000-Plugin ansehen.
Milbrot
Plugin Developer
Posts: 79
Joined: Wed Mar 29, 2006 11:07 am

Post by Milbrot »

Leider komme ich da nicht weiter.

Ich glaub ich verstehe nicht ganz wie die Funktion in das bestehende
Plugin einzubinden ist. Wie das ausehen muß damit es ausgeführt wird.
Objektorientierte Programmierung scheint nicht einfach.

Wenn ich das wenigstens debuggen k├Ânnte um zu sehen was falsch l├ñuft
aber leider bekomme ich mit PythonWin nur "ImportError: No module named eg".

Ich habe auch nichts dar├╝ber gefunden. Es w├ñre fein wenn du das genauer beschreiben k├Ânntest.
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Was meinst du mit "PythonWin"? Plugins kannst du nur innherhalb von EG ausf├╝hren/testen. Welchen Traceback kriegst du denn da?
Post Reply