我编一个程序需要对一个打印程序实现批打印,但每次打印这个软件都会跳出commondialog对话框要求用户输入文件名,这样就实现不了批打印了,所以我想通过程序自动填写文件名,并确定,以便对话框弹出后不会影响批打印.请多指教,另外我对API不会,希望能给出完整些的代码,谢谢

解决方案 »

  1.   

    Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) 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 Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const BM_CLICK = &HF5
    Private Const WM_SETTEXT = &HCPrivate Sub Command3_Click()
    Dim t As Long
    Dim b As Long
    Dim d As LongDim clong As Long
    t = FindWindow("#32770", vbNullString)   '找对话框的句柄
    b = FindWindowEx(t, ByVal 0&, "Edit", vbNullString)   '找子控件
    Dim astr As String * 256
    SendMessage b, WM_SETTEXT, 0, ByVal Text1.Text    '给edit负值
    d = FindWindowEx(t, ByVal 0&, "Button", "打开(&O)")
    SendMessage d, BM_CLICK, 0, 0   '单击End Sub
    你说的commondialog是对话框控件?如果不是,上面的代码hwnd有区别
      

  2.   

    定义一个变量为文件名,如果这个文件名是空(“”),就打开commanddialog,否则就不打开commanddialog。
      

  3.   

    我把弹出的对话框大概的样子画下来了,画技不高见笑了, online(龙卷风V2.0--再战江湖) ,我相信你的程序能实现,但还要跟据我这个改一下,谢谢.我改了一些,但没成功,因为我不懂API.各位高手再给看看.
    _______________________________________________
    |另存PDF文件为                                |
    |---------------------------------------------|
    |                                             | 
    |                                             |
    |                                             |
    |                                             |
    |                                             |
    |                                             |
    |_____________________________________________|
    |          文件名(N)  ************     保存(S)|
    |---------------------------------------------|
    |          保存类型(T)************       取消 |
    -----------------------------------------------
    Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) 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 Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const BM_CLICK = &HF5
    Private Const WM_SETTEXT = &HCPrivate Sub Command3_Click()
    Dim t As Long
    Dim b As Long
    Dim d As LongDim clong As Long
    t = FindWindow("#32770", vbNullString)   '找对话框的句柄
    b = FindWindowEx(t, ByVal 0&, "另存PDF文件为", vbNullString)   '找子控件
    Dim astr As String * 256
    SendMessage b, WM_SETTEXT, 0, ByVal Text1.Text    '给另存PDF文件为赋值
    d = FindWindowEx(t, ByVal 0&, "Button", "保存(&S)")
    SendMessage d, BM_CLICK, 0, 0   '单击
    End Sub
      

  4.   

    呵呵
    画得可以
    b = FindWindowEx(t, ByVal 0&, "另存PDF文件为", vbNullString)   '找子控件
    "另存PDF文件为"是子控件的句柄你需要使用spy工具,来得到窗口的信息
    我给你发一个
      

  5.   

    online(龙卷风V2.0--再战江湖)你说要给我发一个SPY工具,在哪呀? 我的信箱是[email protected],谢谢