Mit Windows-Taste auf der MCE Fernbedienung ein anderes Programm (PowerDVD) starten

Svebu

Neuling
Thread Starter
Mitglied seit
02.09.2007
Beiträge
280
Ort
near Erfurt
Hallo Freunde,

ich suche professionellen Rat. Ich möchte auf mit meiner MCE Fernbedienung zb. PowerDVD starten bei Druck auf die Windowstaste, statt das Windows Media Center. Ist das möglich? Ich nutze Windows 7 x64. Wäre dankbar über jeden Rat. Danke euch!
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Möglich ist es ja. Geht entweder über die Deinstallation vom Media Center & EventGhost oder durch Anpassung dieser Lösung.
 
Danke dir! Das versuche ich gleich mal.

---------- Post added at 20:14 ---------- Previous post was at 17:23 ----------

Möglich ist es ja. Geht entweder über die Deinstallation vom Media Center & EventGhost oder durch Anpassung dieser Lösung.

Irgendwie sind beide Lösungen nicht das richtige, bzw. stelle ich mich zu blöd an. Es muss doch was geben, wo ich selber bestimmen kann, welches Programm gestartet werden soll wenn ich die Windowstaste der Fernbedienung drücke , in meinem Fall soll PowerDVD gestartet werden.
 
Du meinst die Grüne Media Center Taste oder? Doch, da passen beide Lösungen. Musst nur Anpassungen vornehmen.
 
Prinzipiell einfacher müsste die EventGhost Lösung sein, falls du MCE nicht brauchst. Ganz simpel gehts leider nicht. Oder du wechselst die Fernbedienung.
 
Meine Herren. Hier der Code, einfach noch die Fett Rot markierten Strings anpassen, so dass Sie auf die richtigen Prozessnamen verweisen und auf die richtigen Verzeichnisse zeigen... Dann mit C# kompilieren und fertig.

Code:
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using Microsoft.Win32;

namespace PowerDVDLauncher
{
    static class Program
    {
        [DllImport("user32.dll")]
        private static extern bool SetForegroundWindow(IntPtr hWnd);

        [DllImport("user32.dll")]
        private static extern bool ShowWindow(IntPtr hWnd, int cmdShow);

        private const int SW_SHOWMAXIMIZED = 3;

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            // Attempt to bring an existing PowerDVD to the foreground.
            // If none exists, open PowerDVD.
            if(!BringProcessToForeground())
                OpenPowerDVD();               
        }

        private static bool BringProcessToForeground()
        {
            Process[] processes = Process.GetProcessesByName([B][COLOR="#FF0000"]"PowerDVD"[/COLOR][/B]);
            if (processes.Length != 0)
            {
                // If PowerDVD is currently running, bring it to the foreground
                IntPtr hWnd = processes[0].MainWindowHandle;
                ShowWindow(hWnd, SW_SHOWMAXIMIZED);
                SetForegroundWindow(hWnd);
                return true;
            }
            return false;
        }

        private static void OpenPowerDVD()
        {
                string x64Path = @"[B][COLOR="#FF0000"]C:\Program Files\PowerDVD\PowerDVD.exe[/COLOR][/B]";
                LaunchPowerDVDProcess(x64Path);
   
        }

        private static bool LaunchPowerDVDProcess(string path)
        {
            if (path != null && File.Exists(path))
            {
                string args = "";
                Process proc = new Process();

                if(File.Exists("PowerDVDLaunchArgs.txt"))
                {
                    using (StreamReader argStream = File.OpenText("PowerDVDLaunchArgs.txt"))
                    {
                        args = argStream.ReadLine();
                        argStream.Close();
                    }
                }
                       
                proc.StartInfo = new ProcessStartInfo(path, args);
                proc.Start();
                BringProcessToForeground();
                return true;
            }
            return false;
        }
    }
}
 
Zuletzt bearbeitet:
Meine Herren. Hier der Code, einfach noch die Fett Rot markierten Strings anpassen, so dass Sie auf die richtigen Prozessnamen verweisen und auf die richtigen Verzeichnisse zeigen... Dann mit C# kompilieren und fertig.

Code:
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using Microsoft.Win32;

namespace PowerDVDLauncher
{
    static class Program
    {
        [DllImport("user32.dll")]
        private static extern bool SetForegroundWindow(IntPtr hWnd);

        [DllImport("user32.dll")]
        private static extern bool ShowWindow(IntPtr hWnd, int cmdShow);

        private const int SW_SHOWMAXIMIZED = 3;

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            // Attempt to bring an existing PowerDVD to the foreground.
            // If none exists, open PowerDVD.
            if(!BringProcessToForeground())
                OpenPowerDVD();               
        }

        private static bool BringProcessToForeground()
        {
            Process[] processes = Process.GetProcessesByName([B][COLOR="#FF0000"]"PowerDVD"[/COLOR][/B]);
            if (processes.Length != 0)
            {
                // If PowerDVD is currently running, bring it to the foreground
                IntPtr hWnd = processes[0].MainWindowHandle;
                ShowWindow(hWnd, SW_SHOWMAXIMIZED);
                SetForegroundWindow(hWnd);
                return true;
            }
            return false;
        }

        private static void OpenPowerDVD()
        {
                string x64Path = @"[B][COLOR="#FF0000"]C:\Program Files\PowerDVD\PowerDVD.exe[/COLOR][/B]";
                LaunchPowerDVDProcess(x64Path);
   
        }

        private static bool LaunchPowerDVDProcess(string path)
        {
            if (path != null && File.Exists(path))
            {
                string args = "";
                Process proc = new Process();

                if(File.Exists("PowerDVDLaunchArgs.txt"))
                {
                    using (StreamReader argStream = File.OpenText("PowerDVDLaunchArgs.txt"))
                    {
                        args = argStream.ReadLine();
                        argStream.Close();
                    }
                }
                       
                proc.StartInfo = new ProcessStartInfo(path, args);
                proc.Start();
                BringProcessToForeground();
                return true;
            }
            return false;
        }
    }
}

sandreas DANKE und sorry aber man lernt nie aus. Bitte erklärst du mir kurz noch das kompilieren?
 
sandreas DANKE und sorry aber man lernt nie aus. Bitte erklärst du mir kurz noch das kompilieren?
Ich installier mir jetzt kein Visual Studio Express. Damit musst du es machen und es glaube ich als Dienst kompilieren. Frag mal in nem Programmiererforum...
 
Hallo,

mit dem oben geposteten Code wird aber nur PowerDvd gestartet oder in den vordergrund gebracht, auf die Fernbedienung reagiert da nix.
mfg
morphy
 
Zuletzt bearbeitet:
Hallo,

mit dem oben geposteten Code wird aber nur PowerDvd gestartet oder in den vordergrund gebracht, auf die Fernbedienung reagiert da nix.
mfg
morphy

Man muss sich schon die Mühe machen und das Repository auschecken um das Projekt und den Installer zu haben und dann den Code in der richtigen Datei zu ersetzen. Wenn man von Programmieren gar keine Ahnung hat, dann braucht man sich nicht damit zu befassen :-)
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh