我公司有一台winnt server,控制无数远程打印机,用循环的方式进行打印(一次打印N多东西)。可是如果某台打印机坏了(或者出了什么问题)。windows就会弹出一个对话框来警告并暂停打印进程。每次都要手动的点击OK按钮让打印继续进行。
问题是打印是系统发送的,所以通常打印时没有人看护系统,所以我老板让我想个办法来每次自动点击那个OK按钮(因为据他说似乎不能配置系统来忽略这个打印错误)。
看起来的解决方案很奇怪,就是写个后台service来进行判断。可是怎么判断?用句柄吗?另外怎么发送消息来点击那个OK按钮啊?我不是特别懂windows

解决方案 »

  1.   

    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 'Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long '
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Const BM_CLICK = &HF5
    const ts="提示框名"
    const an ="按钮名"Private Sub Timer1_Timer()
        pk = FindWindow(vbNullString, ts)
        pp = FindWindowEx(pk, ByVal 0&, "Button", an)
        SendMessage pp, BM_CLICK, 0, 0
    End Sub
      

  2.   

    我以前写过一个程序 若需要 程序 及源码 请留下email
      

  3.   

    或者直接发送WM——CLOSE也可以,道理和拦截窗口一样。
      

  4.   

    哇~~~~~喔~~~~~~
    hot1kang1(许仙)
    高人!留个QQ吧!
    俺是99783345
      

  5.   

    Sorry, 楼主,我觉得你的想法是错的。
    我以前和同事写过类似的打印任务管理的代码。。也会碰到这种情况~~~~~~~~
    所以就想到自己管理打印任务,,,先检查打印机的状态,没有异常才送出打印任务~~~~这样就不会有错当然也不可能排除卡纸的现象,但是这个是不能人为知道的嘛
      

  6.   

    Sorry, 楼主,我觉得你的想法是错的。
    我以前和同事写过类似的打印任务管理的代码。。也会碰到这种情况~~~~~~~~
    所以就想到自己管理打印任务,,,先检查打印机的状态,没有异常才送出打印任务~~~~这样就不会有错当然也不可能排除卡纸的现象,但是这个是不能人为知道的嘛