Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.083 c
2-1338443775
Demo
2012-05-31 09:56
2013.03.22
Настроить Delphi 2007


15-1330783295
Savek
2012-03-03 18:01
2013.03.22
Воспроизведение видеофрагмента средствами медиаплеера


15-1338529424
alexdn
2012-06-01 09:43
2013.03.22
Куда выложить


15-1331205157
antonn
2012-03-08 15:12
2013.03.22
про архитектуру бд


2-1329889858
теркин
2012-02-22 09:50
2013.03.22
Как отчистить StringGrid от записей





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский