What happened to the Messenger Plus! forums on msghelp.net?
Shoutbox » MsgHelp Archive » Messenger Plus! for Live Messenger » Scripting » How to make a struct?

How to make a struct?
Author: Message:
-=blu3+3y3s=-
New Member
*


Posts: 3
Joined: Jul 2006
O.P. How to make a struct?
Hi, all!
I need to make Point and Rect structs for using GetWindowRect and GetCursorPos of user32.dll.

I try this:

code:
struct Point
{
long x;
long y;
}
but when I apply, MsgPlus says me "Couldn't start script".
07-31-2006 08:51 PM
Profile E-Mail PM Find Quote Report
Ezra
Veteran Member
*****

Avatar
Forgiveness is between them and God

Posts: 1960
Reputation: 31
37 / Male / Flag
Joined: Mar 2003
RE: How to make a struct?
If I understand what you mean this is want you want :P

function Point()
{
  this.x;
  this.y;
}

mypointobj = new Point();

This post was edited on 07-31-2006 at 08:55 PM by Ezra.
[Image: 1-0.png]
             
07-31-2006 08:54 PM
Profile PM Web Find Quote Report
-=blu3+3y3s=-
New Member
*


Posts: 3
Joined: Jul 2006
O.P. RE: How to make a struct?
I tried what you said but WLM bugges now when I launch the script.
I do this:
code:
Interop.Call("user32.dll", "GetCursorPos", mypointobj);
MsgPlus.DisplayToast("Result", mypointobj.x + " - " + mypointobj.y);
How I can do to display the result?

This post was edited on 07-31-2006 at 09:19 PM by -=blu3+3y3s=-.
07-31-2006 09:19 PM
Profile E-Mail PM Find Quote Report
Ezra
Veteran Member
*****

Avatar
Forgiveness is between them and God

Posts: 1960
Reputation: 31
37 / Male / Flag
Joined: Mar 2003
RE: How to make a struct?
Hmm, I guess you'll have to do that another way.

Here is some code that I think would help you

Color Picker Made By Matty:
code:
//Show color picker common dialog (Made By Matty);

  //Create our CHOOSECOLOR data block
  var CHOOSECOLOR = Interop.Allocate(36);
  CHOOSECOLOR.WriteDWORD(0, 36); //DWORD lStructSize
  CHOOSECOLOR.WriteDWORD(4, 0); //HWND hwndOwner
  CHOOSECOLOR.WriteDWORD(8, 0); //HWND hInstance
  CHOOSECOLOR.WriteDWORD(12, 0x000000FF); //COLORREF rgbResult (COLORREF = 0x00bbggrr)
  var CustColors = Interop.Allocate(64); //Create an array of 16 COLORREFs for CustColors
  CHOOSECOLOR.WriteDWORD(16, CustColors.DataPtr); //COLORREF *lpCustColors (pointer to our array)
  CHOOSECOLOR.WriteDWORD(20, 3); //DWORD Flags (3 = 2 (CC_FULLOPEN) + 1 (CC_RGBINIT) )
  CHOOSECOLOR.WriteDWORD(24, 0); //LPARAM lCustData
  CHOOSECOLOR.WriteDWORD(28, 0); //LPCCHOOKPROC lpfnHook
  CHOOSECOLOR.WriteDWORD(32, 0); //LPCTSTR lpTemplateName

  //Open the dialog box
  var result = Interop.Call('comdlg32.dll', 'ChooseColorA', CHOOSECOLOR);
  //If the user pressed ok convert it to hex
  if(result == 1){
    //Get decimal values
    var r = CHOOSECOLOR.ReadDWORD(12) & 0xFF;
    var g = (CHOOSECOLOR.ReadDWORD(12) / 0x100) & 0xFF;
    var b = (CHOOSECOLOR.ReadDWORD(12) / 0x10000) & 0xFF;
    Debug.Trace('RGB: ' + r + ',' + g + ',' + b)
    //Get hex values
    var hexchars="0123456789ABCDEF";
    var r = hexchars.charAt((r >> 4) & 0xf) + hexchars.charAt(r & 0xF);
    var g = hexchars.charAt((g >> 4) & 0xf) + hexchars.charAt(g & 0xF);
    var b = hexchars.charAt((b >> 4) & 0xf) + hexchars.charAt(b & 0xF);
    Debug.Trace('HEX: ' + r + g + b);
  }

[Image: 1-0.png]
             
07-31-2006 09:25 PM
Profile PM Web Find Quote Report
-dt-
Scripting Contest Winner
*****

Avatar
;o

Posts: 1819
Reputation: 74
36 / Male / Flag
Joined: Mar 2004
RE: How to make a struct?
right well you people dont know what you're talking about you have to recreate the structure in memory and read it from memory, here you dont need to create the structure since it will be passed into point for you by GetCursorPos

code:

var point = Interop.Allocate(8);
Interop.Call("user32.dll", "GetCursorPos", point);
Debug.Trace("x: " + point.ReadDWORD(0));
Debug.Trace("y: " + point.ReadDWORD(4));


This post was edited on 08-01-2006 at 12:05 AM by -dt-.
[Image: dt2.0v2.png]      Happy Birthday, WDZ
08-01-2006 12:00 AM
Profile PM Web Find Quote Report
Eljay
Elite Member
*****

Avatar
:O

Posts: 2949
Reputation: 77
– / Male / –
Joined: May 2004
RE: How to make a struct?
quote:
Originally posted by Ezra
Hmm, I guess you'll have to do that another way.

Here is some code that I think would help you

Color Picker Made By Matty:
code:
//Show color picker common dialog (Made By Matty);

  //Create our CHOOSECOLOR data block
  var CHOOSECOLOR = Interop.Allocate(36);
  CHOOSECOLOR.WriteDWORD(0, 36); //DWORD lStructSize
  CHOOSECOLOR.WriteDWORD(4, 0); //HWND hwndOwner
  CHOOSECOLOR.WriteDWORD(8, 0); //HWND hInstance
  CHOOSECOLOR.WriteDWORD(12, 0x000000FF); //COLORREF rgbResult (COLORREF = 0x00bbggrr)
  var CustColors = Interop.Allocate(64); //Create an array of 16 COLORREFs for CustColors
  CHOOSECOLOR.WriteDWORD(16, CustColors.DataPtr); //COLORREF *lpCustColors (pointer to our array)
  CHOOSECOLOR.WriteDWORD(20, 3); //DWORD Flags (3 = 2 (CC_FULLOPEN) + 1 (CC_RGBINIT) )
  CHOOSECOLOR.WriteDWORD(24, 0); //LPARAM lCustData
  CHOOSECOLOR.WriteDWORD(28, 0); //LPCCHOOKPROC lpfnHook
  CHOOSECOLOR.WriteDWORD(32, 0); //LPCTSTR lpTemplateName

  //Open the dialog box
  var result = Interop.Call('comdlg32.dll', 'ChooseColorA', CHOOSECOLOR);
  //If the user pressed ok convert it to hex
  if(result == 1){
    //Get decimal values
    var r = CHOOSECOLOR.ReadDWORD(12) & 0xFF;
    var g = (CHOOSECOLOR.ReadDWORD(12) / 0x100) & 0xFF;
    var b = (CHOOSECOLOR.ReadDWORD(12) / 0x10000) & 0xFF;
    Debug.Trace('RGB: ' + r + ',' + g + ',' + b)
    //Get hex values
    var hexchars="0123456789ABCDEF";
    var r = hexchars.charAt((r >> 4) & 0xf) + hexchars.charAt(r & 0xF);
    var g = hexchars.charAt((g >> 4) & 0xf) + hexchars.charAt(g & 0xF);
    var b = hexchars.charAt((b >> 4) & 0xf) + hexchars.charAt(b & 0xF);
    Debug.Trace('HEX: ' + r + g + b);
  }



wtf thats not by matty, i made that :dodgy:
08-01-2006 07:30 AM
Profile PM Find Quote Report
Ezra
Veteran Member
*****

Avatar
Forgiveness is between them and God

Posts: 1960
Reputation: 31
37 / Male / Flag
Joined: Mar 2003
RE: How to make a struct?
quote:
Originally posted by eljelly
quote:
Originally posted by Ezra
Hmm, I guess you'll have to do that another way.

Here is some code that I think would help you

Color Picker Made By Matty:
code:
//Show color picker common dialog (Made By Matty);

  //Create our CHOOSECOLOR data block
  var CHOOSECOLOR = Interop.Allocate(36);
  CHOOSECOLOR.WriteDWORD(0, 36); //DWORD lStructSize
  CHOOSECOLOR.WriteDWORD(4, 0); //HWND hwndOwner
  CHOOSECOLOR.WriteDWORD(8, 0); //HWND hInstance
  CHOOSECOLOR.WriteDWORD(12, 0x000000FF); //COLORREF rgbResult (COLORREF = 0x00bbggrr)
  var CustColors = Interop.Allocate(64); //Create an array of 16 COLORREFs for CustColors
  CHOOSECOLOR.WriteDWORD(16, CustColors.DataPtr); //COLORREF *lpCustColors (pointer to our array)
  CHOOSECOLOR.WriteDWORD(20, 3); //DWORD Flags (3 = 2 (CC_FULLOPEN) + 1 (CC_RGBINIT) )
  CHOOSECOLOR.WriteDWORD(24, 0); //LPARAM lCustData
  CHOOSECOLOR.WriteDWORD(28, 0); //LPCCHOOKPROC lpfnHook
  CHOOSECOLOR.WriteDWORD(32, 0); //LPCTSTR lpTemplateName

  //Open the dialog box
  var result = Interop.Call('comdlg32.dll', 'ChooseColorA', CHOOSECOLOR);
  //If the user pressed ok convert it to hex
  if(result == 1){
    //Get decimal values
    var r = CHOOSECOLOR.ReadDWORD(12) & 0xFF;
    var g = (CHOOSECOLOR.ReadDWORD(12) / 0x100) & 0xFF;
    var b = (CHOOSECOLOR.ReadDWORD(12) / 0x10000) & 0xFF;
    Debug.Trace('RGB: ' + r + ',' + g + ',' + b)
    //Get hex values
    var hexchars="0123456789ABCDEF";
    var r = hexchars.charAt((r >> 4) & 0xf) + hexchars.charAt(r & 0xF);
    var g = hexchars.charAt((g >> 4) & 0xf) + hexchars.charAt(g & 0xF);
    var b = hexchars.charAt((b >> 4) & 0xf) + hexchars.charAt(b & 0xF);
    Debug.Trace('HEX: ' + r + g + b);
  }



wtf thats not by matty, i made that :dodgy:

OMG :o, sorry :-P
[Image: 1-0.png]
             
08-01-2006 09:05 AM
Profile PM Web Find Quote Report
-=blu3+3y3s=-
New Member
*


Posts: 3
Joined: Jul 2006
O.P. RE: How to make a struct?
Thanks, guys for your answers. That works perfectly. ;)
08-01-2006 06:17 PM
Profile E-Mail PM Find Quote Report
« Next Oldest Return to Top Next Newest »


Threaded Mode | Linear Mode
View a Printable Version
Send this Thread to a Friend
Subscribe | Add to Favorites
Rate This Thread:

Forum Jump:

Forum Rules:
You cannot post new threads
You cannot post replies
You cannot post attachments
You can edit your posts
HTML is Off
myCode is On
Smilies are On
[img] Code is On