Главная страница
    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.062 c
15-1335263720
Anikey
2012-04-24 14:35
2013.03.22
Turbo Profiler


15-1349806763
Dimka Maslov
2012-10-09 22:19
2013.03.22
А всё таки почему


15-1330005162
Artem
2012-02-23 17:52
2013.03.22
Посоветуйте программу-терминал...


15-1331757006
Юрий
2012-03-15 00:30
2013.03.22
С днем рождения ! 15 марта 2012 четверг


2-1331367948
niro---
2012-03-10 12:25
2013.03.22
Заставить работать TWebBrowser в потоке из DLL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский