Popular Post ptrex Posted February 23, 2018 Popular Post Share Posted February 23, 2018 (edited) Windows Image Acquisition Object https://msdn.microsoft.com/en-us/library/windows/desktop/ms630826(v=vs.85).aspx#SharedSample011 The "WIA.Vector" COM Example posted earlier, Object example led me to other WIA COM Objects local $v $v = ObjCreate("WIA.vector") $v.Add(1) $v.Add(42) $v.Add(3) $v.Remove(1) $v.Remove(2) ConsoleWrite("$v(1) = " & $v(1) & @CRLF) $v.Clear $v.Add("This") $v.Add("Is") $v.Add("Cool") $v.Remove(1) $v.Remove(1) ConsoleWrite("$v(1) = " & $v(1) & @CRLF) Here are some quick and dirty examples I converted found on the net. Image Convert Format expandcollapse popup; $lFormat = 2 ; 0 = BMP, 1 = GIF, 2 = JPEG, 3 = PNG, 4 = TIFF $sInFile = "C:\Temp\Logo.jpg" $sOutFile = @ScriptDir WIA_ConvertImage($sInFile,$sOutFile, 4) Func WIA_ConvertImage($sInitialImage, _ $sOutputImage, _ $lFormat, _ $lQuality = 85) Select Case $lFormat = 0 $sFormatID = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}" $sExt = "BMP" Case $lFormat = 1 $sFormatID = "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}" $sExt = "GIF" Case $lFormat = 2 $sFormatID = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}" $sExt = "JPEG" Case $lFormat = 3 $sFormatID = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}" $sExt = "PNG" Case $lFormat = 4 $sFormatID = "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}" $sExt = "TIFF" EndSelect If $lQuality > 100 Then $lQuality = 100 $oWIA = ObjCreate("WIA.ImageFile") $oIP = ObjCreate("WIA.ImageProcess") $oIP.Filters.Add ($oIP.FilterInfos("Convert").FilterID) $oIP.Filters(1).Properties("FormatID") = $sFormatID $oIP.Filters(1).Properties("Quality") = $lQuality $oWIA.LoadFile($sInitialImage) ; --- $oWIA = $oIP.Apply($oWIA) If FileExists($sOutputImage & "\OutFile." & $sExt) Then FileDelete($sOutputImage & "\OutFile." & $sExt) EndIf $oWIA.SaveFile ($sOutputImage & "\OutFile." & $sExt) ConsoleWrite("File Saved : " & $sOutputImage & "\OutFile." & $sExt & @CRLF) EndFunc Image Resize $sInFile = "C:\Temp\Test.jpg" $sOutFile = @ScriptDir & "\Test.jpg" WIA_ResizeImage($sInFile,$sOutFile,100,200) Func WIA_ResizeImage($sInitialImage, _ $sResizedImage, _ $lMaximumWidth, _ $lMaximumHeight) $oWIA = ObjCreate("WIA.ImageFile") $oIP = ObjCreate("WIA.ImageProcess") $oIP.Filters.Add ($oIP.FilterInfos("Scale").FilterID) $oIP.Filters(1).Properties("MaximumWidth") = $lMaximumWidth $oIP.Filters(1).Properties("MaximumHeight") = $lMaximumHeight $oWIA.LoadFile($sInitialImage) $oWIA = $oIP.Apply($oWIA) If FileExists($sOutFile) Then FileDelete($sOutFile) EndIf $oWIA.SaveFile($sResizedImage) EndFunc Image File Properties expandcollapse popuplocal $Img = ObjCreate("WIA.ImageFile") ; $Img.LoadFile ( "C:\Temp\Plastiflex Logo New.jpg") $Img.LoadFile (@ScriptDir & "\Vector.bmp") local $s = "Width = " & $Img.Width & @CrLf _ & "Height = " & $Img.Height & @CrLf _ & "Depth = " & $Img.PixelDepth & @CrLf _ & "HorizontalResolution = " & $Img.HorizontalResolution & @CrLf _ & "VerticalResolution = " & $Img.VerticalResolution & @CrLf _ & "FrameCount = " & $Img.FrameCount & @CrLf ;ConsoleWrite($s & @CRLF) If $Img.IsIndexedPixelFormat then $s = $s & "Pixel data contains palette indexes" & @CrLf EndIf If $Img.IsAlphaPixelFormat then $s = $s & "Pixel data has alpha information" & @CrLf EndIf If $Img.IsExtendedPixelFormat then $s = $s & "Pixel data has extended color information (16 bit/channel)" & @CrLf EndIf If $Img.IsAnimated then $s = $s & "Image is animated" & @CrLf EndIf If $Img.Properties.Exists("40091") then $v = $Img.Properties("40091").Value $s = $s & "Title = " & $v & @CrLf EndIf If $Img.Properties.Exists("40092") then $v = $Img.Properties("40092").Value $s = $s & "Comment = " & $v & @CrLf EndIf If $Img.Properties.Exists("40093") then $v = $Img.Properties("40093").Value $s = $s & "Author = " & $v & @CrLf EndIf If $Img.Properties.Exists("40094") then $v = $Img.Properties("40094").Value $s = $s & "Keywords = " & $v & @CrLf EndIf If $Img.Properties.Exists("40095") then $v = $Img.Properties("40095").Value $s = $s & "Subject = " & $v & @CrLf EndIf ConsoleWrite($s & @CRLF) Local $IP = ObjCreate("WIA.ImageProcess") For $fi In $IP.FilterInfos $s = $fi.Name & @CRLF & _ "==================================================" & @CRLF & _ $fi.Description ConsoleWrite( $s & @CRLF) Next Image Rotate expandcollapse popup; Initialize error handler $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") $sInFile = "C:\Temp\Logo.jpg" $sOutFile = @ScriptDir & "\Test.jpg" WIA_RotateImage($sInFile,$sOutFile,90) Func WIA_RotateImage($sInitialImage,$sRotatedImage, $sDegrees) Local $Img = ObjCreate("WIA.ImageFile") Local $oIP = ObjCreate("WIA.ImageProcess") $Img.LoadFile($sInitialImage) $oIP.Filters.Add( $oIP.FilterInfos("RotateFlip").FilterID) $oIP.Filters(1).Properties("RotationAngle") = $sDegrees $Img = $oIP.Apply($Img) If FileExists($sOutFile) Then FileDelete($sOutFile) EndIf $Img.SaveFile($sRotatedImage) EndFunc Func MyErrFunc() $HexNumber=hex($oMyError.number,8) Msgbox(0,"COM Error Test","We intercepted a COM Error !" & @CRLF & @CRLF & _ "err.description is: " & @TAB & $oMyError.description & @CRLF & _ "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ "err.number is: " & @TAB & $HexNumber & @CRLF & _ "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ "err.source is: " & @TAB & $oMyError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oMyError.helpcontext _ ) SetError(1) ; to check for after this function returns Endfunc Image Crop expandcollapse popup$oMyError = ObjEvent("AutoIt.Error","MyErrFunc") $sInFile = "C:\Temp\Logo.jpg" $sOutFile = @ScriptDir & "\Test.jpg" WIA_RotateCrop($sInFile,$sOutFile) Func WIA_RotateCrop($sInitialImage,$sRotatedImage) Local $Img = ObjCreate("WIA.ImageFile") Local $oIP = ObjCreate("WIA.ImageProcess") $Img.LoadFile($sInitialImage) $oIP.Filters.Add ($oIP.FilterInfos("Crop").FilterID) $oIP.Filters(1).Properties("Left") = ($Img.Width / 4) $oIP.Filters(1).Properties("Top") = ($Img.Height / 4) $oIP.Filters(1).Properties("Right") = ($Img.Width / 4) $oIP.Filters(1).Properties("Bottom") = ($Img.Height / 4) $Img = $oIP.Apply($Img) If FileExists($sOutFile) Then FileDelete($sOutFile) EndIf $Img.SaveFile($sRotatedImage) EndFunc Func MyErrFunc() $HexNumber=hex($oMyError.number,8) Msgbox(0,"COM Error Test","We intercepted a COM Error !" & @CRLF & @CRLF & _ "err.description is: " & @TAB & $oMyError.description & @CRLF & _ "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ "err.number is: " & @TAB & $HexNumber & @CRLF & _ "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ "err.source is: " & @TAB & $oMyError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oMyError.helpcontext _ ) SetError(1) ; to check for after this function returns Endfunc Image Stamp expandcollapse popup; Initialize error handler $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") $sInFile = "C:\Temp\Logo.jpg" $sStamp = @ScriptDir & "\Test1.jpg" $sOutFile = @ScriptDir & "\Test.jpg" WIA_Imagestamp($sInFile,$sStamp,$sOutFile) Func WIA_Imagestamp($sInitialImage, _ $sThumbImage, _ $sStampedImage) $Img = ObjCreate("WIA.ImageFile") $Thumb = ObjCreate("WIA.ImageFile") $IP = ObjCreate("WIA.ImageProcess") $Img.LoadFile($sInitialImage) $Thumb.LoadFile($sThumbImage) $IP.Filters.Add($IP.FilterInfos("Stamp").FilterID) $IP.Filters(1).Properties("ImageFile") = $Thumb $IP.Filters(1).Properties("Left") = $Img.Width - $Thumb.Width $IP.Filters(1).Properties("Top") = $Img.Height - $Thumb.Height $Img.LoadFile($sInitialImage) $Img = $IP.Apply($Img) If FileExists($sOutFile) Then FileDelete($sOutFile) EndIf $Img.SaveFile($sStampedImage) EndFunc Func MyErrFunc() $HexNumber=hex($oMyError.number,8) Msgbox(0,"COM Error Test","We intercepted a COM Error !" & @CRLF & @CRLF & _ "err.description is: " & @TAB & $oMyError.description & @CRLF & _ "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ "err.number is: " & @TAB & $HexNumber & @CRLF & _ "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ "err.source is: " & @TAB & $oMyError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oMyError.helpcontext _ ) SetError(1) ; to check for after this function returns Endfunc Image Set Title expandcollapse popup; Initialize error handler $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ;https://msdn.microsoft.com/en-us/library/windows/desktop/ms630800(v=vs.85).aspx Const $VectorOfBytesImagePropertyType = 1101 $sInFile = "C:\Temp\Logo.jpg" $sOutFile = @ScriptDir & "\Test.jpg" WIA_ImagesAddTitle($sInFile,$sOutFile) Func WIA_ImagesAddTitle($sInitialImage,$sOutImage) $Img = ObjCreate("WIA.ImageFile") $IP = ObjCreate("WIA.ImageProcess") $v = ObjCreate("WIA.Vector") $Img.LoadFile($sInitialImage) $IP.Filters.Add( $IP.FilterInfos("Exif").FilterID) $IP.Filters(1).Properties("ID") = 40091 $IP.Filters(1).Properties("Type") = $VectorOfBytesImagePropertyType $v.SetFromString( "This Title tag written by Windows Image Acquisition Library v2.0") $IP.Filters(1).Properties("Value") = $v $Img = $IP.Apply($Img) If FileExists($sOutFile) Then FileDelete($sOutFile) EndIf $Img.SaveFile($sOutImage) EndFunc Func MyErrFunc() $HexNumber=hex($oMyError.number,8) Msgbox(0,"COM Error Test","We intercepted a COM Error !" & @CRLF & @CRLF & _ "err.description is: " & @TAB & $oMyError.description & @CRLF & _ "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ "err.number is: " & @TAB & $HexNumber & @CRLF & _ "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ "err.source is: " & @TAB & $oMyError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oMyError.helpcontext _ ) SetError(1) ; to check for after this function returns Endfunc Image Convert II expandcollapse popup; Initialize error handler $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") Const $wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}" Const $wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}" Const $wiaFormatPNG = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}" Const $wiaFormatGIF = "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}" Const $wiaFormatTIFF = "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}" Local $sInFile = "C:\Temp\Vector.bmp" Local $sOutFile = @ScriptDir & "\Test.jpg" WIA_ImageConvertJPG($sInFile,$sOutFile,$wiaFormatJPEG) Func WIA_ImageConvertJPG($sInitialImage, _ $sImage, _ $wiaFormat) Local $Img = ObjCreate("WIA.ImageFile") Local $IP = ObjCreate("WIA.ImageProcess") $Img.LoadFile($sInitialImage) $IP.Filters.Add ($IP.FilterInfos("Convert").FilterID) $IP.Filters(1).Properties("FormatID").Value = $wiaFormat $IP.Filters(1).Properties("Quality").Value = 5 $Img = $IP.Apply($Img) If FileExists($sOutFile) Then FileDelete($sOutFile) EndIf $Img.SaveFile ($sImage) EndFunc Func MyErrFunc() $HexNumber=hex($oMyError.number,8) Msgbox(0,"COM Error Test","We intercepted a COM Error !" & @CRLF & @CRLF & _ "err.description is: " & @TAB & $oMyError.description & @CRLF & _ "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ "err.number is: " & @TAB & $HexNumber & @CRLF & _ "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ "err.source is: " & @TAB & $oMyError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oMyError.helpcontext _ ) SetError(1) ; to check for after this function returns Endfunc Image Variant expandcollapse popup; Initialize error handler $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") $sInFile = "C:\Temp\Logo.jpg" $sOutFile = @ScriptDir & "\Test.jpg" WIA_ImagesModified($sInFile,$sOutFile) Func WIA_ImagesModified($sInitialImage,$sOutImage) $Img = ObjCreate("WIA.ImageFile") $IP = ObjCreate("WIA.ImageProcess") $Img.LoadFile($sInitialImage) Local $v,$i,$IP $v = $Img.ARGBData For $i = 1 To $v.Count Step 21 $v($i) = 0xFFFF00FF ; opaque pink (A=255,R=255,G=0,B=255) Next $IP.Filters.Add($IP.FilterInfos("ARGB").FilterID) $IP.Filters(1).Properties("ARGBData") = $v $Img = $IP.Apply($Img) If FileExists($sOutFile) Then FileDelete($sOutFile) EndIf $Img.SaveFile($sOutImage) EndFunc Func MyErrFunc() $HexNumber=hex($oMyError.number,8) Msgbox(0,"COM Error Test","We intercepted a COM Error !" & @CRLF & @CRLF & _ "err.description is: " & @TAB & $oMyError.description & @CRLF & _ "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ "err.number is: " & @TAB & $HexNumber & @CRLF & _ "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ "err.source is: " & @TAB & $oMyError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oMyError.helpcontext _ ) SetError(1) ; to check for after this function returns Endfunc Image Properties expandcollapse popup; Initialize error handler $oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ; https://msdn.microsoft.com/en-us/library/windows/desktop/ms630800(v=vs.85).aspx Const $RationalImagePropertyType = 1006 Const $StringImagePropertyType = 1002 $sInFile = "C:\Temp\Logo.jpg" Local $Img = ObjCreate("WIA.ImageFile") $Img.LoadFile($sInFile) For $p In $Img.Properties $s = $p.Name & "(" & $p.PropertyID & ") = " If $p.IsVector Then $s = $s & "[vector data not emitted]" ElseIf $p.Type = $RationalImagePropertyType Then $s = $s & $p.Value.Numerator & "/" & $p.Value.Denominator ElseIf $p.Type = $StringImagePropertyType Then $s = $s & """" & $p.Value & """" Else $s = $s & $p.Value EndIf ConsoleWrite(@CRLF & $s & @CRLF & @CRLF) Next Func MyErrFunc() $HexNumber=hex($oMyError.number,8) Msgbox(0,"COM Error Test","We intercepted a COM Error !" & @CRLF & @CRLF & _ "err.description is: " & @TAB & $oMyError.description & @CRLF & _ "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _ "err.number is: " & @TAB & $HexNumber & @CRLF & _ "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _ "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _ "err.source is: " & @TAB & $oMyError.source & @CRLF & _ "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _ "err.helpcontext is: " & @TAB & $oMyError.helpcontext _ ) SetError(1) ; to check for after this function returns Endfunc Enjoy ptrex Edited February 27, 2018 by ptrex Image Rotate - Crop - Add Title & Convert Added Gianni, jguinch, coffeeturtle and 3 others 6 Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New Link to comment Share on other sites More sharing options...
ptrex Posted February 26, 2018 Author Share Posted February 26, 2018 A few more examples are added... Rgds, ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New Link to comment Share on other sites More sharing options...
mLipok Posted February 26, 2018 Share Posted February 26, 2018 Would you make UDF ? Signature beginning:* Please remember: "AutoIt"..... * Wondering who uses AutoIt and what it can be used for ? * Forum Rules ** ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Code * for other useful stuff click the following button: Spoiler Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST API * ErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 * My contribution to others projects or UDF based on others projects: * _sql.au3 UDF * POP3.au3 UDF * RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF * SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane * Useful links: * Forum Rules * Forum etiquette * Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * Wiki: * Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX IE Related: * How to use IE.au3 UDF with AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler * IE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related: * How to get reference to PDF object embeded in IE * IE on Windows 11 * I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions * EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *I also encourage you to check awesome @trancexx code: * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuff * OnHungApp handler * Avoid "AutoIt Error" message box in unknown errors * HTML editor * winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/ "Homo sum; humani nil a me alienum puto" - Publius Terentius Afer"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming" , be and \\//_. Anticipating Errors : "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty." Signature last update: 2023-04-24 Link to comment Share on other sites More sharing options...
Ascer Posted February 26, 2018 Share Posted February 26, 2018 (edited) @ptrex Hello friend. I see that my Vectors ideas come to your post I have use ImageProcess to read BitMaps and edit regions of pixels. This is example Local $oSource = ObjCreate("WIA.Vector") Local $oImg = ObjCreate("WIA.ImageFile") $oImg.LoadFile(@DesktopDir & "\test.bmp") ConsoleWrite("Reading file for pixels color..." & @CRLF) Local $oARGBData = $oImg.ARGBData For $i = 1 To $oARGBData.Count $oSource.Add(Dec(Hex($oARGBData($i), 6))) ; RGB 3byte Next ConsoleWrite("Successfully read " & $oARGBData.Count & " pixels" & @CRLF) Edited February 26, 2018 by Ascer Link to comment Share on other sites More sharing options...
ptrex Posted February 26, 2018 Author Share Posted February 26, 2018 (edited) @Ascer, Thanks nice example... Indeed your VECTOR example triggered me to look further into the COM Object options. @ MLipok There was already a kind of UDF started more then 10 years ago I don't have time to make this a complete UDF unfortunately... But anyone who does feel free. One good thing to notice is that a COM libr. that ran on XP is still shipped and working on Windows 10. Edited February 27, 2018 by ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New Link to comment Share on other sites More sharing options...
ptrex Posted February 27, 2018 Author Share Posted February 27, 2018 Added 2 more examples... Rgds Ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New Link to comment Share on other sites More sharing options...
argumentum Posted June 27, 2019 Share Posted June 27, 2019 Some more examples for the collection Scan paper to file ( via ShowTransfer ) expandcollapse popup;~ wia_ScanFile() Func wia_ScanFile($FileExt = "bmp", $iDevice = 1) ; Scan to file from scanner Local $hTimer = TimerInit() Local $oCommonDialog = ObjCreate("WIA.CommonDialog") Local $oDeviceManager = ObjCreate("WIA.DeviceManager") Local $oDevInfo = $oDeviceManager.DeviceInfos($iDevice) Local $oDevice = $oDevInfo.Connect Local $iIndex = 1 ; https://docs.microsoft.com/en-us/windows/desktop/wia/-wia-wia-property-constant-definitions $oDevice.Items($iIndex).Properties("6146").Value = 2 ;colors $oDevice.Items($iIndex).Properties("6147").Value = 300 ;dots per inch/horizontal $oDevice.Items($iIndex).Properties("6148").Value = 300 ;dots per inch/vertical $oDevice.Items($iIndex).Properties("6149").Value = 0 ;x point where to start scan $oDevice.Items($iIndex).Properties("6150").Value = 0 ;y point where to start scan $oDevice.Items($iIndex).Properties("6151").Value = 5100 ;horizontal exent DPI x inches wide $oDevice.Items($iIndex).Properties("6152").Value = 7002 ;vertical extent DPI x inches tall $oDevice.Items($iIndex).Properties("4104").Value = 8 ;bits per pixel $oDevice.Items($iIndex).Properties("3098").Value = 1700 ;page width $oDevice.Items($iIndex).Properties("3099").Value = 2196 ;page height Local $sFormatID Switch $FileExt Case "bmp" $sFormatID = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}" Case "GIF" $sFormatID = "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}" Case "JPEG", "JPG" $sFormatID = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}" Case "PNG" $sFormatID = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}" Case "TIFF", "TIF" $sFormatID = "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}" Case Else $sFormatID = "{00000000-0000-0000-0000-000000000000}" EndSwitch Local $sImg = "image_" & @YEAR & '-' & @MON & '-' & @MDAY & '_' & @HOUR & '-' & @MIN & '-' & @SEC Local $oImg = $oCommonDialog.ShowTransfer($oDevice.Items($iIndex), $sFormatID, True) $oImg.SaveFile($sImg & "." & $FileExt) Return $sImg & "." & $FileExt EndFunc ;==>wia_ScanFile List scanners ;~ wia_ListDeviceices() Func wia_ListDeviceices() ; list of scanners Local $oDeviceManager = ObjCreate("WIA.DeviceManager") Local $n = $oDeviceManager.DeviceInfos.Count ConsoleWrite("Number of Deviceice found = " & $n & @CRLF) Local $a[$n + 1][2] $a[0][0] = $n For $i = 1 To $oDeviceManager.DeviceInfos.Count $a[$i][0] = $oDeviceManager.DeviceInfos($i).Properties("Name").Value $a[$i][1] = $oDeviceManager.DeviceInfos($i).DeviceID ConsoleWrite(" Device " & $i & ":" & @TAB & $a[$i][0] & @TAB & "(" & $a[$i][1] & ")" & @CRLF) Next Return $a EndFunc ;==>wia_ListDeviceices ptrex 1 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