Sign in to follow this  
Followers 0
wolf9228

connect Two program

5 posts in this topic

#1 ·  Posted (edited)

connectTwoprogram.zip

ProgramA.au3

#Include <WinAPI.au3>
#Include <SendMessage.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $ConnectOK = 99999 , $iGuiHwnd = 0 , $ConnectHWnd , $ConnectMsg

$GuiHwnd = GUICreate("ProgramA", 199, 147, 88, 177)
$Button1 = GUICtrlCreateButton("GetConnectHWnd", 16, 16, 169, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("SendMessage", 13, 69, 169, 33, $WS_GROUP)
$ConnectMsg = RegisterConnectMsg("ConnectMsg","Password")
$DataTransferMsg = RegisterMsg("DataTransferMsg","DataTransferMsgProc")
GUISetState(@SW_SHOW)


While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$ConnectHWnd = GetConnectHWnd($GuiHwnd)
if ($ConnectHWnd) Then MsgBox(0,"MSG","Ok")
Case $Button2
if ($ConnectHWnd) Then _
Send_Message($ConnectHWnd,$DataTransferMsg,1,2,3,4)
EndSwitch
WEnd


Func DataTransferMsgProc($hWnd,$Msg,$wParam,$lParam)

$WParamLoWord = _WinAPI_LoWord($wParam)
$WParamHiWord = _WinAPI_HiWord($wParam)
$LParamLoWord = _WinAPI_LoWord($lParam)
$LParamHiWord = _WinAPI_HiWord($lParam)

$Text = _
"From ProgramB To ProgramA" & @CRLF & _
"$hWnd ==> " & $hWnd & @CRLF & _
"$WParamLoWord ==> " & $WParamLoWord & @CRLF & _
"$WParamHiWord ==> " & $WParamHiWord & @CRLF & _
"$LParamLoWord ==> " & $LParamLoWord & @CRLF & _
"$LParamHiWord ==> " & $LParamHiWord

MsgBox(0,"DataTransferMsg",$Text)

Return 1
EndFunc

Func RegisterConnectMsg($NewStrMsgConnect,$EncryptPassword)
$NewMsgId = RegisterWindowMessage(String($EncryptPassword & $NewStrMsgConnect))
if @error Then Return SetError(2,0,0)
GUIRegisterMsg($NewMsgId,"ConnectProc")
if @error Then Return SetError(3,0,0)
Return SetError(0,0,$NewMsgId)
EndFunc

Func GetConnectHWnd($GuiHwnd,$TimeOut = 10000)
if Not IsHWnd($GuiHwnd) Then Return SetError(1,0,0)
Local $RT = 0 , $HWND = 0 , $begin = TimerInit()
While 1
$HWND = FindWindowEx(0,$HWND,0,0)
if ($GuiHwnd = $HWND) Then ContinueLoop
$RT = _SendMessage($HWND,$ConnectMsg,0,0)
if ($RT = $ConnectOK) Or TimerDiff($begin) >= $TimeOut Then ExitLoop
WEnd
if ($RT <> $ConnectOK) Then Return SetError(4,0,0)
Return SetError(0,0,$HWND)
EndFunc

Func ConnectProc($hWnd,$Msg,$wParam,$lParam)
Return $ConnectOK
EndFunc

Func Send_Message($ConnectHWnd,$MsgId,$WParamLoWord,$WParamHiWord,$LParamLoWord,$LParamHiWord)
$WParam = _WinAPI_MakeLong($WParamLoWord,$WParamHiWord)
$LParam = _WinAPI_MakeLong($LParamLoWord,$LParamHiWord)
Return _SendMessage($ConnectHWnd,$MsgId,$WParam,$LParam)
EndFunc

Func RegisterMsg($NewStrMsgName,$MsgFunction)
$NewMsgId = RegisterWindowMessage($NewStrMsgName)
if @error Then Return SetError(1,0,0)
GUIRegisterMsg($NewMsgId,$MsgFunction)
if @error Then Return SetError(2,0,0)
Return SetError(0,0,$NewMsgId)
EndFunc

Func FindWindowEx($hwndParent,$hwndChildAfter,$lpszClass,$lpszWindow)
Local $DataTypeA = "int" , $DataTypeB = "int"
if IsString($lpszClass) Then $DataTypeA = "WSTR"
if IsString($lpszWindow) Then $DataTypeB = "WSTR"
$RT = DllCall("User32.dll","HWND","FindWindowExW","HWND",$hwndParent,"HWND",$hwndChildAfter, _
$DataTypeA,$lpszClass,$DataTypeB,$lpszWindow)
if @error Or $RT[0] = 0 Then Return SetError(1,0,0)
Return SetError(0,0,$RT[0])
EndFunc

Func RegisterWindowMessage($lpString)
$RT = DllCall("User32.dll","int","RegisterWindowMessageW","WSTR",$lpString)
if @error Or $RT[0] = 0 Then Return SetError(1,0,0)
Return SetError(0,0,$RT[0])
EndFunc

ProgramB.au3

#Include <WinAPI.au3>
#Include <SendMessage.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $ConnectOK = 99999 , $iGuiHwnd = 0 , $ConnectHWnd , $ConnectMsg

$GuiHwnd = GUICreate("ProgramB", 199, 147, 88, 177)
$Button1 = GUICtrlCreateButton("GetConnectHWnd", 16, 16, 169, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("SendMessage", 13, 69, 169, 33, $WS_GROUP)
$ConnectMsg = RegisterConnectMsg("ConnectMsg","Password")
$DataTransferMsg = RegisterMsg("DataTransferMsg","DataTransferMsgProc")
GUISetState(@SW_SHOW)


While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$ConnectHWnd = GetConnectHWnd($GuiHwnd)
if ($ConnectHWnd) Then MsgBox(0,"MSG","Ok")
Case $Button2
if ($ConnectHWnd) Then _
Send_Message($ConnectHWnd,$DataTransferMsg,5,6,7,8)
EndSwitch
WEnd


Func DataTransferMsgProc($hWnd,$Msg,$wParam,$lParam)

$WParamLoWord = _WinAPI_LoWord($wParam)
$WParamHiWord = _WinAPI_HiWord($wParam)
$LParamLoWord = _WinAPI_LoWord($lParam)
$LParamHiWord = _WinAPI_HiWord($lParam)

$Text = _
"From ProgramA To ProgramB" & @CRLF & _
"$hWnd ==> " & $hWnd & @CRLF & _
"$WParamLoWord ==> " & $WParamLoWord & @CRLF & _
"$WParamHiWord ==> " & $WParamHiWord & @CRLF & _
"$LParamLoWord ==> " & $LParamLoWord & @CRLF & _
"$LParamHiWord ==> " & $LParamHiWord

MsgBox(0,"DataTransferMsg",$Text)

Return 1
EndFunc

Func RegisterConnectMsg($NewStrMsgConnect,$EncryptPassword)
$NewMsgId = RegisterWindowMessage(String($EncryptPassword & $NewStrMsgConnect))
if @error Then Return SetError(2,0,0)
GUIRegisterMsg($NewMsgId,"ConnectProc")
if @error Then Return SetError(3,0,0)
Return SetError(0,0,$NewMsgId)
EndFunc

Func GetConnectHWnd($GuiHwnd,$TimeOut = 10000)
if Not IsHWnd($GuiHwnd) Then Return SetError(1,0,0)
Local $RT = 0 , $HWND = 0 , $begin = TimerInit()
While 1
$HWND = FindWindowEx(0,$HWND,0,0)
if ($GuiHwnd = $HWND) Then ContinueLoop
$RT = _SendMessage($HWND,$ConnectMsg,0,0)
if ($RT = $ConnectOK) Or TimerDiff($begin) >= $TimeOut Then ExitLoop
WEnd
if ($RT <> $ConnectOK) Then Return SetError(4,0,0)
Return SetError(0,0,$HWND)
EndFunc

Func ConnectProc($hWnd,$Msg,$wParam,$lParam)
Return $ConnectOK
EndFunc

Func Send_Message($ConnectHWnd,$MsgId,$WParamLoWord,$WParamHiWord,$LParamLoWord,$LParamHiWord)
$WParam = _WinAPI_MakeLong($WParamLoWord,$WParamHiWord)
$LParam = _WinAPI_MakeLong($LParamLoWord,$LParamHiWord)
Return _SendMessage($ConnectHWnd,$MsgId,$WParam,$LParam)
EndFunc

Func RegisterMsg($NewStrMsgName,$MsgFunction)
$NewMsgId = RegisterWindowMessage($NewStrMsgName)
if @error Then Return SetError(1,0,0)
GUIRegisterMsg($NewMsgId,$MsgFunction)
if @error Then Return SetError(2,0,0)
Return SetError(0,0,$NewMsgId)
EndFunc

Func FindWindowEx($hwndParent,$hwndChildAfter,$lpszClass,$lpszWindow)
Local $DataTypeA = "int" , $DataTypeB = "int"
if IsString($lpszClass) Then $DataTypeA = "WSTR"
if IsString($lpszWindow) Then $DataTypeB = "WSTR"
$RT = DllCall("User32.dll","HWND","FindWindowExW","HWND",$hwndParent,"HWND",$hwndChildAfter, _
$DataTypeA,$lpszClass,$DataTypeB,$lpszWindow)
if @error Or $RT[0] = 0 Then Return SetError(1,0,0)
Return SetError(0,0,$RT[0])
EndFunc

Func RegisterWindowMessage($lpString)
$RT = DllCall("User32.dll","int","RegisterWindowMessageW","WSTR",$lpString)
if @error Or $RT[0] = 0 Then Return SetError(1,0,0)
Return SetError(0,0,$RT[0])
EndFunc
Edited by wolf9228
1 person likes this

صرح السماء كان هنا

 

Share this post


Link to post
Share on other sites



Can we send other data than Inits? :unsure:


 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Share this post


Link to post
Share on other sites

Can we send other data than Inits? :unsure:

Yes, you can send a Struct Pointer .. See this example

ProgramA.au3

#Include <WinAPI.au3>
#Include <SendMessage.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $ConnectOK = 99999 , $iGuiHwnd = 0 , $ConnectHWnd , $ConnectMsg

$GuiHwnd = GUICreate("ProgramA", 199, 147, 88, 177)
$Button1 = GUICtrlCreateButton("GetConnectHWnd", 16, 16, 169, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("SendMessage", 13, 69, 169, 33, $WS_GROUP)
$ConnectMsg = RegisterConnectMsg("ConnectMsg","Password")
$DataTransferMsg = RegisterMsg("DataTransferMsg","DataTransferMsgProc")
GUISetState(@SW_SHOW)


While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$ConnectHWnd = GetConnectHWnd($GuiHwnd)
if ($ConnectHWnd) Then MsgBox(0,"MSG","Ok")
Case $Button2
if ($ConnectHWnd) Then
$StructTag = "int var1;ubyte var2;uint var3;char var4[128]"
$Struct = DllStructCreate($StructTag)
DllStructSetData($Struct,"var1",-1)
DllStructSetData($Struct,"var2",255)
DllStructSetData($Struct,"var3",-1)
DllStructSetData($Struct,"var4","Hello")
DllStructSetData($Struct,"var4",Asc("h"),1)
$StructPtr = DllStructGetPtr($Struct)
_SendMessage($ConnectHWnd,$DataTransferMsg,_WinAPI_GetCurrentProcessID(),$StructPtr)
EndIf
EndSwitch
WEnd

Func DataTransferMsgProc($hWnd,$Msg,$ProcessID,$Pointer)
$StructTag = "int var1;ubyte var2;uint var3;char var4[128]"
$Struct = Read_Pointer_FromProcessMemory($ProcessID,$Pointer,$StructTag)
MsgBox(0,"DllStruct From ProgramB TO ProgramA", _
        "Struct Size: " & DllStructGetSize($Struct) & @CRLF & _
        "Struct pointer: " & DllStructGetPtr($Struct) & @CRLF & _
        "Data:" & @CRLF & _
        DllStructGetData($Struct,1) & @CRLF & _
        DllStructGetData($Struct,2) & @CRLF & _
        DllStructGetData($Struct,3) & @CRLF & _
        DllStructGetData($Struct,4))
Return 1
EndFunc

Func Read_Pointer_FromProcessMemory($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(@error,1,$Struct)
$Struct = DllStructCreate($StructTag)
$StructSize = DllStructGetSize($Struct)
$StructPtr = DllStructGetPtr($Struct)
_WinAPI_ReadProcessMemory($hProcess,$Pointer,$StructPtr,$StructSize,$iRead)
Return SetError(@error,2,$Struct)
EndFunc

Func RegisterConnectMsg($NewStrMsgConnect,$EncryptPassword)
$NewMsgId = RegisterWindowMessage(String($EncryptPassword & $NewStrMsgConnect))
if @error Then Return SetError(2,0,0)
GUIRegisterMsg($NewMsgId,"ConnectProc")
if @error Then Return SetError(3,0,0)
Return SetError(0,0,$NewMsgId)
EndFunc

Func GetConnectHWnd($GuiHwnd,$TimeOut = 10000)
if Not IsHWnd($GuiHwnd) Then Return SetError(1,0,0)
Local $RT = 0 , $HWND = 0 , $begin = TimerInit()
While 1
$HWND = FindWindowEx(0,$HWND,0,0)
if ($GuiHwnd = $HWND) Then ContinueLoop
$RT = _SendMessage($HWND,$ConnectMsg,0,0)
if ($RT = $ConnectOK) Or TimerDiff($begin) >= $TimeOut Then ExitLoop
WEnd
if ($RT <> $ConnectOK) Then Return SetError(4,0,0)
Return SetError(0,0,$HWND)
EndFunc

Func ConnectProc($hWnd,$Msg,$wParam,$lParam)
Return $ConnectOK
EndFunc

Func RegisterMsg($NewStrMsgName,$MsgFunction)
$NewMsgId = RegisterWindowMessage($NewStrMsgName)
if @error Then Return SetError(1,0,0)
GUIRegisterMsg($NewMsgId,$MsgFunction)
if @error Then Return SetError(2,0,0)
Return SetError(0,0,$NewMsgId)
EndFunc

Func FindWindowEx($hwndParent,$hwndChildAfter,$lpszClass,$lpszWindow)
Local $DataTypeA = "int" , $DataTypeB = "int"
if IsString($lpszClass) Then $DataTypeA = "WSTR"
if IsString($lpszWindow) Then $DataTypeB = "WSTR"
$RT = DllCall("User32.dll","HWND","FindWindowExW","HWND",$hwndParent,"HWND",$hwndChildAfter, _
$DataTypeA,$lpszClass,$DataTypeB,$lpszWindow)
if @error Or $RT[0] = 0 Then Return SetError(1,0,0)
Return SetError(0,0,$RT[0])
EndFunc

Func RegisterWindowMessage($lpString)
$RT = DllCall("User32.dll","int","RegisterWindowMessageW","WSTR",$lpString)
if @error Or $RT[0] = 0 Then Return SetError(1,0,0)
Return SetError(0,0,$RT[0])
EndFunc

ProgramB.au3

#Include <WinAPI.au3>
#Include <SendMessage.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $ConnectOK = 99999 , $iGuiHwnd = 0 , $ConnectHWnd , $ConnectMsg

$GuiHwnd = GUICreate("ProgramB", 199, 147, 88, 177)
$Button1 = GUICtrlCreateButton("GetConnectHWnd", 16, 16, 169, 33, $WS_GROUP)
$Button2 = GUICtrlCreateButton("SendMessage", 13, 69, 169, 33, $WS_GROUP)
$ConnectMsg = RegisterConnectMsg("ConnectMsg","Password")
$DataTransferMsg = RegisterMsg("DataTransferMsg","DataTransferMsgProc")
GUISetState(@SW_SHOW)


While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$ConnectHWnd = GetConnectHWnd($GuiHwnd)
if ($ConnectHWnd) Then MsgBox(0,"MSG","Ok")
Case $Button2
if ($ConnectHWnd) Then
$StructTag = "int var1;ubyte var2;uint var3;char var4[128]"
$Struct = DllStructCreate($StructTag)
DllStructSetData($Struct,"var1",-2)
DllStructSetData($Struct,"var2",555)
DllStructSetData($Struct,"var3",-2)
DllStructSetData($Struct,"var4","Autoit")
DllStructSetData($Struct,"var4",Asc("A"),1)
$StructPtr = DllStructGetPtr($Struct)
_SendMessage($ConnectHWnd,$DataTransferMsg,_WinAPI_GetCurrentProcessID(),$StructPtr)
EndIf
EndSwitch
WEnd

Func DataTransferMsgProc($hWnd,$Msg,$ProcessID,$Pointer)
$StructTag = "int var1;ubyte var2;uint var3;char var4[128]"
$Struct = Read_Pointer_FromProcessMemory($ProcessID,$Pointer,$StructTag)
MsgBox(0,"DllStruct From ProgramA TO ProgramB", _
        "Struct Size: " & DllStructGetSize($Struct) & @CRLF & _
        "Struct pointer: " & DllStructGetPtr($Struct) & @CRLF & _
        "Data:" & @CRLF & _
        DllStructGetData($Struct,1) & @CRLF & _
        DllStructGetData($Struct,2) & @CRLF & _
        DllStructGetData($Struct,3) & @CRLF & _
        DllStructGetData($Struct,4))
Return 1
EndFunc

Func Read_Pointer_FromProcessMemory($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(@error,1,$Struct)
$Struct = DllStructCreate($StructTag)
$StructSize = DllStructGetSize($Struct)
$StructPtr = DllStructGetPtr($Struct)
_WinAPI_ReadProcessMemory($hProcess,$Pointer,$StructPtr,$StructSize,$iRead)
Return SetError(@error,2,$Struct)
EndFunc

Func RegisterConnectMsg($NewStrMsgConnect,$EncryptPassword)
$NewMsgId = RegisterWindowMessage(String($EncryptPassword & $NewStrMsgConnect))
if @error Then Return SetError(2,0,0)
GUIRegisterMsg($NewMsgId,"ConnectProc")
if @error Then Return SetError(3,0,0)
Return SetError(0,0,$NewMsgId)
EndFunc

Func GetConnectHWnd($GuiHwnd,$TimeOut = 10000)
if Not IsHWnd($GuiHwnd) Then Return SetError(1,0,0)
Local $RT = 0 , $HWND = 0 , $begin = TimerInit()
While 1
$HWND = FindWindowEx(0,$HWND,0,0)
if ($GuiHwnd = $HWND) Then ContinueLoop
$RT = _SendMessage($HWND,$ConnectMsg,0,0)
if ($RT = $ConnectOK) Or TimerDiff($begin) >= $TimeOut Then ExitLoop
WEnd
if ($RT <> $ConnectOK) Then Return SetError(4,0,0)
Return SetError(0,0,$HWND)
EndFunc

Func ConnectProc($hWnd,$Msg,$wParam,$lParam)
Return $ConnectOK
EndFunc

Func RegisterMsg($NewStrMsgName,$MsgFunction)
$NewMsgId = RegisterWindowMessage($NewStrMsgName)
if @error Then Return SetError(1,0,0)
GUIRegisterMsg($NewMsgId,$MsgFunction)
if @error Then Return SetError(2,0,0)
Return SetError(0,0,$NewMsgId)
EndFunc

Func FindWindowEx($hwndParent,$hwndChildAfter,$lpszClass,$lpszWindow)
Local $DataTypeA = "int" , $DataTypeB = "int"
if IsString($lpszClass) Then $DataTypeA = "WSTR"
if IsString($lpszWindow) Then $DataTypeB = "WSTR"
$RT = DllCall("User32.dll","HWND","FindWindowExW","HWND",$hwndParent,"HWND",$hwndChildAfter, _
$DataTypeA,$lpszClass,$DataTypeB,$lpszWindow)
if @error Or $RT[0] = 0 Then Return SetError(1,0,0)
Return SetError(0,0,$RT[0])
EndFunc

Func RegisterWindowMessage($lpString)
$RT = DllCall("User32.dll","int","RegisterWindowMessageW","WSTR",$lpString)
if @error Or $RT[0] = 0 Then Return SetError(1,0,0)
Return SetError(0,0,$RT[0])
EndFunc
1 person likes this

صرح السماء كان هنا

 

Share this post


Link to post
Share on other sites

Yes, you can send a Struct Pointer .. See this example

Wow, so we can transfer even arrays... nice!

P.S

What about objects? :unsure:


 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Share this post


Link to post
Share on other sites

Wow, so we can transfer even arrays... nice!

P.S

What about objects? :unsure:

I do not think that it is possible to manipulate objects and structures Directly

Through the function send message but can transfer stored in the point and then

re- Configured again

objects can be through windows functions stored in the structures

Such functions

HBITMAP Obj

GetDIBits

SetDIBits

HPEN Obj

ExtCreatePen

CreatePenIndirect

1 person likes this

صرح السماء كان هنا

 

Share this post


Link to post
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
Sign in to follow this  
Followers 0