Вы, похоже, пытаетесь программно заставить Acrobat Read распечатать ваш документ. Ваша проблема в том, что вы не можете убедить его сделать это без запроса взаимодействия с пользователем.
Ваш текущий код не может работать, потому что вы ожидаете завершения процесса. Как только вы начнете с простого вызова WaitForSingleObject, ни один из вашего кода не сможет работать, пока процесс не завершится. У вас нет возможности для кода нажать эту кнопку.
Так что вам нужно использовать другую стратегию ожидания. Так как это выглядит довольно грубым взломом, я предложу кое-что, что я бы обычно не предлагал: опрос. Вместо ожидания с бесконечным тайм-аутом вы должны ждать в цикле со значением тайм-аута, скажем, 250 мс. Каждый раз, когда ожидание прекращается, вы проверяете, завершился ли процесс или, наоборот, истекло ли время ожидания.
Когда время ожидания истекло, у вас есть возможность найти диалоговое окно, которое вы хотите найти. Вы должны быть в состоянии найти его с помощью FindWindowEx()
. Вы можете узнать его имя класса, используя Spy ++. После того, как вы нашли диалоговое окно, вам нужно найти дескриптор окна для элемента управления редактирования и кнопку, которую вы хотите нажать: EnumChildWindows()
должна помочь.
Когда у вас есть ручки элементов управления, которыми вы хотите манипулировать, вы должны решить, как ими манипулировать. Если вам повезет, вы можете отправить строку с вызовом на SetWindowText
, если это элемент управления EDIT или аналогичный. В противном случае вам, возможно, придется подделать нажатия клавиш или отправить WM_PASTE. Кнопка может быть более хлопотно. Нажатие на него включает отправку WM_COMMAND родительскому элементу кнопок. Снова Spy ++ может показать вам, какие сообщения отправляются, когда вы нажимаете кнопку.
Конечно, вы не можете найти свое окно, когда звоните FindWindowEx()
, потому что оно еще не показывалось. Когда это происходит, вы снова идете по кругу с вызовом WaitForSingleObject()
.
Наконец, гораздо лучший способ справиться с этим - использовать библиотеку программного обеспечения, предназначенную для печати PDF!