matwachich Posted March 23, 2011 Share Posted March 23, 2011 I know this thread is very old, but I have a problem with it: The function _CoProcSend doesn't work fork for me Always get @error = 3 (timed out) even if I give 5 seconds for time out parameter here is my test code expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.6.1 Author: Matwachich Script Function: Test #ce ---------------------------------------------------------------------------- #include "CoProc.au3" #NoTrayIcon $run = 1 HotKeySet('+q', '_terminate') Func _terminate() $run = 0 EndFunc $gui = GuiCreate('') $PID = _CoProc("_thread", "param") ConsoleWrite($PID & @CRLF) _CoProcReciver("_Reciver") While $run Sleep(10) Wend ProcessClose($PID) Func _Receiver($data) ConsoleWrite($data & @CRLF) EndFunc ; ############################################################## Func _thread($param) ;MsgBox(0, "Thread", $gi_CoProcParent) $gui = GuiCreate('') $ret = 0 While 1 $ret = _CoProcSend($gi_CoProcParent, "I'm Alive!", 1000, 0) If @error Then MsgBox(0, "Thread", $ret & " - " & @error & " - " & @extended) Sleep(1000) Wend EndFunc In advance, thanks! Link to comment Share on other sites More sharing options...
Warmonger Posted April 17, 2011 Share Posted April 17, 2011 (edited) Here's CoProc.au3 with _CoProcSend and _DuplicateHandle fixed.CoProc.au3 Edited April 20, 2011 by Warmonger [AutoIt File Patcher] Link to comment Share on other sites More sharing options...
Wolfteeth Posted April 19, 2012 Share Posted April 19, 2012 it doesn't work on v3.3.6.1D:\AutoIt3\Include\coproc.au3(49,47) : ERROR: Opt() called with illegal argument 1: "RunErrorsFatal" $iOldRunErrorsFatal = Opt("RunErrorsFatal", 0) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^D:\AutoIt3\Include\coproc.au3(64,43) : ERROR: Opt() called with illegal argument 1: "RunErrorsFatal" Opt("RunErrorsFatal", $iOldRunErrorsFatal) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ Code:#include "coproc.au3"$iPidChild = _CoProc(Default, "_recv") ; Create new Procces, Set _recv() as Reciever functionSleep(2000) ; Give some time to load new Process_CoProcSend($iPidChild,"Something...") ; Send a Message to new processFunc _recv($vParm) MsgBox(0,"Recieved",$vParm)EndFunc Link to comment Share on other sites More sharing options...
bdrdc Posted January 24, 2014 Share Posted January 24, 2014 I didnt want to sacrifice Scite's Syntax highlighting and keep it a bit simpler so thats what came out Ok its not that simple any more. Revision 30 CoProc.zipUpdate Notes: Revision 24 Fixed Memory Leak in _ProcSuspend() and _ProcResume() Fixed Example_Download.au3 LinksRevision 25 New Optional Parameter $sRegistryBase for _SuperGlobalGet() and _SuperGlobalSet()Revision 30 Fixed for To work with current Autoit Version Added wrapper for DuplicateHandle Api Function List _CoProc([$sFunction],[$vParameter]) Starts another Process and Calls $sFunc, Returns PID _SuperGlobalSet($sName,[$vValue],[$sRegistryBase]) Sets or Deletes a Superglobal Variable _SuperGlobalGet($sName,[$fOption],[$sRegistryBase]) Returns the Value of a Superglobal Variable _ProcSuspend($vProcess) Suspends all Threads in $vProcess (PID or Name) _ProcResume($vProcess) Resumes all Threads in $vProcess (PID or Name) _ProcessGetWinList($vProcess, $sTitle = Default, $iOption = 0) Enumerates Windows of a Process _CoProcReciver([$sFunction = ""]) Register/Unregister Reciver Function _CoProcSend($vProcess, $vParameter,[$iTimeout = 500],[$fAbortIfHung = True]) Send Message to Process _ConsoleForward($iPid1, [$iPid2], [$iPid3], [$iPidn]) _ProcessEmptyWorkingSet($vPid = @AutoItPID,[$hDll_psapi],[$hDll_kernel32]) Removes as many pages as possible from the working set of the specified process. _DuplicateHandle($dwSourcePid, $hSourceHandle, $dwTargetPid = @AutoItPID, $fCloseSource = False) Returns a Duplicate handle _CloseHandle($hAny) Close a Handle Example_Download.au3 doesent work right no more because the link is dead Please read this bevore using _ProcSuspend() and _ProcResume(). i did this some time ago and i remeber taking something from someone somwhere. if you find a piece of code inside, please forgive me. if you want credit for it or want me to remove it dorp me a line... Here are some examples:#include "coproc.au3" $iPidChild = _CoProc(Default, "_recv") ; Create new Procces, Set _recv() as Reciever function Sleep(2000) ; Give some time to load new Process _CoProcSend($iPidChild,"Something...") ; Send a Message to new process Func _recv($vParm) MsgBox(0,"Recieved",$vParm) EndFuncoÝ÷ Ø.Ø®²ÄÜ¥'«½êÚºÚ"µÍÔÝ HÑÜ[ØÙÜÙÂÚ[ÛYH ][ÝÐÛÔØË]LÉ][ÝÂÈH ÌÎNÝ[]ØØ[ÜÝL ÌÎNÈ[È[Ý[Þ ÒSÑVJÔBÈÈÛÛXÝÈHÙÈXZ[ØÙÜÂ^TÙ]ÛÛ ][ÝÓXZ[ØÙÜÈ ][ÝÈ [È]]Ò]Q BÌÍÚÛØÚÙ]HÔÝ[ ][ÝÉ][ÝËL BÚ[HBIÌÍÚXØÙHÔXØÙ ÌÍÚÛØÚÙ] BRY ÌÍÚXØÙ ÝÈ[BWÐÛÔØÈ ][Ý×Ó]ÐÛÛXÝ[Û][ÝË ÌÍÚXØÙ BBNÈÈYYÈÛÜÙHHÛØÚÙ]H]ÂBNÈØÙÜÈÚ[È]Q[YTÛY L BÑ[ÈÛÜÙØÙÜÂ[ÈÓ]ÐÛÛXÝ[Û ÌÍÚXØÙ BIÌÍÚXØÙHÑXØ]R[H ÌÍÙÚWÐÛÔØÔ[ÈÈÝYYHÛÔØÂBBIÌÍÚXØÙÂNÈH[HÈXØ]BBBP]]Ò]QÈÈÝ[YBBUYJHÈÛÜÙHHÛØÚÙ][H[ØÙÜÂRYÜ[^]U^TÙ]ÛÛ ][ÝÕÛÜÙØÙÜÈ ][ÝÈ [È]]Ò]Q BSØØ[ ÌÍÜÐYUÔÙ[ ÌÍÚXØÙ ][ÝÖ[ÝÛÛXÝYÈY ][ÝÈ [È]]Ò]Q [ÈÔBUÔÙ[ ÌÍÚXØÙ ][ÝÒ[H[ ][ÝÈ [ÈÔBUÚ[HBBIÌÍÜÐY [ÏHÔXÝ ÌÍÚXØÙMBBRYÜ[^]BRYÝ[Ó[ ÌÍÜÐYH ÝÈ[Ý[Ò[Ý ÌÍÜÐYÔH[BBRYÝ[Ò[Ý ÌÍÜÐY ][ÝÙ^] ][ÝÊHHH[^]BBRYÝ[Ò[Ý ÌÍÜÐY ][ÝÓÙÐÞ ][ÝÊHHH[BBBSÙÐÞ ]]Ò]QÝ[ÓZY ÌÍÜÐY ÊJBBBQ[YBBRYÝ[Ò[Ý ÌÍÜÐY ][ÝÚ[ ][ÝÊHHH[BBBUÔÙ[ ÌÍÚXØÙ ][ÝÐÛÛ[X[Î][ÝÈ [ÈÔBBBBUÔÙ[ ÌÍÚXØÙ ][ÝÒ[HÈ[É][ÝÈ [ÈÔBBBBUÔÙ[ ÌÍÚXØÙ ][ÝÓÙÐÞ ÓÙÉÝÈHH]I][ÝÈ [ÈÔBBBBUÔÙ[ ÌÍÚXØÙ ][ÝÑ^]H]Z] ][ÝÈ [ÈÔBBBQ[YBBIÌÍÜÐYH ][ÝÉ][ÝÂBQ[YUÑ[[[ÈÏOIÝ×Ó]ÐÛÛXÝ[Û aaaaaaaaa1 Link to comment Share on other sites More sharing options...
yufei8051 Posted May 13, 2021 Share Posted May 13, 2021 need update? 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