Delphi управление чужим приложением на QT5

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Москва, 16 Jul 2015.

  1. Москва

    Москва New Member

    Joined:
    19 Oct 2010
    Messages:
    63
    Likes Received:
    3
    Reputations:
    0
    Не буду скрывать т.к. это актуальная тема и не трудно будет догадаться что мне это нужно для вайбера, я пытаюсь получить HWnd объектов в вайбере и вообще не как не получается, если смотреть по классам то они все имеют один и тот же класс Qt5QWindowIcon. Далее например в начале нахожу окно:
    Code:
    Hnd:= FindWindow(nil,'Viber +**********');
    Потом пытаюсь получить хоть какой то дочерний объект:
    Code:
    function CallBack(h: HWnd; lParam: LPARAM):Bool; stdcall;
    var
      NameArr: array [0..255] of Char;
    begin
      GetClassName(h,NameArr,255);
      ShowMessage(String(NameArr));
    end;
    
    EnumChildWindows(Hnd,@CallBack,0);
    Но нет нечего не находит. Подскажите куда гуглить) WinSpy,Spy++ и остальное не предлагать, они тоже нечего интересного не показывают.
     
  2. Developer™

    Developer™ Member

    Joined:
    7 Nov 2013
    Messages:
    30
    Likes Received:
    6
    Reputations:
    0
    Они и не покажут, так как по сути там только окно есть окно, а всё остальное (кнопки, лайн едиты и так далее) рисуются Qt своими силами.
     
    binarymaster likes this.
  3. Москва

    Москва New Member

    Joined:
    19 Oct 2010
    Messages:
    63
    Likes Received:
    3
    Reputations:
    0
    Что можешь подсказать, чтоб не жать по координатам курсором, а подключаться к этим кнопкам программно через винапи
     
  4. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Можешь взять дизассемблер, найти обработчики нажатий для нужных кнопок, взять их адреса (или составить сигнатуры для динамического поиска), найти, где взять значение this для передачи обработчику, написать дллку или базонезависимый код, который будет получать от твоей основной программы ивенты и вызывать нужные обработчики, подгрузить код в клиент вайбера.
    Это как вариант...
     
    _________________________
    binarymaster and Москва like this.
  5. Developer™

    Developer™ Member

    Joined:
    7 Nov 2013
    Messages:
    30
    Likes Received:
    6
    Reputations:
    0
    ИМХО легче по координатам кликать...
     
  6. Москва

    Москва New Member

    Joined:
    19 Oct 2010
    Messages:
    63
    Likes Received:
    3
    Reputations:
    0
    Да хорошая идея, подумаю.

    Мне нужно много поток)
     
  7. ky_kask

    ky_kask Member

    Joined:
    18 Nov 2009
    Messages:
    73
    Likes Received:
    81
    Reputations:
    6
    Вайбер так и не распотрошили.. хм.. А я то думал что тема себя изжила. Ориентируйся по контролам. В винде сработает.
     
  8. i~DOS

    i~DOS Member

    Joined:
    26 Mar 2009
    Messages:
    42
    Likes Received:
    40
    Reputations:
    4