我公司有一内部使用的程序,在使用时要改变一下系统设置才能正常运行。为此我写一个改变和还原系统设置的程序。由于开发此程序的人离开时将源代码全带走了,所以我想能不能象一些病毒一样,将我的这个程序嵌入那个程序中,在它启动时启动,在它关闭时也关闭。

解决方案 »

  1.   

    你可以这样做,先启动你的程序,然后通过设置完系统后,再用shell或shellexecute启动那个程序,然后捕获那个程序的句柄,在它关闭的时候你的程序在还原系统设置,然后退出.
      

  2.   

    作个全局hook 监视你要监视的程序句柄,得到句柄后在启动你的程序
      

  3.   

    回复好快啊!to:goodname008(卢培培,想学好VB) 
    我的信箱是:[email protected]    谢谢。to:all 
    我原来的做法是先启动我的程序,改变系统设置,然后再启动那个程序,然后用OpenProcess和Shell的返回值打开那个进程,然后用WaitForSingleObject等待,发现进程结束,再还原系统设置,结束我的程序。但后来发现这样占用系统资源很厉害。现在的做法是启动完后每隔5秒用FindWindow 来判断那个程序是否关闭,但这样觉得不可靠,而且很笨。希望大家再帮我想想别的办法。谢谢!!!
      

  4.   

    可以在你的程序启动以后用shell调用他的程序啊
      

  5.   

    用WaitForSingleObject可以无限期等待呀, 将你的还原系统设置的代码写在WaitForSingleObject语句之后,如:
    ExitEvent = WaitForSingleObject(hProcess, INFINITE) 
    '你的还原系统设置的代码
    不用进行什么判定,ExitEvent = WaitForSingleObject(hProcess, INFINITE) 这句的作用就是
    使你的程序无限期等待,直到关闭调用的程序,你的程序才会继续执行。
      

  6.   

    to:goodname008(卢培培,想学好VB) 
    谢谢你,不过你的那个程序对我的用处不大,因为在第一程序结束时,不能结束第二个程序。
    不过仍然感谢你的帮助。to:rainstormmaster(rainstormmaster) 
    我用过WaitForSingleObject,但对系统资源占用太大了。不知道还有什么更好的办法没有。
      

  7.   

    to:lnhsgj(黑鹰) ,of123() 
    我试了一下,用批处理文件不行。
    下面是我写的一个批处理文件:
    @echo off
    winmine
    freecell
    sol
    echo on三个程序还是一起出来。另个有个DOS窗口也不好看啊。
      

  8.   

    好主意!!DOS的SHELL学的好呀!
      

  9.   

    批处理应该这样写:
    @echo off
    Start/w winmine
    Start/w freecell
    Start/w sol
    echo on
      

  10.   

    然后:
    Private Sub Command1_Click()
    Shell "c:\mc\test.bat", vbHide
    End Sub这样dos窗口就不会出来了