Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2015, 08:48   #1
SeregaZ
Новичок
Джуниор
 
Регистрация: 24.09.2011
Сообщений: 2
По умолчанию DirectUIHWND и Google Chrome

в гугл хроме, при входе на определенные сайты, выбивает окошко с выбором сертификатов для входа. суть проблемы что никак не могу достучаться до этого самого списка с сертификатами, чтобы можно было прочитать и сделать селект нужного и сэмулировать нажатие кнопки ок. само это окошко выбора находится, заголовок окошка есть, кнопки ок и дополнительные тоже читаются. а вот сам список - какая-то тайна за семью печатями. для поиска использовался подобный код:
Код:
function AccessibleChildren(paccContainer : Pointer; iChildStart : LONGINT; cChildren : LONGINT; out rgvarChildren : OleVariant; out pcObtained : LONGINT) : HRESULT; stdcall;
  stdcall; external 'oleacc.dll';
 
procedure TForm1.DisplayInfo(const aAccessible : IAccessible; const aOffset : string);
 
  procedure ProcessChild(const aChild : OleVariant);
  var
    ChildAccessible : IAccessible;
    ChildDispatch : IDispatch;
  begin
    ChildDispatch := nil;
    case VarType(aChild) of
      varInteger : aAccessible.Get_accChild(aChild, ChildDispatch);
      varDispatch : ChildDispatch := aChild;
    end;
    if (ChildDispatch <> nil) and (ChildDispatch.QueryInterface(IAccessible, ChildAccessible) = S_OK) then
      DisplayInfo(ChildAccessible, aOffset + ' ')
  end;
 
var
  Child, CurrentChild : OleVariant;
  ChildArray : array of OleVariant;
  dwNum : DWord;
  Enum : IEnumVARIANT;
  i, iChildCount, iObtained : Integer;
  wsText : WideString;
begin
  if aAccessible <> nil then begin
      if aAccessible.get_AccName(CHILDID_SELF, wsText) = S_OK then
        Memo1.Lines.Add(aOffset + 'Name: ' + wsText)
      else
        Memo1.Lines.Add(aOffset + 'Name: Empty');
      if aAccessible.get_AccValue(CHILDID_SELF, wsText) = S_OK then
        Memo1.Lines.Add(aOffset + ' Value: ' + wsText);
      if aAccessible.get_AccDescription(CHILDID_SELF, wsText) = S_OK then
        Memo1.Lines.Add(aOffset + ' Description: ' + wsText);
 
      if (aAccessible.Get_accChildCount(iChildCount) = S_OK) and (iChildCount > 0) then begin
          Form1.Memo1.Lines.Add(aOffset + ' Children: ' + IntToStr(iChildCount));
          SetLength(ChildArray, iChildCount);
          if AccessibleChildren(Pointer(aAccessible), 0, iChildCount, ChildArray[0], iObtained) = S_OK then begin
              for i := 0 to iObtained - 1 do
                ProcessChild(ChildArray[i])
            end else if aAccessible.QueryInterface(IEnumVARIANT, Enum) = S_OK then begin
              Enum := aAccessible as IEnumVARIANT;
              for i := 0 to iChildCount - 1 do
                if Enum.Next(1, Child, dwNum) = S_OK then
                  ProcessChild(Child);
            end else begin
              if aAccessible.accNavigate(NAVDIR_FIRSTCHILD, CHILDID_SELF, CurrentChild) = S_OK then begin
                  repeat
                    ProcessChild(CurrentChild)
                  until aAccessible.accNavigate(NAVDIR_NEXT, CurrentChild, CurrentChild) <> S_OK;
                end
            end
        end
    end
end;
 
-------------------------------------------------------------------------------------
var
  Accessible : IAccessible;
  hWindow : HWnd;
begin
  Memo1.Lines.Clear;
  hWindow := FindWindowA('CabinetWClass', nil);
  if AccessibleObjectFromWindow(hWindow, 0, IID_IAccessible, Accessible) = S_OK then
  DisplayInfo(Accessible, '');
-------------------------------------------------------------------------------------
это окошко хрома выполнено в каком-то другом формате? или в этом коде просто не хватает какой-то специальной команды из DirectUIHWND?

пытался использовать утилитку, которая читает из координат мышки - она тоже не может получить значения этого списка.

может кто разбирается в этом DirectUIHWND и сможет подсказать?
SeregaZ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Google Chrome sergey731905 Софт 15 18.12.2014 08:35
Подключение к Google Chrome Sera_Kerch Компоненты Delphi 1 18.02.2014 15:40
Google Chrome Syltan Операционные системы общие вопросы 1 16.04.2010 08:18
Google Chrome HellMercenariess Софт 1 06.10.2009 15:53
Скачать Google Chrome OS dorpot Свободное общение 16 31.08.2009 11:06