+ -
当前位置:首页 → 问答吧 → WebBrower打印预览后模拟SendKeys快捷键实现自动打印的问题

WebBrower打印预览后模拟SendKeys快捷键实现自动打印的问题

时间:2011-12-10

来源:互联网

实现的想法:
现在想实现在WebBrower.ShowPrintPreviewDialog();弹出“打印预览”窗口后,然后通过线程自动模拟发送“ALF+L”(SendKeys.SendWait("%l"))设置成横向打印,然后再按ALT+P实现打印,弹出“打印”窗口后,再模拟ALT+P确定打印。
碰到的问题:
 但是ShowPrintPreviewDialog()后,我无法得到“打印预览”和“打印”窗口的句柄了,这二个窗口不受程序控制(IE内置的打印功能?),问题可能造成可能在ShowPrintPreviewDialog()后,也许还没有显示出"打印预览"窗口,SendKeys.SendWait("%l");//ALT+L 已发送了,即失去效果了。
所以,经常由于电脑速度原因无法得知相应窗口后是否已弹出后,再模拟按键。
然后,我又通过异步线程sleep(1000)后,再发送模拟键,如果电脑反应快,则有效,如果反应慢,则无效。

求教:
有没有办法判定“打印预览”(客户机有可能是英文OS,即可能为"Print Preview")和"打印"("Print")窗口忆完成弹出后,再使用SendKeys.SendWait("%l")方法?

我现在的垃圾代码:
C# code
private void PrintPreviewBtn_Click(object sender, EventArgs e)
        {
            PaymentBrower.ShowPrintPreviewDialog();
            Thread ts = new Thread(new ThreadStart(KeyPrint));// 为了不卡住“打印预览”窗口的弹出,无奈用异步纯种
            ts.Start();
        }

        private void KeyPrint()
        {
            Thread.Sleep(500);  //祈祷在休息500毫秒后,"打印预览"窗口已弹出了。
            SendKeys.SendWait("%l");  //ALT+L
            SendKeys.SendWait("%p");  //ALT+P
            Thread.Sleep(500);//祈祷在休息500毫秒后,"打印"窗口已弹出了。
            SendKeys.SendWait("%p");  //ALT+P
        }


作者: seaer06   发布时间: 2011-12-10

怎么没人回答 我也想知道 ,在线等学习

作者: xienb   发布时间: 2011-12-10

相关阅读 更多

热门下载

更多