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

Вниз

то работает, то не работает. Не объясните почему?   Найти похожие ветки 

 
Vlad Oshin ©   (2008-07-22 13:05) [0]

Иммитирует нажатие принтскрина и вставку в paint.
Pain запускается, иногда в него вставляется, иногда нет, но в любом случае он сворачивается(?). В чем мб дело?

procedure TForm3.Button1Click(Sender: TObject);
var
  H: hWnd;
 PI: TProcessInformation;
 SI: TStartupInfo;

procedure KDown(Key: byte); begin keybd_event(Key, 0, 0, 0); end;
procedure KUp(Key: byte); begin keybd_event(Key, 0, KEYEVENTF_KEYUP, 0); end;

begin
KDown(VK_SNAPSHOT);
KUp(VK_SNAPSHOT);

FillChar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
if CreateProcess(nil, "mspaint.exe", nil, nil, False, 0, nil, nil, SI, PI) then
begin
  WaitForInputIdle(PI.hProcess, INFINITE);
  sleep(500);  //все равно на всякий случай подождем

  H := FindWindow(nil, "Безымянный - Paint");
  if GetLastError<>0 then ShowMessage(SysErrorMessage(GetLastError));
  SwitchToThisWindow(H,false); //>=Win2000, у меня ХР
  if GetLastError<>0 then ShowMessage(SysErrorMessage(GetLastError));
  sleep(100); //на всякий случай подождем

  KDown(VK_CONTROL);
  KDown(ord("V"));
//   KUp(ord("V"));
  KUp(VK_CONTROL);
end;

end;


 
brother ©   (2008-07-22 13:16) [1]

может нажатия клавиш не все доходят? или не в той последовательности?


 
Rouse_ ©   (2008-07-22 13:23) [2]

SwitchToThisWindow(H, true);


 
Anatoly Podgoretsky ©   (2008-07-22 13:28) [3]

> Vlad Oshin  (22.07.2008 13:05:00)  [0]

А нафига это, что нельзя скопировать нужный RECT


 
Vlad Oshin ©   (2008-07-22 13:30) [4]


> SwitchToThisWindow(H, true);

спасибо.

что заметил:
 WaitForInputIdle(PI.hProcess, INFINITE);
 sleep(500);  //все равно на всякий случай подождем

если sleep(200), например, то пишет уже "Недопустимый дескриптор окна."
значит, не успевает создаться окно  
WaitForInputIdle(PI.hProcess, INFINITE); получается не работает?


 
Vlad Oshin ©   (2008-07-22 13:35) [5]


> А нафига это, что нельзя скопировать нужный RECT

да можно, так и делаю, а это просто упражняюсь

хотя можно и на ctrl+PrintScreen повесить.  
Обычно дергают экран, потом что-то запускают на редактирование и туда вставляют.


 
Anatoly Podgoretsky ©   (2008-07-22 13:41) [6]

> Vlad Oshin  (22.07.2008 13:35:05)  [5]

Ну это меняет дело.


 
clickmaker ©   (2008-07-22 14:24) [7]

я бы искал по имени класса - MSPaintApp


 
@!!ex ©   (2008-07-22 14:50) [8]

Я бы делал снимок экрана ручками, сохранял во временный файл и паинту уже говорил его загрузить.


 
Vlad Oshin ©   (2008-07-22 14:53) [9]


> Я бы делал снимок экрана ручками, сохранял во временный
> файл и паинту уже говорил его загрузить.

да, наверное, так умнее все же


 
Anatoly Podgoretsky ©   (2008-07-22 15:23) [10]

Это не умно, файл лишний.


 
Vlad Oshin ©   (2008-07-22 15:35) [11]


> файл лишний.

тоже верно
оставим, как есть.


 
Anatoly Podgoretsky ©   (2008-07-22 16:02) [12]

Ну ты же говорил, что

> да можно, так и делаю, а это просто упражняюсь

А так или вручную, или копировать RECT



Страницы: 1 вся ветка

Текущий архив: 2008.08.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
2-1216723921
Нов_и_чок
2008-07-22 14:52
2008.08.24
Программное выкл. компа


2-1216449989
Анатолий_1987
2008-07-19 10:46
2008.08.24
Роли и привилегии


15-1215183486
Хохол
2008-07-04 18:58
2008.08.24
Пятничный флуд: Большой адронный коллайдер


15-1214988339
Dennis I. Komarov
2008-07-02 12:45
2008.08.24
У ICQ опять чегото поменяли?


15-1215103763
turbouser
2008-07-03 20:49
2008.08.24
Vista.