Нажатие ОК в окне ошибки

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by petryxa-mixa, 13 Jan 2011.

  1. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    как программно нажать ОК в выскачившем окне ошибки?
    вот окно такого вида [​IMG]
    пробывал вот такой код
    Code:
    
    if FindWindow(nil, 'Project1') <> 0 then
       begin
        Wind := FindWindow(nil, 'Project1');
        Btn := FindWindowEx(Wind, 0, nil, 'OK');
        SendMessage(Btn, BM_CLICK, 0, 0);
       end
    
    
    нажатие кнопки ок не происходит
    что не так?
    прошу помощи
     
  2. Vollkorn

    Vollkorn Member

    Joined:
    6 Nov 2010
    Messages:
    86
    Likes Received:
    15
    Reputations:
    -6
    А надо именно обязательно нажать кнопку? Потому что у меня была подобная проблема, и лучше всё таки написать обработчик исключений?
     
  3. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    там даже не одно подобное окно выскакивает с разным текстом в теле,но с одинаковым заголовком.
    заключил ошибо опасный код между try except ошибка сначало не выскакивает,а потом их в зависимости от ситуации аж по 10-40 бывает.
    и на всё приходится самому нажимать
    кто поможет разобраться буду благодарен.
     
  4. Vollkorn

    Vollkorn Member

    Joined:
    6 Nov 2010
    Messages:
    86
    Likes Received:
    15
    Reputations:
    -6
    Если не сложно -- кинь код программы, так будет проще тебе помочь.
     
  5. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    не код программы кидать не буду т.к. там конфиденциальная больна инфа.
    не паблик вообщем она!
    ну суть то понятна я думаю.нужно программно нажать ОК в окне вылетевшей ошибки.
     
  6. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Даже когда ты программно нажмешь на кнопку, окно всеравно будет мерцать на доли секунды - неудобно. Сделай обработчик исключений.
     
  7. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    Спасибо за подсказку!
    что то даже не подумал о этом!
    уже написал обработчик
    но тема всё равно октуальна
    как нажать кнопку всплывающего окна
    интересно просто стало как то)
     
  8. xmadstyle

    xmadstyle Member

    Joined:
    29 Aug 2008
    Messages:
    91
    Likes Received:
    53
    Reputations:
    24
    лол, просто лол.
    Ты наверно повесил свой код на событие FormShow() и заключил в цикл while true do))
    Ну и как он у тебя запуститься в основном потоке? Когда при эксцепшн он у тебя замораживается.
    Если ты сделаешь в новом потоке, да он тебе будет щелкать окошки, но это же ппц бред)))
    Незнаю что там за приват софт ты пишешь, но так проблемы не решаются))
    Тут только эксцепшн и все!
    Если не можешь грамотно заключить в try except, то во в кладке Additional есть компонент ApplicationEvents,
    кидаешь его на форму, и на событие OnException кидаешь код: Application.ProcessMessages;
    Больше тебя ошибки не потревожат xD
     
    1 person likes this.
  9. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Code:
    if FindWindow(nil, 'Project1') <> 0 then
       begin
        Wind := FindWindow(nil, 'Project1');
        if Wind <> 0 then
          ShowMessage('window found');
        Btn := FindWindowEx(Wind, 0, nil, 'OK');
        if Btn <> 0 then
          ShowMessage('button found');
        SendMessage(Btn, BM_CLICK, 0, 0);
       end
    Запусти этот скрипт. Что выводит?
    И вообще, лучше слать WM_LBUTTONDOWN и WM_LBUTTONUP вместо BM_CLICK.

    ps: кстати, да, постом выше все сказано. Если сообщение выводится из твоего потока, то оно замораживает дальнейшее выполнение программы.
     
  10. _asp1k

    _asp1k New Member

    Joined:
    8 Jan 2011
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Code:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure PressingKeyboard(Key: byte; extra: DWORD);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    
    PressingKeyboard(VK_RETURN,0); // VK_RETURN - êëàâèøà Enter
    
    ShowMessage('Message');
    
    end;
    
    procedure TForm1.PressingKeyboard(Key: byte; extra: DWORD);
    begin
    keybd_event(Key, extra, 0, 0);
    keybd_event(Key, extra, KEYEVENTF_KEYUP, 0);
    end;
    
    end.
     
  11. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Вот это вот нажатие на кнопку в окне с сообщением об ошибке, которое генерирует сама программа, - самое быдлокодерское решение в данном случае.
     
    1 person likes this.
  12. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    Я так понимаю это при Indy выскакивает? Если вылазит в режиме дебага, даже не смотря на try except - это нормально, в "пользовательском виде" ошибки не будет.
     
    1 person likes this.
  13. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    хоть поняли что сказали?("быдлокодовское мышление")
    мне было проще сделать нажатие кнопки ОК чем обработчик исключение.
    сделал как сделал.
    кто орёт что я ололо тот читать не умеет или просто не хочет.а возможно и флудирасят.
    вот именно нужно писать такое мелким шрифтом чтоб ТС не мог это прочесть....
    такие люди бесят просто


    всё сделал всё работает.
    заработаю денег возможно выложу её....
     
    #13 petryxa-mixa, 15 Jan 2011
    Last edited: 15 Jan 2011
  14. HakaR

    HakaR Active Member

    Joined:
    23 Jul 2009
    Messages:
    301
    Likes Received:
    200
    Reputations:
    3
    Прочитай ещё раз, что я написал.
    Конечно, зачем правильно обрабатывать ошибку, когда можно "сделать нажатие кнопки ОК".
    Это, что бы тебя не обидеть.
    Удачи.
     
    2 people like this.
  15. petryxa-mixa

    petryxa-mixa Member

    Joined:
    8 Jun 2010
    Messages:
    174
    Likes Received:
    7
    Reputations:
    0
    написав обработчик я существенно изменил алгорит программы.(чего не хотелось!ну что ж поделаешь)
    если бы я знал что окно появляется на доли секунд то вообще бы не создал этой темы,а заключал бы сразу в try .... except.
    насчёт бросать я тебе так скажу!
    не все сразу стали такими какими есть сейчас
    может быть я и ололо,но это относительно чего либо так что...
    и ты ололо тоже.ИМХО
    HakaR за удачу спасибо
     
  16. Gusev

    Gusev Banned

    Joined:
    4 Sep 2010
    Messages:
    86
    Likes Received:
    8
    Reputations:
    -5
    ...

    А не легче кнопку заменить чем то на подобии таймера?