nitekram Posted February 8, 2010 Share Posted February 8, 2010 (edited) Hello, once again. I found this script trying to do the same thing in my script - to find the issue put a number in the input/edit box and then right click in the same box and press common - once that is done press save and you will see what happens to the input/edit box. Any help fixing this issue or another solution would be greatThis code was found hereEDIT - forgot to tell you what i was trying to do - when right clicking a ctrl you get a popup that says copy, paste, ect - i want to replace that with my own. this script works until you try to remove the data in the ctrl by using GuiCtrlSetData($var, '')expandcollapse popup#include <DllCallBack.au3> #include <EditConstants.au3> Global Const $WM_CONTEXTMENU = 0x007B $Gui_main = GUICreate("Disable Context Menu Demo") $Editjunk = GUICtrlCreateInput("", 120, 120, 30, 30, $ES_NUMBER) $test = GUICtrlCreateButton('save', 150, 150) $DummyMenu = GUICtrlCreateDummy() $ContextMenu = GUICtrlCreateContextMenu($DummyMenu) $CommonMenuItem = GUICtrlCreateMenuItem("Common", $ContextMenu) $WindowProcCallBack = _DllCallBack("_WindowProc", "hwnd;uint;long;ptr", 4) $OriginalWindowProc = _WinSubclass(GUICtrlGetHandle($Editjunk), $WindowProcCallBack) GUISetState() While 1 $Msg = GUIGetMsg() Select Case $Msg = -3 _DllCallBack_Free($OriginalWindowProc) Exit Case $Msg = $CommonMenuItem MsgBox('', 'common pressed', '') $common = 1 Case $Msg = $test IniWrite('test.ini', 'test', 'common', $common) GUICtrlSetData($Editjunk, '') EndSelect WEnd ; Show a menu in a given GUI window which belongs to a given GUI ctrl Func ShowMenu($hWnd, $nContextID) Local $hMenu = GUICtrlGetHandle($nContextID) $arPos = MouseGetPos() Local $x = $arPos[0] Local $y = $arPos[1] DllCall("user32.dll", "int", "TrackPopupMenuEx", "hwnd", $hMenu, "int", 0, "int", $x, "int", $y, "hwnd", $hWnd, "ptr", 0) EndFunc ;==>ShowMenu Func _WindowProc($hWnd, $uiMsg, $wParam, $lParam) ; Disable the context menu and show your own menu If $uiMsg = $WM_CONTEXTMENU Then ;MsgBox('','','') ShowMenu($Gui_main, $ContextMenu) Return 0 EndIf ; Returning a Pointer to the original WindowProc means: We did not process this message. ; Do not call CallWindowProc() api yourself, the stub will do that for you! Return $OriginalWindowProc EndFunc ;==>_WindowProc Func _WinSubclass($hWnd, $lpNewWindowProc) ;#define GWL_WNDPROC (-4) Local $aTmp = DllCall("user32.dll", "ptr", "SetWindowLong", "hwnd", $hWnd, "int", -4, "ptr", $lpNewWindowProc) If @error Then Return SetError(1, 0, 0) If $aTmp[0] = 0 Then Return SetError(1, 0, 0) Return $aTmp[0] EndFunc ;==>_WinSubclass Edited February 8, 2010 by nitekram 2¢ All by me:"Sometimes you have to go back to where you started, to get to where you want to go." "Everybody catches up with everyone, eventually" "As you teach others, you are really teaching yourself." From my dad "Do not worry about yesterday, as the only thing that you can control is tomorrow." WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2 AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit Docs SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language Programming Tips Excel Changes ControlHover.UDF GDI_Plus Draw_On_Screen GDI Basics GDI_More_Basics GDI Rotate GDI Graph GDI CheckExistingItems GDI Trajectory Replace $ghGDIPDll with $__g_hGDIPDll DLL 101? Array via Object GDI Swimlane GDI Plus French 101 Site GDI Examples UEZ GDI Basic Clock GDI Detection Ternary operator Link to comment Share on other sites More sharing options...
nitekram Posted February 9, 2010 Author Share Posted February 9, 2010 Bump? Another thought for those intereseted in helping me. Once the right click button on mouse is pressed the popup comes up and you pick your choice - I will need to know which input/edit control was pressed. Also the script above never pulls the right data when I use GuiCtrlRead() - i.e. after pressing the dropdown if I were to put a 12 in the input/edit box the only data it pulls is a number 1? Please let me know if you need anything else, cause I am stuck. Have tried changing things around and different types of context menu with no luck. 2¢ All by me:"Sometimes you have to go back to where you started, to get to where you want to go." "Everybody catches up with everyone, eventually" "As you teach others, you are really teaching yourself." From my dad "Do not worry about yesterday, as the only thing that you can control is tomorrow." WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2 AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit Docs SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language Programming Tips Excel Changes ControlHover.UDF GDI_Plus Draw_On_Screen GDI Basics GDI_More_Basics GDI Rotate GDI Graph GDI CheckExistingItems GDI Trajectory Replace $ghGDIPDll with $__g_hGDIPDll DLL 101? Array via Object GDI Swimlane GDI Plus French 101 Site GDI Examples UEZ GDI Basic Clock GDI Detection Ternary operator Link to comment Share on other sites More sharing options...
nitekram Posted February 11, 2010 Author Share Posted February 11, 2010 bump? anyone have any ideas on how to make this work? 2¢ All by me:"Sometimes you have to go back to where you started, to get to where you want to go." "Everybody catches up with everyone, eventually" "As you teach others, you are really teaching yourself." From my dad "Do not worry about yesterday, as the only thing that you can control is tomorrow." WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2 AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit Docs SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language Programming Tips Excel Changes ControlHover.UDF GDI_Plus Draw_On_Screen GDI Basics GDI_More_Basics GDI Rotate GDI Graph GDI CheckExistingItems GDI Trajectory Replace $ghGDIPDll with $__g_hGDIPDll DLL 101? Array via Object GDI Swimlane GDI Plus French 101 Site GDI Examples UEZ GDI Basic Clock GDI Detection Ternary operator Link to comment Share on other sites More sharing options...
martin Posted February 11, 2010 Share Posted February 11, 2010 bump?anyone have any ideas on how to make this work?The code you found is outdated. Search for "subclass" by Melba23 because he has done some nice examples, but so have others. Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
nitekram Posted February 12, 2010 Author Share Posted February 12, 2010 (edited) The code you found is outdated. Thanks for the help - in searching for this for about a day, I stumbled on this: I think it will work, but someone has to help me fix it - please. Everything seems to work except when the application closes - it never closes? I have to end autoit process in task manager. Any help to keep me going would be great. Thanks again... expandcollapse popup#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GUIConstantsEx.au3> #include <GuiEdit.au3> #include <WindowsConstants.au3> #include <Constants.au3> #include <GuiMenu.au3> #include <WinAPI.au3> Opt('MustDeclareVars', 1) Global $ContextMenu, $CommonMenuItem, $FileMenuItem, $ExitMenuItem Global $hGui, $cInput, $wProcOld _Main() Func _Main() Local $cInput2, $wProcNew, $DummyMenu $hGui = GUICreate("Type or paste some stuff", 400, 200, -1, -1, $WS_THICKFRAME, -1) $cInput = GUICtrlCreateInput("", 20, 20, 360, 20) $cInput2 = GUICtrlCreateInput("", 20, 50, 360, 20) GUICtrlCreateLabel("abcd", 1, 1, 30, 18) GUICtrlSetCursor(-1, 9) $wProcNew = DllCallbackRegister("_MyWindowProc", "ptr", "hwnd;uint;long;ptr") $wProcOld = _WinAPI_SetWindowLong(GUICtrlGetHandle($cInput), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) _WinAPI_SetWindowLong(GUICtrlGetHandle($cInput2), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) ;_WinAPI_SetWindowLong(GUICtrlGetHandle($cInput3), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) and so on $DummyMenu = GUICtrlCreateDummy() $ContextMenu = GUICtrlCreateContextMenu($DummyMenu) $CommonMenuItem = GUICtrlCreateMenuItem("Common", $ContextMenu) $FileMenuItem = GUICtrlCreateMenuItem("File", $ContextMenu) GUICtrlCreateMenuItem("", $ContextMenu) $ExitMenuItem = GUICtrlCreateMenuItem("Exit", $ContextMenu) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop EndSwitch WEnd EndFunc ;==>_Main Func do_clever_stuff_with_clipboard($hWnd) Local $sData $sData = ClipGet() If @error Then Return 0;clip data is not text or clip empty ;do whatever $sData = StringUpper($sData) ;set text GUICtrlSetData(_WinAPI_GetDlgCtrlID($hWnd), $sData);or _GUICtrlEdit_SetText($hWnd, $sData) Return 1 EndFunc ;==>do_clever_stuff_with_clipboard ; Show a menu in a given GUI window which belongs to a given GUI ctrl Func ShowMenu($hWnd, $nContextID) Local $iSelected = _GUICtrlMenu_TrackPopupMenu(GUICtrlGetHandle($nContextID), $hWnd, -1, -1, -1, -1, 2) Switch $iSelected Case $CommonMenuItem ConsoleWrite(Guictrlread($cInput) & @CRLF) Case $FileMenuItem ConsoleWrite("File" & @CRLF) Case $ExitMenuItem ConsoleWrite("Exit" & @CRLF) EndSwitch EndFunc ;==>ShowMenu Func _MyWindowProc($hWnd, $uiMsg, $wParam, $lParam) Switch $uiMsg Case $WM_PASTE Return do_clever_stuff_with_clipboard($hWnd) Case $WM_CONTEXTMENU If $hWnd = GUICtrlGetHandle($cInput) Then ShowMenu($hGui, $ContextMenu) Return 0 EndIf Case $WM_SETCURSOR GUICtrlSetCursor(_WinAPI_GetDlgCtrlID($hWnd), 5);;set Ibeam cursor Return 1;;and don't let default windowproc mess things up EndSwitch ;pass the unhandled messages to default WindowProc Return _WinAPI_CallWindowProc($wProcOld, $hWnd, $uiMsg, $wParam, $lParam) EndFunc ;==>_MyWindowProc By the way - this code is coming straight from the help file under, _WinAPI_CallWindowProc EDIT: Found the fix - thanks to @melba23's code added this before exiting main gui while loop: GUIDelete($hGUI) DllCallbackFree($wProcNew) Edited February 12, 2010 by nitekram 2¢ All by me:"Sometimes you have to go back to where you started, to get to where you want to go." "Everybody catches up with everyone, eventually" "As you teach others, you are really teaching yourself." From my dad "Do not worry about yesterday, as the only thing that you can control is tomorrow." WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2 AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit Docs SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language Programming Tips Excel Changes ControlHover.UDF GDI_Plus Draw_On_Screen GDI Basics GDI_More_Basics GDI Rotate GDI Graph GDI CheckExistingItems GDI Trajectory Replace $ghGDIPDll with $__g_hGDIPDll DLL 101? Array via Object GDI Swimlane GDI Plus French 101 Site GDI Examples UEZ GDI Basic Clock GDI Detection Ternary operator Link to comment Share on other sites More sharing options...
nitekram Posted February 12, 2010 Author Share Posted February 12, 2010 I again spoke/wrote to fast...does anyone know how to make the context menu display for all inputs and to know which input it came from? In the example it just mentions to call _WinAPI_SetWindowLong() for every input, but I have tried that along with other simple tries and either the code runs and never displays the gui or the second input box gets the normal - select all, copy, paste... Any ideas? 2¢ All by me:"Sometimes you have to go back to where you started, to get to where you want to go." "Everybody catches up with everyone, eventually" "As you teach others, you are really teaching yourself." From my dad "Do not worry about yesterday, as the only thing that you can control is tomorrow." WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2 AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit Docs SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language Programming Tips Excel Changes ControlHover.UDF GDI_Plus Draw_On_Screen GDI Basics GDI_More_Basics GDI Rotate GDI Graph GDI CheckExistingItems GDI Trajectory Replace $ghGDIPDll with $__g_hGDIPDll DLL 101? Array via Object GDI Swimlane GDI Plus French 101 Site GDI Examples UEZ GDI Basic Clock GDI Detection Ternary operator Link to comment Share on other sites More sharing options...
martin Posted February 12, 2010 Share Posted February 12, 2010 I again spoke/wrote to fast...does anyone know how to make the context menu display for all inputs and to know which input it came from? In the example it just mentions to call _WinAPI_SetWindowLong() for every input, but I have tried that along with other simple tries and either the code runs and never displays the gui or the second input box gets the normal - select all, copy, paste... Any ideas? The handle is passed to _MyWindowProc so you can do something there. expandcollapse popup#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GUIConstantsEx.au3> #include <GuiEdit.au3> #include <WindowsConstants.au3> #include <Constants.au3> #include <GuiMenu.au3> #include <WinAPI.au3> Opt('MustDeclareVars', 1) Global $ContextMenu, $CommonMenuItem, $FileMenuItem, $ExitMenuItem Global $hGui, $cInput, $cInput2, $wProcOld _Main() Func _Main() Local $wProcNew, $DummyMenu $hGui = GUICreate("Type or paste some stuff", 400, 200, -1, -1, $WS_THICKFRAME, -1) $cInput = GUICtrlCreateInput("", 20, 20, 360, 20) $cInput2 = GUICtrlCreateInput("", 20, 50, 360, 20) GUICtrlCreateLabel("abcd", 1, 1, 30, 18) GUICtrlSetCursor(-1, 9) $wProcNew = DllCallbackRegister("_MyWindowProc", "ptr", "hwnd;uint;long;ptr") $wProcOld = _WinAPI_SetWindowLong(GUICtrlGetHandle($cInput), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) _WinAPI_SetWindowLong(GUICtrlGetHandle($cInput2), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) ;_WinAPI_SetWindowLong(GUICtrlGetHandle($cInput3), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) and so on $DummyMenu = GUICtrlCreateDummy() $ContextMenu = GUICtrlCreateContextMenu($DummyMenu) $CommonMenuItem = GUICtrlCreateMenuItem("Common", $ContextMenu) $FileMenuItem = GUICtrlCreateMenuItem("File", $ContextMenu) GUICtrlCreateMenuItem("", $ContextMenu) $ExitMenuItem = GUICtrlCreateMenuItem("Exit", $ContextMenu) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE GUIDelete($hGUI) DllCallbackFree($wProcNew) ExitLoop EndSwitch WEnd EndFunc ;==>_Main Func do_clever_stuff_with_clipboard($hWnd) Local $sData $sData = ClipGet() If @error Then Return 0;clip data is not text or clip empty ;do whatever $sData = StringUpper($sData) ;set text GUICtrlSetData(_WinAPI_GetDlgCtrlID($hWnd), $sData);or _GUICtrlEdit_SetText($hWnd, $sData) Return 1 EndFunc ;==>do_clever_stuff_with_clipboard ; Show a menu in a given GUI window which belongs to a given GUI ctrl Func ShowMenu($hWnd, $nContextID,$it1) GUICtrlSetData( $CommonMenuItem,"Common - " & $it1) Local $iSelected = _GUICtrlMenu_TrackPopupMenu(GUICtrlGetHandle($nContextID), $hWnd, -1, -1, -1, -1, 2) Switch $iSelected Case $CommonMenuItem ConsoleWrite(Guictrlread($cInput) & @CRLF) Case $FileMenuItem ConsoleWrite("File" & @CRLF) Case $ExitMenuItem ConsoleWrite("Exit" & @CRLF) EndSwitch EndFunc ;==>ShowMenu Func _MyWindowProc($hWnd, $uiMsg, $wParam, $lParam) Switch $uiMsg Case $WM_PASTE Return do_clever_stuff_with_clipboard($hWnd) Case $WM_CONTEXTMENU If $hWnd = GUICtrlGetHandle($cInput) Then ShowMenu($hGui, $ContextMenu,"cInput") Return 0 EndIf If $hWnd = GUICtrlGetHandle($cInput2) Then ConsoleWrite("gfcgfc" & @CRLF) ShowMenu($hGui, $ContextMenu,"cInput2") Return 0 EndIf Case $WM_SETCURSOR GUICtrlSetCursor(_WinAPI_GetDlgCtrlID($hWnd), 5);;set Ibeam cursor Return 1;;and don't let default windowproc mess things up EndSwitch ;pass the unhandled messages to default WindowProc Return _WinAPI_CallWindowProc($wProcOld, $hWnd, $uiMsg, $wParam, $lParam) EndFunc ;==>_MyWindowProc Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
nitekram Posted February 12, 2010 Author Share Posted February 12, 2010 I thought I had tried that, but I must have missed the "If $hWnd = GUICtrlGetHandle($cInput2) Then" - I do not know - will have to look at my code when I get home. Thanks for the help again... 2¢ All by me:"Sometimes you have to go back to where you started, to get to where you want to go." "Everybody catches up with everyone, eventually" "As you teach others, you are really teaching yourself." From my dad "Do not worry about yesterday, as the only thing that you can control is tomorrow." WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2 AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit Docs SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language Programming Tips Excel Changes ControlHover.UDF GDI_Plus Draw_On_Screen GDI Basics GDI_More_Basics GDI Rotate GDI Graph GDI CheckExistingItems GDI Trajectory Replace $ghGDIPDll with $__g_hGDIPDll DLL 101? Array via Object GDI Swimlane GDI Plus French 101 Site GDI Examples UEZ GDI Basic Clock GDI Detection Ternary operator Link to comment Share on other sites More sharing options...
nitekram Posted February 12, 2010 Author Share Posted February 12, 2010 (edited) Got another issue - cannot reproduce on a smaller scale. I have 50 100 inputs that I need to receive the popup context menu on and if I do not pick from the popup (meaning that I just randomly right click a half dozen input controls) and then try to close the application it takes about 6-10 seconds to close. Any ideas on how to make it close faster?EDIT:Changed the number of inputs Edited February 13, 2010 by nitekram 2¢ All by me:"Sometimes you have to go back to where you started, to get to where you want to go." "Everybody catches up with everyone, eventually" "As you teach others, you are really teaching yourself." From my dad "Do not worry about yesterday, as the only thing that you can control is tomorrow." WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2 AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit Docs SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language Programming Tips Excel Changes ControlHover.UDF GDI_Plus Draw_On_Screen GDI Basics GDI_More_Basics GDI Rotate GDI Graph GDI CheckExistingItems GDI Trajectory Replace $ghGDIPDll with $__g_hGDIPDll DLL 101? Array via Object GDI Swimlane GDI Plus French 101 Site GDI Examples UEZ GDI Basic Clock GDI Detection Ternary operator Link to comment Share on other sites More sharing options...
martin Posted February 12, 2010 Share Posted February 12, 2010 Got another issue - cannot reproduce on a smaller scale. I have 50 inputs that I need to receive the popup context menu on and if I do not pick from the popup (meaning that I just randomly right click a half dozen input controls) and then try to close the application it takes about 6-10 seconds to close. Any ideas on how to make it close faster?Do you delete the gui and then call DllCallbackFree($wProcNew)? Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
nitekram Posted February 12, 2010 Author Share Posted February 12, 2010 Do you delete the gui and then call DllCallbackFree($wProcNew)? Yes - if i pick from the drop down and then close the gui it works fine, it is only when I do not pick something that it does not close. Also I have noticed that if I click more than 6 input controls it takes even longer - like it is looking for some 'INPUT', if you will (per se). I have tried to make my Switch/EndSwitch RETURN if nothing is selected, but no matter what number I use 0,1,-1 or just Return it does the same thing. The problem I have determined (meaning I guessed) is in the funtion: But do not know how to cleanly return from function if nothing was picked? ; Show a menu in a given GUI window which belongs to a given GUI ctrl Func ShowMenu($hWnd, $nContextID, $itype) GUICtrlSetData($CommonMenuItem, "Common - " & $itype) Local $iSelected = _GUICtrlMenu_TrackPopupMenu(GUICtrlGetHandle($nContextID), $hWnd, -1, -1, -1, -1, 2) Switch $iSelected Case $EightONMenuItem If $itype = '$GameHome1P1' Or $itype = '$GameHome2P1' Or $itype = '$GameHome3P1' Or $itype = '$GameHome4P1' Or $itype = '$GameHome5P1' Then EightOnBreak(GUICtrlRead($IDhomeP1)) If $itype = '$GameHome1P2' Or $itype = '$GameHome2P2' Or $itype = '$GameHome3P2' Or $itype = '$GameHome4P2' Or $itype = '$GameHome5P2' Then EightOnBreak(GUICtrlRead($IDhomeP2)) If $itype = '$GameHome1P3' Or $itype = '$GameHome2P3' Or $itype = '$GameHome3P3' Or $itype = '$GameHome4P3' Or $itype = '$GameHome5P3' Then EightOnBreak(GUICtrlRead($IDhomeP3)) If $itype = '$GameHome1P4' Or $itype = '$GameHome2P4' Or $itype = '$GameHome3P4' Or $itype = '$GameHome4P4' Or $itype = '$GameHome5P4' Then EightOnBreak(GUICtrlRead($IDhomeP4)) If $itype = '$GameHome1P5' Or $itype = '$GameHome2P5' Or $itype = '$GameHome3P5' Or $itype = '$GameHome4P5' Or $itype = '$GameHome5P5' Then EightOnBreak(GUICtrlRead($IDhomeP5)) If $itype = '$GameHome1S1' Or $itype = '$GameHome2S1' Or $itype = '$GameHome3S1' Or $itype = '$GameHome4S1' Or $itype = '$GameHome5S1' Then EightOnBreak(GUICtrlRead($IDhomeS1)) If $itype = '$GameHome1S2' Or $itype = '$GameHome2S2' Or $itype = '$GameHome3S2' Or $itype = '$GameHome4S2' Or $itype = '$GameHome5S2' Then EightOnBreak(GUICtrlRead($IDhomeS2)) If $itype = '$GameHome1S3' Or $itype = '$GameHome2S3' Or $itype = '$GameHome3S3' Or $itype = '$GameHome4S3' Or $itype = '$GameHome5S3' Then EightOnBreak(GUICtrlRead($IDhomeS3)) If $itype = '$GameHome1S4' Or $itype = '$GameHome2S4' Or $itype = '$GameHome3S4' Or $itype = '$GameHome4S4' Or $itype = '$GameHome5S4' Then EightOnBreak(GUICtrlRead($IDhomeS4)) If $itype = '$GameHome1S5' Or $itype = '$GameHome2S5' Or $itype = '$GameHome3S5' Or $itype = '$GameHome4S5' Or $itype = '$GameHome5S5' Then EightOnBreak(GUICtrlRead($IDhomeS5)) If $itype = '$GameAway1P1' Or $itype = '$GameAway2P1' Or $itype = '$GameAway3P1' Or $itype = '$GameAway4P1' Or $itype = '$GameAway5P1' Then EightOnBreak(GUICtrlRead($IDAwayP1)) If $itype = '$GameAway1P2' Or $itype = '$GameAway2P2' Or $itype = '$GameAway3P2' Or $itype = '$GameAway4P2' Or $itype = '$GameAway5P2' Then EightOnBreak(GUICtrlRead($IDAwayP2)) If $itype = '$GameAway1P3' Or $itype = '$GameAway2P3' Or $itype = '$GameAway3P3' Or $itype = '$GameAway4P3' Or $itype = '$GameAway5P3' Then EightOnBreak(GUICtrlRead($IDAwayP3)) If $itype = '$GameAway1P4' Or $itype = '$GameAway2P4' Or $itype = '$GameAway3P4' Or $itype = '$GameAway4P4' Or $itype = '$GameAway5P4' Then EightOnBreak(GUICtrlRead($IDAwayP4)) If $itype = '$GameAway1P5' Or $itype = '$GameAway2P5' Or $itype = '$GameAway3P5' Or $itype = '$GameAway4P5' Or $itype = '$GameAway5P5' Then EightOnBreak(GUICtrlRead($IDAwayP5)) If $itype = '$GameAway1S1' Or $itype = '$GameAway2S1' Or $itype = '$GameAway3S1' Or $itype = '$GameAway4S1' Or $itype = '$GameAway5S1' Then EightOnBreak(GUICtrlRead($IDAwayS1)) If $itype = '$GameAway1S2' Or $itype = '$GameAway2S2' Or $itype = '$GameAway3S2' Or $itype = '$GameAway4S2' Or $itype = '$GameAway5S2' Then EightOnBreak(GUICtrlRead($IDAwayS2)) If $itype = '$GameAway1S3' Or $itype = '$GameAway2S3' Or $itype = '$GameAway3S3' Or $itype = '$GameAway4S3' Or $itype = '$GameAway5S3' Then EightOnBreak(GUICtrlRead($IDAwayS3)) If $itype = '$GameAway1S4' Or $itype = '$GameAway2S4' Or $itype = '$GameAway3S4' Or $itype = '$GameAway4S4' Or $itype = '$GameAway5S4' Then EightOnBreak(GUICtrlRead($IDAwayS4)) If $itype = '$GameAway1S5' Or $itype = '$GameAway2S5' Or $itype = '$GameAway3S5' Or $itype = '$GameAway4S5' Or $itype = '$GameAway5S5' Then EightOnBreak(GUICtrlRead($IDAwayS5)) Case Else Return EndSwitch EndFunc ;==>ShowMenu 2¢ All by me:"Sometimes you have to go back to where you started, to get to where you want to go." "Everybody catches up with everyone, eventually" "As you teach others, you are really teaching yourself." From my dad "Do not worry about yesterday, as the only thing that you can control is tomorrow." WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2 AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit Docs SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language Programming Tips Excel Changes ControlHover.UDF GDI_Plus Draw_On_Screen GDI Basics GDI_More_Basics GDI Rotate GDI Graph GDI CheckExistingItems GDI Trajectory Replace $ghGDIPDll with $__g_hGDIPDll DLL 101? Array via Object GDI Swimlane GDI Plus French 101 Site GDI Examples UEZ GDI Basic Clock GDI Detection Ternary operator Link to comment Share on other sites More sharing options...
martin Posted February 13, 2010 Share Posted February 13, 2010 I don't see that problem in this example. expandcollapse popup#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GUIConstantsEx.au3> #include <GuiEdit.au3> #include <WindowsConstants.au3> #include <Constants.au3> #include <GuiMenu.au3> #include <WinAPI.au3> Opt('MustDeclareVars', 1) Global $ContextMenu, $CommonMenuItem, $FileMenuItem, $ExitMenuItem Global $hGui, $cInput, $cInput2, $wProcOld Global $maxip = 12-1 Global $ip[$maxip+1] _Main() Func _Main() Local $wProcNew, $DummyMenu $hGui = GUICreate("Type or paste some stuff", 400, 600, -1, -1, $WS_THICKFRAME, -1) For $n = 0 To $maxip $ip[$n] = GUICtrlCreateInput("", 20, 20 + 25 * $n, 360, 20) Next GUICtrlCreateLabel("abcd", 1, 1, 30, 18) GUICtrlSetCursor(-1, 9) $wProcNew = DllCallbackRegister("_MyWindowProc", "ptr", "hwnd;uint;long;ptr") $wProcOld = _WinAPI_SetWindowLong(GUICtrlGetHandle($ip[0]), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) For $n = 1 To $maxip _WinAPI_SetWindowLong(GUICtrlGetHandle($ip[$n]), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) Next ;_WinAPI_SetWindowLong(GUICtrlGetHandle($cInput3), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) and so on $DummyMenu = GUICtrlCreateDummy() $ContextMenu = GUICtrlCreateContextMenu($DummyMenu) $CommonMenuItem = GUICtrlCreateMenuItem("Common", $ContextMenu) $FileMenuItem = GUICtrlCreateMenuItem("File", $ContextMenu) GUICtrlCreateMenuItem("", $ContextMenu) $ExitMenuItem = GUICtrlCreateMenuItem("Exit", $ContextMenu) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE GUIDelete($hGui) DllCallbackFree($wProcNew) ExitLoop EndSwitch WEnd EndFunc ;==>_Main Func do_clever_stuff_with_clipboard($hWnd) Local $sData $sData = ClipGet() If @error Then Return 0;clip data is not text or clip empty ;do whatever $sData = StringUpper($sData) ;set text GUICtrlSetData(_WinAPI_GetDlgCtrlID($hWnd), $sData);or _GUICtrlEdit_SetText($hWnd, $sData) Return 1 EndFunc ;==>do_clever_stuff_with_clipboard ; Show a menu in a given GUI window which belongs to a given GUI ctrl Func ShowMenu($hWnd, $nContextID, $it1) GUICtrlSetData($CommonMenuItem, "Common - " & $it1) Local $iSelected = _GUICtrlMenu_TrackPopupMenu(GUICtrlGetHandle($nContextID), $hWnd, -1, -1, -1, -1, 2) Switch $iSelected Case $CommonMenuItem ConsoleWrite(GUICtrlRead($cInput) & @CRLF) Case $FileMenuItem ConsoleWrite("File" & @CRLF) Case $ExitMenuItem ConsoleWrite("Exit" & @CRLF) EndSwitch EndFunc ;==>ShowMenu Func _MyWindowProc($hWnd, $uiMsg, $wParam, $lParam) Switch $uiMsg Case $WM_PASTE Return do_clever_stuff_with_clipboard($hWnd) Case $WM_CONTEXTMENU For $n = 0 To $maxip If $hWnd = GUICtrlGetHandle($ip[$n]) Then ShowMenu($hGui, $ContextMenu, "cInput-" & $n + 1) Return 0 EndIf Next Case $WM_SETCURSOR GUICtrlSetCursor(_WinAPI_GetDlgCtrlID($hWnd), 5);;set Ibeam cursor Return 1;;and don't let default windowproc mess things up EndSwitch ;pass the unhandled messages to default WindowProc Return _WinAPI_CallWindowProc($wProcOld, $hWnd, $uiMsg, $wParam, $lParam) EndFunc ;==>_MyWindowProc Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
nitekram Posted February 13, 2010 Author Share Posted February 13, 2010 I don't see that problem in this example...I played with it (your code) and could not break it. Then I moved my co over and then out of the script all together and still had the issue. The more times I right clicked the more time it took for the script to close. It looks like I was doing to many updates by reading INI files. I made some conditions and the script stopped reading as much and it fix my issue. WOW - with out this code I might have never found that bug. Thanks for all your effort and time on this issue. 2¢ All by me:"Sometimes you have to go back to where you started, to get to where you want to go." "Everybody catches up with everyone, eventually" "As you teach others, you are really teaching yourself." From my dad "Do not worry about yesterday, as the only thing that you can control is tomorrow." WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2 AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit Docs SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language Programming Tips Excel Changes ControlHover.UDF GDI_Plus Draw_On_Screen GDI Basics GDI_More_Basics GDI Rotate GDI Graph GDI CheckExistingItems GDI Trajectory Replace $ghGDIPDll with $__g_hGDIPDll DLL 101? Array via Object GDI Swimlane GDI Plus French 101 Site GDI Examples UEZ GDI Basic Clock GDI Detection Ternary operator Link to comment Share on other sites More sharing options...
martin Posted February 13, 2010 Share Posted February 13, 2010 I played with it (your code) and could not break it. Then I moved my co over and then out of the script all together and still had the issue. The more times I right clicked the more time it took for the script to close. It looks like I was doing to many updates by reading INI files. I made some conditions and the script stopped reading as much and it fix my issue. WOW - with out this code I might have never found that bug. Thanks for all your effort and time on this issue.I'm glad you fixed it.I expect you were doing too much in the message handler. If all the code hadn't been executed before the message handler is called again then you get all sorts of problems.In some situations I set a global variable in the message handler function and return as soon as possible, then respond to the variable in my main idle loop. Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
nitekram Posted February 13, 2010 Author Share Posted February 13, 2010 I'm glad you fixed it.I expect you were doing too much in the message handler. If all the code hadn't been executed before the message handler is called again then you get all sorts of problems.In some situations I set a global variable in the message handler function and return as soon as possible, then respond to the variable in my main idle loop.I understand most of what you said. But have yet to grasp the global variable idea. Could you take some more time and show me a breif example of what/how you use that? 2¢ All by me:"Sometimes you have to go back to where you started, to get to where you want to go." "Everybody catches up with everyone, eventually" "As you teach others, you are really teaching yourself." From my dad "Do not worry about yesterday, as the only thing that you can control is tomorrow." WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2 AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit Docs SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language Programming Tips Excel Changes ControlHover.UDF GDI_Plus Draw_On_Screen GDI Basics GDI_More_Basics GDI Rotate GDI Graph GDI CheckExistingItems GDI Trajectory Replace $ghGDIPDll with $__g_hGDIPDll DLL 101? Array via Object GDI Swimlane GDI Plus French 101 Site GDI Examples UEZ GDI Basic Clock GDI Detection Ternary operator Link to comment Share on other sites More sharing options...
martin Posted February 13, 2010 Share Posted February 13, 2010 I understand most of what you said. But have yet to grasp the global variable idea. Could you take some more time and show me a breif example of what/how you use that? Not the best example but it shows the idea. expandcollapse popup#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GUIConstantsEx.au3> #include <GuiEdit.au3> #include <WindowsConstants.au3> #include <Constants.au3> #include <GuiMenu.au3> #include <WinAPI.au3> Opt('MustDeclareVars', 1) Global $ContextMenu, $CommonMenuItem, $FileMenuItem, $ExitMenuItem Global $hGui, $cInput, $cInput2, $wProcOld Global $maxip = 12 - 1 Global $ip[$maxip + 1] Global $ShowMenu = 0 _Main() Func _Main() Local $wProcNew, $DummyMenu $hGui = GUICreate("Type or paste some stuff", 400, 600, -1, -1, $WS_THICKFRAME, -1) For $n = 0 To $maxip $ip[$n] = GUICtrlCreateInput("", 20, 20 + 25 * $n, 360, 20) Next GUICtrlCreateLabel("abcd", 1, 1, 30, 18) GUICtrlSetCursor(-1, 9) $wProcNew = DllCallbackRegister("_MyWindowProc", "ptr", "hwnd;uint;long;ptr") $wProcOld = _WinAPI_SetWindowLong(GUICtrlGetHandle($ip[0]), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) For $n = 1 To $maxip _WinAPI_SetWindowLong(GUICtrlGetHandle($ip[$n]), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) Next ;_WinAPI_SetWindowLong(GUICtrlGetHandle($cInput3), $GWL_WNDPROC, DllCallbackGetPtr($wProcNew)) and so on $DummyMenu = GUICtrlCreateDummy() $ContextMenu = GUICtrlCreateContextMenu($DummyMenu) $CommonMenuItem = GUICtrlCreateMenuItem("Common", $ContextMenu) $FileMenuItem = GUICtrlCreateMenuItem("File", $ContextMenu) GUICtrlCreateMenuItem("", $ContextMenu) $ExitMenuItem = GUICtrlCreateMenuItem("Exit", $ContextMenu) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE GUIDelete($hGui) DllCallbackFree($wProcNew) ExitLoop EndSwitch If $ShowMenu <> 0 Then ShowMenu($hGui,$ContextMenu,$ShowMenu) $ShowMenu = 0 EndIf WEnd EndFunc ;==>_Main Func do_clever_stuff_with_clipboard($hWnd) Local $sData $sData = ClipGet() If @error Then Return 0;clip data is not text or clip empty ;do whatever $sData = StringUpper($sData) ;set text GUICtrlSetData(_WinAPI_GetDlgCtrlID($hWnd), $sData);or _GUICtrlEdit_SetText($hWnd, $sData) Return 1 EndFunc ;==>do_clever_stuff_with_clipboard ; Show a menu in a given GUI window which belongs to a given GUI ctrl Func ShowMenu($hWnd, $nContextID, $it1) GUICtrlSetData($CommonMenuItem, "Common - " & $it1) Local $iSelected = _GUICtrlMenu_TrackPopupMenu(GUICtrlGetHandle($nContextID), $hWnd, -1, -1, -1, -1, 2) Switch $iSelected Case $CommonMenuItem ConsoleWrite(GUICtrlRead($cInput) & @CRLF) Case $FileMenuItem ConsoleWrite("File" & @CRLF) Case $ExitMenuItem ConsoleWrite("Exit" & @CRLF) EndSwitch EndFunc ;==>ShowMenu Func _MyWindowProc($hWnd, $uiMsg, $wParam, $lParam) Switch $uiMsg Case $WM_PASTE Return do_clever_stuff_with_clipboard($hWnd) Case $WM_CONTEXTMENU For $n = 0 To $maxip If $hWnd = GUICtrlGetHandle($ip[$n]) Then $ShowMenu = $n + 1 ConsoleWrite("leaving _MyWindowProc" & @CRLF);shows we are not waiting for response to context menu Return 0 EndIf Next Case $WM_SETCURSOR GUICtrlSetCursor(_WinAPI_GetDlgCtrlID($hWnd), 5);;set Ibeam cursor Return 1;;and don't let default windowproc mess things up EndSwitch ;pass the unhandled messages to default WindowProc Return _WinAPI_CallWindowProc($wProcOld, $hWnd, $uiMsg, $wParam, $lParam) EndFunc ;==>_MyWindowProc Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
nitekram Posted February 15, 2010 Author Share Posted February 15, 2010 Martin - thanks for all your help with this topic - issue is resolved, and I was able to look at your example and understand. Thanks again 2¢ All by me:"Sometimes you have to go back to where you started, to get to where you want to go." "Everybody catches up with everyone, eventually" "As you teach others, you are really teaching yourself." From my dad "Do not worry about yesterday, as the only thing that you can control is tomorrow." WIKI | Tabs; | Arrays; | Strings | Wiki Arrays | How to ask a Question | Forum Search | FAQ | Tutorials | Original FAQ | ONLINE HELP | UDF's Wiki | AutoIt PDF AutoIt Snippets | Multple Guis | Interrupting a running function | Another Send StringRegExp | StringRegExp Help | RegEXTester | REG TUTOR | Reg TUTOT 2 AutoItSetOption | Macros | AutoIt Snippets | Wrapper | Autoit Docs SCITE | SciteJump | BB | MyTopics | Programming | UDFs | AutoIt 123 | UDFs Form | UDF Learning to script | Tutorials | Documentation | IE.AU3 | Games? | FreeSoftware | Path_Online | Core Language Programming Tips Excel Changes ControlHover.UDF GDI_Plus Draw_On_Screen GDI Basics GDI_More_Basics GDI Rotate GDI Graph GDI CheckExistingItems GDI Trajectory Replace $ghGDIPDll with $__g_hGDIPDll DLL 101? Array via Object GDI Swimlane GDI Plus French 101 Site GDI Examples UEZ GDI Basic Clock GDI Detection Ternary operator 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