精华内容
下载资源
问答
  • Imports System.Runtime.InteropServicesImports System.ReflectionImports System.ComponentModel'Imports System.Runtime.InteropServicesPublic Class Form1 Private Sub Form1_Disposed(ByVal sender As Obje.....

    Imports System.Runtime.InteropServices
    Imports System.Reflection
    Imports System.ComponentModel
    'Imports System.Runtime.InteropServices

    Public Class Form1

        Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
            My.Settings.Save()
            If p.StartInfo.FileName <> "" Then
                If p.HasExited = False Then
                    p.Kill()
                End If
            End If


        End Sub

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            On Error Resume Next
            Me.Show()
            With ListBox1.Items
                'TextBox1.Text = "kxyt:" & My.Settings.kxytks & "----" & My.Settings.kxytjs
                'MsgBox(My.Settings.qxytks)


                .Add("千橡鱼塘(kxyt.exe):" & My.Settings.qxytks & "----" & My.Settings.qxytjs & "  耗时: " & Math.Round((CDate(My.Settings.qxytjs).Ticks - CDate(My.Settings.qxytks).Ticks) / 10 ^ 7 / 60, 2) & "分")
                .Add("开心外挂:" & My.Settings.wgks & "----" & My.Settings.wgjs & "  耗时: " & Math.Round((CDate(My.Settings.wgjs).Ticks - CDate(My.Settings.wgks).Ticks) / 10 ^ 7 / 60, 2) & "分")
                .Add("开心鱼塘:" & My.Settings.kxytks & "----" & My.Settings.kxytjs & "  耗时: " & Math.Round((CDate(My.Settings.kxytjs).Ticks - CDate(My.Settings.kxytks).Ticks) / 10 ^ 7 / 60, 2) & "分")
                .Add("小号外挂:" & My.Settings.xhwgks & "----" & My.Settings.xhwgjs & "  耗时: " & Math.Round((CDate(My.Settings.xhwgjs).Ticks - CDate(My.Settings.xhwgks).Ticks) / 10 ^ 7 / 60, 2) & "分")

            End With

        End Sub

        Public Sub yxcx(ByVal cxname As String, ByVal cxpath As String, ByVal btname As String)
            'MsgBox(cxpath + "\log")
            'End
            cxks = Now.Ticks
            pq = IntPtr.Zero
            p.StartInfo.FileName = cxname
            p.StartInfo.WorkingDirectory = cxpath
            p.StartInfo.WindowStyle = FormWindowState.Normal
            p.Start()
            p.EnableRaisingEvents = True
            p.WaitForInputIdle()

            Do While p.MainWindowTitle = ""
                Threading.Thread.Sleep(2000)
                p.Refresh()
            Loop


            Dim tt As Int32 = 1
            Do While pq.ToInt32 < 1
                Dim title As New System.Text.StringBuilder(55)
                Dim MyCallBack As New funcCallBackParent(AddressOf EnumChildWindowsProc)
                EnumChildWindows(p.MainWindowHandle, MyCallBack, IntPtr.Zero)

                'With ListBox1.Items
                '.Add("mc:" & p.MainWindowTitle)
                For Each pq1 As IntPtr In lngHWND
                    '  .Add(pq1.ToString)

                    GetWindowText(pq1, title, title.Capacity + 1)
                    ' .Add(title.ToString)
                    'MsgBox(title.ToString)

                    If InStr(title.ToString, btname) > 0 Then
                        'TextBox1.Text = pq1.ToString & title.ToString
                        TextBox1.Text = p.MainWindowTitle & "正在运行"
                        pq = pq1
                        Exit For
                    End If

                Next
                'End With
                If pq.ToInt32 < 1 Then
                    Threading.Thread.Sleep(2000)
                    p.Refresh()
                End If

                tt = tt + 1
                If tt > 5 Then
                    MsgBox("无法运行")
                    Exit Sub

                End If
            Loop

            PostMessage(pq, WM_LBUTTONDOWN, IntPtr.Zero, 1)
            PostMessage(pq, WM_LBUTTONUP, IntPtr.Zero, 1)
            PostMessage(p.MainWindowHandle, WM_SYSCOMMAND, SC_MINIMIZE, 0)
            FileSystemWatcher1.Path = Trim(cxpath) + "\log"
            FileSystemWatcher1.Filter = "*.*"
            FileSystemWatcher1.EnableRaisingEvents = True

            'p.WaitForExit()
            Do
                'System.Threading.Thread.Sleep(2000)
                Application.DoEvents()
            Loop While p.HasExited = False
        End Sub

        Public Function EnumChildWindowsProc(ByVal hWndParent As IntPtr, ByVal lParam As IntPtr) As Boolean

            lngHWND.Add(hWndParent)
            EnumChildWindowsProc = True
        End Function



        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


            My.Settings.qxytks = Now.ToString
            kxytks = Now.Ticks
            ii.StartInfo.FileName = "d:\exe\kxyt.exe"
            ii.StartInfo.WindowStyle = FormWindowState.Minimized
            ii.Start()
            Timer1.Interval = 3000
            Timer1.Enabled = True

            My.Settings.Save()
            PostMessage(ii.MainWindowHandle, WM_SYSCOMMAND, SC_MINIMIZE, 0)
            'My.Settings.qxytjs = Now.ToString


            My.Settings.wgks = Now.ToString
            Call yxcx("F:\wg714\开心网花园农夫.exe", "F:\wg714", "开始工作")
            My.Settings.wgjs = Now.ToString

            My.Settings.kxytks = Now.ToString
            Call yxcx("F:\XXXXX.exe", "F:\dm\开心钓鱼1008", "开始")
            My.Settings.kxytjs = Now.ToString

            My.Settings.xhwgks = Now.ToString
            Call yxcx("F:\xhwg\开心网花园农夫.exe", "F:\xhwg", "开始工作")
            My.Settings.xhwgjs = Now.ToString
            My.Settings.Save()
        End Sub

        Private Sub FileSystemWatcher1_Changed(ByVal sender As System.Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Changed

        End Sub

        Private Sub FileSystemWatcher1_Created(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Created
            My.Settings.Save()
            'PostMessage(pq, WM_CLOSE, IntPtr.Zero, IntPtr.Zero)
            Dim t1 As DateTime = Now


            'If p.StartInfo.FileName = "F:\xhwg\开心网花园农夫.exe" Then
            'MsgBox(e.Name)

            Dim title As New System.Text.StringBuilder(55)
            Dim MyCallBack As New funcCallBackParent(AddressOf EnumChildWindowsProc)
            Do
                EnumChildWindows(p.MainWindowHandle, MyCallBack, IntPtr.Zero)

                For Each pq1 As IntPtr In lngHWND


                    GetWindowText(pq1, title, title.Capacity + 1)

                    If InStr(title.ToString, "距下次") > 0 Then
                        'TextBox1.Text = pq1.ToString & title.ToString
                        Exit Do

                    End If

                Next
                Application.DoEvents()
            Loop
            'End If

            Do While (Now.Ticks - t1.Ticks) < (10 * 10 ^ 7)
                Application.DoEvents()
            Loop
            'MsgBox(Now.Ticks - t1.Ticks)
            If p.HasExited = False Then
                'MsgBox(pq.ToString)

                ListBox1.Items.Add(p.StartInfo.FileName() & "  运行完毕  耗时:" & Math.Round((Now.Ticks - cxks) / 10 ^ 7 / 60, 2) & "分")
                p.Kill()
                'p.Close()
            End If
            My.Settings.Save()
        End Sub

        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            If ii.HasExited = True Then
                My.Settings.qxytjs = Now.ToString
                ListBox1.Items.Add("d:\exe\kxyt.exe  运行完毕  耗时:" & Math.Round((Now.Ticks - kxytks) / 10 ^ 7 / 60, 2) & "分")
                Timer1.Enabled = False
            End If
        End Sub

        Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

        End Sub

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            kxytks = Now.Ticks
            ii.StartInfo.FileName = "d:\exe\kxyt.exe"
            ii.StartInfo.WindowStyle = FormWindowState.Minimized
            ii.Start()
            Timer1.Interval = 3000
            Timer1.Enabled = True
        End Sub
    End Class


    ''''''''
    Module Module1
        Public p As Process = New Process()
        Public ii As Process = New Process()
        Public pq As IntPtr
        Public cxks As UInt64
        Public kxytks As UInt64
        Public Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String)
        'Public Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
        'Public Delegate Function EnumWindowsCallback( _
        '                   ByVal hWnd As IntPtr, _
        '                  ByVal lParam As IntPtr) As Boolean

        '<DllImport("user32.dll ")> _
        'Public Function EnumChildWindows( _
        '                   ByVal hwndParent As IntPtr, _
        '                  ByVal lpEnumFunc As EnumWindowsCallback, _
        '                 ByVal lParam As IntPtr) As Boolean
        'End Function
        'Friend Declare Function EnumChildWindows Lib "User32" (ByVal hWndParent As IntPtr, ByVal funcCallBack As funcCallBackParent, ByVal lParam As IntPtr) As Boolean
        Public Const WM_CHAR As Long = &H102
        Public Const WM_KEYDOWN = &H100
        Public Const WM_SYSKEYDOWN = &H104
        Public Const WM_CLOSE = &H10
        Public Const BM_CLICK = &HF5
        Public Const WM_LBUTTONDOWN = &H201
        Public Const WM_LBUTTONUP = &H202
        Public Const WM_SETTEXT = &HC
        Public Const WM_SYSCOMMAND = &H112
        Public Const SC_MINIMIZE = &HF020&

        Public Delegate Function funcCallBackParent(ByVal hWnd As IntPtr, ByVal lParam As IntPtr) As Boolean
        Public Delegate Function funcCallBackChild(ByVal hWndParent As IntPtr, ByVal lpEnumFunc As Long, ByVal lParam As Integer) As Boolean

        ' --> EnumChildWindows matches the funcCallParent Delegate 
        Friend Declare Function EnumChildWindows Lib "User32" (ByVal hWndParent As IntPtr, ByVal funcCallBack As funcCallBackParent, ByVal lParam As IntPtr) As Boolean
        Friend Declare Function EnumWindows Lib "User32" (ByVal funcCallBack As funcCallBackParent, ByVal lParam As IntPtr) As IntPtr
        Public Declare Function GetDesktopWindow Lib "user32" () As IntPtr
        Public lngHWND As New ArrayList
        <Runtime.InteropServices.DllImport("user32.dll")> _
        Public Function GetWindowText(ByVal hWnd As IntPtr, ByVal lpWindowText As System.Text.StringBuilder, _
        ByVal nMaxCount As Integer) As Integer
        End Function


        <Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True, CharSet:=Runtime.InteropServices.CharSet.Auto)> _
        Public Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Boolean
        End Function
    End Module

    展开全文
  • VB.NET启动外部程序

    2012-07-18 17:28:00
    VB中可以使用shell函数来启动外部应用程序,而VB.NET新增加了Process类启动的方法。 Shell函数 用法:Shell(pathname[,windowstyle]) pathname是路径名,windowstyle是窗口风格设置,通过常量设置。 但是shell...

    启动外部应用程序可以通过shell函数和Process类实现。

    在VB中可以使用shell函数来启动外部应用程序,而VB.NET新增加了Process类启动的方法。

    Shell函数

    用法:Shell(pathname[,windowstyle]) pathname是路径名,windowstyle是窗口风格设置,通过常量设置。

    但是shell只能异步地启动程序,只有等启动的应用程序结束后,才能返回自己的程序继续运行。

    Process类

    它是System.Diagnostics命名区域中的类。System.Diagnostics.Process.Start用来启动程序,System.Diagnostics.Process.StartInfo用来设置窗口的风格。

    Dim mProcess as System.Diagnostics.Process

    mProcess.StartInfo.Filename=""

    mProcess.StratInfo.WindowStyle=""

    mProcess.Strat()

    转载于:https://www.cnblogs.com/beileierhao/archive/2012/07/18/2597803.html

    展开全文
  • VB使用命令行启动外部程序,希望对您有帮助
  • .Net启动外部程序

    2010-09-06 17:15:00
    .Net启动外部程序 一、使用Process类启动外部应用程序 二、VB.net使用Shell函数启动外部应用程序

    在Win32应用程序中使用API的ShellExecute方法来启动外部应用程序;在VB可以使用Shell函数;在.Net,则使用Process类来启动外部应用程序,如果是VB.net,还可以使用Shell函数。

     

    一、使用Process类启动外部应用程序

     

         Process proc = New Process();
         proc.StartInfo.FileName = exePath;
         proc.StartInfo.Arguments = args;
         proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
         proc.Start();

     

         1. 创建一个Process对象。

         2. 为Process对象设置StartInfo对象的相关属性,如FileName--应用程序的文件路径、Arguments--执行应用程序所需要的参数等。

         3. 调用Process对象的Start()方法启动外部应用程序,并返回被启动的程序的进程ID。

         4. 若要等待外部程序执行完成才把控制权返回到当前程序,可以在proc.Start()之后调用Process的WaitForExit()方法,如proc.WaitForExit(2000),这里的2000是超时时长;

     

    二、VB.net使用Shell函数启动外部应用程序

     

          Public Shared Function Shell ( PathName As String, Style As AppWinStyle, Wait As Boolean, Timeout As Integer) As Integer

          参数

          PathName
          类型:System.String
          必需。String.要执行的程序的名称,以及所有必需的参数和命令行开关。PathName 也可以包含驱动器和目录路径或文件夹。
          如果不知道程序的路径,则可以使用 GetFiles 进行定位。例如,可以调用 My.Computer.FileSystem.GetFiles("C:/", True,          "testFile.txt"),这将返回驱动器 C:/ 上所有目录中每个名为 testFile.txt 的文件的完整路径。

           Style
          类型:Microsoft.VisualBasic.AppWinStyle
          可选。AppWinStyle.AppWinStyle 中选择的一个值,该值指定将要在其中运行程序的窗口的样式。如果省略 StyleShell 将使用 AppWinStyle.MinimizedFocus 以最小化方式启动该程序并获得焦点。

           Wait
          类型:System.Boolean
          可选。Boolean.一个指示 Shell 函数是否应等待程序完成的值。如果省略 Wait,则 Shell 将使用 False

           Timeout
          类型:System.Int32
          可选。Integer.如果 WaitTrue,则为等待完成的毫秒数。如果省略 Timeout,则 Shell 使用 -1,表示没有超时设置并且 Shell 到程序结束时才返回。因此,如果省略 Timeout 或将其设置为 -1,则 Shell 可能永远不会将控制返回给您的程序。
     

           返回值

           类型:System.Int32
           运行一个可执行程序,并且如果该程序仍在运行则返回一个包含该程序的进程 ID 的整数。

         

     

          如: Shell(exePath & " " & args, AppWinStyle.Hide, True, 10000)  

          注:

                Shell 函数的返回值取决于 PathName 中指定的程序在 Shell 返回时是否仍在执行。如果将 Wait 设置为 True,并且程序在到达超时时间之前完成,则 Shell 返回零。如果超时过期或者省略 Wait 或将它设置为 False,则 Shell 返回程序的进程 ID。

                如果 Shell 函数无法启动指定程序,则出现 FileNotFoundException 错误。

    展开全文
  • .Net启动外部程序 .

    千次阅读 2013-03-26 09:01:35
    在.Net,则使用Process类来启动外部应用程序,如果是VB.net,还可以使用Shell函数。   一、使用Process类启动外部应用程序    Process proc = New Process();  proc.StartInfo.FileName

    在Win32应用程序中使用API的ShellExecute方法来启动外部应用程序;在VB可以使用Shell函数;在.Net,则使用Process类来启动外部应用程序,如果是VB.net,还可以使用Shell函数。

     

    一、使用Process类启动外部应用程序

     

         Process proc = New Process();
         proc.StartInfo.FileName = exePath;
         proc.StartInfo.Arguments = args;
         proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
         proc.Start();

     

         1. 创建一个Process对象。

         2. 为Process对象设置StartInfo对象的相关属性,如FileName--应用程序的文件路径、Arguments--执行应用程序所需要的参数等。

         3. 调用Process对象的Start()方法启动外部应用程序,并返回被启动的程序的进程ID。

         4. 若要等待外部程序执行完成才把控制权返回到当前程序,可以在proc.Start()之后调用Process的WaitForExit()方法,如proc.WaitForExit(2000),这里的2000是超时时长;

     

    二、VB.net使用Shell函数启动外部应用程序

     

          Public Shared Function Shell ( PathName As String, Style As AppWinStyle, Wait As Boolean, Timeout As Integer) As Integer

          参数

          PathName
          类型:System.String
          必需。String.要执行的程序的名称,以及所有必需的参数和命令行开关。PathName 也可以包含驱动器和目录路径或文件夹。
          如果不知道程序的路径,则可以使用 GetFiles 进行定位。例如,可以调用 My.Computer.FileSystem.GetFiles("C:/", True,          "testFile.txt"),这将返回驱动器 C:/ 上所有目录中每个名为 testFile.txt 的文件的完整路径。

           Style
          类型:Microsoft.VisualBasic.AppWinStyle
          可选。AppWinStyle.AppWinStyle 中选择的一个值,该值指定将要在其中运行程序的窗口的样式。如果省略 StyleShell 将使用 AppWinStyle.MinimizedFocus 以最小化方式启动该程序并获得焦点。

           Wait
          类型:System.Boolean
          可选。Boolean.一个指示 Shell 函数是否应等待程序完成的值。如果省略 Wait,则 Shell 将使用 False

           Timeout
          类型:System.Int32
          可选。Integer.如果 WaitTrue,则为等待完成的毫秒数。如果省略 Timeout,则 Shell 使用 -1,表示没有超时设置并且 Shell 到程序结束时才返回。因此,如果省略 Timeout 或将其设置为 -1,则 Shell 可能永远不会将控制返回给您的程序。
     

           返回值

           类型:System.Int32
           运行一个可执行程序,并且如果该程序仍在运行则返回一个包含该程序的进程 ID 的整数。

         

     

          如: Shell(exePath & " " & args, AppWinStyle.Hide, True, 10000)  

          注:

                Shell 函数的返回值取决于 PathName 中指定的程序在 Shell 返回时是否仍在执行。如果将 Wait 设置为 True,并且程序在到达超时时间之前完成,则 Shell 返回零。如果超时过期或者省略 Wait 或将它设置为 False,则 Shell 返回程序的进程 ID。

                如果 Shell 函数无法启动指定程序,则出现 FileNotFoundException 错误。

    出处:http://blog.csdn.net/dezwen/article/details/5866750

    展开全文
  • [NET]VB.NET启动并监测外部程序

    千次阅读 2007-01-29 09:31:00
    你再也不需要使用Win32应用编程接口或者VB的Shell函数来启动外部应用程序了。因为你可以使用.NET框架中的System.Diagnostics.Process类来进行这个操作,从而进一步简化代码。 虽然.NET使很多事情变得更加复杂,但是...
  • ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。 目录 1基本简介 2原型参数 3返回值 4例子 5特殊用法 ...
  • 在传统VB程序中,你可以使用Shell函数启动一个应用程序。当你传送一个数据文件名的时候,VB在相应应用程序中打开这个数据文件。你可以使用一个任选的windowstyle参数控制所启动的应用程序的窗口方式。例如,在VB6中...
  • 如题,,跪谢、、,,,,
  • 第一步:由程序1启动程序2, 第二步:关键,从程序1自动点击程序2中按钮(无任程序2是最大化、最小化还是隐藏式),请问如何写代码,谢谢 程序1: Public Class Form1 Private Sub Button1_Click(ByVal sender As ...
  • 程序控制外部程序(VB.Net版)

    千次阅读 热门讨论 2008-10-17 11:05:00
    控制过程输入输出 有时候,你可能不仅仅想使用简单的命令行,而是想把更复杂的输入信息直接发送到启动的过程中。前面例子中的把输出导入到文件中的方法,并不总是最好的选择。在许多情况下,把输出直接导回你的应用...
  • VB 中,常以Shell指令来执行外部程式,然而它在Create该外部process 後,立刻 就会回到vb 的下一行程式,无法做到等待该Process结束时,才执行下一行指令, 或是说,无法得知该Process是否已结束,甚者,该Process...
  • Process 启动外部程序出错问题 最近想通过window自带的画图程序打开图片,结果出现了一些意思不到时错误。例如: vb.net写法 (1)、 Process.Start("mspaint.exe", “C:/Documents and Settings/Administrator/...
  • 'ComboBox主要是由ComboBox和一个Edit类组成的,关键在于要获得那个Edit的句柄并向其发消息,下面的代码是我在XP下调试通过的:获得资源管理器中的那个ComboBox中的内容(运行时先启动一个资源管理器) Option ...
  • Visula Basic 6.0使用了外部空间,启动的时候检查是否安装了这些控件,如果没有安装,自动联网下载安装然后启动程序
  • 要在 VB 中完成此操作,请从“工程”菜单中选择“引用”选项,启动“引用”对话框。在“引用”对话框中,选择 AutoCAD 类型库,然后单击“确定”。允许您选择另外的应用程序的对象,通过设置...
  • 启动 VB ,引用 AutoCAD 类型库。操作步骤:从“工程”菜单中选择“引用”选项,启动“引用”对话框。在“引用”对话框中,选择 AutoCAD 类型库,然后单击“确定”。定义模块级变量 AutoCAD 应用程序 (acadApp) 和...
  • 利用VB进行AutoCAD二次开发,首先应该将VB于CAD进行链接:在编写VB代码之前,在VB编程环境中引用CAD对象库,在编写VB程序代码时,创建CAD对象启动运行CAD程序VB与CAD进行链接后,就可以利用AutoCAD对象及其下级...
  • VB.NET 同 Console 程序交互的方法

    千次阅读 2016-11-24 09:04:36
    使用 .NET 自带的 Process 类可以启动外部 Console 程序并获取其输出, 但 Process 类需要在外部程序结束后,才一次性返回外部程序的输出。 如果想实现同外部程序的交互,Process 类无法满足要求,唯有采取自行 ...
  • VBShell调用后等待程序运行结束

    千次阅读 2011-07-18 10:32:22
    VB启动/结束另一程序(Shell 等待程序运行结束)  VB 中,常以Shell指令来执行外部程式,然而它在Create该外部process 後,立刻就会回到vb 的下一行程式,无法做到等待该Process结束时,才执行下一行指令,或是说...

空空如也

空空如也

1 2 3 4 5
收藏数 92
精华内容 36
关键字:

vb启动外部程序