REG_NONE.INF

Тема в разделе "WASM.BEGINNERS", создана пользователем Semiono, 30 май 2010.

  1. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Потрясающая телепатия! :)
    Да это Inno Setup! Помоги! Хотя за идею уже спасибо! Но блин, я не справлюсь! :)
    Хочешь тайно в личку напиши. :)
     
  2. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    А что тут такого секретного? Авось ещё кому сгодится.

    Я вытащил Inno Setup 5.3.10 и накропал вот такое:
    Код (Text):
    1. // Прототипы и константы
    2. const // для samDesired
    3.   KEY_QUERY_VALUE = 1;
    4.   KEY_SET_VALUE = 2;
    5.  
    6. function RegOpenKeyEx(
    7.   hKey: Integer;
    8.   const lpSubKey: AnsiString;
    9.   ulOptions: Integer;
    10.   samDesired: Integer;
    11.   var hkeyResult: Integer
    12. ): Integer;
    13. external 'RegOpenKeyExA@AdvAPI32.DLL stdcall';
    14.  
    15. type
    16.   Data = array [0..259] of Byte;
    17.  
    18. function RegQueryValueEx(
    19.   hKey: Integer;
    20.   const lpValueName: AnsiString;
    21.   lpReserved: Integer;
    22.   var lpType : Integer;
    23.   var lpData: Data;
    24.   var lpcbData: Integer
    25. ): Integer;
    26. external 'RegQueryValueExA@AdvAPI32.DLL stdcall';
    27.  
    28. function InitializeSetup(): Boolean;
    29. var
    30.   rc, hKey, ValueType, ValueDataLen, i: Integer;
    31.   ValueData: Data; Value: string;
    32. begin
    33.   rc := RegOpenKeyEx(
    34.     HKEY_LOCAL_MACHINE,
    35.     'Software\Microsoft\Windows\CurrentVersion\App Paths\Far.exe',
    36.     0,
    37.     KEY_QUERY_VALUE,
    38.     hKey
    39.   );
    40.   rc := MsgBox(Format('RegOpenKeyEx() вернула %u'+#13#10
    41.     +'Хэндл ключа: %x', [rc, hKey]), mbInformation, MB_OK);
    42.   ValueDataLen := SizeOf(ValueData);
    43.   rc := MsgBox(Format('Перед вызовом RegOpenKeyEx():'+#13#10
    44.     +'cbData: %u', [ValueDataLen]), mbInformation, MB_OK);
    45.   rc := RegQueryValueEx(
    46.     hKey,
    47.     'Path',
    48.     0,
    49.     ValueType,
    50.     ValueData,
    51.     ValueDataLen
    52.   );
    53.   rc := MsgBox(Format('RegQueryValueEx() вернула %u'+#13#10
    54.     +'cbData: %u'+#13#10
    55.     +'Type: %u', [rc, ValueDataLen, ValueType]), mbInformation, MB_OK);
    56.   Value := ''; // признаю своё поражение и копирую по букве
    57.   for i := 0 to ValueDataLen-1 do
    58.     Value := Value+Chr(ValueData[i]);
    59.   rc := MsgBox(
    60.     Value,
    61.     mbInformation,
    62.     MB_OK
    63.   );
    64.   Result := False;
    65. end;
    Корявенько, но работает. Нормально со строками не получилось. Я последний раз с Паскалем дружил лет пятнадцать назад. :derisive:
     
  3. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    В Inno Setup 5.2.3 нету типа AnsiString :)
    которым я пользуюсь, привычка!
     
  4. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Интересно, почему в ide (ansi) поддерживаются символы © ®
    и в то же время не поддерживается такое £ (A3)
    Да и в блокнотах всяких тоже самое. Папку £ создать на fat32 можно, но проги глючат,
    например блокнот не видит файлы. Что за привилегии тогда для кодов AE A9 ?
     
  5. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    Есть кодовая страница 1251. В ней есть © и ®, но нет £ (который есть в 1252, к примеру). Странного мало.