проблема с кликом по кнопке

Тема в разделе "MS Visual C++", создана пользователем nwnw, 14 сен 2006.

Статус темы:
Закрыта.
  1. nwnw

    nwnw Гость

    Давно уже мучает проблема (и не меня одного), облазил все форумы, перепробывал все советы, изгрыз кучу манов, толку 0х00.
    Есть диалоговое окошко, в нем кнопки, для того чтобы нажать на кнопку совершенно справедливо получаем его хендл и посылаем ему сообщения типа SendMessage(h, BM_CLICK, 0, 0); или SendMessage(h, WM_LBUTTONDOWN, 0, 0); SendMessage(h, WM_LBUTTONUP, 0, 0); Таким образом мы имитируем клик мышки, либо жмахание Энтером по клаве - на обычных кнопках все получается, но на множестве остальных, в том числе и сабжевом - нифига, видно что кнопка сначала нажимается, потом отжимается, но и только, сам код не выполняется. Тут начинается самое интересное - известная утилита SpyXX от Микрософта показывает что нажимаем ли мы мышкой по кнопке, что имитируем програмно это дело, окно button получает все те же WM_LBUTTONDOWN сообщения. Заюзав также весьма удобную утилиту InqSoft Window Scanner (там есть сервис для отправки любому окну сообщения с любыми параметрами) отправив кнопке всего два сообщения WM_LBUTTONDOWN и WM_LBUTTONUP удалось добиться выполнения кода окна!!!
    Все тот же СпайХХ никакой разницы в посылках этого WM_LBUTTONDOWN из InqSoft Window Scanner и моей проги не выявил! но код то выполняется только из этого злощасного Window Scanner! (жаль сырцов этой проги автор не выложил в опенсорсе)
    Звиняйте, что столько букоф, но проблема мучает уже несколько месяцев и нуждается в подробной описании, может кто-нибудь и поможет разобраться...
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    А WM_COMMAND не помогает?
     
  3. nwnw

    nwnw Гость

    <!--QuoteBegin-grigsoft+15:09:2006, 05:43 -->
    <span class="vbquote">(grigsoft @ 15:09:2006, 05:43 )</span><!--QuoteEBegin-->А WM_COMMAND не помогает?
    [snapback]43905" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Интересно, а с какими это параметрами WParam и LParam???
     
  4. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    SendMessage(hDIALOG, WM_COMMAND, nIDButon, 0);
     
  5. nwnw

    nwnw Гость

    SendMessage(hDIALOG, WM_COMMAND, nIDButon, 0);

    точнее работает так PostMessage(hDIALOG, WM_COMMAND, nIDButon, hButton);

    но почему то не в 100% случаев.. странно, иногда работает прямо 20 раз подряд, затем перезагружаю комп, и опять ничего не работает, через 20 минут безуспешных тестов опять начинает работать!!!!!!
    почему же так???? отчего зависит???
     
  6. zubr

    zubr Гость

    Потому что PostMessage посылает сообщение процедуре окна и выходит из нее не дожидаясь завершения, а SendMessage, наоборот, дожидается завершения обработки сообщения процедурой окна.
     
  7. nwnw

    nwnw Гость

    <!--QuoteBegin-zubr+18:09:2006, 04:47 -->
    <span class="vbquote">(zubr @ 18:09:2006, 04:47 )</span><!--QuoteEBegin-->Потому что PostMessage посылает сообщение процедуре окна и выходит из нее не дожидаясь завершения, а SendMessage, наоборот, дожидается завершения обработки сообщения процедурой окна.
    [snapback]43996" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    ну и что? замена-то на SendMessage ничего не дала...
     
  8. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    The BN_CLICKED notification code is sent when the user clicks a button.
    The parent window of the button receives the BN_CLICKED notification code through the WM_COMMAND message.

    Parameters

    wParam
    The low-order word contains the button's control identifier. The high-order word specifies the notification message.
    lParam
    Handle to the button.
     
Загрузка...
Похожие Темы - проблема кликом по
  1. c0de3r
    Ответов:
    5
    Просмотров:
    126
  2. DobermannTT
    Ответов:
    10
    Просмотров:
    135
  3. SoulPaladin
    Ответов:
    4
    Просмотров:
    131
  4. Artael
    Ответов:
    1
    Просмотров:
    110
  5. ENSLER
    Ответов:
    0
    Просмотров:
    103
Статус темы:
Закрыта.

Поделиться этой страницей