Jump to content

Recommended Posts

Posted

Here is a more Advanced example using the  Ribbon .NET Assembly using  CLR Library

Features :
• Easy to use (WYSIWYG)
• Compatible with .net 2.0 and above
• Easy to integrate in an application
• Support different layout Themes : Office 2007 / 2010 / 2013
 

Documentation :

New Site : https://github.com/RibbonWinForms/RibbonWinForms

Old Site : https://www.codeproject.com/Articles/364272/Easily-Add-a-Ribbon-into-a-WinForms-Application-Cs?fid=1704255&df=90&mpp=25&sort=Position&view=Normal&spc=Relaxed&fr=101&prof=True

Movie : shows how to use it in VS using C#

 

Result :

image-3.png

 image-4.png

CLR using the PS Automation Assembly :

#AutoIt3Wrapper_UseX64=y

#include "CLR.Au3"
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>

Local $str = "Q0xTCiMgaHR0cHM6Ly9naXRodWIuY29tL1JpYmJvbldpbkZvcm1zL1JpYmJvbldpbkZvcm1zCiMgc2VlIGhlcmUgZm9yIHRpcHMgCiMgaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1PUHJqN2MxQ1lJZwoKJFJ1bnNwYWNlID0gW3J1bnNwYWNlZmFjdG9yeV06OkNyZWF0ZVJ1bnNwYWNlKCkKCiRSdW5zcGFjZS5BcGFydG1lbnRTdGF0ZSA9ICJTVEEiICMgQ2hhbmdlIGhlcmUgIQokUnVuc3BhY2UuVGhyZWFkT3B0aW9ucyA9ICJSZXVzZVRocmVhZCIKCiRQb3dlclNoZWxsID0gW3Bvd2Vyc2hlbGxdOjpDcmVhdGUoKQoKJFBvd2VyU2hlbGwuUnVuc3BhY2UgPSAkUnVuc3BhY2UKCiRSdW5zcGFjZS5PcGVuKCkKCiRob3N0LlJ1bnNwYWNlLlRocmVhZE9wdGlvbnMudmFsdWVfXwokUnVuc3BhY2UuUnVuc3BhY2VTdGF0ZUluZm8KCiMgU3RhcnQgCiRzdHJpbmcgPSB7IAoKQWRkLVR5cGUgLVBhdGggKCIkUFdEXFN5c3RlbS5XaW5kb3dzLkZvcm1zLlJpYmJvbjM1LmRsbCIpCiRmb3JtID0gTmV3LU9iamVjdCBTeXN0ZW0uV2luZG93cy5Gb3Jtcy5Gb3JtCiRmb3JtLlNpemUgPSBOZXctT2JqZWN0IFN5c3RlbS5EcmF3aW5nLlNpemUoNjAwLDMwMCkKJGZvcm0uVG9wTW9zdCA9ICR0cnVlCiRmb3JtLlN0YXJ0UG9zaXRpb24gPSAiQ2VudGVyU2NyZWVuIgoKJGZvcm0uQXV0b1NjYWxlbW9kZSA9ICJGb250IiAjIEVudW0gRm9udCBvciBEUEkKJGZvcm0uQXV0b1NpemUgPSAkdHJ1ZQokZm9ybS5BdXRvU2l6ZU1vZGUgPSAiR3Jvd09ubHkiICAjICJHcm93QW5kU2hyaW5rIgoKJGZvcm0uU3VzcGVuZExheW91dCgpCgojIE9iamVjdHMKJHJpYmJvbiA9IE5ldy1PYmplY3QgU3lzdGVtLldpbmRvd3MuRm9ybXMuUmliYm9uCiR0YWIxID0gTmV3LW9iamVjdCBTeXN0ZW0uV2luZG93cy5Gb3Jtcy5SaWJib25UYWIKJHRhYjIgPSBOZXctb2JqZWN0IFN5c3RlbS5XaW5kb3dzLkZvcm1zLlJpYmJvblRhYgokTWVudUl0ZW0xID0gTmV3LW9iamVjdCBTeXN0ZW0uV2luZG93cy5Gb3Jtcy5SaWJib25PcmJNZW51SXRlbQokcGFuZWwxID0gTmV3LW9iamVjdCBTeXN0ZW0uV2luZG93cy5Gb3Jtcy5SaWJib25QYW5lbAokYnV0dG9uMSA9IE5ldy1vYmplY3QgU3lzdGVtLldpbmRvd3MuRm9ybXMuUmliYm9uQnV0dG9uCgojICRyaWJib24gfCBnZXQtbWVtYmVyCiMgJHJpYmJvbi5QYXJlbnQKCiMgcmliYm9uMQokcmliYm9uLkZvbnQgPSBOZXctT2JqZWN0IFN5c3RlbS5EcmF3aW5nLkZvbnQoIlNlZ29lIFVJIiwgOSk7CiRyaWJib24uTG9jYXRpb24gPSBOZXctT2JqZWN0IFN5c3RlbS5EcmF3aW5nLlBvaW50KDAsIDApOwokcmliYm9uLk1pbmltaXplZCA9ICRmYWxzZTsKJHJpYmJvbi5OYW1lID0gInJpYmJvbjEiOwoKJHJpYmJvbi5PcmJTdHlsZSA9ICJPZmZpY2VfMjAwNyIgIyAiT2ZmaWNlXzIwMTAiIG9yICJPZmZpY2VfMjAxMyIKIyRyaWJib24uVmlzaWJsZSA9ICR0cnVlCgokcmliYm9uLk9yYkRyb3BEb3duLkJvcmRlclJvdW5kbmVzcyA9IDg7CiRyaWJib24uT3JiRHJvcERvd24uTG9jYXRpb24gPSBOZXctT2JqZWN0IFN5c3RlbS5EcmF3aW5nLlBvaW50KDAsIDApOwokcmliYm9uLk9yYkRyb3BEb3duLk1lbnVJdGVtcy5BZGQoJE1lbnVJdG"
      $str &= "VtMSk7CiRyaWJib24uT3JiRHJvcERvd24uTmFtZSA9ICJEcm9wIjsKJHJpYmJvbi5PcmJEcm9wRG93bi5TaXplID0gTmV3LU9iamVjdCBTeXN0ZW0uRHJhd2luZy5TaXplKDUyNywgMTE2KTsKJHJpYmJvbi5PcmJEcm9wRG93bi5UYWJJbmRleCA9IDA7CiRyaWJib24uT3JiSW1hZ2UgPSAkbnVsbDsKJHJpYmJvbi5SaWJib25UYWJGb250ID0gTmV3LU9iamVjdCBTeXN0ZW0uRHJhd2luZy5Gb250KCJUcmVidWNoZXQgTVMiLCA5KTsKJHJpYmJvbi5TaXplID0gTmV3LU9iamVjdCBTeXN0ZW0uRHJhd2luZy5TaXplKDEyODAsIDIwMCk7CiRyaWJib24uVGFiSW5kZXggPSAwOwokcmliYm9uLlRhYnMuQWRkKCRUYWIxKTsKJHJpYmJvbi5UYWJzTWFyZ2luID0gTmV3LU9iamVjdCBTeXN0ZW0uV2luZG93cy5Gb3Jtcy5QYWRkaW5nKDEyLCAyNiwgMjAsIDApOwokcmliYm9uLlRleHQgPSAicmliYm9uMSI7CiRyaWJib24uVGhlbWVDb2xvciA9ICJCbHVlIjsKJHJpYmJvbi5IZWlnaHQgPSAxNTAKCiMgcmliYm9uT3JiTWVudUl0ZW0xCiRNZW51SXRlbTEuRHJvcERvd25BcnJvd0RpcmVjdGlvbiA9ICJMZWZ0IjsKJE1lbnVJdGVtMS5JbWFnZSA9IFtTeXN0ZW0uRHJhd2luZy5JbWFnZV06OkZyb21GaWxlKCIkUFdEXEFCRi1PdXRsb29rLUV4cHJlc3MtQmFja3VwLmdpZiIpIAojICgoU3lzdGVtLkRyYXdpbmcuSW1hZ2UpKHJlc291cmNlcy5HZXRPYmplY3QoInJpYmJvbk9yYk1lbnVJdGVtMS5JbWFnZSIpKSk7CiRNZW51SXRlbTEuU21hbGxJbWFnZSA9IFtTeXN0ZW0uRHJhd2luZy5JbWFnZV06OkZyb21GaWxlKCIkUFdEXEFCRi1PdXRsb29rLUV4cHJlc3MtQmFja3VwLmdpZiIpIAojICgoU3lzdGVtLkRyYXdpbmcuSW1hZ2UpKHJlc291cmNlcy5HZXRPYmplY3QoInJpYmJvbk9yYk1lbnVJdGVtMS5TbWFsbEltYWdlIikpKTsKJE1lbnVJdGVtMS5UZXh0ID0gInJpYmJvbk9yYk1lbnVJdGVtMSI7CgojIHJpYmJvblRhYjEKJFRhYjEuUGFuZWxzLkFkZCgkcGFuZWwxKTsKJFRhYjEuVGV4dCA9ICJyaWJib25UYWIxIjsKCiMgcmliYm9uUGFuZWwxCiRQYW5lbDEuSXRlbXMuQWRkKCRCdXR0b24xKTsKJFBhbmVsMS5UZXh0ID0gInJpYmJvblBhbmVsMSI7CgojIHJpYmJvbkJ1dHRvbjF6enp6enoKJEJ1dHRvbjEuSW1hZ2UgPSBbU3lzdGVtLkRyYXdpbmcuSW1hZ2VdOjpGcm9tRmlsZSgiJFBXRFxTYXZlSXRlbS5wbmciKSAKIygoU3lzdGVtLkRyYXdpbmcuSW1hZ2UpKHJlc291cmNlcy5HZXRPYmplY3QoInJpYmJvbkJ1dHRvbjEuSW1hZ2UiKSkpOwokQnV0dG9uMS5TbWFsbEltYWdlID0gW1N5c3RlbS5EcmF3aW5nLkltYWdlXTo6RnJvbUZpbGUoIiRQV0RcU2F2ZUl0ZW0ucG5nIikgCiMgKChTeXN0ZW0uRHJhd2luZy5JbWFnZSkocmVzb3VyY2VzLkdldE9iamVjdCgicmliYm9uQnV0dG9uMS5TbWFsbEltYWdlIikpKTsKJEJ1dHRvbjEuVGV4dCA9ICJyaWJib25CdXR0b24xIjsKCiRCdXR0b24xLmFkZF9jbGljayh7CiAgICAkbWVzc2FnZWJveHJlcGx5ID0gW1N5c3RlbS5XaW5kb3dzLkZvcm1zLk1lc3NhZ2VCb3hdOjpTaG93KCJEbyB5b3Ugd2lzaCB0byBjb250aW51ZSA/IiwiV2VsY29tZSIsMykKfSkKCiMgcmliYm9uVGFiMgokVGFiMi5UZXh0ID0gInJpYmJvblRhYjIiOwoKJGZvcm0uQ29udHJvbHMuQWRkKCRyaWJib24pCgokZm9ybS5SZXN1bWVMYXlvdXQoJGZhbHNlKQoKJGZvcm0uU2hvd0RpYWxvZygpCn0KCiNFbmQKClt2b2lkXSRQb3dlclNoZWxsLkFkZFNjcmlwdCgkc3RyaW5nKQoKJFBvd2VyU2hlbGwuSW52b2tlKCkgCgokUG93ZXJTaGVsbC5FbmRJbnZva2UKCiRSdW5zcGFjZS5DbG9zZSgpCiRQb3dlcnNoZWxsLkRpc3Bvc2UoKQ=="
ConsoleWrite($str & @CRLF)

$str = _Base64Decode($str)

_Run_PSHost_Script(BinaryToString($str,1))


Func _Run_PSHost_Script($PSScript)
    Local $oAssembly = _CLR_LoadLibrary("System.Management.Automation")
    ConsoleWrite("!$oAssembly: " & IsObj($oAssembly) & @CRLF)

    ; Create Object
    Local $pAssemblyType = 0
    $oAssembly.GetType_2("System.Management.Automation.PowerShell", $pAssemblyType)
    ConsoleWrite("$pAssemblyType = " & Ptr($pAssemblyType) & @CRLF)

    Local $oActivatorType = ObjCreateInterface($pAssemblyType, $sIID_IType, $sTag_IType)
    ConsoleWrite("IsObj( $oAssemblyType ) = " & IsObj($oActivatorType) & @TAB & @CRLF)

    ; Create Object
    Local $pObjectPS = 0
    $oActivatorType.InvokeMember_3("Create", 0x158, 0, 0, 0, $pObjectPS)
    ConsoleWrite("IsObject: " & IsObj($pObjectPS) & @TAB & "$pObject: " & ObjName($pObjectPS) & @CRLF)


; <<<<<<<<<<<<<<<<<<< PS COMMAND HERE >>>>>>>>>>>>>>>>>>>>
    $pObjectPS.AddScript($PSScript) ; Add Script here
;~  ConsoleWrite($PSScript & @CRLF)

    $objAsync = $pObjectPS.BeginInvoke ; (2); ($oActivatorType,$oActivatorType)

    While $objAsync.IsCompleted = False
;~          ConsoleWrite($objAsync.IsCompleted & @CRLF)
        ContinueLoop
    WEnd
        ConsoleWrite("Completed : " & $objAsync.IsCompleted & @CRLF)

    $objPsCollection = $pObjectPS.EndInvoke($objAsync)
;~  ConsoleWrite("$objPsCollection: " & IsObj($objPsCollection) & @TAB & "$objPsCollection: " & ObjName($objPsCollection) & " - " & ObjName($objPsCollection,6) & " - " & ObjName($objPsCollection,3) & @CRLF)

EndFunc


Func _Base64Decode($input_string)

    Local $struct = DllStructCreate("int;int;int")
    Local $dwFlags = 1 ; Base64, no headers

    DllCall("Crypt32.dll", "int", "CryptStringToBinary", _
            "str", $input_string, _
            "int", StringLen($input_string), _
            "int", $dwFlags, _
            "ptr", 0, _
            "ptr", DllStructGetPtr($struct, 1), _
            "ptr", DllStructGetPtr($struct, 2), _
            "ptr", DllStructGetPtr($struct, 3))

    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")

    DllCall("Crypt32.dll", "int", "CryptStringToBinary", _
            "str", $input_string, _
            "int", StringLen($input_string), _
            "int", $dwFlags, _
            "ptr", DllStructGetPtr($a), _
            "ptr", DllStructGetPtr($struct, 1), _
            "ptr", DllStructGetPtr($struct, 2), _
            "ptr", DllStructGetPtr($struct, 3))

    Return DllStructGetData($a, 1)

EndFunc   ;==>_Base64Decode

 

Downloads :

RB Assembly here :

https://github.com/RibbonWinForms/RibbonWinForms/releases

Many thanks for the developer of the Ribbon .NET Assembly !

 

Enjoy !

ptrex

 

Posted

Here is an other more advanced Example that uses the SSRS Reporting .NET Assembly using  CLR Library

Features :

• Multiple Data Sources available
• Can run in REMOTE or LOCAL Mode
• Export possible to XLS(X) / DOC(X) / PDF

Result :

image-2.png

image-2.png

image-1.png

CLR using the PS Automation Assembly :

#AutoIt3Wrapper_UseX64=y

#include "..\CLR.Au3"
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>

Local $str = _Base64Decode("JFJ1bnNwYWNlID0gW3J1bnNwYWNlZmFjdG9yeV06OkNyZWF0ZVJ1bnNwYWNlKCkNCg0KJFJ1bnNwYWNlLkFwYXJ0bWVudFN0YXRlID0gIlNUQSIgIyBDaGFuZ2UgaGVyZSAhDQokUnVuc3BhY2UuVGhyZWFkT3B0aW9ucyA9ICJSZXVzZVRocmVhZCINCg0KJFBvd2VyU2hlbGwgPSBbcG93ZXJzaGVsbF06OkNyZWF0ZSgpDQoNCiRQb3dlclNoZWxsLnJ1bnNwYWNlID0gJFJ1bnNwYWNlDQoNCiRSdW5zcGFjZS5PcGVuKCkNCg0KJHN0cmluZyA9IHsgDQpBZGQtVHlwZSAtUGF0aCAiQzpcV0lORE9XU1xhc3NlbWJseVxHQUNfTVNJTFxNaWNyb3NvZnQuUmVwb3J0Vmlld2VyLldpbkZvcm1zXDEyLjAuMC4wX184OTg0NWRjZDgwODBjYzkxXE1pY3Jvc29mdC5SZXBvcnRWaWV3ZXIuV2luRm9ybXMuZGxsIg0KQWRkLVR5cGUgLVBhdGggIkM6XF9cQXBwc1xfUG93ZXJTaGVsbFxfR1VJIEZvcm1zXC5ORVQgU1NSUyBSZXBvcnQgU2VydmVyXFN5c3RlbS5EYXRhLlNRTGl0ZS5kbGwiDQojIEFkZC1UeXBlIC1QYXRoICJDOlxQcm9ncmFtRGF0YVxMSU5RUGFkXERyaXZlcnNcRGF0YUNvbnRleHRcNC4wXElRRHJpdmVyICg1YjU5NzI2NTM4YTQ5Njg0KVx4NjRcU3lzdGVtLkRhdGEuU1FMaXRlLmRsbCINCg0KICRjb24gPSBOZXctT2JqZWN0IC1UeXBlTmFtZSBTeXN0ZW0uRGF0YS5TUUxpdGUuU1FMaXRlQ29ubmVjdGlvbg0KICRjb24uQ29ubmVjdGlvblN0cmluZyA9ICJEYXRhIFNvdXJjZT1DOlxfXEFwcHNcX0RvdE5ldCBTY3JpcHRpbmdcLk5FVCBTUUxpdGUgTGlicmFyeVxub3J0aHdpbmRFRi5kYiINCiAkY29uLk9wZW4oKQ0KDQogJHNxbCA9ICRjb24uQ3JlYXRlQ29tbWFuZCgpDQogJHNxbC5Db21tYW5kVGV4dCA9ICJTRUxFQ1QgKiBGUk9NIEN1c3RvbWVycyINCiAkYWRhcHRlciA9IE5ldy1PYmplY3QgLVR5cGVOYW1lIFN5c3RlbS5EYXRhLlNRTGl0ZS5TUUxpdGVEYXRhQWRhcHRlciAkc3FsDQogJGRhdGEgPSBOZXctT2JqZWN0IFN5c3RlbS5EYXRhLkRhdGFTZXQNCiBbdm9pZF0kYWRhcHRlci5GaWxsKCRkYXRhKQ0KDQokcnYgPSBOZXctT2JqZWN0IE1pY3Jvc29mdC5SZXBvcnRpbmcuV2luRm9ybXMuUmVwb3J0Vmlld2VyOw0KIyAkcnYuU2VydmVyUmVwb3J0LlJlcG9ydFNlcnZlckNyZWRlbnRpYWxzLk5ldHdvcmtDcmVkZW50aWFscyA9ICRjcmVkZW50aWFsDQogICAgICAgICAgDQoNCiMgaHR0cHM6Ly93d3cuY29kZXByb2plY3QuY29tL1F1ZXN0aW9ucy81MTE2MzEvUmVwb3J0Vmlld2VycGx1c3JlbmRlcmluZ3BsdXNwcm9ibGVtICAgICAgICAgDQogICAgICAgICAgICANCiRydi5Qcm9jZXNzaW5nTW9kZSA9ICJMb2NhbCIgICAgICAgICAgICANCiRydi5Mb2NhbFJlcG9ydC5SZXBvcnRQYXRoID0gIkM6XF9cQXBwc1xfUG93ZXJTaGVsbFxfTVMgU1FMIFJlcG9ydGluZyBTZXJ2ZXJcQ3VzdG9tZXJzLnJkbCINCndyaXRlLWhvc3QgJHJ2LkxvY2FsUmVwb3J0LkdldERhdGFTb3VyY2VOYW1lcygpDQoNCiRkcyA9IE5ldy1vYmplY3QgTWljcm9zb2Z0LlJlcG9ydGluZy5XaW5Gb3Jtcy5SZXBvcnREYXRhU291cmNlDQokZHMuTmFtZSA9ICJEYXRhU2V0MSIgICMgJHJ2LkxvY2FsUmVwb3J0LkdldERhdGFTb3VyY2VOYW1lcygpICMgIkRhdGFTZXQxIg0KJGRzLlZhbHVlID0gJGRhdGEudGFibGVzWzBdDQoNCiMgJHJ2LlJlc2V0KCk7DQokcnYuTG9jYWxSZXBvcnQuRGF0YVNvdXJjZXMuQ2xlYXIoKQ0KDQokcnYuTG9jYWxSZXBvcnQuRGF0YVNvdXJjZXMuQWRkKCRkcykNCg0KJHJ2LkxvY2FsUmVwb3J0LlJlZnJlc2goKTsNCiRydi5SZWZyZXNoUmVwb3J0KCkNCg0KJHJ2LkhlaWdodCA9IDgwMCAgICAgICAgICAgIA0KJHJ2LldpZHRoID0gMTIwMCAgICAgICAgICAgIA0KJHJ2LkRvY2sgPSBbU3lzdGVtLldpbmRvd3MuRm9ybXMuRG9ja1N0eWxlXTo6RmlsbA0KICAgICAgIA0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICANCiNTaG93IGFzIERpYWxvZyBVc2luZyBXaW5kb3dzIEZvcm0gICAgICAgICAgICANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgICAgIA0KI2NyZWF0ZSBhIG5ldyBmb3JtICAgICAgICAgICAgDQokZm9ybSA9IE5ldy1PYmplY3QgV2luZG93cy5Gb3Jtcy5Gb3JtICAgICAgICAgICAgDQogICAgICAgICAgICAgDQojd2UncmUgZ29pbmcgdG8gbWFrZSBpdCBqdXN0IHNsaWdodGx5IGJpZ2dlciB0aGFuICAgICAgICAgICAgIA0KJGZvcm0uSGVpZ2h0ID0gODEwICAgICAgICAgICAgDQokZm9ybS5XaWR0aD0gMTIxMCAgICAgICAgICAgIA0KJGZvcm0uQ29udHJvbHMuQWRkKCRydikgICAgICAgICAgICANCiRydi5TaG93KCkgICAgICAgICAgICANCiRmb3JtLlNob3dEaWFsb2coKSAgICAgICAgICAgIA0KDQoNCiRzcWwuRGlzcG9zZSgpDQokY29uLkNsb3NlKCkNCn0NCg0KDQpbdm9pZF0kUG93ZXJTaGVsbC5BZGRTY3JpcHQoJHN0cmluZykNCg0KJFBvd2VyU2hlbGwuSW52b2tlKCkgDQo=")


_Run_PSHost_Script(BinaryToString($str,1))


Func _Run_PSHost_Script($PSScript)
    Local $oAssembly = _CLR_LoadLibrary("System.Management.Automation")
    ConsoleWrite("!$oAssembly: " & IsObj($oAssembly) & @CRLF)

    ; Create Object
    Local $pAssemblyType = 0
    $oAssembly.GetType_2("System.Management.Automation.PowerShell", $pAssemblyType)
    ConsoleWrite("$pAssemblyType = " & Ptr($pAssemblyType) & @CRLF)

    Local $oActivatorType = ObjCreateInterface($pAssemblyType, $sIID_IType, $sTag_IType)
    ConsoleWrite("IsObj( $oAssemblyType ) = " & IsObj($oActivatorType) & @TAB & @CRLF)

    ; Create Object
    Local $pObjectPS = 0
    $oActivatorType.InvokeMember_3("Create", 0x158, 0, 0, 0, $pObjectPS)
    ConsoleWrite("IsObject: " & IsObj($pObjectPS) & @TAB & "$pObject: " & ObjName($pObjectPS) & @CRLF)


; <<<<<<<<<<<<<<<<<<< PS COMMAND HERE >>>>>>>>>>>>>>>>>>>>
    $pObjectPS.AddScript($PSScript) ; Add Script here
;~  ConsoleWrite($PSScript & @CRLF)

    $objAsync = $pObjectPS.BeginInvoke ; (2); ($oActivatorType,$oActivatorType)

    While $objAsync.IsCompleted = False
;~          ConsoleWrite($objAsync.IsCompleted & @CRLF)
        ContinueLoop
    WEnd
        ConsoleWrite("Completed : " & $objAsync.IsCompleted & @CRLF)

    $objPsCollection = $pObjectPS.EndInvoke($objAsync)
;~  ConsoleWrite("$objPsCollection: " & IsObj($objPsCollection) & @TAB & "$objPsCollection: " & ObjName($objPsCollection) & " - " & ObjName($objPsCollection,6) & " - " & ObjName($objPsCollection,3) & @CRLF)

EndFunc


Func _Base64Decode($input_string)

    Local $struct = DllStructCreate("int;int;int")
    Local $dwFlags = 1 ; Base64, no headers

    DllCall("Crypt32.dll", "int", "CryptStringToBinary", _
            "str", $input_string, _
            "int", StringLen($input_string), _
            "int", $dwFlags, _
            "ptr", 0, _
            "ptr", DllStructGetPtr($struct, 1), _
            "ptr", DllStructGetPtr($struct, 2), _
            "ptr", DllStructGetPtr($struct, 3))

    Local $a = DllStructCreate("byte[" & DllStructGetData($struct, 1) & "]")

    DllCall("Crypt32.dll", "int", "CryptStringToBinary", _
            "str", $input_string, _
            "int", StringLen($input_string), _
            "int", $dwFlags, _
            "ptr", DllStructGetPtr($a), _
            "ptr", DllStructGetPtr($struct, 1), _
            "ptr", DllStructGetPtr($struct, 2), _
            "ptr", DllStructGetPtr($struct, 3))

    Return DllStructGetData($a, 1)

EndFunc   ;==>_Base64Decode

Downloads :

SSRS Assembly here :

2008 / 2010 / 2012 or 2015 

Many thanks for the developer(s) of the SSRS .NET Assembly !

 

Enjoy !

ptrex

  • 2 months later...
Posted (edited)

I guess you didn't read that link that was posted to you earlier. is it on the list of things to do? most likely not. there are other UDFs that allow you to run .NET code as well as load DLLs

Edited by Earthshine

My resources are limited. You must ask the right questions

 

Posted

and, you can write them and submit them for others to use, thereby extending AutoIt for many others! UDFs are great. Not all need to be, nor should be rolled into it.

My resources are limited. You must ask the right questions

 

  • 3 months later...
  • 3 years later...
  • 4 months later...
Posted

Hello,

I need to validate domain credentials.

I use PS code :

Add-Type -AssemblyName System.DirectoryServices.AccountManagement
$DS = New-Object System.DirectoryServices.AccountManagement.PrincipalContext('domain')
$DS.ValidateCredentials($UserName, $Password, "Negotiate")

I try to do same thing in AutoIt but it doesn't work :

#include <CLR.au3>
#include <CLR Constants.au3>

test()

Func test()
    Local $oAssembly = _CLR_LoadLibrary("System.DirectoryServices.AccountManagement")
     ConsoleWrite("$oAssembly: " & IsObj($oAssembly) & @CRLF)

    Local $oTest = _CLR_CreateObject($oAssembly, "System.DirectoryServices.AccountManagement.PrincipalContext")
    ConsoleWrite("IsObj = " & IsObj($oTest) & @CRLF )

    Local $oTest2 = _CLR_CreateObject($oAssembly, "System.DirectoryServices.AccountManagement.PrincipalContext", "domain")
    ConsoleWrite("IsObj = " & IsObj($oTest2) & @CRLF )
EndFunc   ;==>test

Do you know why ?
image.png.4ea3a70abe509c98395989e0e748f56e.pngimage.png.eb328334d3c0eb74052eb926574b1363.png

  • 1 year later...

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
×
×
  • Create New...