Sign in to follow this  
Followers 0
Nio0B

[SOLVED]WinGetTitle() return 0 and the title ...

3 posts in this topic

#1 ·  Posted (edited)

Hello Boys, how are you ?

I am in front of something which is really shocking me...

I have the documentation of WinGetTitle() and it says this :

Return Value

Success: Returns a string containing the complete window title.

Failure: Returns numeric 0 if no title match.

So i wanted to try this, with handling a possible error.

;~ made by a big boss in this forum, forgot his name :S
Func GETWINDOWFROMPID($PID)
    $HWND = 0
    $STPID = DllStructCreate("int")
    Do
        $WINLIST2 = WinList()
        For $I = 1 To $WINLIST2[0][0]
            If $WINLIST2[$I][0] <> "" Then
                DllCall("user32.dll", "int", "GetWindowThreadProcessId", "hwnd", $WINLIST2[$I][1], "ptr", DllStructGetPtr($STPID))
                If DllStructGetData($STPID, 1) = $PID Then
                    $HWND = $WINLIST2[$I][1]
                    ExitLoop
                EndIf
            EndIf
        Next
        Sleep(100)
    Until $HWND <> 0
    Return $HWND
EndFunc   ;==>GETWINDOWFROMPID


;~ run notepad
$notepad=Run("notepad.exe")

;~ get the window
$window = GETWINDOWFROMPID($notepad)
MsgBox(4096, "info", $window)
sleep(1000)


;~ i make sure this is the good window
WinSetState($window, "", @SW_MINIMIZE)
sleep(1000)
WinSetState($window, "", @SW_RESTORE)
Sleep(1000)

;~ lets get the title
$title = WinGetTitle($window)
if $title=0 Then
    MsgBox(4096, "Error", "Could not find the correct window =>" & $title) ;WHAT DA FAQ
Else
    MsgBox(4096, "title:", $title)
EndIf

-I launch notepad

-I get the window from the PID (thanks to a Function made by one of you)

-I move the notepad window for test if it works (It works)

-I try to get the title and now i have this :

"Could not find the correct window => Notepad - Untitled" O_o

How is it possible ? If we enter in the "If" it's because $title is equal to 0. but when I display $title, it gives mes "Notepad - Untitled"

$title = 0 AND $title="Notepad - Untitled" - 2 value ?

Please explain me i'm astonished.

Thanks for answers

Edited by Nio0B

Share this post


Link to post
Share on other sites



Nio0B,

I would hazard a guess that if $title=0 is converting the string title into a number - and Number("Notepad - Untitled") will return 0. So the condition is filled and you get the apparently stupid return. :)

I suggest that you do the opposite and force the return into a string: ;)

If String($title) = "0"

This is yet another one of those cases where having a single type of variable catches you out unless you take great care. Personally I wonder why on earth the function returns a numeric value and does not set @error as well. :wacko:

You might want to start a Trac ticket to see if you can get the return value changed in a future release. ;)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Wow man, It totally beat me.

Once you explain it, it looks totally logic, but without you i would have never see it.

Thank you very much M23, u made me grow.

I'll do the trac ticket.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0