[Anfänger] Rhedox' Registry Gimmicks (Protokoll Link, Default Filetype)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [Anfänger] Rhedox' Registry Gimmicks (Protokoll Link, Default Filetype)

      Hi,
      ich bin beim googlen heute zufällig drauf gestoßen und habe mir gedacht, daraus könnte man doch GM Skripts machen.
      Es geht um das Verlinken von Programm/ GM Spiel und Protokoll/ Dateityp.

      Edit: Mir ist zum Schluss aufgefallen, dass sich die Erklärungen doch sehr stark an Anfänger richten.

      Was ist das?
      Protokoll Link: Wie bei Steam oder Skype wird dem Anfang einer Internetadresse ein Programm zugeordnet. Beispiel: steam://steamspielid öffnet steamspielid mit Steam.

      Default Filetype: Sollte jeder kennen: Wenn man eine Datei eines beliebigen Dateityps öffnet, dann wird die Datei in dem ihres Types zugeordneten Programm geöffnet. .doc zum Beispiel in Word (normalerweise)
      Was bringt das?
      Mit dem Protokoll Link kann man beispielsweise Server weitergeben, die beim Klick auf den Link direkt im Spiel geöffnet werden.
      Mit dem Default Filetype kann man beispielsweise Map Editor Dateien standardmäßig im Mapeditor öffnen.

      Die Skripts

      GML-Quellcode

      1. //Reg_Protocol_Link
      2. //Arugemte: 4
      3. //Argument 0: Protokollname (etwas wie z.B. htttp:// steam://)
      4. //Argument 1: Pfad zum Icon
      5. //Argument 2: Pfad zum Programm
      6. //Argument 3: Programmname (Leerstring tut es auch, nur zu Beschreibungszwecken)
      7. //
      8. //Bei Aufrug des Protokolls wird der Text nach dem Protokoll dem Spiel als Start Parameter übergeben. (Funktioniert wie Steam, iTunes)
      9. //
      10. //WARNUNG
      11. //Das Skript fügt neue Registry Schlüssel hinzu/ ändert sie.
      12. //BENUTZUNG AUF EIGENE GEFAHR!
      13. //
      14. //Funktioniert nicht nur mit Game Maker Spielen.
      15. //Aufrufen im Game Maker Spiel am Anfang mit parameter_string(index)
      16. //
      17. if(argument_count>=4) {
      18. registry_set_root(2);
      19. if (!registry_exists("\" + argument0)) {
      20. //Beschreibung
      21. registry_write_string("\" + argument0 + "\", "URL:"+argument3);
      22. //Typ
      23. registry_write_string_ext("\" + argument0 + "\", "URL Protocol", "");
      24. //Icon
      25. registry_write_string("\" + argument0 + "\DefaultIcon\",argument1);
      26. //Pfad
      27. registry_write_string("\" + argument0 + "\shell\","open");
      28. registry_write_string("\" + argument0 + "\shell\Open\Command\", argument3 +"\ %1");
      29. }
      30. }
      31. //Reg_Default_Filetype
      32. //Arugemte: 4
      33. //Argument 0: Datentypname (etwas wie z.B. .png .cs .gmk)
      34. //Argument 1: Pfad zum Icon
      35. //Argument 2: Pfad zum Programm
      36. //Argument 3: Programmname (Leerstring tut es auch, nur zu Beschreibungszwecken)
      37. //
      38. //Bei Aufrug des Protokolls wird der Text nach dem Protokoll dem Spiel als Start Parameter übergeben. (Funktioniert wie Steam, iTunes)
      39. //
      40. //WARNUNG
      41. //Das Skript fügt neue Registry Schlüssel hinzu/ ändert sie.
      42. //BENUTZUNG AUF EIGENE GEFAHR!
      43. //
      44. //Funktioniert nicht nur mit Game Maker Spielen.
      45. //Aufrufen im Game Maker Spiel am Anfang mit parameter_string(index)
      46. //
      47. if(argument_count>=4) {
      48. registry_set_root(2);
      49. if (!registry_exists("\" + argument0)) {
      50. //Beschreibung
      51. registry_write_string("\" + argument0 + "\", "URL:"+argument3);
      52. //Icon
      53. registry_write_string("\" + argument0 + "\DefaultIcon\",argument1);
      54. //Pfad
      55. registry_write_string("\" + argument0 + "\shell\","open");
      56. registry_write_string("\" + argument0 + "\shell\Open\Command\", argument3 +"\ %1");
      57. }
      58. }
      59. //Reg_Protocol_Link_Overwrite
      60. //Arugemte: 4
      61. //Argument 0: Protokollname (etwas wie z.B. htttp:// steam://)
      62. //Argument 1: Pfad zum Icon
      63. //Argument 2: Pfad zum Programm
      64. //Argument 3: Programmname (Leerstring tut es auch, nur zu Beschreibungszwecken)
      65. //
      66. //Bei Aufrug des Protokolls wird der Text nach dem Protokoll dem Spiel als Start Parameter übergeben. (Funktioniert wie Steam, iTunes)
      67. //Überschreibt, wenn nötig die Registry Schlüssel
      68. //
      69. //WARNUNG
      70. //Das Skript fügt neue Registry Schlüssel hinzu/ ändert sie.
      71. //BENUTZUNG AUF EIGENE GEFAHR!
      72. //
      73. //Funktioniert nicht nur mit Game Maker Spielen.
      74. //Aufrufen im Game Maker Spiel am Anfang mit parameter_string(index)
      75. //
      76. if(argument_count>=4) {
      77. registry_set_root(2);
      78. //Beschreibung
      79. registry_write_string("\" + argument0 + "\", argument3);
      80. //Typ
      81. registry_write_string_ext("\" + argument0 + "\", "URL Protocol", "");
      82. //Icon
      83. registry_write_string("\" + argument0 + "\DefaultIcon\",argument1);
      84. //Pfad
      85. registry_write_string("\" + argument0 + "\shell\","open");
      86. registry_write_string("\" + argument0 + "\shell\Open\Command\", argument3 +"\ %1");
      87. }
      88. //Reg_Default_Filetype_Overwrite
      89. //Arugemte: 4
      90. //Argument 0: Datentypname (etwas wie z.B. .png .cs .gmk)
      91. //Argument 1: Pfad zum Icon
      92. //Argument 2: Pfad zum Programm
      93. //Argument 3: Programmname (Leerstring tut es auch, nur zu Beschreibungszwecken)
      94. //
      95. //Bei Aufrug des Protokolls wird der Text nach dem Protokoll dem Spiel als Start Parameter übergeben. (Funktioniert wie Steam, iTunes)
      96. //Überschreibt, wenn nötig die Registry Schlüssel
      97. //
      98. //WARNUNG
      99. //Das Skript fügt neue Registry Schlüssel hinzu/ ändert sie.
      100. //BENUTZUNG AUF EIGENE GEFAHR!
      101. //
      102. //Funktioniert nicht nur mit Game Maker Spielen.
      103. //Aufrufen im Game Maker Spiel am Anfang mit parameter_string(index)
      104. //
      105. if(argument_count>=4) {
      106. registry_set_root(2);
      107. //Beschreibung
      108. registry_write_string("\" + argument0 + "\", argument3);
      109. //Icon
      110. registry_write_string("\" + argument0 + "\DefaultIcon\",argument1);
      111. //Pfad
      112. registry_write_string("\" + argument0 + "\shell\","open");
      113. registry_write_string("\" + argument0 + "\shell\Open\Command\", argument3 +"\ %1");
      114. }
      Alles anzeigen



      Wie nutzt man das ganze im Ziel GameMaker Spiel:
      Man nutzt es mit parameter_string(index). Welchen Parameter man laden muss weiß ich nicht genau.
      Anwendungsbeispiel: file_open(parameter_string(index));

      Ich hoffe die Skripte helfen jemandem.
      MfG
      Rhedox

      Quellen: msdn.microsoft.com/en-us/library/aa767914%28VS.85%29.aspx

      //
      //WARNUNG
      //Die Skripte fügt neue Registry Schlüssel hinzu/ ändert sie.
      //BENUTZUNG AUF EIGENE GEFAHR!
      //

      Ursprünglicher C# Code:
      public static void RegisterURLProtocol(string protocolName, string applicationPath, string description, string iconPath)
      {
      // Neuer Schlüssel für das gewünschte URL Protokoll erstellen
      RegistryKey myKey = Registry.ClassesRoot.CreateSubKey(protocolName);
      Console.WriteLine("RegistryKey Set: " + myKey.ToString());
      // Protokoll zuweisen
      myKey.SetValue(null, description);
      myKey.SetValue("URL Protocol", string.Empty);
      myKey.SetValue("Ini", Environment.CurrentDirectory + @"\games.ini");

      //Iconwerte
      myKey = Registry.ClassesRoot.CreateSubKey(protocolName + "\\DefaultIcon");
      myKey.SetValue(null, iconPath);
      Console.WriteLine("RegistryKey Set: " + myKey.ToString());

      // Shellwerte eintragen
      myKey = Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell");
      myKey.SetValue(null, "open");

      Console.WriteLine("RegistryKey Set: " + myKey.ToString());

      Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell\\open");
      myKey = Registry.ClassesRoot.CreateSubKey(protocolName + "\\Shell\\open\\command");

      // Anwendung festlegen, die das URL-Protokoll behandelt
      myKey.SetValue(null, "\"" + applicationPath + "\" %1");
      Console.WriteLine("RegistryKey Set: " + myKey.ToString());
      }
      Dateien

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Rhedox ()

    • Genial! Wundert mich wieso hier niemand schon was geschrieben hat.

      Die Skripte können für ein aufwendiges Spiel sehr nützlich sein.

      Könntest du aber vieleicht auch lösch-Skripte erstellen?
      Dann könnte man dies als ein und ausschaltbare Option im Spiel verwenden.

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Sorry wegen dem Doppelpost aber erst jetzt bin ich dazu gekommen zu versuchen dies in mein Projekt einzubauen...
      Und... es tut sich nichts >_>

      Ist das ganze auch für Windows 7 gedacht bzw. darauf getestet worden?

      Wäre schon wenn du ein Beispielprojekt anhängen könntest welches bei dir funktioniert :)

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)