找回密码
 加入
搜索
查看: 6629|回复: 11

Run命令执行程序使用了@SW_HIDE,为什么还是无法隐藏程序呢?

 火.. [复制链接]
发表于 2009-11-21 14:27:38 | 显示全部楼层 |阅读模式
本帖最后由 dreamgg 于 2010-1-4 16:05 编辑

Run命令执行程序显示标志为@SW_HIDE,为什么还是无法隐藏程序界面呢?

Run("c:\windows\temp\fix.exe","",@SW_HIDE)

有什么不对吗?

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2009-11-21 15:08:05 | 显示全部楼层
这条语句本身的语法是正确的,问题在于fix.exe,在程序设计之初,可能阻止了隐藏状态。
 楼主| 发表于 2009-11-21 15:23:24 | 显示全部楼层
哦,原来如此,有没有其他的方法解决?
发表于 2010-1-3 19:00:23 | 显示全部楼层
$Run=Run("notepad.exe")
WinWait("无标题 - 记事本")
MsgBox(0,"","注意任务栏")
_SetParent("无标题 - 记事本", "Program Manager")
Func _SetParent($TitleP, $TitleC)
    If WinExists($TitleP) Then
        If WinExists($TitleC) Then
            $HwndP = WinGetHandle($TitleP)
            $HwndC = WinGetHandle($TitleC)
            $user32 = DllOpen("user32.dll")
            DllCall($user32, "str", "SetParent", "HWnd", $HwndP, "HWnd", $HwndC)
            Return 1
        Else
            Return -1
        EndIf
    Else
        Return -1
    EndIf
EndFunc
把这个例子改一下就ok了

评分

参与人数 1金钱 +20 贡献 +1 收起 理由
afan + 20 + 1

查看全部评分

发表于 2010-1-3 19:11:20 | 显示全部楼层
可能用vbs试下
 楼主| 发表于 2010-1-4 16:05:13 | 显示全部楼层
非常感谢4楼朋友的帮助,按你的方法解决了我的问题。
发表于 2010-1-4 20:21:33 | 显示全部楼层
如果改了之后,还是不行,那就是你调用的那个程序不支持隐藏窗口,我目前的办法是用shellexcute()调用那个程序的快捷方式,而不是直接调用他本身。因为可以把快捷方式的属性设置为最小化运行。侥幸的达到了隐藏的目的。希望各位高手能支招,让他在任务栏也不显示。那就太好了。(#NoTrayIcon在这里是没有用的。)
发表于 2010-1-5 12:23:55 | 显示全部楼层
FIX是个什么程序?
发表于 2013-6-5 10:32:32 | 显示全部楼层
学习了,感谢分享
发表于 2013-6-5 11:32:53 | 显示全部楼层
这个还是没有完全隐起来
发表于 2014-8-19 12:47:15 | 显示全部楼层
是不是这样隐藏了就不能对此窗口操作了
发表于 2014-10-13 11:34:48 | 显示全部楼层
学习了,感谢分享
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 13:03 , Processed in 0.078638 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表