Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Работа с окнами

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Работа с окнами
Имя
Сообщение << Старые топики   Новые топики >>
Работа с окнами - 2006-03-24 19:00:48   
.:[ksuri]:.

Сообщений: 216
Оценки: 0
Присоединился: 2005-04-17 23:52:52
<BR>…<BR>while(EnumChildwindоws(hChatwindоw,lpEnumFunc,NULL));<BR>…<BR>BOOL CALLBACK lpEnumFunc(HWND hWnd,LPARAM lParam)<BR>{<BR> char strChild[128];<BR> char strрагеnt[128];<BR> char strрагеntTitle[128];<BR> HWND hрагеnt;<BR> hрагеnt=Getрагеnt(hWnd);<BR> GetClassName(hWnd,strChild,127);<BR> GetwindоwText(hрагеnt,strрагеntTitle,127);<BR> if(strcmpi(strChild,&quot;TRxRichEdit&quot;)&amp;&amp;strcmpi(strрагеntTitle,&quot;Главный&quot;))<BR> {<BR> GetClassName(hрагеnt,strрагеnt,127);<BR> if(strcmpi(strрагеnt,&quot;TPageControl&quot;))<BR> {<BR> std::cout&lt;&lt;&quot;
  • Sending message… &quot;;<BR> if(SendMessage(hWnd,WM_SETTEXT,0,(LPARAM)(LPCTSTR)newText)&amp;&amp;<BR> PostMessage(hWnd,WM_COMMAND,(WPARAM)IDOK,NULL)) std::cout&lt;&lt;&quot;OK\n&quot;;<BR> else std::cout&lt;&lt;&quot;FAILED: &quot;&lt;&lt;GetLastError()&lt;&lt;&quot;\n&quot;;<BR><BR> }<BR> }<BR> //else return false;<BR> return true;<BR>}<BR>

  • Этот кусок кода должен по идее изменить заголовок определенного дочернего окна программы. Однако он изменяет все дочерние окна. Где ошибка? Ведь стоит проверка на заголовок и класс нужного окна…
    Помогите плиз.
    Post #: 1
    Работа с окнами - 2006-03-24 20:42:37   
    rgo

    Сообщений: 7170
    Оценки: 281
    Присоединился: 2004-09-25 05:14:25
    предполагаю две проблемы: во-первых в одном из strcmpi у тебя используется строка "Главный" – ты уверен что кодировки совпадают?
    а во-вторых, что есть strcmpi я не очень осведомлён, но код if (strcmp (str1, str2)) {
    сделай_что_нить ();
    }
    говорит что ф-цию сделай_что_нить надо вызывать если str1 не равна str2. маны почитай насчёт возвращаемого значения strcmpi.
    Post #: 2
    Работа с окнами - 2006-03-24 21:09:57   
    .:[ksuri]:.

    Сообщений: 216
    Оценки: 0
    Присоединился: 2005-04-17 23:52:52
    Кодировка в программе скорее всего cp1251 (прога написана наверно на дельфи, там ведь cp1251 стоит по умолчнию?). А функция strcmpi возвращает:
    1 (true) - если строки равны (кроме регистра)
    0 (false) - в остальных случаях
    Так что по идее такого быть не должно.
    Post #: 3
    Работа с окнами - 2006-03-24 21:28:32   
    .:[ksuri]:.

    Сообщений: 216
    Оценки: 0
    Присоединился: 2005-04-17 23:52:52
    Еще вопросик: как сэмулировать нажатие 'Enter' ? Не кнопки 'Ok', а именно клавиши.
    Post #: 4
    Работа с окнами - 2006-03-24 22:17:25   
    rgo

    Сообщений: 7170
    Оценки: 281
    Присоединился: 2004-09-25 05:14:25
    quote:

    —————-<BR>Цитата: Дата:24.03.2006 21:09:57, Автор:.:[ksuri]:. ::
    Кодировка в программе скорее всего cp1251 (прога написана наверно на дельфи, там ведь cp1251 стоит по умолчнию?).<BR>
    —————-


    х**! Это не показатель, кодировка сорца и кодировка строки возвращаемой функцией GetwindоwText должны быть одинаковыми. Где и какие кодировки я не знаю, но лучше проверь – закинь обе строки в текстовый файл (напр. fprintf (file, "GetwindоwText: %s\nLiteral: %s\n", strрагеntTitle, "Главная");) и фтыкай глазами какие там кодировки.

    quote:

    —————-<BR>Цитата: Дата:24.03.2006 21:09:57, Автор:.:[ksuri]:. ::
    <BR>А функция strcmpi возвращает:<BR><BR>1 (true) - если строки равны (кроме регистра)<BR><BR>0 (false) - в остальных случаях<BR><BR>Так что по идее такого быть не должно.
    —————-


    Это ты где такое вычитал? Или сам придумал?
    Я не думаю что дизайн функции strcmpi сильно отличается от strcmp, хотя бы потому что названия явно в одном стиле. А strcmp (str1, str2) возвращает:
    <0 => лексикографически str1 < str2
    ==0 => str1 == str2
    >0 => str1 > str2.
    то есть твоё понимание наизнанку от верного, стандартная нубская ошибка для strcmp.
    Post #: 5
    Работа с окнами - 2006-03-24 22:26:26   
    .:[ksuri]:.

    Сообщений: 216
    Оценки: 0
    Присоединился: 2005-04-17 23:52:52
    Короче я сам бл* уже запутался. Перепишу ваще лучше весь код заново, покампактней и попроще.
    И ты не мог бы мне помочь немного? Мне нужен код который бы перебирал кучу дочерних окон одной программы и отлавливал нужное мне. Условие: там много окон с одинаковыми классами и именами => надо еще проверять их родителей.
    Сможеш? Буду оч благодарен…
    Post #: 6
    Работа с окнами - 2006-03-25 00:52:22   
    rgo

    Сообщений: 7170
    Оценки: 281
    Присоединился: 2004-09-25 05:14:25
    хых, я уже забыл что такое win32api. вспоминать не хочу. меня вообще, последнее время, чего-то достали все эти убогие C/C++/Java/ada и проч. языки низкого уровня. [sm=2.gif]
    Post #: 7
    Работа с окнами - 2006-03-25 12:53:34   
    yan_kos

    Сообщений: 22
    Оценки: 0
    Присоединился: 2006-02-09 12:04:55
    А зря, ибо високий уровнь ето либо для ленивых либо для тупих….

    А насчот проблеми то ф-я strcmpi возвращает 0 если строки одинаковие….
    Post #: 8
    Работа с окнами - 2006-03-25 13:21:53   
    .:[ksuri]:.

    Сообщений: 216
    Оценки: 0
    Присоединился: 2005-04-17 23:52:52
    quote:

    —————-<BR>Цитата: Дата:25.03.2006 0:52:22, Автор:rgo ::
    хых, я уже забыл что такое win32api. вспоминать не хочу. меня вообще, последнее время, чего-то достали все эти убогие C/C++/Java/ada и проч. языки низкого уровня. [sm=2.gif]
    —————-


    Да я и сам вообще-то на Perl пишу, а на Си просто так - для развлекухи[sm=3.gif]
    Вот решил поучить и WinAPI на всякий случай. И скажу, что почитав несколько учебников по API я пришел к выводу что на нем можно реализовать такие вещи, какие не снились самым хардкорным Perl'щикам.
    Post #: 9
    Работа с окнами - 2006-03-26 03:35:02   
    rgo

    Сообщений: 7170
    Оценки: 281
    Присоединился: 2004-09-25 05:14:25
    quote:

    —————-<BR>Цитата: Дата:25.03.2006 12:53:34, Автор:yan_kos ::
    А зря, ибо високий уровнь ето либо для ленивых либо для тупих….
    —————-


    не ленивых программистов не встречал ни разу. а насчёт тупых, лучше промолчу.
    Post #: 10
    Работа с окнами - 2006-03-26 20:17:36   
    .:[ksuri]:.

    Сообщений: 216
    Оценки: 0
    Присоединился: 2005-04-17 23:52:52
    <BR>#include &lt;windоws.h&gt;<BR>#include &lt;iostream&gt;<BR>#include &lt;cstdlib&gt;<BR><BR>BOOL CALLBACK lpEnumFunc(HWND hWnd,LPARAM lParam);<BR><BR>void main()<BR>{<BR> HWND chatwindоw;<BR> LPCSTR chatwindоwClass=&quot;TLS_Chat&quot;;<BR> std::cout&lt;&lt;&quot;
  • Looking for chat main windоw… &quot;;<BR> if(!(chatwindоw=Findwindоw(chatwindоwClass,NULL))) <BR> {<BR> std::cout&lt;&lt;&quot;FAILED: &quot;&lt;&lt;GetLastError()&lt;&lt;&quot;\n&quot;;<BR> exit(1);<BR> }<BR> std::cout&lt;&lt;&quot;0x&quot;&lt;&lt;chatwindоw&lt;&lt;&quot;\n&quot;;<BR> while(EnumChildwindоws(chatwindоw,lpEnumFunc,NULL));<BR>}<BR><BR>BOOL CALLBACK lpEnumFunc(HWND hWnd,LPARAM lParam)<BR>{<BR> HWND hEdit=Findwindоw(&quot;TRxRichEdit&quot;,NULL);<BR> HWND hEditрагеnt=Getрагеnt(hEdit);<BR> char hEditрагеntClass[128];<BR> GetClassName(hEditрагеnt,hEditрагеntClass,127);<BR> LPCSTR message=&quot;.:[KSURi]:.&quot;;<BR> int cmp=strcmpi(hEditрагеntClass,&quot;TTabSheet&quot;);<BR> std::cout&lt;&lt;&quot;
  • Sending message -&gt; &quot;;<BR> if(hEdit&amp;&amp;cmp==0)<BR> {<BR> if(SendMessage(hEdit,WM_SETTEXT,0,(LPARAM)(LPCTSTR)message)&amp;&amp;PostMessage(hEdit,WM_COMMAND,(WPARAM)IDOK,NULL))<BR> std::cout&lt;&lt;&quot;OK\n&quot;;<BR> return true;<BR> }<BR> else std::cout&lt;&lt;&quot;FAILED: &quot;&lt;&lt;GetLastError()&lt;&lt;&quot;\n&quot;;<BR> return false;<BR>}<BR>


  • Переписал первый код вот так. Вроде покампактней и попроще, убрал спорную проверку с русским языком, вставил точную проверку на сравнение классов окон.
    НО СЦУКО ВСЕ РАВНО НЕ ПАШЕТ![sm=scull.gif][sm=ghoul.gif]
    Я уже незнаю что и делать… Я в winAPI не особо шарю, наколякал как смог.
    Эта прога должна рекламировать в локальном чате мое сетевое радио, а то ручками заипался уже [sm=go139.gif]
    Пжлст, кто лучше меня шарит - помогите.
    Post #: 11
    Страниц:  [1]
    Все форумы >> [Веб-программинг] >> Работа с окнами







    Связаться:
    Вопросы по сайту / xakep@glc.ru

    Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.