Jump to content
AdminC

DllStructGetData() How can get Color BGR?

Recommended Posts

AdminC

#RequireAdmin
#include <SendMessage.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WinAPIGdi.au3>
#include <Array.au3>
#include <WinAPIDiag.au3>

$Imglocation = @ScriptDir&"\Image\testimg.bmp"

_GDIPlus_Startup()
Local $Bitmap = _GDIPlus_BitmapCreateFromFile($Imglocation)
Local $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($Bitmap)

Local $imgSize = _WinAPI_GetBitmapDimension($hBitmap)
Local $imgBits = DllStructCreate('dword[' & ($imgSize.X * $imgSize.Y) & ']')

_WinAPI_GetBitmapBits($hBitmap, DllStructGetSize($imgBits), DllStructGetPtr($imgBits))
_WinAPI_DisplayStruct($imgBits)
MsgBox(0, "", DllStructGetData($imgBits, 1, 1)) 
_GDIPlus_Shutdown()

DllstructGetData can't get data color B, G, R value. Who's know that? teach me plz

 

Share this post


Link to post
Share on other sites
AdminC

#RequireAdmin
#include <SendMessage.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <WinAPIGdi.au3>
#include <Array.au3>
#include <WinAPIDiag.au3>

$Imglocation = @ScriptDir&"\Image\testimg.bmp"

_GDIPlus_Startup()
Local $Bitmap = _GDIPlus_BitmapCreateFromFile($Imglocation)
Local $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($Bitmap)

Local $imgSize = _WinAPI_GetBitmapDimension($hBitmap)
Local $imgBits = DllStructCreate('dword[' & ($imgSize.X * $imgSize.Y) & ']')

_WinAPI_GetBitmapBits($hBitmap, DllStructGetSize($imgBits), DllStructGetPtr($imgBits))
_WinAPI_DisplayStruct($imgBits)
MsgBox(0, "", DllStructGetData($imgBits, 1, 1)) 
_GDIPlus_Shutdown()

DllstructGetData can't get data color B, G, R value. Who's know that? teach me plz

Share this post


Link to post
Share on other sites
water

You know that this is the wrong forum to post a question?
BTW: Please use the AutoIt code tags (the "<>" button in the editor) when posting code.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-10-19 - Version 1.4.10.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
AdminC
$Imglocation = @ScriptDir&"\Image\testimg.bmp"

_GDIPlus_Startup()
Local $Bitmap = _GDIPlus_BitmapCreateFromFile($Imglocation)
Local $hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($Bitmap)

Local $imgSize = _WinAPI_GetBitmapDimension($hBitmap)
Local $imgBits = DllStructCreate('dword[' & (DllStructGetData($imgSize, 'X') * DllStructGetData($imgSize, 'Y')) & ']')

_WinAPI_GetBitmapBits($hBitmap, DllStructGetSize($imgBits), DllStructGetPtr($imgBits))
;_WinAPI_DisplayStruct($imgBits)
MsgBox(0, "", DllStructGetData($imgBits, 1, 1))
_GDIPlus_Shutdown()

 

Edited by AdminC

Share this post


Link to post
Share on other sites
JLogan3o13

@AdminC the Examples forum very, very clearly states:

Quote

Do not post general support questions here, instead use the AutoIt Help and Support forums.

Please pay attention to where you're posting in the future.


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • nooneclose
      By nooneclose
      Good morning everyone, I thought I had already solved this issue but it turns out I did not. 
      My code finds unread emails with this specific subject line of "request" but when I change the subject to SKIPPED + "request" = ("SKIPPED request") the program still finds the email and tries to process it. I only want to process emails with the exact match subject of "request".
      Here is my code that "finds" the unread emails with the subject of "request" or so I thought. 
      Func ListUnreadEmails() ;******************************************************************************* ; Lists all unread E-mails from the folder Outlook-UDF-Test ;******************************************************************************* ; Stores all the unRead emails into an array Global $aItems = _OL_ItemFind($oOutlook, "*\Outlook-UDF-Test", $olMail, _ "[UnRead]=True", "Subject", "request", "EntryID,Subject", "", 1) ; Displays the array of unRead emails If IsArray($aItems) Then ;_ArrayDisplay($aItems, "OutlookEX UDF: _OL_ItemFind - Unread mails") Else MsgBox(48, "OutlookEX UDF: _OL_ItemFind Example Script", _ "Could not find an unread mail. @error = " & @error & ", @extended: " & @extended) EndIf ; Gets the number of unread emails Global $numberOfUnRead = UBound($aItems, $UBOUND_ROWS) - 1 ;MsgBox("", "Number of Unread emails", $numberOfUnRead) EndFunc It acts as if any part of the subject containing the word "request" and the email is unread that it will try to process it. (I think)
    • KhalidAnsari
      By KhalidAnsari
      Hi,
      I need to automate Java application using AutoIt, I have refer forum for the same, as per forum I am using Java Access Bridge to finding control name. But could not set value to control. Below is my sample code 
      Send("#r")
      sleep(1500)
      Send("D:\javaapplication\javaapplication\Hello.jar{Enter}")
      WinActivate("Penjumlahan")
      sleep(1500)
      ControlSetText("Penjumlahan", "", "Name:  A :", "demo")
      Java Application and Java Ferret screen

    • QaisBsharat
      By QaisBsharat
      Hello, 
      May i know how can i automation qt application?
      Using controlclick not mouse and positions
       
      Thanks
    • nooneclose
      By nooneclose
      Good afternoon, I am in need of some help. I am sure this is a stupid question requiring only one or two lines of code. However, I would greatly appreciate the help I cannot figure this out. I also tried searching for the answer on the internet but no one except me apparently seems to be having a hard time figuring this out and or is asking about it. 
      I simply want to change the "status" of an email from unread to read once I have processed it. My code is over 500 lines and I would like not to clutter this post with it. Assume I have all my includes and connections properly defined and stuff. 
      Here is the bit of code where I am trying to change the email that was used from unread to read:
      Func ChangeEmailStatus() ;******************************************************************************* ; changes the status of an email from unread to Read ;******************************************************************************* Local $iRows = UBound($aItems, $UBOUND_ROWS) MsgBox("", "Number of Unread emails (Before Change)", $iRows) _OL_ItemModify($oOutlook,$aItems[$i][0], Default, "Read=True") MsgBox("", "Array Display 1", $aItems[1][0]) MsgBox("", "Array Display 2", $aItems[2][0]) Local $iRows = UBound($aItems, $UBOUND_ROWS) MsgBox("", "Number of Unread emails (After Change)", $iRows) EndFunc  
    • SharpDressedMan
      By SharpDressedMan
      Hello,
      Is there any way to check for validity of a pointer to a DllStruct ?
      In the above code, a DllStruct is created from an invalid pointer. How to prevent from doing this ?
      local $tStruct = DllStructCreate("int i") DllStructSetData($tStruct, "i", 123) local $pStruct = DllStructGetPtr($tStruct) $tStruct = 0 ; destroy DllStruct ==> $pStruct becomes invalid ; how to check here for validity of $pStruct and prevent from doing the following ? $tStruct = DllStructCreate("int i", $pStruct) ; create DllStruct from invalid pointer... MsgBox(0, @ScriptName, @error) ; displays '0' : invalid pointer is not detected by DllStructCreate() MsgBox(0, @ScriptName, IsDllStruct($tStruct)) ; displays '1' : tStruct is assumed as a valid DllStruct object, which is not Thanks for help
×