Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизПриложение замораживается Найти похожие ветки
← →
Ботаник (2012-09-14 15:57) [0]Здравствуйте. Хотел сделать простенькое приложение, которое запускало бы ABBYY Screenshot Reader, нажимало бы в нем кнопку сделать снимок и затем в окне выбора области снова нажать Сделать снимок. Простенький кликер, но не все так просто. Когда появляется окно для выбора области, приложение замораживается и кликнуть по Сделать снимок не выходит :( если закрыть окно выбора области, кликер выполняет действия дальше, тоесть кликает в том месте где было Сделать снимок.. Как сделать чтоб кликер не замораживался при появлении окна для выбора области??
← →
Дмитрий С © (2012-09-14 16:33) [1]Попробую включить телепатор. Заменить SendMessage на PostMessage ?
← →
Ботаник (2012-09-14 17:08) [2]это в чем? программа вообще не выполняет ни каких действий, пока не закроется "Окно" для выбора откуда скриншот делать. Окно в кавычках, потому что просто весь экран серый, а посередине прямоугольник прозрачный, который перетаскиваешь и меняешь его размеры. под прямоугольником надпись Сделать снимок. Вот я программно устанавливаю курсор куда надо, потом запускаю это Окно для выбора, а щелкнуть по надписи Сделать скриншот не могу, щелкает только после того как это окно сам закроешь :( в коде как бы пауза получается, пока это окно висит
← →
turbouser © (2012-09-14 20:09) [3]
> Ботаник (14.09.12 17:08) [2]
Код приведи, как ты энтот файнридер вызываешь и
> затем в окне выбора области снова нажать Сделать снимок
← →
Ботаник (2012-09-14 20:35) [4]сперва запускаю скриншот ридер через процедуру
procedure OpenFile(FileName: string);
var
c: array[0..800] of Char;
begin
StrPCopy(c, FileName);
ShellExecute(Application.Handle, "open", c, nil, nil, SW_NORMAL);
end;
а затем нахожу окно программы по классу и кнопку на нем для запуска Окна для выбора области. Ставлю курсор туда где будет надпись Сделать снимок. щелкаю программно по кнопке Сделать снимок. Окно появляется с надписью сделать снимок, мышка над этой надписью, а щелкнуть не могу, моя программа как бы на паузе в этот момент получаетсяopenfile("C:\Program Files (x86)\ABBYY FineReader 11\Bonus.ScreenshotReader.exe");
h:= FindWindow( "#32770",nil); // находим окно с кнопками
if h <> 0 then bh:=FindWindowEx(h, 0, "Button", nil); //находим кнопку с таким классом
SetCursorPos(1200,900); //ставлю курсор в нужную позицию
SendMessage(bh,WM_LBUTTONDOWN,0,0); // нажимаем кнопку
SendMessage(bh,WM_LBUTTONUP,0,0);
// вот тут выскакивает окно чтоб выбрать область для скрина и программа замерзает :(
mouse_event(mouseeventf_leftdown,0,0,0,0); //нажатие на левую кнопку мыши
mouse_event(mouseeventf_leftup,0,0,0,0);
//кнопка нажимается только после закрытия окна вручную :(
← →
Сергей М. © (2012-09-14 20:49) [5]А что это за сборная клоунада - часть сообщений шмякать с помощью SendMessage, а другую часть с помощью маус_ивент ?
Ты уж определись инжектом мышиных событий ты занимаешься или хз чем тебе не понятным)
← →
Ботаник (2012-09-14 20:59) [6]ну потому что на втором окне я не знаю как через sendmessage сделать, оно появляется после нажатия на кнопку и блокирует все остальное, а если любую кнопку кроме интер нажать, то оно закрывается. Интер тож программно пробовал нажать, но не выходит по вышеизложенной причине - программа застывает и интер нажимается только когда окно закрыть. Вот кстати скрины как все это выглядит и куда нажать пытаюсь. на первом скрине кнопку жму, а вот на втором уже эта беда, ничего не могу через программу сделать :(
http://s49.radikal.ru/i124/1209/d0/656efabc054f.jpg
http://s017.radikal.ru/i419/1209/fe/a175eaf52fb7.jpg
← →
turbouser © (2012-09-14 21:03) [7]Если мне память не изменяет, ридер апи предоставляет для работы с ним. Или нет?
← →
Ботаник (2012-09-14 21:13) [8]я ж в программировании не силен.. подскажите что это и как это посмотреть
← →
turbouser © (2012-09-15 00:06) [9]
> Ботаник (14.09.12 21:13) [8]
>
> я ж в программировании не силен..
Программирование тут особо не причем. Учись
← →
Германн © (2012-09-15 01:34) [10]
> Дмитрий С © (14.09.12 16:33) [1]
>
> Попробую включить телепатор. Заменить SendMessage на PostMessage
> ?
Пробовал?
← →
Ботаник (2012-09-15 03:01) [11]
> Заменить SendMessage на PostMessage
так работает, но кнопка на основном окне нажимается почему-то через раз. в чем может быть причина?
← →
Ботаник (2012-09-15 03:03) [12]та кнопка, которую нажимаю
postMessage(bh,WM_LBUTTONDOWN,0,0); //
PostMessage(bh,WM_LBUTTONUP,0,0);
Она через раз срабатывает
← →
Ботаник (2012-09-15 03:16) [13]поставил два раза подряд
postMessage(bh,WM_LBUTTONDOWN,0,0);
PostMessage(bh,WM_LBUTTONUP,0,0);
postMessage(bh,WM_LBUTTONDOWN,0,0);
PostMessage(bh,WM_LBUTTONUP,0,0);
и теперь срабатывает каждый раз. странности какието. ну да ладно
Всем большое спасибо
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.068 c