重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先引入那个项目的命名空间,在代码最上方用Imports语句,比如
创新互联服务项目包括江陵网站建设、江陵网站制作、江陵网页制作以及江陵网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,江陵网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到江陵省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
Imports Project1
然后在需要用的地方写
Dim aform As New MyForm1()
然后通过aform对象的Show方法(弹出普通窗口)或ShowDialog(弹出窗口时后方窗口无响应)方法来显示窗口,最后调用Dispose方法释放对象内存。
软糖来回答罗。
“调用事件”有歧义,你的意思是不是下面两种:
调用事件处理方法
直接调用对象名.方法名
'例如有这样一个按钮点击事件处理程序
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
秒表.Start()
End Sub
'调用它直接用
Button1_Click(me, new EventArgs())
引发事件
Button1.Click.Invoke(me, new EventArgs())
另外 RaiseEvent 也可以引发事件,但不能使用 RaiseEvent 来引发派生窗体的控件事件,只有自己定义的类的事件才能用它引发。
如满意,请采纳,谢谢。
Sub过程实现:
Sub FactsSub(ByVal intN As Integer, ByRef result As Long)
Dim i As Integer
Dim lngResult As Long
lngResult = 1
For i = 1 To intN
lngResult *= i
Next
result = lngResult
End Sub
Private Sub btnSub_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSub.Click
Dim i As Integer
Dim sum As Long = 0
Dim result As Long
For i = 1 To 10
FactsSub(i, result)
sum += result
Next
MsgBox("过程实现 1! + 2! + 3! + … + 10! = " sum)
End Sub
Function函数实现:
Function FactsFunction(ByVal intN As Integer) As Long
Dim i As Integer
Dim lngResult As Long
lngResult = 1
For i = 1 To intN
lngResult *= i
Next
Return lngResult
End Function
Private Sub btnFunction_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFunction.Click
Dim i As Integer
Dim sum As Long = 0
For i = 1 To 10
sum += FactsFunction(i)
Next
MsgBox("函数实现 1! + 2! + 3! + … + 10! = " sum)
End Sub
代码已测试。
一、测试需要的INI文件。名称为“setinfo.ini”,存放路径为你解决方案里“Bin“文件夹的”Debug“文件夹里。
内容:
[Location]
pnlTime.Location.X=787
pnlTime.Location.Y=0
[TopMost]
Top=True
二、操作INI文件的类。新建一个类,类中内容为:
Public Class Class1
Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Int32, _
ByVal lpFileName As String _
) As Int32
End Class
三、界面代码:
Imports System.IO 'for path
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
getINI()
End Sub
Private Sub getINI()
Dim iniclass As New Class1 '
Dim myBf As String 'get set_info 开辟存储的内存
myBf = New String(CChar(""), 256)
Dim myFN As String '配置文件的文件路径
myFN = Path.Combine(My.Application.Info.DirectoryPath, "setinfo.ini")
Dim myAN As String 'Application_NAME,也是Section名称
myAN = Me.TextBox1.Text
Dim myKN As String 'KEY_NAME,关键字名称
myKN = Me.TextBox2.Text
Class1.GetPrivateProfileString(myAN, myKN, "", myBf, myBf.Length, myFN) '调用读取INI文件的操作
TextBox3.Text = Microsoft.VisualBasic.Left(myBf, InStr(myBf, Chr(0)) - 1) '截取有用部分,有必要
End Sub
End Class
四、测试截图如下
两种方法
1.
Shell(""Explorer.exe", AppWinStyle.NormalFocus")
2.
Dim proc As New Process
proc.StartInfo.FileName="Explorer.exe"
proc.Start
方法2给予更多的控制,如结束进程的方法Kill
VB对于win32 API的支持还是不错的。而且比起用C++来说还简化了不少。建议你看些windows系统机制的资料,比如windows消息处理机制,windows窗口过程的实现等。最好是去看看MFC的教程,会让你对win32 API有更深入的了解。推荐孙鑫的《VC++深入详解》,给其他窗体发送消息,钩子什么的都有详细的解释。
关于做钩子,使用SetWindowsHookEx,UnhookWindowsHookEx,CallNextHookEx,CopyMemory四个win32 API函数,再加上一个自己写的回调函数就可以实现。
控制别的窗体最小化,给其他窗体发送消息,首先用FindWindow函数找到目标窗体的句柄(对于VB自己的窗体来说Me.hwnd属性),然后用SendMessage,PostMessage函数发送消息。还可以用SetWindowText但是windows消息有几百种,各种消息的参数可能是不同的。要查MSDN搞懂你要使用的消息的参数结构。
代码:关闭其他窗口:
模块中的声明:
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_CLOSE = H10 '定义消息常量
窗体中:
Dim hnd As Long '定义一个长整型变量储存句柄
Private Sub Form_Load()
hnd = FindWindow(vbNullString, "test") '获取目标窗体句柄,这里目标窗体的标题为"test"
SendMessage hnd, WM_CLOSE, 0, 0 '发送WM_CLOSE消息关闭窗体
End Sub