打开并激活已存在程序窗口

在实际的应用程序开发中,我们可能会在程序里查找另一个程序是否已打开,如果查找的程序已打开就把它激活成当前的窗口。这里分别用C#.NET和VB.NET两种程序来实现了这个功能,这两个程序里都可以打开一个标题是"我的电脑"的窗口:

-------------------C#.NET的实现---------------

[System.Runtime.InteropServices.DllImport("user32.dll")]

private static extern bool OpenIcon(IntPtr hWnd);

private static extern bool OpenIcon(IntPtr hWnd);

[System.Runtime.InteropServices.DllImport("user32.dll")]

private static extern bool IsIconic(IntPtr hWnd);

[System.Runtime.InteropServices.DllImport("user32.dll")]

private static extern int SetForegroundWindow(IntPtr hWnd);[System.Runtime.InteropServices.DllImport("user32.dll")]

private static extern IntPtr FindWindow(string strclassName, string strWindowName);

void FindAndOpenWindow(string Title)

{

     IntPtr hWnd = FindWindow(null, Title);

     if (hWnd != IntPtr.Zero)

     {

         bool isIcon = IsIconic(hWnd);

         if ( !isIcon )

         {

              SetForegroundWindow(hWnd);

         }

         else

         {

              OpenIcon(hWnd);

         }

     }

}

private void button1_Click(object sender, System.EventArgs e)

{

     FindAndOpenWindow("我的电脑");

} 

-------------------VB.NET的实现---------------

Private Declare Function OpenIcon Lib "user32.dll" (ByVal hWnd As IntPtr) As Boolean

Private Declare Function IsIconic Lib "user32.dll" (ByVal hWnd As IntPtr) As Boolean

Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As IntPtr) As Integer

Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal strclassName As String, ByVal strWindowName As String) As IntPtr

Sub FindAndOpenWindow(ByVal Title As String)

    Dim hWnd As IntPtr = FindWindow(Nothing, Title)

    If Not hWnd.Equals(IntPtr.Zero) Then

        Dim isIcon As Boolean = IsIconic(hWnd)

        If Not isIcon Then

            SetForegroundWindow(hWnd)

        Else

            OpenIcon(hWnd)

        End If

    End If

End Sub

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

    FindAndOpenWindow("我的电脑")

End Sub

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值