Вытащить заголовки вкладок TabControl'а в чужом приложении

Тема в разделе "WASM.WIN32", создана пользователем Jungle, 28 фев 2006.

  1. Jungle

    Jungle New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2005
    Сообщения:
    8
    Адрес:
    Russia
    Имеется хэндл TabControl'а в окне некоего приложения. Хочется вытащить название (заголовок) конкретной вкладки. OS Win98. Куда копать?
     
  2. Guest

    Guest Guest

    Публикаций:
    0
    Таким образом происходит вставка нового заголовка
    Код (Text):
    1.  
    2.     mov ts.pszText,offset TabTitle1
    3.     mov ts.cchTextMax,sizeof TabTitle1
    4.     invoke  SendMessage,hTab,TCM_INSERTITEM,0,addr ts
    5.  


    TCM_GETITEM - чтобы получить заголовок... вот и копай
     
  3. Jungle

    Jungle New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2005
    Сообщения:
    8
    Адрес:
    Russia
    Сам-то пробовал из окна ЧУЖОЙ работающей программы так вытащить названия вкладок? Если работает, поделись примером, пожалуйста. Я пробовал (правда, не в асме пока) - успеха не добился.
     
  4. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Jungle

    Покажи пример твоего кода. По идее метод должен работать безупречно - выделяешь память под структуру TCITEM и строку в чужом процессе (VirtualAllocEx), указываешь флажок TCIF_TEXT в ней и размещение строки pszText (все вместе можно оформить за один вызов WriteProcessMemory) в том же блоке, после этого можно отправлять сообщение, и считать результаты (ReadProcessMemory).
     
  5. Jungle

    Jungle New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2005
    Сообщения:
    8
    Адрес:
    Russia
    alpet





    Согласно MSDN VirtualAllocEx в Win98 не поддерживается
     
  6. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Jungle

    Странно, что этой системой еще пользуются. Тогда тебе вероятно придется внедрять DLL как вариант. Еще можно сделать общую секцию памяти (File Mapping), они в Win98 должны отображаться сразу во всех процессах (при этом не потребуется наверное использовать Read/WriteProcessMemory использовать).