wolf9228 Posted March 27, 2012 Share Posted March 27, 2012 (edited) Two_Process_LibraryTwo_Process_Library.zip New_Two_Process_Library New_Two_Process_Library.zip New2_Two_Process_Library New2_Two_Process_Library.zip Two_Process_Library.au3 expandcollapse popup#include "Two_Process_Library_Constants.au3" Func Work_With_Two_process($WaitChildProcess = True , $Timeout = 5000) If $CmdLine[0] = 0 Then $PrProcessID = _WinAPI_GetCurrentProcessID() $PrhWnd = GUICreate("",0,0) $UntCallMsg = RegisterWindowMessage("WM_CALLMSG",String($PrhWnd & $PrProcessID),$GlobalPassword) $UntCoueMsg = RegisterWindowMessage("WM_CONTINUE",String($PrhWnd & $PrProcessID),$GlobalPassword) GUIRegisterMsg($UntCallMsg,"CallMsgFunc") GUIRegisterMsg($UntCoueMsg,"ContinueMsgFunc") $Command = "RunChildProcess " & String($PrProcessID) & " " & String($PrhWnd) if (@Compiled) Then Run(FileGetShortName(@AutoItExe) & " " & $Command) Else Run(FileGetShortName(@AutoItExe) & " " & FileGetShortName(@ScriptFullPath) & " " & $Command) EndIf if ($WaitChildProcess) Then $begin = TimerInit() While Not ($ChProcessID) And TimerDiff($begin) < $Timeout WEnd EndIf $GlobalParticularProcess = "ParentProcess" Else If ($CmdLine[0] = 3 And $CmdLine[1] == "RunChildProcess") Then Opt("TrayIconHide", 1) $PrProcessID = int($CmdLine[2]) $PrhWnd = HWnd($CmdLine[3]) $ChProcessID = _WinAPI_GetCurrentProcessID() $ChhWnd = GUICreate("",0,0) $UntCallMsg = RegisterWindowMessage("WM_CALLMSG",String($PrhWnd & $PrProcessID),$GlobalPassword) $UntCoueMsg = RegisterWindowMessage("WM_CONTINUE",String($PrhWnd & $PrProcessID),$GlobalPassword) GUIRegisterMsg($UntCallMsg,"CallMsgFunc") GUIRegisterMsg($UntCoueMsg,"ContinueMsgFunc") $RT = _SendMessage($PrhWnd,$UntCoueMsg,1,$ChProcessID) if $RT <> $MsgOk Then Exit $RT = _SendMessage($PrhWnd,$UntCoueMsg,2,$ChhWnd) if $RT <> $MsgOk Then Exit $GlobalParticularProcess = "ChildProcess" Else Exit EndIf EndIf Return $GlobalParticularProcess EndFunc Func TestWorksParentProcess($pbegin,$pTime = 5000) if (TimerDiff($pbegin) < $pTime) Then Return $pbegin if Not ProcessExists($PrProcessID) Then Exit Return TimerInit() EndFunc Func TestWorksChildProcess($pbegin,$pTime = 5000) if (TimerDiff($pbegin) < $pTime) Then Return $pbegin if Not ProcessExists($ChProcessID) Then Return SetError(1,0,0) Return TimerInit() EndFunc Func ContinueMsgFunc($hWnd,$Msg,$wParam,$lParam) Select Case $wParam = 1 $ChProcessID = int($lParam) Return $MsgOk Case $wParam = 2 $ChhWnd = HWnd($lParam) Return $MsgOk Case $wParam = 3 Return $MsgOk EndSelect Return 0 EndFunc Func CallFunc($FuncName,$ReturnDirectly,$Param1 = 0,$Param2 = 0 ,$Param3 = 0 , _ $Param4 = 0 ,$Param5 = 0 ,$Param6 = 0 ,$Param7 = 0 ,$Param8 = 0 ,$Param9 = 0 , _ $Param10 = 0,$Param11 = 0,$Param12 = 0,$Param13 = 0,$Param14 = 0,$Param15 = 0, _ $Param16 = 0,$Param17 = 0,$Param18 = 0,$Param19 = 0,$Param20 = 0,$Param21 = 0, _ $Param22 = 0,$Param23 = 0,$Param24 = 0,$Param25 = 0,$Param26 = 0,$Param27 = 0, _ $Param28 = 0,$Param29 = 0,$Param30 = 0,$Param31 = 0,$Param32 = 0,$Param33 = 0) ;$FuncName Name Of function that will be invoked ;BOOL $ReturnDirectly if true will return immediately ;Other parameters are parameters which function will be invoked ;Parameter data types (DllStruct,Binary,Boolean,hWnd,Int,Float,String ) ;return ;Success: results of an ReturnStruct function Or One ;Failure: zero Local $ParamsArray[1] ,$ElementNu = 0 , $TagParamStruct = "" For $i = 1 To @NumParams - 2 ReDim $ParamsArray[$i] $Param = Eval(String("Param" & $i)) Select Case IsString($Param) $ParamsArray[$i - 1] = 1 $TagParamStruct &= "INT ParamType" & $i & ";CHAR ParamData" & $i & "[" & StringLen($Param) & "];" Case IsBinary($Param) $ParamsArray[$i - 1] = 2 $TagParamStruct &= "INT ParamType" & $i & ";BYTE ParamData" & $i & "[" & BinaryLen($Param) & "];" Case IsInt($Param) $ParamsArray[$i - 1] = 3 $Param = String($Param) $TagParamStruct &= "INT ParamType" & $i & ";CHAR ParamData" & $i & "[" & StringLen($Param) & "];" Case IsFloat($Param) $ParamsArray[$i - 1] = 4 $Param = String($Param) $TagParamStruct &= "INT ParamType" & $i & ";CHAR ParamData" & $i & "[" & StringLen($Param) & "];" Case IsBool($Param) $ParamsArray[$i - 1] = 5 $TagParamStruct &= "INT ParamType" & $i & ";BOOL ParamData" & $i & ";" Case IsDllStruct($Param) $ParamsArray[$i - 1] = 6 $TagParamStruct &= "INT ParamType" & $i & ";BYTE ParamData" & $i & "[" & DllStructGetSize($Param) & "];" Case IsHWnd($Param) $ParamsArray[$i - 1] = 7 $TagParamStruct &= "INT ParamType" & $i & ";HWND ParamData" & $i & ";" Case Else Return SetError(1,0,0) EndSelect Next $TagParamStruct = "INT Len;CHAR TagParamStruct[];INT NumParams;" & $TagParamStruct $Len = StringLen($FuncName) + StringLen($TagParamStruct) + 1 $Len += StringLen($Len) $TagParamStruct = StringReplace($TagParamStruct,"[]","[" & $Len & "]") $GlobalParamStruct = DllStructCreate($TagParamStruct) $ElementNu += 1 DllStructSetData($GlobalParamStruct,$ElementNu,$Len) $ElementNu += 1 DllStructSetData($GlobalParamStruct,$ElementNu,$FuncName & "|" & $TagParamStruct) $ElementNu += 1 DllStructSetData($GlobalParamStruct,$ElementNu,@NumParams - 2) For $i = 1 To @NumParams - 2 $Param = Eval(String("Param" & $i)) $ElementNu += 1 DllStructSetData($GlobalParamStruct,$ElementNu,$ParamsArray[$i - 1]) $ElementNu += 1 Select Case $ParamsArray[$i - 1] = 6 $OutPtr = DllStructGetPtr($GlobalParamStruct,$ElementNu) _MemMoveMemory($Param,$OutPtr,DllStructGetSize($Param)) Case Else DllStructSetData($GlobalParamStruct,$ElementNu,$Param) EndSelect Next $ParamsPtr = DllStructGetPtr($GlobalParamStruct) Sleep(300) Local $WindowHandle = 0 Select Case $GlobalParticularProcess == "ParentProcess" $WindowHandle = $ChhWnd Case $GlobalParticularProcess == "ChildProcess" $WindowHandle = $PrhWnd EndSelect if ($ReturnDirectly) Then $RT = _SendMessage($WindowHandle,$UntCallMsg,1,$ParamsPtr) Return SetError($RT = 0,0,$RT) Else $pResultsStructPtr = _SendMessage($WindowHandle,$UntCallMsg,0,$ParamsPtr) $LenStruct = Read_Ptr($ChProcessID,$pResultsStructPtr,"INT Len") if Not IsDllStruct($LenStruct) Then Return SetError(1,0,0) $jLen = DllStructGetData($LenStruct,1) $pTagResultsStruct = "INT Len;CHAR TagResultsStruct[" & $jLen & "];PTR ResultsPtr" $pResultsStruct = Read_Ptr($ChProcessID,$pResultsStructPtr,$pTagResultsStruct) if Not IsDllStruct($pResultsStruct) Then Return SetError(1,0,0) $TagResultsStruct = DllStructGetData($pResultsStruct,2) $ResultsPtr = DllStructGetData($pResultsStruct,3) $ResultsStruct = Read_Ptr($ChProcessID,$ResultsPtr,$TagResultsStruct) if Not IsDllStruct($ResultsStruct) Then Return SetError(1,0,0) $GlobalpResultsStruct = $pResultsStruct $GlobalResultsStruct = $ResultsStruct Return SetError(0,0,$ResultsStruct) EndIf EndFunc Func ReturnStruct($TagResultsStruct,$ResultsStruct) if Not IsDllStruct($ResultsStruct) Then Return 0 $jLen = StringLen($TagResultsStruct) $ResultsPtr = DllStructGetPtr($ResultsStruct) $pTagResultsStruct = "INT Len;CHAR TagResultsStruct[" & $jLen & "];PTR ResultsPtr" $pResultsStruct = DllStructCreate($pTagResultsStruct) if Not IsDllStruct($pResultsStruct) Then Return 0 DllStructSetData($pResultsStruct,1,$jLen) DllStructSetData($pResultsStruct,2,$TagResultsStruct) DllStructSetData($pResultsStruct,3,$ResultsPtr) $GlobalResultsStruct = $ResultsStruct $GlobalpResultsStruct = $pResultsStruct Return DllStructGetPtr($pResultsStruct) EndFunc Func CallMsgFunc($hWnd,$Msg,$wParam,$lParam) Local $NumParams = 0, $ElementNu = 0 , $TagParamStruct = "" , $Len = 0 Local $ProcessID = -1 Select Case $GlobalParticularProcess == "ParentProcess" $ProcessID = $ChProcessID Case $GlobalParticularProcess == "ChildProcess" $ProcessID = $PrProcessID EndSelect $LenStruct = Read_Ptr($ProcessID,$lParam,"INT Len") $ElementNu += 1 $Len = DllStructGetData($LenStruct,$ElementNu) $GlobalParamStruct = Read_Ptr($ProcessID,$lParam,"INT Len;CHAR TagParamStruct[" & $Len & "];") $ElementNu += 1 $TagParamStruct = DllStructGetData($GlobalParamStruct,2) $Split = StringSplit($TagParamStruct,"|") $FuncName = $Split[1] $TagParamStruct = $Split[2] $GlobalParamStruct = Read_Ptr($ProcessID,$lParam,$TagParamStruct) $ElementNu += 1 $NumParams = DllStructGetData($GlobalParamStruct,$ElementNu) ReDim $ArgsArray[$NumParams + 1] $ArgsArray[0] = "CallArgArray" For $i = 1 To $NumParams $ElementNu += 1 $ParamType = DllStructGetData($GlobalParamStruct,$ElementNu) $ElementNu += 1 Select Case $ParamType = 6 $ParamData = DllStructGetPtr($GlobalParamStruct,$ElementNu) Case Else $ParamData = DllStructGetData($GlobalParamStruct,$ElementNu) EndSelect Select Case $ParamType = 3 $ParamData = Number($ParamData) Case $ParamType = 4 $ParamData = Number($ParamData) Case $ParamType = 5 $ParamData = $ParamData = 1 EndSelect $ArgsArray[$i] = $ParamData Next Select Case $wParam = 0 Switch $NumParams Case 0 Return Call($FuncName) Case Else Return Call($FuncName,$ArgsArray) EndSwitch Case $wParam = 1 ; Return Directly) AdlibRegister("AdlibCallFunc") Return 1 EndSelect Return 0 EndFunc Func AdlibCallFunc() AdlibUnRegister("AdlibCallFunc") $GlobalResults = 0 $GlobalError = 0 $GlobalExtended = 0 Switch UBound($ArgsArray) Case 1 $GlobalResults = Call($FuncName) Case Else $GlobalResults = Call($FuncName,$ArgsArray) EndSwitch $GlobalError = @error $GlobalExtended = @extended EndFunc Func Read_Ptr($ProcessID,$Pointer,$StructTag) Local $iSYNCHRONIZE = (0x00100000),$iSTANDARD_RIGHTS_REQUIRED = (0x000F0000) Local $iPROCESS_ALL_ACCESS = ($iSTANDARD_RIGHTS_REQUIRED + $iSYNCHRONIZE + 0xFFF) Local $hProcess , $Struct , $StructPtr , $StructSize , $iRead $hProcess = _WinAPI_OpenProcess($iPROCESS_ALL_ACCESS,False,$ProcessID) if @error Then Return SetError(1,0,0) $Struct = DllStructCreate($StructTag) $StructSize = DllStructGetSize($Struct) $StructPtr = DllStructGetPtr($Struct) if Not _WinAPI_ReadProcessMemory($hProcess,$Pointer,$StructPtr,$StructSize,$iRead) Then _WinAPI_CloseHandle($hProcess) Return SetError(2,0,0) EndIf _WinAPI_CloseHandle($hProcess) Return SetError(0,4,$Struct) EndFunc Func RegisterWindowMessage($lpString,$Distinction,$Password) $MsgStr = $lpString & $Distinction & $Password $UINTMSG = DllCall("User32.dll","UINT","RegisterWindowMessageW","wstr",$MsgStr) $Err = _WinAPI_GetLastError() if Not $Err And Not @error Then Return SetError(0,0,$UINTMSG[0]) Return SetError(1,0,0) EndFuncParentProcess.au3 expandcollapse popup#include "ChildProcess.au3" ;Work with two process Global $Progress , $Labe2 StartAndParticular() Func StartAndParticular() $iParticularProcess = Work_With_Two_process() ;In The Two_Process_Library.au3 File Select Case $iParticularProcess == "ParentProcess" ParentWinMain() Case $iParticularProcess == "ChildProcess" ChildWinMain() ;In the ChildProcess.au3 File EndSelect EndFunc Func ParentWinMain() Opt("GUIOnEventMode", 1) $GuiC = GUICreate("WinMain",400,400,100,10) GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") $Button_1 = GUICtrlCreateButton("Download SWF.max",10,10,380,40) GUICtrlSetOnEvent(-1,"Clicked_Button_1") $progressbar = GUICtrlCreateProgress(10,60,380,20) $Label = GUICtrlCreateLabel("", 10,100,380,20) $Labe2 = GUICtrlCreateLabel("", 10,130,380,20) GUISetState(@SW_SHOW,$GuiC) GUISwitch($GuiC) $pbegin = TimerInit() While 1 $msg = GUIGetMsg() $pbegin = TestWorksChildProcess($pbegin) if @error Then MsgBox(0,"Error Msg","Child Process Not Working") Exit EndIf if ($Progress) Then $InfoStruct = Progress($progressbar,$Label,$Labe2) if (@error) Then $Progress = False MsgBox(0,"Error Msg","Download Error") Else if IsDllStruct($InfoStruct) Then $Progress = False Local $nBytes $hFile = _WinAPI_CreateFile("SWF.max.exe", 1) if $hFile Then $FileSize = DllStructGetData($InfoStruct,1) _WinAPI_WriteFile($hFile,DllStructGetPtr($InfoStruct,4),$FileSize,$nBytes) _WinAPI_CloseHandle($hFile) EndIf MsgBox(0,"Msg","Download complete") GUICtrlSetData($progressbar,0) EndIf EndIf EndIf WEnd EndFunc Func _Exit() Exit EndFunc Func Clicked_Button_1() $Progress = True $Url = "http://www.swfmax.com/get/SWF.max.exe" GUICtrlSetData($Labe2,"Connect to the server") CallFunc("Inet_Read",True,$Url,1000) ;Call function from child process (Return Directly) EndFunc Func Progress($progressbar,$Label,$Labe2) $InfoStruct = CallFunc("GetDownloadInfo",False) ; Call function from child process $FileSize = DllStructGetData($InfoStruct,1) $MovePos = DllStructGetData($InfoStruct,2) $IsComplete = DllStructGetData($InfoStruct,3) $iError = DllStructGetData($InfoStruct,5) if ($FileSize) Then GUICtrlSetData($progressbar, (($MovePos / $FileSize) * 100)) GUICtrlSetData($Label,"FileSize = " & $FileSize & " Number Of Bytes Read = " & $MovePos) GUICtrlSetData($Labe2,"Download = " & int((($MovePos / $FileSize) * 100)) & " % Download = " & StringLeft(($MovePos / 1048576),6) & " MB") Else GUICtrlSetData($Labe2,"Waiting for the first time download") EndIf if ($IsComplete) Then Return SetError($iError,0,$InfoStruct) Return SetError($iError,0,0) EndFuncChildProcess.au3 expandcollapse popup#include "Two_Process_Library.au3" Func ChildWinMain() $pbegin = TimerInit() While 1 $pbegin = TestWorksParentProcess($pbegin) WEnd EndFunc ;-------------------------------------------------------------------------; ;They are called from the parent process Func Inet_Read($lpszUrl,$ByteAtaTime) $IsComplete = False if ($ByteAtaTime <= 0) Then Return SetError(1,0,0) $HIntOpen = InternetOpen("OPEN") if Not ($HIntOpen) Then Return SetError(2,0,0) $HIntOpenUrl = InternetOpenUrl($HIntOpen,$lpszUrl,"",0,0,0) if Not ($HIntOpenUrl) Then Return SetError(3,0,0) $FileSize = HttpQueryInfo($HIntOpenUrl,5) if @error Then Return SetError(4,0,0) $Buffer = DllStructCreate("BYTE Buffer[" & $FileSize & "]") $lpBuffer = DllStructGetPtr($Buffer) $FileSize = Number($FileSize) $MovePos = 0 $pbegin = TimerInit() While 1 $pbegin = TestWorksParentProcess($pbegin) $OutPtr = $lpBuffer + $MovePos $dwNumberOfBytesToRead = _Min($ByteAtaTime,$FileSize - $MovePos); $lpdwNumberOfBytesRead = InternetReadFile($HIntOpenUrl,$OutPtr,$dwNumberOfBytesToRead) $error = @error if $error Or $lpdwNumberOfBytesRead <= 0 Then ExitLoop $MovePos += $lpdwNumberOfBytesRead WEnd if ($error) Then $error = 5 InternetCloseHandle($HIntOpen) InternetCloseHandle($HIntOpenUrl) $IsComplete = True Return SetError($error,0,0) EndFunc Func GetDownloadInfo() Local $TagInfoStruct = "INT FileSize;INT MovePos;BOOL IsComplete;BYTE Buffer[" & $FileSize & "];INT iError" $InfoStruct = DllStructCreate($TagInfoStruct) DllStructSetData($InfoStruct,1,$FileSize) DllStructSetData($InfoStruct,2,$MovePos) DllStructSetData($InfoStruct,3,$IsComplete) if ($IsComplete) Then DllStructSetData($InfoStruct,4,DllStructGetData($Buffer,1)) DllStructSetData($InfoStruct,5,$GlobalError) Return ReturnStruct($TagInfoStruct,$InfoStruct) EndFunc ;They are called from the parent process ;-------------------------------------------------------------------------; Func InternetReadFile($hFile,$lpBuffer,$dwNumberOfBytesToRead) $DLLSDWORD = DllStructCreate("DWORD") $lpdwNumberOfBytesRead = DllStructGetPtr($DLLSDWORD) $BOOL = DllCall($jDll,"BOOL","InternetReadFile","HANDLE",$hFile,"ptr",$lpBuffer, _ "DWORD",$dwNumberOfBytesToRead,"ptr",$lpdwNumberOfBytesRead) if @error Or $BOOL[0] = 0 Then Return SetError(1,0,0) Return SetError(0,0,DllStructGetData($DLLSDWORD,1)) EndFunc Func HttpQueryInfo($hRequest,$dwInfoLevel,$lpdwIndex = 0) Local $lpdwBufferLength = 1000 $DLLSDWORD = DllStructCreate("DWORD") DllStructSetData($DLLSDWORD,1,$lpdwBufferLength) $LPDWORDLENGTH = DllStructGetPtr($DLLSDWORD) $DLLSlpvBuffer = DllStructCreate("WCHAR[" & $lpdwBufferLength & "]") $lpvBuffer = DllStructGetPtr($DLLSlpvBuffer) $BOOL = DllCall($jDll,"BOOL","HttpQueryInfoW","HANDLE",$hRequest,"DWORD",$dwInfoLevel, _ "ptr",$lpvBuffer,"ptr",$LPDWORDLENGTH,"DWORD",$lpdwIndex) if @error Or $BOOL[0] = 0 Then Return SetError(1,0,0) Return SetError(0,0,DllStructGetData($DLLSlpvBuffer,1)) EndFunc Func InternetOpenUrl($hInternet,$lpszUrl,$lpszHeaders,$dwHeadersLength,$dwFlags,$dwContext) $HINTERNET = DllCall($jDll,"HANDLE","InternetOpenUrlW","HANDLE",$hInternet,"wstr",$lpszUrl, _ "wstr",$lpszHeaders,"DWORD",$dwHeadersLength,"DWORD",$dwFlags,"ptr",$dwContext) if @error Then Return SetError(1,0,0) if @error Or Not ($HINTERNET[0]) Then Return SetError(1,0,0) Return SetError(0,0,$HINTERNET[0]) EndFunc Func InternetOpen($lpszAgent,$dwAccessType = 0,$lpszProxyName = "",$lpszProxyBypass = "",$dwFlags = 0) $HINTERNET = DllCall($jDll,"HANDLE","InternetOpenW","wstr",$lpszAgent,"DWORD",$dwAccessType, _ "wstr",$lpszProxyName,"wstr",$lpszProxyBypass,"DWORD",$dwFlags) if @error Or Not ($HINTERNET[0]) Then Return SetError(1,0,0) Return SetError(0,0,$HINTERNET[0]) EndFunc Func InternetCloseHandle($hInternet) $BOOL = DllCall($jDll,"BOOL","InternetCloseHandle","HANDLE",$hInternet) if @error Or $BOOL[0] = 0 Then Return SetError(1,0,0) Return SetError(0,0,$BOOL[0]) EndFunc Two_Process_Library_Constants.au3 #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <WinAPI.au3> #include <Memory.au3> #include <Math.au3> Global $MovePos , $FileSize , $jDll = DllOpen("Wininet.dll") , $Buffer , $IsComplete Global $UntCallMsg,$UntCoueMsg,$ArgsArray[1],$FuncName = "" ,$PrProcessID = 0,$ChProcessID = 0, _ $ChhWnd = 0,$PrhWnd = 0,$MsgOk = 123456789,$GlobalResultsStruct,$GlobalpResultsStruct, _ $GlobalParamStruct , $GlobalParticularProcess = "" , $GlobalResults = 0 , $GlobalError = 0 , _ $GlobalExtended = 0 , $GlobalPassword = "GlobalPassword" Edited February 15, 2015 by wolf9228 صرح السماء كان هنا Link to comment Share on other sites More sharing options...
JohnOne Posted March 27, 2012 Share Posted March 27, 2012 Hi wolf9228. Do we have to painstakingly sift right through all this code to figure out what you are doing or is there some sort of explanation or description to follow? AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
wolf9228 Posted March 28, 2012 Author Share Posted March 28, 2012 (edited) Hi wolf9228.Do we have to painstakingly sift right through all this code to figure out what you are doingor is there some sort of explanation or description to follow?Idea of the project relies on a dual-boot of a program is to create two processesCommunication between them by using the functions of the message.We can send a message from the program and received on another program using thePrevious functions and so we can bridge communication between two processesAnd transfer data from one to the other.Thanks and sorry if the text of this post is not clear Edited March 28, 2012 by wolf9228 صرح السماء كان هنا Link to comment Share on other sites More sharing options...
wolf9228 Posted February 13, 2015 Author Share Posted February 13, 2015 The project was developed صرح السماء كان هنا Link to comment Share on other sites More sharing options...
argumentum Posted February 13, 2015 Share Posted February 13, 2015 "C:\Users\Owner\Downloads\New_Two_Process_Library\ChildProcess.au3"(13,34) : warning: $PrProcessID: possibly used before declaration. if Not ProcessExists($PrProcessID) Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting. Link to comment Share on other sites More sharing options...
JohnOne Posted February 13, 2015 Share Posted February 13, 2015 It's clearly defined. Global $UntCallMsg,$UntCoueMsg,$ArgsArray[1],$FuncName = "" ,$PrProcessID = 0 AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
wolf9228 Posted February 15, 2015 Author Share Posted February 15, 2015 "C:\Users\Owner\Downloads\New_Two_Process_Library\ChildProcess.au3"(13,34) : warning: $PrProcessID: possibly used before declaration. if Not ProcessExists($PrProcessID) Thank you ... صرح السماء كان هنا Link to comment Share on other sites More sharing options...
wolf9228 Posted February 15, 2015 Author Share Posted February 15, 2015 It's clearly defined. Global $UntCallMsg,$UntCoueMsg,$ArgsArray[1],$FuncName = "" ,$PrProcessID = 0 Thank you ... صرح السماء كان هنا Link to comment Share on other sites More sharing options...
argumentum Posted February 15, 2015 Share Posted February 15, 2015 It's clearly defined. Global $UntCallMsg,$UntCoueMsg,$ArgsArray[1],$FuncName = "" ,$PrProcessID = 0 #include "ChildProcess.au3" is declared before the Globals, no big deal, I moved the line below it. Did'nt look, just run from Scite Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting. 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