Jump to content

wolf9228

Active Members
  • Posts

    586
  • Joined

  • Last visited

  • Days Won

    5

wolf9228 last won the day on January 1 2015

wolf9228 had the most liked content!

3 Followers

Recent Profile Visitors

2,116 profile views

wolf9228's Achievements

Universalist

Universalist (7/7)

74

Reputation

  1. Note that there is a Win32 application project, after the project is created, there will be an output code... This code... is the default code... Thanks.
  2. I think C++ is a language of importance and value among programming languages... I do not disagree with you on that... Anyway, I also had the idea of doing a programming language compiler. I think the most difficult link in creating a programming language is processing algorithms and checking for errors through them.. In my opinion, this process... is very complex.. requires focus.... long continuous work... and performance in formulating the code... accurate and advanced.
  3. Now I am communicating with you on a Mac, otherwise I would have introduced algorithms for Windows... It's okay, I will explain to you without algorithms... Download the integrated development environment for Windows, which is visual studio 2022, create a Win32 app without any change to the default algorithms in the application After that, build an executable file... After that, check the executable file on the virustotal website of Google. Look at the results. You will find results stating that the executable file is a spy file. Isn't this report a stupid report... Thank you.
  4. I understand what you mean... The C++ language is an addition to the C language. There is something added to the C language by programmers in order to come up with a new language called C++. If you understand C, I think that with a little effort, you can work on the language. C++... Thanks.🙂
  5. I liked this response very much... There are protection programs... that report false reports... but these reports are acceptable... as the standards of protection programs are moderate and acceptable, and some other protection programs we can describe as stupid and without artificial intelligence Not at all... Thank you... I'm translating on Google, if there are any mistakes, sorry... Greetings.
  6. In fact, I suggest creating a special section for C++ in the Autoit forum, because most of the Windows software references are written in C++... Thank you.🙂
  7. I'm not sure you understand what I'm posting in this post... but I'll repeat what I wrote... Winapis references are written in C++ Here's what you need to know about C++ in order to use Winapis functions in various languages The software that works on the Windows system... There are also various examples of Winapis functions as well as it is formulated on the C++ language. Other than that, the class is formulated on the MSDN website and its methods are done using the C++ language. A Windows application designer must have Knowledge, even if it is simple, in the C++ language... Thank you.
  8. In this topic, I discuss the requirement for knowledge of the C++ language and by those who practice writing scripts and on various programming languages such as Autoit, BASIC, or other languages. Why should a programmer have knowledge, even if it is simple, of C++, because references to Windows functions Written in C++ on the MSDN website... Most of the basic references are written in C++, and most of the programming examples are written on the MSDN website in C++... Likewise, I encountered here in the Autoit forum those who denounce A topic I raised in the forum has to do with the C++ language. The C++ language can be discussed and raised here, to some extent, and in all programming forums, because it is the basic Windows reference language... Other than that, there are general topics in Windows system programming that can be raised here in the Autoit forum. Or in other Windows programming forums... For example, the false reports of protection programs about executable files and the various integrated development environments that work on the Windows system... Thank you... Greetings.
  9. I did this on the C++ 64bit compiler and on the 64bit Autoit compiler to no avail. The false report is still coming.
  10. How can you avoid the report of the VirusTotal detection site, the false report that has no validity, and through the program’s algorithms, even programs based on old and modern Microsoft development environments when examined on the VirusTotal website, the VirusTotal report is false, as it states that the previous programs are sabotage files and Spy Is there a way to avoid false virus reports even on C++ applications if possible. Note: I checked the default project for Microsoft Integrated Development Environments 2005 and 2022 on the VirusTotal website, and the result was false and not true reports, as reports indicate harmful viruses
  11. With this project, you can create a Class with a set of functions... There are two examples for the rich editor. The code speaks for itself Class.zip Class.au3 #include <Memory.au3> Func AddClassVariable($VariableArray,$VariableType,$VariableName,$VariableVale) if Not IsArray($VariableArray) Then Local $cVariableArray[1][3] Else $cVariableArray = $VariableArray ReDim $cVariableArray[UBound($cVariableArray) + 1][3] EndIf $cVariableArray[UBound($cVariableArray) - 1][0] = $VariableType $cVariableArray[UBound($cVariableArray) - 1][1] = $VariableName $cVariableArray[UBound($cVariableArray) - 1][2] = $VariableVale Return $cVariableArray EndFunc Func AddClassMethod($MethodArray,$MethodName,$MethodPointer) if Not IsArray($MethodArray) Then Local $cMethodArray[1][3] Else $cMethodArray = $MethodArray ReDim $cMethodArray[UBound($cMethodArray) + 1][2] EndIf $cMethodArray[UBound($cMethodArray) - 1][0] = $MethodName $cMethodArray[UBound($cMethodArray) - 1][1] = $MethodPointer Return $cMethodArray EndFunc Func NewClass($MethodArray,$VariableArray = 0) Local $TagClass = "",$Tag_Class = "",$UBoundA = UBound($MethodArray),$UBoundB = UBound($VariableArray) if $UBoundA + $UBoundB = 0 Then Return SetError(1,0,0) if $UBoundA Then For $i = 1 To $UBoundA $TagClass &= "PTR " & $MethodArray[$i - 1][0] & ";" Next $TagClass = StringTrimRight($TagClass,1) EndIf if $UBoundB Then For $i = 1 To $UBoundB $Tag_Class &= $VariableArray[$i - 1][0] & " " & $VariableArray[$i - 1][1] & ";" Next $Tag_Class = StringTrimRight($Tag_Class,1) EndIf $NewClass = DllStructCreate($TagClass,_MemGlobalLock(_MemGlobalAlloc(DllStructGetSize(DllStructCreate($TagClass))))) if @error And StringLen($TagClass) Then SetError(3,0,0) if $UBoundA Then For $i = 1 To $UBoundA DllStructSetData($NewClass,$MethodArray[$i - 1][0],$MethodArray[$i - 1][1]) if @error Then Return SetError(4,0,0) Next EndIf $cTag_Class = "PTR;INT;INT;INT;WCHAR[" & StringLen($TagClass) + 2 & "]" & ";WCHAR[" & StringLen($Tag_Class) + 2 & "];" & $Tag_Class $New_Class = DllStructCreate($cTag_Class,_MemGlobalLock(_MemGlobalAlloc(DllStructGetSize(DllStructCreate($cTag_Class))))) DllStructSetData($New_Class,1,DllStructGetPtr($NewClass)) DllStructSetData($New_Class,3 , StringLen($TagClass) + 2) DllStructSetData($New_Class, 4,StringLen($Tag_Class) + 2) DllStructSetData($New_Class,2,0123456789) DllStructSetData($New_Class,5, $TagClass) DllStructSetData($New_Class,6,$Tag_Class) if $UBoundB Then For $i = 1 To $UBoundB DllStructSetData($New_Class,$VariableArray[$i - 1][1],$VariableArray[$i - 1][2]) if @error Then Return SetError(5,0,0) Next EndIf Return SetError(0,0,DllStructGetPtr($New_Class)) EndFunc Func GetValue($Object,$VarName) $Class = DllStructCreate("PTR;INT;INT;INT",$Object) $FormatNumbr = DllStructGetData($Class,2) if ($FormatNumbr <> 0123456789) Then Return SetError(6,0,0) ; error 6 $StrLenA = DllStructGetData($Class,3) $StrLenB = DllStructGetData($Class,4) $Class = DllStructCreate("PTR;INT;INT;INT;WCHAR[" & $StrLenA & "]" & ";WCHAR[" & $StrLenB & "]",$Object) $Tag_Class = DllStructGetData($Class,6) $ClassSt = DllStructCreate("PTR;INT;INT;INT;WCHAR[" & $StrLenA & "]" & ";WCHAR[" & $StrLenB & "];" & $Tag_Class,$Object) $Value = DllStructGetData($ClassSt,$VarName) ; DllStructGetData @error ==> 1 2 3 4 5 Return SetError(@error,0,$Value) ; DllStructGetData @error ==> 1 2 3 4 5 EndFunc Func SetValue($Object,$VarName,$Value) $Class = DllStructCreate("PTR;INT;INT;INT",$Object) $FormatNumbr = DllStructGetData($Class,2) if ($FormatNumbr <> 0123456789) Then Return SetError(6,0,0) ; error 6 $StrLenA = DllStructGetData($Class,3) $StrLenB = DllStructGetData($Class,4) $Class = DllStructCreate("PTR;INT;INT;INT;WCHAR[" & $StrLenA & "]" & ";WCHAR[" & $StrLenB & "]",$Object) $Tag_Class = DllStructGetData($Class,6) $ClassSt = DllStructCreate("PTR;INT;INT;INT;WCHAR[" & $StrLenA & "]" & ";WCHAR[" & $StrLenB & "];" & $Tag_Class,$Object) $Value = DllStructSetData($ClassSt,$VarName,$Value) Return SetError(@error,0,$Value) ;DllStructSetData @error ==> 1 2 3 4 5 EndFunc Func CallMethodA($ReturnType,$MethodNumber,$MehParams,$VarType1 = 0,$VarName1 = 0,$VarType2 = 0,$VarName2 = 0 , $VarType3 = 0 , $VarName3 = 0 ,$VarType4 = 0, _ $VarName4 = 0,$VarType5 = 0 , $VarName5 = 0 , $VarType6 = 0 , $VarName6 = 0 , $VarType7 = 0,$VarName7 = 0,$VarType8 = 0,$VarName8 = 0,$VarType9 = 0,$VarName9 = 0, _ $VarType10 = 0,$VarName10 = 0 , $VarType11 = 0 , $VarName11 = 0 , $VarType12 = 0 , $VarName12 = 0 ,$VarType13 = 0 ,$VarName13 = 0 ,$VarType14 = 0 ,$VarName14 = 0, _ $VarType15 = 0,$VarName15 = 0 , $VarType16 = 0 , $VarName16 = 0 , $VarType17 = 0 , $VarName17 = 0 , $VarType18 = 0 ,$VarName18 = 0,$VarType19 = 0,$VarName19 = 0, _ $VarType20 = 0,$VarName20 = 0) ;$MehParams ==> @NumParams macro $Class = DllStructCreate("PTR Class",$VarName1) $MethodSt = DllStructCreate("PTR",DllStructGetData($Class,1) + (($MethodNumber - 1) * 4)) $MethodPtr = DllStructGetData($MethodSt,1) Switch $MehParams Case 1 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1) Case 2 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2) Case 3 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3) Case 4 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4) Case 5 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5) Case 6 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6) Case 7 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7) Case 8 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8) Case 9 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9) Case 10 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10) Case 11 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11) Case 12 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12) Case 13 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13) Case 14 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14) Case 15 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15) Case 16 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16) Case 17 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17) Case 18 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18) Case 19 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18,$VarType19, _ $VarName19) Case 20 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18,$VarType19, _ $VarName19,$VarType20,$VarName20) EndSwitch Return SetError(1,0,0) EndFunc Func CallMethodB($ReturnType,$MethodName,$MehParams,$VarType1 = 0,$VarName1 = 0,$VarType2 = 0,$VarName2 = 0 , $VarType3 = 0 , $VarName3 = 0 ,$VarType4 = 0, _ $VarName4 = 0,$VarType5 = 0 , $VarName5 = 0 , $VarType6 = 0 , $VarName6 = 0 , $VarType7 = 0,$VarName7 = 0,$VarType8 = 0,$VarName8 = 0,$VarType9 = 0,$VarName9 = 0, _ $VarType10 = 0,$VarName10 = 0 , $VarType11 = 0 , $VarName11 = 0 , $VarType12 = 0 , $VarName12 = 0 ,$VarType13 = 0 ,$VarName13 = 0 ,$VarType14 = 0 ,$VarName14 = 0, _ $VarType15 = 0,$VarName15 = 0 , $VarType16 = 0 , $VarName16 = 0 , $VarType17 = 0 , $VarName17 = 0 , $VarType18 = 0 ,$VarName18 = 0,$VarType19 = 0,$VarName19 = 0, _ $VarType20 = 0,$VarName20 = 0) ;$MehParams ==> @NumParams macro $Class = DllStructCreate("PTR;INT;INT;INT",$VarName1) $FormatNumbr = DllStructGetData($Class,2) if ($FormatNumbr <> 0123456789) Then Return SetError(1,0,0) $StrLenA = DllStructGetData($Class,3) $StrLenB = DllStructGetData($Class,4) $Class = DllStructCreate("PTR;INT;INT;INT;WCHAR[" & $StrLenA & "]" & ";WCHAR[" & $StrLenB & "]",$VarName1) $TagClass = DllStructGetData($Class,5) $ClassSt = DllStructCreate($TagClass,DllStructGetData($Class,1)) $MethodPtr = DllStructGetData($ClassSt,$MethodName) if @error Then Return SetError(2,0,0) Switch $MehParams Case 1 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1) Case 2 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2) Case 3 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3) Case 4 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4) Case 5 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5) Case 6 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6) Case 7 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7) Case 8 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8) Case 9 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9) Case 10 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10) Case 11 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11) Case 12 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12) Case 13 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13) Case 14 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14) Case 15 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15) Case 16 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16) Case 17 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17) Case 18 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18) Case 19 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18,$VarType19, _ $VarName19) Case 20 Return DllCallAddress($ReturnType,$MethodPtr,$VarType1,$VarName1,$VarType2,$VarName2,$VarType3,$VarName3,$VarType4,$VarName4,$VarType5,$VarName5, _ $VarType6,$VarName6,$VarType7,$VarName7,$VarType8,$VarName8,$VarType9,$VarName9,$VarType10,$VarName10,$VarType11,$VarName11,$VarType12,$VarName12, _ $VarType13,$VarName13,$VarType14,$VarName14,$VarType15,$VarName15,$VarType16,$VarName16,$VarType17,$VarName17,$VarType18,$VarName18,$VarType19, _ $VarName19,$VarType20,$VarName20) EndSwitch Return SetError(3,0,0) EndFunc Func DeleteClass($Object) $Class = DllStructCreate("PTR Class",$Object) $ClassPtr = DllStructGetData($Class,1) _MemGlobalFree(GlobalHandle($ClassPtr)) _MemGlobalFree( GlobalHandle ($Object)) EndFunc Func GlobalHandle($pMem) $Return = DllCall("Kernel32.dll","ptr","GlobalHandle","ptr",$pMem) if @error Then Return SetError(1,0,0) Return $Return[0] EndFunc RichEdit_Class.au3 #include <Class.au3> Global $S_OK = 0 , $E_NOTIMPL = 0x80004001 Func RichEdit_CB_QueryInterface($Object,$iid,$ppvObject) return $S_OK EndFunc Func RichEdit_CB_AddRef($Object) return SetValue($Object,"nCount",GetValue($Object,"nCount") + 1) EndFunc Func RichEdit_CB_Release($Object) if (GetValue($Object,"nCount") > 0) Then return SetValue($Object,"nCount",GetValue($Object,"nCount") - 1) return $S_OK; EndFunc Func RichEdit_CB_GetNewStorage($Object,$lplpstg) $nHresult = DllCall("Ole32.dll","LONG","CreateILockBytesOnHGlobal","PTR",0,"BOOL",True,"PTR*",0) if (@error Or $nHresult[0] <> $S_OK) Then return $nHresult[0] $Lock_Bytes = $nHresult[3] ;BitOR(STGM_SHARE_EXCLUSIVE,STGM_READWRITE,STGM_CREATE) $nHresult = DllCall("Ole32.dll","LONG","StgCreateDocfileOnILockBytes","PTR",$Lock_Bytes _ ,"DWORD",BitOR(0x00000010,0x00000002,0x00001000),"DWORD",0,"PTR*",0) if (@error Or $nHresult[0] <> $S_OK) Then CallMethodA("LONG",3,1,"PTR",$Lock_Bytes) ; Call Release() Method In $Lock_Bytes Obj // Release() Method Table Number 3 $Cast = DllStructCreate("PTR",$lplpstg) DllStructSetData($Cast,1,$nHresult[4]) return $nHresult[0] EndFunc Func RichEdit_CB_GetInPlaceContext($Object,$lplpFrame,$lplpDoc,$lpFrameInfo) return $E_NOTIMPL EndFunc Func RichEdit_CB_ShowContainerUI($Object,$fShow) return $E_NOTIMPL EndFunc Func RichEdit_CB_QueryInsertObject($Object,$lpclsid,$lpstg,$cp) return $S_OK EndFunc Func RichEdit_CB_DeleteObject($Object,$lpoleobj) return $E_NOTIMPL EndFunc Func RichEdit_CB_QueryAcceptData($Object,$lpdataobj,$lpcfFormat,$reco,$fReally,$hMetaPict) return $S_OK EndFunc Func RichEdit_CB_ContextSensitiveHelp($Object,$fEnterMode) return $E_NOTIMPL EndFunc Func RichEdit_CB_GetClipboardData($Object,$lpchrg,$reco,$lplpdataobj) return $E_NOTIMPL EndFunc Func RichEdit_CB_GetDragDropEffect($Object,$fDrag,$grfKeyState,$pdwEffect) return $E_NOTIMPL EndFunc Func RichEdit_CB_GetContextMenu($Object,$seltype,$lpoleobj,$lpchrg,$lphmenu) return $E_NOTIMPL EndFunc Func IDataObject_QueryInterface($Object,$iid,$ppvObject) return $E_NOTIMPL EndFunc Func IDataObject_AddRef($Object) return $E_NOTIMPL EndFunc Func IDataObject_Release($Object) return $E_NOTIMPL EndFunc Func IDataObject_GetData($Object,$pformatetcIn,$pmedium) MoveMemory( GetValue( $Object , "pmedium" ) ,$pmedium,12) return $S_OK EndFunc Func IDataObject_GetDataHere($Object,$pformatetc,$pmedium) return $E_NOTIMPL EndFunc Func IDataObject_QueryGetData($Object,$pformatetc) return $E_NOTIMPL EndFunc Func IDataObject_GetCanonicalFormatEtc($Object,$pformatectIn,$pformatetcOut) return $E_NOTIMPL EndFunc Func IDataObject_SetData($Object,$pformatetc,$pmedium,$fRelease) MoveMemory(GetValue($Object,"pformatetc"),$pformatetc,20) MoveMemory( GetValue( $Object , "pmedium" ) ,$pmedium,12) return $S_OK EndFunc Func IDataObject_EnumFormatEtc($Object,$dwDirection,$ppenumFormatEtc) return $E_NOTIMPL EndFunc Func IDataObject_DAdvise($Object,$pformatetc,$advf,$pAdvSink,$pdwConnection) return $E_NOTIMPL EndFunc Func IDataObject_DUnadvise($Object,$dwConnection) return $E_NOTIMPL EndFunc Func IDataObject_EnumDAdvise($Object,$ppenumAdvise) return $E_NOTIMPL EndFunc Func MoveMemory($Source,$Destination,$Length) DllCall("Kernel32.dll","none","RtlMoveMemory","PTR",$Destination,"PTR",$Source,"INT",$Length) EndFunc RichEdit_Example.au3 #include <GUIConstantsEx.au3> #include <GuiRichEdit.au3> #include <WindowsConstants.au3> #include <SendMessage.au3> #include <GDIPlus.au3> #include "RichEdit_Class.au3" ;Minimum supported Windows XP Global $RichEdit_CB_Method[13] , $IDataObject_Method[12] , $IRichEditOleCallback = 0 , $IDataObject = 0 $hGui = GUICreate("InsertObject Example",700,390) $hRichEdit = _GUICtrl_RichEdit_Create($hGui,"", 10, 10,680,300, _ BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) $Button1 = GUICtrlCreateButton("InsertObject",10,320,200,50) GUICtrlSetFont(-1,18,600) GUISetState() InsertObject($hRichEdit,@ScriptDir & "\Image.TIF") While True $iMsg = GUIGetMsg() Select Case $iMsg = $GUI_EVENT_CLOSE _GUICtrlRichEdit_SetText ($hRichEdit,"") _GUICtrlRichEdit_Destroy($hRichEdit) DeleteClass($IRichEditOleCallback) DeleteClass($IDataObject) Exit Case $iMsg = $Button1 $var = FileOpenDialog("", @ScriptDir & "\","All (*.*)", 1 + 4) if Not @error Then InsertObject($hRichEdit,$var) EndIf EndSelect WEnd Func __GCR_SetOLE_Callback($hWnd) If Not IsHWnd($hWnd) Then Return SetError(101, 0, False) if ($IRichEditOleCallback = 0) Then $IRichEditOleCallback = IRichEditOleCallback_Create() Local Const $EM_SETOLECALLBACK = 0x400 + 70 If _SendMessage($hWnd, $EM_SETOLECALLBACK, 0, $IRichEditOleCallback) = 0 Then Return SetError(700, 0, False) Return True EndFunc ;==>__GCR_SetOLECallback ;http://msdn.microsoft.com/en-us/library/windows/desktop/dd387916%28v=vs.85%29.aspx ;Use a Rich Edit Interface ;Rich edit controls expose some of their functionality through Component Object Model ;(COM) interfaces. By obtaining an interface from a control, you gain the ability to ;work with other objects within the control. You can obtain this interface by sending ;the EM_GETOLEINTERFACE message. From the IRichEditOle interface, you can then obtain ;interfaces used in the Text Object Model. ;Another interface, IRichEditOleCallback, is implemented by applications to define the ;behavior of the control when it interacts with objects. ;Insert an Object into a Rich Edit Control ;The following code example inserts a file object into a rich edit control. If a program ;is associated with the file type on the user's machine (for example, Microsoft Excel for ;an .xls file), the contents of the file display in the control; otherwise, an icon appears. ; BMP, GIF, JPEG, PNG, TIFF, Exif, WMF, and EMF // GDIPlus Library Func InsertObject($hRichEdit,$pszFileName) Local $hr = 0, $Rt = 0 , $EM_GETOLEINTERFACE = 1084 , $pRichEditOle = 0 $pRichEditOle = _SendMessage($hRichEdit,$EM_GETOLEINTERFACE,0,0,4,"wparam","ptr*") if ($pRichEditOle == 0) Then return FALSE; EndIf Local $pLockBytes = 0 $hr = DllCall("Ole32.dll","long","CreateILockBytesOnHGlobal","ptr",0,"BOOL",True,"Ptr*",0) if (@error Or $hr[0] <> 0) Then return FALSE; EndIf $pLockBytes = $hr[3] Local $pStorage = 0 $hr = DllCall("Ole32.dll","long","StgCreateDocfileOnILockBytes","ptr",$pLockBytes, _ "DWORD",BitOR(0x00000010,0x00001000,0x00000002), _ "DWORD",0,"Ptr*",0) if (@error Or $hr[0] <> 0) Then return FALSE; EndIf $pStorage = $hr[4] $tagFORMATETC = "int cfFormat;ptr ptd;DWORD dwAspect;LONG lindex;DWORD tymed" $formatEtc = DllStructCreate($tagFORMATETC) DllStructSetData($formatEtc,"cfFormat",0) DllStructSetData($formatEtc,"ptd",0) DllStructSetData($formatEtc,"dwAspect",1) DllStructSetData($formatEtc,"lindex",-1) DllStructSetData($formatEtc,"tymed",0) Local $pClientSite ;hr = pRichEditOle->GetClientSite(&pClientSite); ;GetClientSite Virtual Method Number Of GetClientSite Is 4 in (IRichEditOle interface) $hr = CallMethodA("long",4,2,"ptr",$pRichEditOle,"ptr*",0) if (@error Or $hr[0] <> 0) Then return FALSE; EndIf $pClientSite = $hr[2] Local $pUnk,$clsid = CLSIDFromString("{00000000-0000-0000-0000-000000000000}") Local $IID_IUnknown = IIDFromString("{00000000-0000-0000-C000-000000000046}") _GDIPlus_Startup() ; BMP, GIF, JPEG, PNG, TIFF, Exif, WMF, and EMF Local $hBMP = 0 $hBitmap = _GDIPlus_BitmapCreateFromFile($pszFileName) if ($hBitmap) Then $hBMP = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap) _GDIPlus_BitmapDispose($hBitmap) EndIf _GDIPlus_Shutdown ( ) if ($hBMP) Then if $IDataObject = 0 Then $IDataObject = IDataObject_Create() $DVASPECT_CONTENT = 1 $TYMED_GDI = 16 $OLERENDER_FORMAT = 2 DllStructSetData($formatEtc,"cfFormat",$CF_BITMAP) DllStructSetData($formatEtc,"ptd",0) DllStructSetData($formatEtc,"dwAspect",$DVASPECT_CONTENT) DllStructSetData($formatEtc,"lindex",-1) DllStructSetData($formatEtc,"tymed",$TYMED_GDI) $tagSTGMEDIUM = "DWORD tymed;ptr hBitmap;ptr pUnkForRelease" $STGMEDIUM = DllStructCreate($tagSTGMEDIUM) DllStructSetData($STGMEDIUM,"tymed",$TYMED_GDI) DllStructSetData($STGMEDIUM , "hBitmap" ,$hBMP) DllStructSetData($STGMEDIUM,"pUnkForRelease",0) SetValue($IDataObject,"pformatetc",DllStructGetPtr($formatEtc)) SetValue($IDataObject ,"pmedium" , DllStructGetPtr($STGMEDIUM)) $ID_IOleObject = IIDFromString("{00000112-0000-0000-C000-000000000046}") $hr = DllCall("Ole32.dll","long","OleCreateStaticFromData","ptr",$IDataObject,"ptr", _ DllStructGetPtr($ID_IOleObject),"DWORD",$OLERENDER_FORMAT,"ptr",DllStructGetPtr($formatEtc) _ ,"ptr",$pClientSite,"ptr",$pStorage,"Ptr*",0) if ($hr[0] <> 0) Then return FALSE; EndIf $pObject = $hr[7] DllCall("Ole32.dll","long","OleSetContainedObject","ptr",$pObject,"BOOL",True) $tagREOBJECT = "DWORD cbStruct;LONG cp;ulong Data1;ushort Data2;ushort Data3;byte Data4[8]" & _ ";ptr poleobj;ptr pstg;ptr polesite;long x;long y;DWORD dvaspect;DWORD dwFlags;DWORD dwUser" $reobject = DllStructCreate($tagREOBJECT) DllStructSetData($reobject,"cbStruct",DllStructGetSize($reobject)) ;hr = pObject->GetUserClassID(&clsid); ;GetUserClassID Virtual Method Number Of GetUserClassID Is 16 in (IOleObject interface) $hr = CallMethodA("long",16,2,"ptr",$pObject,"ptr",DllStructGetPtr($clsid)) if ($hr[0] <> 0) Then ;pObject->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IOleObject interface) CallMethodA("long",3,1,"ptr",$pObject) return FALSE EndIf MoveMemory(DllStructGetPtr($clsid),DllStructGetPtr($reobject) + 8,16) ;8 ==> SizeOf "DWORD cbStruct;LONG cp;" ;16 ==> sizeOf $clsid DllStructSetData($reobject,"cp",-1) DllStructSetData($reobject,"dvaspect",1) DllStructSetData($reobject,"dwFlags",BitOR(0x00000001,0x00000002)) DllStructSetData($reobject,"dwUser",0) DllStructSetData($reobject,"poleobj",$pObject) DllStructSetData($reobject,"polesite",$pClientSite) DllStructSetData($reobject,"pstg",$pStorage) $SIZEL = DllStructCreate("long;long"); DllStructSetData($reobject,"SIZEL",DllStructGetPtr($SIZEL)) _SendMessage($hRichEdit, 0xB1, 0, -1);EM_SETSEL $Rt = _SendMessage($hRichEdit, 0xB0,0,0,-1,"DWORD*","DWORD*");EM_GETSEL Local $dwStart = $Rt[3], $dwEnd = $Rt[4] _SendMessage($hRichEdit,0xB1, $dwEnd+1, $dwEnd+1);EM_SETSEL _SendMessage($hRichEdit, 0xC2, TRUE,@CRLF,0,"BOOL","wstr");EM_REPLACESEL ;hr = pRichEditOle->InsertObject(&reobject); ;InsertObject Virtual Method Number Of InsertObject Is 8 in (IRichEditOle interface) $hr = CallMethodA("long",8,2,"ptr",$pRichEditOle,"ptr",DllStructGetPtr($reobject)) ;pObject->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IOleObject interface) CallMethodA("long",3,1,"ptr",$pObject) ;pRichEditOle->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IRichEditOle interface) CallMethodA("long",3,1,"ptr",$pRichEditOle) if ($hr[0] <> 0) Then return FALSE; EndIf _WinAPI_DeleteObject ( $hBMP ) return TRUE; Else $hr = DllCall("Ole32.dll","long","OleCreateFromFile","ptr",DllStructGetPtr($clsid),"wstr", _ $pszFileName,"ptr",DllStructGetPtr($IID_IUnknown),"DWORD",1,"ptr",DllStructGetPtr($formatEtc) _ ,"ptr",$pClientSite,"ptr",$pStorage,"Ptr*",0) ;pClientSite->Release(); ;IOleClientSite interface inherits from the IUnknown Or IOleClientSite : public IUnknown ;Release() Virtual Method Number Of Release() Is 3 In (IOleClientSite interface) CallMethodA("long",3,1,"ptr",$pClientSite) if ($hr[0] <> 0) Then return FALSE; EndIf $pUnk = $hr[8] Local $pObject,$IID_IOleObject = IIDFromString("{00000112-0000-0000-C000-000000000046}") ;hr = pUnk->QueryInterface(IID_IOleObject, (void**)&pObject); ;New pUnk (IOleObject) interface inherits from the IUnknown Or IOleObject : public IUnknown ;QueryInterface() Virtual Method Number Of QueryInterface() Is 1 In (IOleObject) $hr = CallMethodA("long",1,3,"ptr",$pUnk,"ptr",DllStructGetPtr($IID_IOleObject),"ptr*",0) ;Release() Virtual Method Number Of Release() Is 3 In (IOleObject interface) ;pUnk->Release(); CallMethodA("long",3,1,"ptr",$pUnk) if ($hr[0] <> 0) Then return FALSE; EndIf $pObject = $hr[3] DllCall("Ole32.dll","long","OleSetContainedObject","ptr",$pObject,"BOOL",True) $tagREOBJECT = "DWORD cbStruct;LONG cp;ulong Data1;ushort Data2;ushort Data3;byte Data4[8]" & _ ";ptr poleobj;ptr pstg;ptr polesite;long x;long y;DWORD dvaspect;DWORD dwFlags;DWORD dwUser" $reobject = DllStructCreate($tagREOBJECT) DllStructSetData($reobject,"cbStruct",DllStructGetSize($reobject)) ;hr = pObject->GetUserClassID(&clsid); ;GetUserClassID Virtual Method Number Of GetUserClassID Is 16 in (IOleObject interface) $hr = CallMethodA("long",16,2,"ptr",$pObject,"ptr",DllStructGetPtr($clsid)) if (@error Or $hr[0] <> 0) Then ;pObject->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IOleObject interface) CallMethodA("long",3,1,"ptr",$pObject) return FALSE EndIf MoveMemory(DllStructGetPtr($clsid),DllStructGetPtr($reobject) + 8,16) ;8 ==> SizeOf "DWORD cbStruct;LONG cp;" ;16 ==> sizeOf $clsid DllStructSetData($reobject,"cp",-1) DllStructSetData($reobject,"dvaspect",1) DllStructSetData($reobject,"dwFlags",BitOR(0x00000001,0x00000002)) DllStructSetData($reobject,"dwUser",0) DllStructSetData($reobject,"poleobj",$pObject) DllStructSetData($reobject,"polesite",$pClientSite) DllStructSetData($reobject,"pstg",$pStorage) $SIZEL = DllStructCreate("long;long"); DllStructSetData($reobject,"SIZEL",DllStructGetPtr($SIZEL)) _SendMessage($hRichEdit, 0xB1, 0, -1);EM_SETSEL $Rt = _SendMessage($hRichEdit, 0xB0,0,0,-1,"DWORD*","DWORD*");EM_GETSEL Local $dwStart = $Rt[3], $dwEnd = $Rt[4] _SendMessage($hRichEdit,0xB1, $dwEnd+1, $dwEnd+1);EM_SETSEL _SendMessage($hRichEdit, 0xC2, TRUE,@CRLF,0,"BOOL","wstr");EM_REPLACESEL ;hr = pRichEditOle->InsertObject(&reobject); ;InsertObject Virtual Method Number Of InsertObject Is 8 in (IRichEditOle interface) $hr = CallMethodA("long",8,2,"ptr",$pRichEditOle,"ptr",DllStructGetPtr($reobject)) ;pObject->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IOleObject interface) CallMethodA("long",3,1,"ptr",$pObject) ;pRichEditOle->Release(); ;Release() Virtual Method Number Of Release() Is 3 In (IRichEditOle interface) CallMethodA("long",3,1,"ptr",$pRichEditOle) if ($hr[0] <> 0) Then return FALSE; EndIf return TRUE; EndIf EndFunc Func IDataObject_Create() Local $cMethodArray = 0 $IDataObject_Method[0] = DllCallbackRegister("IDataObject_QueryInterface","LONG","PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_QueryInterface",DllCallbackGetPtr($IDataObject_Method[0])) $IDataObject_Method[1] = DllCallbackRegister("IDataObject_AddRef","LONG","PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_AddRef",DllCallbackGetPtr($IDataObject_Method[1])) $IDataObject_Method[2] = DllCallbackRegister("IDataObject_Release","LONG","PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_Release",DllCallbackGetPtr($IDataObject_Method[2])) $IDataObject_Method[3] = DllCallbackRegister("IDataObject_GetData","LONG","PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_GetData",DllCallbackGetPtr($IDataObject_Method[3])) $IDataObject_Method[4] = DllCallbackRegister("IDataObject_GetDataHere","LONG","PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_GetDataHere",DllCallbackGetPtr($IDataObject_Method[4])) $IDataObject_Method[5] = DllCallbackRegister("IDataObject_QueryGetData","LONG","PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_QueryGetData",DllCallbackGetPtr($IDataObject_Method[5])) $IDataObject_Method[6] = DllCallbackRegister("IDataObject_GetCanonicalFormatEtc","LONG","PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_GetCanonicalFormatEtc",DllCallbackGetPtr($IDataObject_Method[6])) $IDataObject_Method[7] = DllCallbackRegister("IDataObject_SetData","LONG","PTR;PTR;PTR;BOOL") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_SetData",DllCallbackGetPtr($IDataObject_Method[7])) $IDataObject_Method[8] = DllCallbackRegister("IDataObject_EnumFormatEtc","LONG","PTR;DWORD;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_EnumFormatEtc",DllCallbackGetPtr($IDataObject_Method[8])) $IDataObject_Method[9] = DllCallbackRegister("IDataObject_DAdvise","LONG","PTR;PTR;DWORD;PTR;DWORD") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_DAdvise",DllCallbackGetPtr($IDataObject_Method[9])) $IDataObject_Method[10] = DllCallbackRegister("IDataObject_DUnadvise","LONG","PTR;DWORD") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_DUnadvise",DllCallbackGetPtr($IDataObject_Method[10])) $IDataObject_Method[11] = DllCallbackRegister("IDataObject_EnumDAdvise","LONG","PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"IDataObject_EnumDAdvise",DllCallbackGetPtr($IDataObject_Method[11])) Local $cVariableArray = 0 $cVariableArray = AddClassVariable($cVariableArray,"PTR","pformatetc",0) $cVariableArray = AddClassVariable($cVariableArray,"PTR","pmedium",0) Return NewClass($cMethodArray,$cVariableArray) EndFunc Func IRichEditOleCallback_Create() Local $cMethodArray = 0 $RichEdit_CB_Method[0] = DllCallbackRegister("RichEdit_CB_QueryInterface","LONG","PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_QueryInterface",DllCallbackGetPtr($RichEdit_CB_Method[0])) $RichEdit_CB_Method[1] = DllCallbackRegister("RichEdit_CB_AddRef","LONG","PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_AddRef",DllCallbackGetPtr($RichEdit_CB_Method[1])) $RichEdit_CB_Method[2] = DllCallbackRegister("RichEdit_CB_Release","LONG","PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_Release",DllCallbackGetPtr($RichEdit_CB_Method[2])) $RichEdit_CB_Method[3]= DllCallbackRegister("RichEdit_CB_GetNewStorage","LONG","PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_GetNewStorage",DllCallbackGetPtr($RichEdit_CB_Method[3])) $RichEdit_CB_Method[4] = DllCallbackRegister("RichEdit_CB_GetInPlaceContext","LONG","PTR;PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_GetInPlaceContext",DllCallbackGetPtr($RichEdit_CB_Method[4])) $RichEdit_CB_Method[5]= DllCallbackRegister("RichEdit_CB_ShowContainerUI","LONG","PTR;BOOL") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_ShowContainerUI",DllCallbackGetPtr($RichEdit_CB_Method[5])) $RichEdit_CB_Method[6]= DllCallbackRegister("RichEdit_CB_QueryInsertObject","LONG","PTR;PTR;PTR;LONG") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_QueryInsertObject",DllCallbackGetPtr($RichEdit_CB_Method[6])) $RichEdit_CB_Method[7] = DllCallbackRegister("RichEdit_CB_DeleteObject","LONG","PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_DeleteObject",DllCallbackGetPtr($RichEdit_CB_Method[7])) $RichEdit_CB_Method[8]= DllCallbackRegister("RichEdit_CB_QueryAcceptData","LONG","PTR;PTR;PTR;DWORD;BOOL;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_QueryAcceptData",DllCallbackGetPtr($RichEdit_CB_Method[8])) $RichEdit_CB_Method[9] = DllCallbackRegister("RichEdit_CB_ContextSensitiveHelp","LONG","PTR;BOOL") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_ContextSensitiveHelp",DllCallbackGetPtr($RichEdit_CB_Method[9])) $RichEdit_CB_Method[10] = DllCallbackRegister("RichEdit_CB_GetClipboardData","LONG","PTR;PTR;DWORD;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_GetClipboardData",DllCallbackGetPtr($RichEdit_CB_Method[10])) $RichEdit_CB_Method[11] = DllCallbackRegister("RichEdit_CB_GetDragDropEffect","LONG","PTR;BOOL;DWORD;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_GetDragDropEffect",DllCallbackGetPtr($RichEdit_CB_Method[11])) $RichEdit_CB_Method[12] = DllCallbackRegister("RichEdit_CB_GetContextMenu","LONG","PTR;WORD;PTR;PTR;PTR") $cMethodArray = AddClassMethod($cMethodArray,"RichEdit_CB_GetContextMenu",DllCallbackGetPtr($RichEdit_CB_Method[12])) Local $cVariableArray = 0 $cVariableArray = AddClassVariable($cVariableArray,"int","nCount",0) Return NewClass($cMethodArray,$cVariableArray) EndFunc Func _GUICtrl_RichEdit_Create($hWnd, $sText, $iLeft, $iTop, $iWidth = 150, $iHeight = 150, $iStyle = -1, $iExStyle = -1) If Not IsHWnd($hWnd) Then Return SetError(1, 0, 0) ; Invalid Window handle for _GUICtrlRichEdit_Create 1st parameter If Not IsString($sText) Then Return SetError(2, 0, 0) ; 2nd parameter not a string for _GUICtrlRichEdit_Create If Not __GCR_IsNumeric($iWidth, ">0,-1") Then Return SetError(105, 0, 0) If Not __GCR_IsNumeric($iHeight, ">0,-1") Then Return SetError(106, 0, 0) If Not __GCR_IsNumeric($iStyle, ">=0,-1") Then Return SetError(107, 0, 0) If Not __GCR_IsNumeric($iExStyle, ">=0,-1") Then Return SetError(108, 0, 0) If $iWidth = -1 Then $iWidth = 150 If $iHeight = -1 Then $iHeight = 150 If $iStyle = -1 Then $iStyle = BitOR($ES_WANTRETURN, $ES_MULTILINE) If BitAND($iStyle, $ES_MULTILINE) <> 0 Then $iStyle = BitOR($iStyle, $ES_WANTRETURN) If $iExStyle = -1 Then $iExStyle = 0x200 ; $DS_FOREGROUND $iStyle = BitOR($iStyle, $__UDFGUICONSTANT_WS_CHILD, $__UDFGUICONSTANT_WS_VISIBLE) If BitAND($iStyle, $ES_READONLY) = 0 Then $iStyle = BitOR($iStyle, $__UDFGUICONSTANT_WS_TABSTOP) Local $nCtrlID = __UDF_GetNextGlobalID($hWnd) If @error Then Return SetError(@error, @extended, 0) __GCR_Init() Local $hRichEdit = _WinAPI_CreateWindowEx($iExStyle, $__g_sRTFClassName, "", $iStyle, $iLeft, $iTop, $iWidth, _ $iHeight, $hWnd, $nCtrlID) If $hRichEdit = 0 Then Return SetError(700, 0, False) __GCR_SetOLE_Callback($hRichEdit) _SendMessage($hRichEdit, $__RICHEDITCONSTANT_WM_SETFONT, _WinAPI_GetStockObject($DEFAULT_GUI_FONT), True) _GUICtrlRichEdit_AppendText($hRichEdit, $sText) Return $hRichEdit EndFunc ;==>_GUICtrlRichEdit_Create Func CLSIDFromString($psz) $GUID = DllStructCreate("ulong Data1;ushort Data2;ushort Data3;byte Data4[8]") $Oleerror = DllCall("Ole32.dll","int","CLSIDFromString","WSTR",$psz,"struct*",$GUID) if @error Or $Oleerror[0] <> 0 Then Return SetError(1,0,0) Return SetError(0,0,$Oleerror[2]) EndFunc Func IIDFromString($psz) $GUID = DllStructCreate("ulong Data1;ushort Data2;ushort Data3;byte Data4[8]") $Oleerror = DllCall("Ole32.dll","int","IIDFromString","WSTR",$psz,"struct*",$GUID) if @error Or $Oleerror[0] <> 0 Then Return SetError(1,0,0) Return SetError(0,0,$Oleerror[2]) EndFunc
  12. In the new versions of the autoit language, constant variables have been added in its reference that disrupt the work of the code and these variables are Global Const $RT_ACCELERATOR = 9 Global Const $RT_ANICURSOR = 21 Global Const $RT_ANIICON = 22 Global Const $RT_BITMAP = 2 Global Const $RT_CURSOR = 1 Global Const $RT_DIALOG = 5 Global Const $RT_DLGINCLUDE = 17 Global Const $RT_FONT = 8 Global Const $RT_FONTDIR = 7 Global Const $RT_GROUP_CURSOR = ($RT_CURSOR + 11) Global Const $RT_ICON = 3 Global Const $RT_GROUP_ICON = ($RT_ICON + 11) Global Const $RT_HTML = 23 Global Const $RT_MANIFEST = 24 Global Const $RT_MENU = 4 Global Const $RT_MESSAGETABLE = 11 Global Const $RT_PLUGPLAY = 19 Global Const $RT_RCDATA = 10 Global Const $RT_STRING = 6 Global Const $RT_VERSION = 16 Global Const $RT_VXD = 20 Since these variables already exist in the code The code has been updated and now it works...thanks.
  13. In the new versions of Autoit, the code does not work... The code has been updated... and now it works... Thanks.
  14. Maybe I will do that later ... Now I have other interests that deserve the tool to be a library ... But the problem with using assembly language code is that this code does not work on Windows server systems, I don’t know why… Anyway thank you and for your concern ... greeting.
×
×
  • Create New...