Re[3]: Достать caption PropertyPage без инициализации.
От: Aniskin  
Дата: 22.03.17 13:07
Оценка: 1 (1)
Здравствуйте, collider, Вы писали:

C>но caption-а в этой структуре нету.


Но он есть чуть по дальше в этом участке памяти.

1) Определяем, с чем имеем дело, с DLGTEMLATE или DLGTEMLATEEX.

  function IsExtended(ATemplate: PByte): Boolean; 
  begin
    Result := (PDlgTemplateEx(ATemplate).dlgVer = 1) and
              (PDlgTemplateEx(ATemplate).signature = $FFFF);
  end;


2) Пропускаем саму структуру.

3) Код чтения строки (используется далее):

  function ReadString(var AData: PWideChar): UnicodeString;
  var
    Len, Pos: Integer;
  begin
    Len := 64;
    Pos := 0;
    SetLength(Result, Len);
    while AData^ <> #0 do
      begin
        Inc(Pos);
        if Pos > Len then
          begin
            Len := Len * 2;
            SetLength(Result, Len);
          end;
        Result[Pos] := AData^;
        Inc(AData);
      end;
    SetLength(Result, Pos);
    Inc(AData);
  end;

  function ReadStringEx(var AData: PByte; AAllowID: Boolean): UnicodeString;
  begin
    Result := '';
    case PWORD(AData)^ of
      $0000:
        Inc(AData, SizeOf(Word)); // No
      $FFFF:
        if AAllowID then
          Inc(AData, SizeOf(Word) * 2) // ID
        else
          Result := ReadString(PWideChar(AData));
    else
      Result := ReadString(PWideChar(AData));
    end;
  end;


4) Пропускаем две строки и читаем нужный тебе заголовок:

    ReadStringEx(AData, True); // Skip menu
    ReadStringEx(AData, True); // Skip class
    FCaption := ReadStringEx(AData, False);
Достать caption PropertyPage без инициализации.
От: collider  
Дата: 20.03.17 10:42
Оценка:
Как достать caption PropertyPage без инициализации?
Собственно пытался это делать через

HRSRC hResInfo =  FindResource(NULL,pszTemplate,RT_DIALOG);
auto hTemplate = LoadResource(NULL,hResInfo );
const unsigned char* data = static_cast<const unsigned char*>(LockResource(hTemplate));

но как то не понял к чему привести data чтобы достать caption.
Re: Достать caption PropertyPage без инициализации.
От: Carc Россия http://www.amlpages.com/home.php
Дата: 20.03.17 12:55
Оценка:
Здравствуйте, collider, Вы писали:


C>Как достать caption PropertyPage без инициализации?

C>Собственно пытался это делать через

C>
C>HRSRC hResInfo =  FindResource(NULL,pszTemplate,RT_DIALOG);
C>auto hTemplate = LoadResource(NULL,hResInfo );
C>const unsigned char* data = static_cast<const unsigned char*>(LockResource(hTemplate));          

C>

C>но как то не понял к чему привести data чтобы достать caption.
DLGTEMLATE[EX]?
Aml Pages Home
Re[2]: Достать caption PropertyPage без инициализации.
От: collider  
Дата: 20.03.17 14:00
Оценка:
Здравствуйте, Carc, Вы писали:

C>Здравствуйте, collider, Вы писали:



C>>Как достать caption PropertyPage без инициализации?

C>>Собственно пытался это делать через

C>>
C>>HRSRC hResInfo =  FindResource(NULL,pszTemplate,RT_DIALOG);
C>>auto hTemplate = LoadResource(NULL,hResInfo );
C>>const unsigned char* data = static_cast<const unsigned char*>(LockResource(hTemplate));          

C>>

C>>но как то не понял к чему привести data чтобы достать caption.
C>DLGTEMLATE[EX]?
но caption-а в этой структуре нету.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.