Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Приложение замораживается   Найти похожие ветки 

 
Ботаник   (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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.052 c
2-1334680433
Afrost
2012-04-17 20:33
2013.03.22
строки текстового файла преобразовать в массив


15-1327491723
SPeller
2012-01-25 15:42
2013.03.22
Автоматический ресайз колонок в ListView


2-1346928623
Levran
2012-09-06 14:50
2013.03.22
Динамический запрос


15-1331668402
tj.nelson
2012-03-13 23:53
2013.03.22
Реестр windows xp x64 и delphi 7


15-1341139478
Дмитрий С
2012-07-01 14:44
2013.03.22
999 рублей это для программистов :)