给你个参考的例子,窗体打开时可能大小有变化,软件名可能有变化
目前成都创新互联已为成百上千家的企业提供了网站建设、域名、虚拟空间、网站改版维护、企业网站设计、蒲江县网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
先加个控件ListBox1,运行后双击ListBox1上程序名
Public Class Form1
Public myProcess() As Process
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim myProcesses() As Process = Process.GetProcesses()
Dim jh As New ArrayList
For Each bs As Process In myProcesses
If CInt(bs.MainWindowHandle) 0 Then
ListBox1.Items.Add(bs.ProcessName)
jh.Add(bs)
End If
Next
ReDim myProcess(jh.Count - 1)
jh.CopyTo(myProcess)
End Sub
Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Integer, ByVal nCmdShow As Long) As Integer
Private Sub ListBox1_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDoubleClick
Dim a As Process = myProcess(ListBox1.SelectedIndex)
Try
Dim dd = ShowWindow(a.MainWindowHandle, H1)
AppActivate(a.Id)
Catch ex As Exception
End Try
End Sub
End Class
最正统的方法是把textbox1的tabindex属性设为0(其他控件的tabindex不能是0)
要在load事件里用textbox1.focus()也可以,但要先me.show(),否则不会起作用。因为控件得到焦点需要控件”可见可用“,在formload阶段整个窗体是“不可见"的,需要强制使用me.show()。
在form_load事件中,加入:
Button5.Focus()
这样焦点就在Button5上了
一个时刻只有一个窗体能获得焦点。关键是窗体收到
WM_KILLFOCUS
消息时的重绘。如果你只是想让窗体看起来并没有什么不同,就这样吧。我用
VB6,所以写的都是
API,VB.NET
的库不是很熟,所以……将就一下吧。
调用
SetWindowLong,使窗体的消息处理链接到新的窗口函数
NewWndProc,然后在
NewWndProc
里检测到
WM_KILLFOCUS
时就将其移出消息队列即可。完毕之后调用原来的窗口函数。