Nio0B Posted April 22, 2013 Share Posted April 22, 2013 (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. expandcollapse popup;~ 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 April 22, 2013 by Nio0B Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted April 22, 2013 Moderators Share Posted April 22, 2013 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. 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 Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Nio0B Posted April 22, 2013 Author Share Posted April 22, 2013 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. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now