Jump to content

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


 Share

Recommended Posts

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
Link to comment
Share on other sites

  • Moderators

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

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see 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

 

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...