Leaderboard
Popular Content
Showing content with the highest reputation on 11/14/2022 in all areas
-
True, but that means that the AutoIt3 helpfile will be opened for ALL languages, which is not something I would want. EG: test.lua really should open the lua help.1 point
-
Unfortunately not... The "paste" lasts almost 90-100ms on my PC, while the AddPicture-Method runs under 20ms An other advantage of the AddPicture-Method is that you can set the size and rotation of the Picture.1 point
-
My first attempt would be to put the image into clipboard (with GDI+) and paste it in an excel sheet...1 point
-
Hi, one solution is to copy the base64 graphics into memory( aka clipboard) and insert it into the excel sheet #include-once #include <Excel.au3> #include <GDIPlus.au3> #include <Clipboard.au3> _GDIPlus_Startup() FileDelete(@ScriptDir & "\Test Graphic Out.xlsx") ;delete output file Global $Graphic = _Graphic_Base64_Generator("WS-C3750V2-48") ; <- My picture base64 encoded $hClipboard_Bitmap = _GDIPlus_BitmapCreateFromMemory($Graphic, True) ;make bitmap from base64 code $hHBmp_Clipboard = _WinAPI_CopyImage($hClipboard_Bitmap, 0, 0, 0, BitOR($LR_COPYDELETEORG, $LR_COPYRETURNORG)) ;make image from bitmap $ret = _WinAPI_Bitmap2Clipboard($hHBmp_Clipboard) ; copy image to clipboard Global $oExcel = _Excel_Open(False, False, False, True, True) Global $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\Test Graphic.xlsx", True) $oWorkbook.Activesheet.Range("D8").activate ;position of picture $oWorkbook.Activesheet.paste ;paste image into excel sheet _Excel_BookSaveAs($oWorkbook, @ScriptDir & "\Test Graphic Out.xlsx", Default, True) _Excel_BookClose($oWorkbook, True) _Excel_Close($oExcel, False, True) ShellExecute(@ScriptDir & "\Test Graphic Out.xlsx") Func _Graphic_Base64_Generator($sGraphic_Name, $bSaveBinary = False, $sSavePath = @ScriptDir) Local $sGraphic_Raw = "" Switch $sGraphic_Name Case "WS-C3750V2-48" $sGraphic_Raw &= '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' $sGraphic_Raw &= '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' $sGraphic_Raw &= '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' $sGraphic_Raw &= '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' $sGraphic_Raw &= 'H1XD6X8tf8+cZQTcW8h/p1X6AyRzWLPmg+7wCBGinREUCHQrA5Zo4Mclr5rWVTeccOV5ekFX8MBvFeD0tkWkLJEEjrF7z5ZSl9CbW3hHMItM0sp0mRCHIhYB4BWKaw1H7vZfkouERfbTdaXj0EDOimtETfqnCg3zkxs1oNq7OOphOhyD45H8F6L1jbAJOIdIVBd5eIdLC5RGzhuDnTSlTrkHAFQMTOVqWhL+ghYMUe3zqtS+yFhFP7A2TeTWeDrVQ+ig79vQQlXpltcQF4BDrqxxiTYCGPPX3lQRdUGMhfThHh1IgeVAI2MK3EnGubC5WgBb+n3jPlA7SWkLoGgTr1dBwlGqoFE1Vd5JKp3SDosK/kM49w3WLAOLQfo94PMsiXpdYLorc4o4YwxhrnqKGp3ry54L0kVQmDHh8aaUaTARHmUnzlQssPif0YLRDHB4qDigaJa2EE8fes5M/ASBpKhVa6+Bsu4RkrKwRNF+9+pOHCiEqauRdb+Wv+XTJ+uE2z+58PeFMlSHx+aR+ae9eQYCtc0BGcDfuU/kzzQv8LxU0w2asmqUf4PsQ2a94uGkL+PeZ+qymR+gP/vK3WcIwX2MT9Z84foqs4BE2l/EeAyzJf8ANWqf7S5yHC1xsKxRUfN/MW6QY3Cfs38gJ7zA2DhLJiJOGRl6U5ZUJeUY91AWZi7Mkl63xTV7594SMSUxsmRO+ciII3V2UII/feUG0ACDkYq/x4eTkiwS2qFPWn77yPZUHw0go/GGXbqSDFCP7a/Rc6MmofOkAhOCx7x9da6ASITdL/i6GuJsKtCJX+/x842HRrsEuiLie8DlRCdVR91fPeN08LEyJ6Af7nC7kolYmR1n0R56H9iufQqP/PH0WdSgJLFT5r8xQlfz24qcpqA+8psEkY7TQofPnYOg2kFQq89PNs4nncAE0qaKTP7ybfgbGTS0EL9FHs/RbUAcAAMId75zcXABf62YkQ694fhjKylYLv79bwYIADWCAixihRlf3nFEKPDZl/pnZjW3DuA/+Oy5UlCUBFmX3giVIIf7fB7fOu4NMo/SDXBmvUZhPEvXTDSOHI7EqUNFQKO7yg7CaXEvHGfE4aRAqYVIEBVYYq8fXUGtCphwMfEzoILxiynyYz45kkKE1qgAbud7QGp7vAK113XodAtgA8NTDFmHGU6LIfnt6fOHFXOikGLFL7vFJQHwGgGj4e9eMusOQHhMhnMRYHglAgVokWHPR4CbkRPQnzx/O/h08BgIB/Dk9cZvIeAsAvuHf63Dlci/9dYnatGkeRrgzXqP7pWHqaw03DmwKJVDRQRbyC+hZolomMnnW8+rVtYACrc4F8U6RJlSH1rvBnAkghBu3F96w1T6QhHAAkgTzOAGcDQkMr4cdKd2QRQkLVv0r7vC39Cx4HfSzgjQgG/53//Z' EndSwitch Return Binary(_Graphic_WinAPI_Base64Decode($sGraphic_Raw)) EndFunc ;==>_Graphic_Base64_Generator Func _Graphic_WinAPI_Base64Decode($sB64String) Local $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "ptr", 0, "dword*", 0, "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(1, 0, "") Local $bBuffer = DllStructCreate("byte[" & $aCrypt[5] & "]") $aCrypt = DllCall("Crypt32.dll", "bool", "CryptStringToBinaryA", "str", $sB64String, "dword", 0, "dword", 1, "struct*", $bBuffer, "dword*", $aCrypt[5], "ptr", 0, "ptr", 0) If @error Or Not $aCrypt[0] Then Return SetError(2, 0, "") Return DllStructGetData($bBuffer, 1) EndFunc ;==>_Graphic_WinAPI_Base64Decode Func _WinAPI_Bitmap2Clipboard($hHBitmap) If Not _ClipBoard_Open(0) Then Return 1 If Not _ClipBoard_Empty() Then Return 2 Local Const $hCP = _ClipBoard_SetDataEx($hHBitmap, $CF_BITMAP) If Not $hCP Or @error Then Return 3 _ClipBoard_Close() Return 0 EndFunc ;==>_WinAPI_Bitmap2Clipboard1 point
-
Local $unreliable_data = DllStructCreate('char[16]') ; create container within the scope where it's used! DllStructSetData($unreliable_data,1,DllStructGetData(parseStruct(createStruct()),1)) ; get contents immediately Sleep(1000) ConsoleWrite(DllStructGetData($unreliable_data,1) & @CRLF) ; works Func createStruct() Local $struct = DllStructCreate('char[16]') DllStructSetData($struct,1,'hello world') Return $struct EndFunc Func parseStruct($struct) Return DllStructCreate('char msg[16]',DllStructGetPtr($struct)) EndFunc Simple rule: Create containers within the scope where they are used (and not in subsidiary scopes). Even if the language allows you to break this rule, you should expect trouble if you do. And if you must fill/edit a (multi-element) struct in a lower-level function, then parse it ByRef (so no needless copies are made) : Local $reliable_data = DllStructCreate('char[16];int;float') parseStruct($reliable_data) ; using ByRef ConsoleWrite(DllStructGetData($reliable_data,1) & @CRLF) ConsoleWrite(DllStructGetData($reliable_data,2) & @CRLF) ConsoleWrite(DllStructGetData($reliable_data,3) & @CRLF) Func fillStruct(ByRef $struct) DllStructSetData($struct,1,'hello world') DllStructSetData($struct,2,123) DllStructSetData($struct,3,0.456) ; not exactly representable as a float, but you get the idea EndFunc Func parseStruct(ByRef $struct) ; completely pointless intermediary func, just for illustration fillStruct($struct) EndFunc1 point