Game explorer

M5
  • Rejestracja:około 13 lat
  • Ostatnio:prawie 9 lat
  • Postów:22
0

Chciałbym dodać aplikacje do Windows Game explorer, ale monituje mi o błędzie, który nie wiem jak usunąć.
Kod znalazłem na jakimś rosyjskim forum. Nie wiem dlaczego u nich to działa a u mnie nie. Czy coś jest nie tak z tym kodem?

Kopiuj
[code]
const
  CLSID_GameExplorer = '{9a5ea990-3034-4d6f-9128-01f3c61022bc}';
  GIS_CURRENT_USER = 2;
  GIS_ALL_USERS = 3;

type
  IGameExplorer = interface(IUnknown)        //Błąd Identifier expected
    '{E7B2FB72-D728-49B3-A5F2-18EBF5F1349E}'
    function AddGame(sGDFBinaryPath: String; sInstallDirectory: String; installScope: Word; var pguidInstanceID: TGUID): HResult;
    function RemoveGame(instanceID: TGUID): HResult;
    function UpdateGame(instanceID: TGUID): HResult;
    function VerifyAccess(sGDFBinaryPath: String; var pHasAccess: Boolean): HResult;
  end;

procedure GERegister;
var
  myGEX:   IGameExplorer;
  myGUID:  TGUID;
  o:       IUnknown;
  bAccess: Boolean;
  sGUID:   String;
begin
  o := CreateComObject(StringToGuid(CLSID_GameExplorer));
  myGEX := IGameExplorer(o);
  OleCheck(myGEX.VerifyAccess(ExpandConstant('{app}\mygame.exe'), bAccess));
  if bAccess then
  begin
    myGUID := StringToGuid('{00000000-0000-0000-0000-000000000000}'); 
    OleCheck(myGEX.AddGame(ExpandConstant('{app}\mygame.exe'), ExpandConstant('{app}'), GIS_ALL_USERS, myGUID));
    //write guid to registry
    sGUID := Format('{%.8x-%.4x-%.4x-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x}', [myGUID.D1, myGUID.D2, myGUID.D3, myGUID.D4[0], myGUID.D4[1], myGUID.D4[2], myGUID.D4[3], myGUID.D4[4], myGUID.D4[5], myGUID.D4[6], myGUID.D4[7]]);
    RegWriteStringValue(HKEY_CURRENT_USER, 'Software\My Publisher\My Game',
    'ge_guid', sGUID);
  end;
end;

procedure GEUnRegister;
var
  myGEX:   IGameExplorer;
  o:       IUnknown;
  sGUID:   String;
begin
  o := CreateComObject(StringToGuid(CLSID_GameExplorer));
  myGEX := IGameExplorer(o);
  sGUID := '';
  if RegKeyExists(HKEY_CURRENT_USER, 'Software\My Publisher\My Game') then
  begin
    RegQueryStringValue(HKEY_CURRENT_USER, 'Software\My Publisher\My Game',
      'ge_guid', sGUID);
    if sGUID <> '' then
    begin
      OleCheck(myGEX.RemoveGame(StringToGuid(sGUID))); 
    end;
  end;
end;
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Gorlice
0

Nie próbowałem tego kompilować ale piwerwszy błąd jaki widzę to chyba powinno być:

Kopiuj
  IGameExplorer = interface(IUnknown) 
    ['{E7B2FB72-D728-49B3-A5F2-18EBF5F1349E}']

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
M5
Podkreśla mi na czerono to co poprawiłeś. Ale i tak dalej monituje błąd.
KA
Dziwne, u mnie tam nie żadnego pokazuje błędu (dalej pokazuje ale z powodu nie znanych funkcji, bo nie dodałem odpowiednich modułów do uses). Wklej na pastebin.com cały kod i daj linka, bo mam wrażenie że gdzie indziej coś namieszałeś a kompilator tylko głupieje pokazując błąd tam. W ogóle w czym to próbujesz skompilować?
M5
Ja próbuję to skompilować inno setup. link: http://pastebin.com/0wqYFeNb

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.