Page 1 of 1
Simple Basic Script not working with vbNullString, why?
Posted: Sun Jul 03, 2016 7:39 am
by Aselalagor
Code: Select all
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub Main
Dim FindWnd as Long
' CalcFrame Калькулятор vbNullString
FindWnd = FindWindow("CalcFrame", "Калькулятор") '<<<<< WORKS OK
MsgBox Str(FindWnd)
FindWnd = FindWindow(vbNullString, "Калькулятор") '<<<<< FindWnd = 0 !!!
MsgBox Str(FindWnd)
FindWnd = FindWindow("CalcFrame", vbNullString) '<<<<< FindWnd = 0 !!!
MsgBox Str(FindWnd)
End Sub
Re: Simple Basic Script not working with vbNullString, why?
Posted: Sun Jul 03, 2016 9:18 am
by Oleg
Because
vbNullString or empty string ("") is not
NULL value (as in C declaration)
Look at my script below. It works. I use a simple trick
Code: Select all
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function FindWindow1 Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As Long, ByVal lpWindowName As String) As Long
Declare Function FindWindow2 Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As Long) As Long
Sub Main
Dim FindWnd As Long
FindWnd = FindWindow("ApplicationFrameWindow", "Calculator") '<<<<< WORKS OK
MsgBox Str(FindWnd)
FindWnd = FindWindow1(0, "Calulator") '<<<<< it works too
MsgBox Str(FindWnd)
FindWnd = FindWindow2("ApplicationFrameWindow",0) '<<<<< it works too
MsgBox Str(FindWnd)
End Sub
But pay attention that these functions can return different values.
The cause:
- only one window with class="ApplicationFrameWindow" and name="Calculator"
- several windows with class="ApplicationFrameWindow"
- several windows with name="Calculator"
I tested on Windows 10.
Calc application is .NET application in this system and has more complex structure than native API application.
Re: Simple Basic Script not working with vbNullString, why?
Posted: Sun Jul 03, 2016 9:32 am
by Aselalagor
Намотал на ус. Спасибо!
