как программно нажать ОК в выскачившем окне ошибки? вот окно такого вида пробывал вот такой код 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 нажатие кнопки ок не происходит что не так? прошу помощи
А надо именно обязательно нажать кнопку? Потому что у меня была подобная проблема, и лучше всё таки написать обработчик исключений?
там даже не одно подобное окно выскакивает с разным текстом в теле,но с одинаковым заголовком. заключил ошибо опасный код между try except ошибка сначало не выскакивает,а потом их в зависимости от ситуации аж по 10-40 бывает. и на всё приходится самому нажимать кто поможет разобраться буду благодарен.
не код программы кидать не буду т.к. там конфиденциальная больна инфа. не паблик вообщем она! ну суть то понятна я думаю.нужно программно нажать ОК в окне вылетевшей ошибки.
Даже когда ты программно нажмешь на кнопку, окно всеравно будет мерцать на доли секунды - неудобно. Сделай обработчик исключений.
Спасибо за подсказку! что то даже не подумал о этом! уже написал обработчик но тема всё равно октуальна как нажать кнопку всплывающего окна интересно просто стало как то)
лол, просто лол. Ты наверно повесил свой код на событие FormShow() и заключил в цикл while true do)) Ну и как он у тебя запуститься в основном потоке? Когда при эксцепшн он у тебя замораживается. Если ты сделаешь в новом потоке, да он тебе будет щелкать окошки, но это же ппц бред))) Незнаю что там за приват софт ты пишешь, но так проблемы не решаются)) Тут только эксцепшн и все! Если не можешь грамотно заключить в try except, то во в кладке Additional есть компонент ApplicationEvents, кидаешь его на форму, и на событие OnException кидаешь код: Application.ProcessMessages; Больше тебя ошибки не потревожат xD
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: кстати, да, постом выше все сказано. Если сообщение выводится из твоего потока, то оно замораживает дальнейшее выполнение программы.
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.
Вот это вот нажатие на кнопку в окне с сообщением об ошибке, которое генерирует сама программа, - самое быдлокодерское решение в данном случае.
Я так понимаю это при Indy выскакивает? Если вылазит в режиме дебага, даже не смотря на try except - это нормально, в "пользовательском виде" ошибки не будет.
хоть поняли что сказали?("быдлокодовское мышление") мне было проще сделать нажатие кнопки ОК чем обработчик исключение. сделал как сделал. кто орёт что я ололо тот читать не умеет или просто не хочет.а возможно и флудирасят. вот именно нужно писать такое мелким шрифтом чтоб ТС не мог это прочесть.... такие люди бесят просто всё сделал всё работает. заработаю денег возможно выложу её....
Прочитай ещё раз, что я написал. Конечно, зачем правильно обрабатывать ошибку, когда можно "сделать нажатие кнопки ОК". Это, что бы тебя не обидеть. Удачи.
написав обработчик я существенно изменил алгорит программы.(чего не хотелось!ну что ж поделаешь) если бы я знал что окно появляется на доли секунд то вообще бы не создал этой темы,а заключал бы сразу в try .... except. насчёт бросать я тебе так скажу! не все сразу стали такими какими есть сейчас может быть я и ололо,но это относительно чего либо так что... и ты ололо тоже.ИМХО HakaR за удачу спасибо