Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   MediaPortal C# Reference -> Delphi (https://www.delphipraxis.net/158214-mediaportal-c-reference-delphi.html)

schwa226 9. Feb 2011 17:48

MediaPortal C# Reference -> Delphi
 
Hallo,

ich habe mal eine Frage zu diesem Thema. Ich habe einen Delphi Win32 Source.
Nun möchte ich was mit Mediaportal machen.

In VS2008 füge ich Referenzen zu der Core.dll z.B. hinzu.

Dann bekomme ich im VS2008 sowas:

Key[from metadata]
Code:
using System;

namespace MediaPortal.GUI.Library
{
    public class Key
    {
        public Key();
        public Key(Key key);
        public Key(int iChar, int iCode);

        public int KeyChar { get; }
        public int KeyCode { get; }
    }
}
Oder auch sowas:
Action [from metadata]
Code:
using System;
using System.Windows.Forms;

namespace MediaPortal.GUI.Library
{
    public class Action
    {
        public float fAmount1;
        public float fAmount2;
        public Key m_key;
        public MouseButtons m_mouseButtons;
        public string m_SoundFileName;
        public Action.ActionType wID;

        public Action();
        public Action(Action.ActionType id, float f1, float f2);
        public Action(Key key, Action.ActionType id, float f1, float f2);

        public MouseButtons MouseButton { get; set; }
        public bool ShouldDisableScreenSaver { get; }
        public string SoundFileName { get; set; }

        public bool IsUserAction();

        public enum ActionType
        {
            ACTION_INVALID = 0,
            ACTION_MOVE_LEFT = 1,
            ACTION_MOVE_RIGHT = 2,
            ACTION_MOVE_UP = 3,
            ACTION_MOVE_DOWN = 4,
            ACTION_PAGE_UP = 5,
            ACTION_PAGE_DOWN = 6,
            ACTION_SELECT_ITEM = 7,
            ACTION_HIGHLIGHT_ITEM = 8,
            ACTION_PARENT_DIR = 9,
            ACTION_PREVIOUS_MENU = 10,
            ACTION_SHOW_INFO = 11,
            ACTION_PAUSE = 12,
            ACTION_STOP = 13,
            ACTION_NEXT_ITEM = 14,
            ACTION_PREV_ITEM = 15,
            ACTION_FORWARD = 16,
            ACTION_REWIND = 17,
            ACTION_SHOW_GUI = 18,
            ACTION_ASPECT_RATIO = 19,
            ACTION_STEP_FORWARD = 20,
            ACTION_STEP_BACK = 21,
            ACTION_BIG_STEP_FORWARD = 22,
            ACTION_BIG_STEP_BACK = 23,
            ACTION_SHOW_OSD = 24,
            ACTION_SHOW_SUBTITLES = 25,
            ACTION_NEXT_AUDIO = 26,
            ACTION_SHOW_CODEC = 27,
            ACTION_NEXT_PICTURE = 28,
            ACTION_PREV_PICTURE = 29,
            ACTION_ZOOM_OUT = 30,
            ACTION_ZOOM_IN = 31,
            ACTION_TOGGLE_SOURCE_DEST = 32,
            ACTION_SHOW_PLAYLIST = 33,
            ACTION_QUEUE_ITEM = 34,
            ACTION_REMOVE_ITEM = 35,
            ACTION_SHOW_FULLSCREEN = 36,
            ACTION_ZOOM_LEVEL_NORMAL = 37,
            ACTION_ZOOM_LEVEL_1 = 38,
            ACTION_ZOOM_LEVEL_2 = 39,
            ACTION_ZOOM_LEVEL_3 = 40,
            ACTION_ZOOM_LEVEL_4 = 41,
            ACTION_ZOOM_LEVEL_5 = 42,
            ACTION_ZOOM_LEVEL_6 = 43,
            ACTION_ZOOM_LEVEL_7 = 44,
            ACTION_ZOOM_LEVEL_8 = 45,
            ACTION_ZOOM_LEVEL_9 = 46,
            ACTION_CALIBRATE_SWAP_ARROWS = 47,
            ACTION_CALIBRATE_RESET = 48,
            ACTION_ANALOG_MOVE = 49,
            ACTION_ROTATE_PICTURE = 50,
            ACTION_CLOSE_DIALOG = 51,
            ACTION_SUBTITLE_DELAY_MIN = 52,
            ACTION_SUBTITLE_DELAY_PLUS = 53,
            ACTION_AUDIO_DELAY_MIN = 54,
            ACTION_AUDIO_DELAY_PLUS = 55,
            ACTION_AUDIO_NEXT_LANGUAGE = 56,
            ACTION_CHANGE_RESOLUTION = 57,
            REMOTE_0 = 58,
            REMOTE_1 = 59,
            REMOTE_2 = 60,
            REMOTE_3 = 61,
            REMOTE_4 = 62,
            REMOTE_5 = 63,
            REMOTE_6 = 64,
            REMOTE_7 = 65,
            REMOTE_8 = 66,
            REMOTE_9 = 67,
            ACTION_PLAY = 68,
            ACTION_OSD_SHOW_LEFT = 69,
            ACTION_OSD_SHOW_RIGHT = 70,
            ACTION_OSD_SHOW_UP = 71,
            ACTION_OSD_SHOW_DOWN = 72,
            ACTION_OSD_SHOW_SELECT = 73,
            ACTION_OSD_SHOW_VALUE_PLUS = 74,
            ACTION_OSD_SHOW_VALUE_MIN = 75,
            ACTION_SMALL_STEP_BACK = 76,
            ACTION_MUSIC_FORWARD = 77,
            ACTION_MUSIC_REWIND = 78,
            ACTION_MUSIC_PLAY = 79,
            ACTION_DELETE_ITEM = 80,
            ACTION_COPY_ITEM = 81,
            ACTION_MOVE_ITEM = 82,
            ACTION_SHOW_MPLAYER_OSD = 83,
            ACTION_OSD_HIDESUBMENU = 84,
            ACTION_TAKE_SCREENSHOT = 85,
            ACTION_INCREASE_TIMEBLOCK = 86,
            ACTION_DECREASE_TIMEBLOCK = 87,
            ACTION_DEFAULT_TIMEBLOCK = 88,
            ACTION_RECORD = 89,
            ACTION_DVD_MENU = 90,
            ACTION_NEXT_CHAPTER = 91,
            ACTION_PREV_CHAPTER = 92,
            ACTION_KEY_PRESSED = 93,
            ACTION_PREV_CHANNEL = 94,
            ACTION_NEXT_CHANNEL = 95,
            ACTION_TVGUIDE_RESET = 96,
            ACTION_EXIT = 97,
            ACTION_REBOOT = 98,
            ACTION_SHUTDOWN = 99,
            ACTION_EJECTCD = 100,
            ACTION_BACKGROUND_TOGGLE = 101,
            ACTION_VOLUME_DOWN = 102,
            ACTION_VOLUME_UP = 103,
            ACTION_TOGGLE_WINDOWED_FULLSCREEN = 104,
            ACTION_PAUSE_PICTURE = 105,
            ACTION_CONTEXT_MENU = 106,
            ACTION_SHOW_MSN_WINDOW = 107,
            ACTION_SHOW_MSN_OSD = 108,
            ACTION_HOME = 109,
            ACTION_END = 110,
            ACTION_LAST_VIEWED_CHANNEL = 111,
            ACTION_IMPORT_TRACK = 112,
            ACTION_IMPORT_DISC = 113,
            ACTION_CANCEL_IMPORT = 114,
            ACTION_SWITCH_HOME = 115,
            ACTION_MOVE_SELECTED_ITEM_UP = 116,
            ACTION_MOVE_SELECTED_ITEM_DOWN = 117,
            ACTION_DELETE_SELECTED_ITEM = 118,
            ACTION_NEXT_SUBTITLE = 119,
            ACTION_SHOW_ACTIONMENU = 120,
            ACTION_TOGGLE_SMS_INPUT = 121,
            ACTION_AUTOZAP = 122,
            ACTION_MPRESTORE = 123,
            ACTION_PREV_BOOKMARK = 140,
            ACTION_NEXT_BOOKMARK = 141,
            ACTION_POWER_OFF = 991,
            ACTION_SUSPEND = 992,
            ACTION_HIBERNATE = 993,
            ACTION_MOUSE_MOVE = 2000,
            ACTION_MOUSE_CLICK = 2001,
            ACTION_MOUSE_DOUBLECLICK = 2002,
            ACTION_AUTOCROP = 9884,
            ACTION_TOGGLE_AUTOCROP = 9885,
            ACTION_TOGGLE_MUSIC_GAP = 9886,
            ACTION_REMOTE_RED_BUTTON = 9975,
            ACTION_REMOTE_GREEN_BUTTON = 9976,
            ACTION_REMOTE_YELLOW_BUTTON = 9977,
            ACTION_REMOTE_BLUE_BUTTON = 9978,
            ACTION_REMOTE_SUBPAGE_UP = 9979,
            ACTION_REMOTE_SUBPAGE_DOWN = 9980,
            ACTION_SHOW_VOLUME = 9981,
            ACTION_VOLUME_MUTE = 9982,
            ACTION_SHOW_CURRENT_TV_INFO = 9983,
            ACTION_NEXT_TELETEXTPAGE = 9984,
            ACTION_PREV_TELETEXTPAGE = 9985,
            ACTION_SWITCH_TELETEXT_HIDDEN = 9986,
            ACTION_SWITCH_TELETEXT_TRANSPARENT = 9987,
            ACTION_SHOW_INDEXPAGE = 9988,
            ACTION_SKIN_NEXT = 9989,
            ACTION_SKIN_PREVIOUS = 9990,
            ACTION_TVGUIDE_INCREASE_DAY = 9991,
            ACTION_TVGUIDE_DECREASE_DAY = 9992,
            ACTION_TVGUIDE_NEXT_GROUP = 9995,
            ACTION_TVGUIDE_PREV_GROUP = 9996,
            ACTION_ROTATE_PICTURE_180 = 9997,
            ACTION_ROTATE_PICTURE_270 = 9998,
        }
    }
}
Wie gehe ich damit in Delphi um?
Die Core.dll als Komponente importieren klappt nicht.
Woher hat VS2008 die Infos das z.B. ACTION_SKIN_NEXT = 9989 ist?

Phoenix 9. Feb 2011 18:11

AW: MediaPortal C# Reference -> Delphi
 
Weil das in den Metadaten des Assemblies drinsteht.
Was Du da hast in eine .NET Komponente, die kannst Du mit Delphi nicht mal 'so einfach' ansprechen.
Du musst dazu die mscorlib.dll in Deinen Prozessraum laden und kannst dann mit ganz bösen Konstrukten (Stichwort: Reverse P/Invoke) die .NET - Teile ansprechen. Mehr oder weniger Elegant. Etwas einfacher geht das mit Zusatztools wie z.B. Hydra. Hiermit kannst Du .NET-Komponenten ähnlich wie Delphi-Komponenten verwenden nachdem sie einmal importiert wurden. Das ganze hin- und her-konvertieren (marshalling) und die Calls in .NET rein übernimmt dann Hydra für Dich.

schwa226 9. Feb 2011 18:34

AW: MediaPortal C# Reference -> Delphi
 
Danke für die Info!
Werd mir das mit Hydra mal ansehen.

argh... ist ja leider keine FreeWare

schwa226 9. Feb 2011 21:19

AW: MediaPortal C# Reference -> Delphi
 
Hat schon jemand dazu Erfahrungen?
http://atozed.com/CrossTalk/index.de.aspx

oder

http://interop.managed-vcl.com/netinterop_csharp.php


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz