none
vb2010 取消視窗焦點 RRS feed

  • 問題

  • 寫了一個自我開啟的程式,加了一個Timer1,3秒會自動開啟程式,再自動關上程式

    我想問,如何取消視窗焦點,想做到後台自動開關,不會影響使用電腦

    Public Class Form1

         Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
            Process.Start(TextBox1.Text)
            Me.Close()
        End Sub

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Timer1.Start()
            TextBox1.Text = System.Windows.Forms.Application.ExecutablePath
        End Sub
    End Class

    2015年11月29日 上午 08:38

解答

  •             Dim startInfo As New ProcessStartInfo(System.Windows.Forms.Application.ExecutablePath)
                startInfo.WindowStyle = ProcessWindowStyle.Minimized
                Process.Start(startInfo)

    Process.Start 方法 (ProcessStartInfo)

    • 已標示為解答 手指 2015年11月30日 下午 04:42
    2015年11月30日 上午 12:39
  • Process.Start 配上 Minimum Window

    所以要用

    Process.Start(ProcessStartInfo) 這個多載。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 手指 2015年11月30日 下午 04:42
    2015年11月29日 上午 09:48

所有回覆

  • Process.Start 配上 Minimum Window

    所以要用

    Process.Start(ProcessStartInfo) 這個多載。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 手指 2015年11月30日 下午 04:42
    2015年11月29日 上午 09:48
  • Process.Start 配上 Minimum Window

    所以要用

    Process.Start(ProcessStartInfo) 這個多載。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?


    Public Class Form1

        Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
            Process.Start(System.Windows.Forms.Application.ExecutablePath)
            Me.Close()
        End Sub

        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Timer1.Start()
        End Sub
    End Class

    不太明白,可詳細一點嗎?謝謝你抽空回答

    如何做到自動開關,不會影響使用電腦


    • 已編輯 手指 2015年11月29日 上午 10:01
    2015年11月29日 上午 10:01
  • 我在爬文,看見,好像只有視窗焦點最上層,好像沒有取消視窗焦點
    2015年11月29日 下午 02:41
  •             Dim startInfo As New ProcessStartInfo(System.Windows.Forms.Application.ExecutablePath)
                startInfo.WindowStyle = ProcessWindowStyle.Minimized
                Process.Start(startInfo)

    Process.Start 方法 (ProcessStartInfo)

    • 已標示為解答 手指 2015年11月30日 下午 04:42
    2015年11月30日 上午 12:39
  • 聽起來好像開發成Windows Service比較適合
    2015年11月30日 上午 07:53
  •             Dim startInfo As New ProcessStartInfo(System.Windows.Forms.Application.ExecutablePath)
                startInfo.WindowStyle = ProcessWindowStyle.Minimized
                Process.Start(startInfo)

    Process.Start 方法 (ProcessStartInfo)

    謝謝你抽空回答,有一個小小的問題,是不是,不可以放在Load和不可以放到Timer?

    會不停自我重開,直到當機,

    如果放到Button1就沒有問題

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

                Dim startInfo As New ProcessStartInfo(System.Windows.Forms.Application.ExecutablePath)
                startInfo.WindowStyle = ProcessWindowStyle.Minimized
                Process.Start(startInfo)

        End Sub

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

               Dim startInfo As New ProcessStartInfo(System.Windows.Forms.Application.ExecutablePath)
                startInfo.WindowStyle = ProcessWindowStyle.Minimized
                Process.Start(startInfo)

        End Sub

    可解決的嗎?我想一開程式,就失去視窗焦點,

    放到Load,會出現問題,會一直自我重開程式



    • 已編輯 手指 2015年11月30日 下午 01:52
    2015年11月30日 下午 01:24
  • Process.Start 設計是用來開別人,不是開自己的。

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2015年11月30日 下午 02:34