演示操作记事本
Private Sub Command1_Click()
    Shell "NotePad", vbNormalFocus      '打开记事本
    SendKeys "PowerBASIC中国", True     '键入一些字符
    SendKeys "%FA", True                '打开另存为对话框
    SendKeys "C:\PowerBASIC.txt", True  '输入文件名
    SendKeys "{TAB}{TAB}", True         '将焦点定位到保存按钮上
    SendKeys "{ENTER}", True            '回车
    SendKeys "%(FX)", True              '退出记事本
    MsgBox "您的文件已经保存到 C:\PowerBASIC.txt 中!"
End Sub
这段代码可以用VB模拟键盘输入,控制记事本的打开、录入、另存为&保存。
但是所有这些操作都是可见的,即使将Shell "NotePad", vbNormalFocus中的vbNormalFocus参数改为vbHide或vbMinimizedFocus都不能让这些操作变为后台执行。请问:该如何修改,使上述所有操作都变为后台操作,而不会弹出到桌面最前来执行?
附:
Shell 常数
可在代码中的任何地方使用下列常数代替实际值:
数                值               描述 
vbHide            0       窗口是隐藏的,并且焦点被传递给隐藏窗口。 
vbNormalFocus     1       窗口拥有焦点,并且恢复到原来的大小与位置。 
vbMinimizedFocus  2       窗口缩小为图符并拥有焦点。 
vbMaximizedFocus  3       窗口最大化并拥有焦点。 
vbNormalNoFocus   4       窗口被恢复到最近一次的大小与位置。当前活动窗口仍为活动窗口。 
vbMinimizeNoFocus 6       窗口缩小为图符。当前活动窗口仍为活动窗口虽然可以用Print之类的语句完成,但是用上述方法就不能解决了吗?

解决方案 »

  1.   

    可以尝试一下:把notepad得left>=screen.width
    或者top>=screen.height
      

  2.   

    已經回答了,
    用DDE方法來做。
      

  3.   

    使用
    Open "C:\PowerBASIC.txt" For output as #1
    print #1, "PowerBASIC中国"
    Close #1
    固然很容易就实现了,但是并不是所有的第三方软件都能够这样直接输入信息,比如Photoshop。请问用API的SendMessage即可做到应该如何编写代码呢?
    我试过用SendMessage打开另存为对话框,但是就无法得到另存为对话框里面的文件名text框的句柄,没能够将信息发送到Text文本框中,换句话说就是没办法用SendMessage操作另存为对话框,不知高人有何高招?
    :) 另外,如何把notepad得left>=screen.width?
      

  4.   

    兄弟,一切都是可行的!Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Const HWND_TOP = 0
    Private Const SWP_SHOWWINDOW = &H40Private Sub Command1_Click()
    Dim h As Long
    h = FindWindow("Notepad", "未定标题 - 记事本")
    Call SetWindowPos(h, HWND_TOP, -100, 0, 300, 300, SWP_SHOWWINDOW)
    End Sub这样可以将每个显示出来的窗口都隐藏起来(就是移动到屏幕以外去)不管是系统的对话框,还是第三方软件的窗口!就是比较麻烦一些,用Spy++来一个一个寻找,呵呵
      

  5.   

    用Sendmessage 来输出才是正道
    移出屏幕外,但是使用 Sendkey 还是会影响正常操作
    具体的模拟按键的消息请自己搜索,很多