This App is No Longer Maintained. Visit the Replacement at

StrokesPlus Forum
StrokesPlus Forum
Home | Profile | Register | Active Topics
Members | Search | FAQ
Save Password
Forgot your Password?

 All Forums
 Feature Updates
 Closed or Deferred Requests
 [ALIEN SCRIPT] S+ and OS Version API
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  


39 Posts

Posted - 03/03/2012 :  01:42:13  Show Profile  Reply with Quote
I'd like to have some API to know the OS version/platform and S+ version, so We might using some different API or logic to do something.
For example, we might do different at Windows XP and Windows Vista or Windows 7.

Also if we can provider an API for debug info output is great.
For example, we should provider an API acDebugPrint(string)
and this API invoke the system API OutputDebugString to print string.
The develop could using the DbgView to check the ouput logs.
This is useful for debug the script.

Edited by - Kingron on 03/03/2012 07:18:25


2606 Posts

Posted - 03/03/2012 :  09:58:20  Show Profile  Visit Rob's Homepage  Reply with Quote
See this topic to get OS version via Alien. You can make almost any API call via Alien, which is built into S+ =)
Go to Top of Page


2606 Posts

Posted - 03/03/2012 :  10:08:28  Show Profile  Visit Rob's Homepage  Reply with Quote
You should be able to call OutputDebugString via Alien as well, but I haven't looked into it. Note that I'm very much an Alien novice, I just built it into S+ for folks to use instead of building new actions for every little request...don't want to reproduce the whole Windows API! =)
Go to Top of Page


39 Posts

Posted - 03/03/2012 :  14:08:28  Show Profile  Reply with Quote

I put below script slice into Strokesplus.lua, and reload the config, it works for me:

API = alien.core
local floor = math.floor

function xor(a, b)
local r = 0
for i = 0, 31 do
local x = a / 2 + b / 2
if x ~= floor (x) then
r = r + 2^i
a = floor (a / 2)
b = floor (b / 2)
return r

function band(a,b)
return ((a+b) - xor(a,b))/2

function shl(x, by)
return x * 2 ^ by

function shr(x, by)
return floor(x / 2 ^ by)

local mb = API.load("kernel32.dll")
local GetVersion = mb.GetVersion
GetVersion:types{ ret = 'uint', abi = 'stdcall'}
local iVersion = GetVersion()
OS_MAJOR_VER = band(band(iVersion,65535),255)
OS_MINOR_VER = band(shr(band(iVersion,65535),8),255)

mb = API.load("kernel32.dll")
acDebugPrint = mb.OutputDebugStringA
acDebugPrint:types{ ret = 'void', abi = 'stdcall', 'string' }

Test action script

acSendKeys("{BEEP 1400 100}")
acDebugPrint("test debug print")
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
StrokesPlus Forum © 2011-2018 Rob Yapchanyk Go To Top Of Page
Snitz Forums 2000