重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
FindWindowEx
创新互联-专业网站定制、快速模板网站建设、高性价比长泰网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式长泰网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖长泰地区。费用合理售后完善,10年实体公司更值得信赖。
VB声明
Declare Function FindWindowEx Lib "user32" Alias
"FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As
String, ByVal lpsz2 As String) As Long
说明
在窗口列表中寻找与指定条件相符的第一个子窗口
返回值
Long,找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
参数表
参数
类型及说明
hWnd1
Long,在其中查找子的父窗口。如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找)
hWnd2
Long,从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索
lpsz1
String,欲搜索的类名。零表示忽略
lpsz2
String,欲搜索的类名。零表示忽略
你的 sub过程这个是子过程,无返回值的,这里Form1_Load中b仍然 b=""
如果你想b="注释",将你的sub过程改成自定义函数,用b来接收返回值就行了,代码如下
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim a As String = "rem"
Dim b As String = ""
b = sub过程(b, a)
Me.Text = b '为什么“b”不是等于 "注释"
End Sub
Private Function sub过程(ByVal 输出 As String, ByRef 输入 As String) As String
If 输入 = "rem" Then
输出 = "注释"
End If
Return 输出
End Function
有返回值:函数执行结束,必须将执行的某个结果数据返回给调用者
没有返回值:函数执行结束,没有返回任何结果给调用者
vb 还是vb.net这两种都有。不是说vb不带返回值而.net带返回值
Dim FileProperties As FileVersionInfo =
FileVersionInfo.GetVersionInfo("C:\XXXX\XXX.exe")
dim str as string = FileProperties.ProductName
C返回局部变量的值也没问题啊
只是如果这个局部变量是指向栈上的内存的指针,由于函数结束后活动栈被清空,会导致指针失效。
VB.NET不支持指针语法,它不可能返回指向栈上的指针,所以用不着担心这个问题。
你的理解
第一点理解是正确的,不过和这个问题关系不大。因为引用类型本来就不是分配在栈上的,它当然就不受函数的影响。
第二点,那个只是个语法问题。VB6没有Return语句,所以它必然有另外一种语法来表明函数的返回值。这个和函数能否返回正确的对象没有关系,就是一种表明函数返回值的语法。
编译器确实定义了一个和函数同名的变量,那个变量就是一个普通的局部变量,作用域就在函数的局部域里。这个变量没什么特别的,就是编译器会在函数结束时把这个变量的值作为函数的返回值返回而已。
你先定义一个公用变量
将你获得的hwdn传递到这个公用变量上
再调用这个公用变量不久可以了么