AutoHotkey Homepage AutoHotkey Community
Let's help each other out
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

AutoHotkey_L: Arrays, Debugger, x64, COM, #If expression ...
Goto page 1, 2, 3 ... 52, 53, 54  Next
 
Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions
View previous topic :: View next topic  
Author Message
Lexikos



Joined: 17 Oct 2006
Posts: 4820
Location: Australia

PostPosted: Sat Jul 26, 2008 8:15 am    Post subject: AutoHotkey_L: Arrays, Debugger, x64, COM, #If expression ... Reply with quote

AutoHotkey_L

AutoHotkey_L is my custom build of AutoHotkey. Primary features include:
Downloads

Source Code
Version History


Recent revisions do not support __expr or SimpleExpr.
If you must use these scripts, get Revision 13.
Otherwise, get the latest revision above.
Source code and binaries are available for L13.


Last edited by Lexikos on Mon Aug 16, 2010 10:42 pm; edited 23 times in total
Back to top
View user's profile Send private message Visit poster's website
Superfraggle



Joined: 02 Nov 2004
Posts: 1019
Location: London, UK

PostPosted: Sat Jul 26, 2008 11:12 am    Post subject: Reply with quote

First of all, WOW, some excellent additions there. Most useful for me will be the #If directive, assuming its what I think it is it will remove the need for me to keep activating and deactivating 30 odd hotkeys according to what I'm using my computer for.


Also just out of interest, have you discussed with Chris regarding merging some of these into the original, or do you intend to keep yours seperate??
_________________
Steve F AKA Superfraggle

http://r.yuwie.com/superfraggle
Back to top
View user's profile Send private message MSN Messenger
heresy



Joined: 11 Mar 2008
Posts: 291

PostPosted: Sat Jul 26, 2008 11:40 am    Post subject: Reply with quote

#if (expression) sounds very useful eg) #if WinActive(win1) || WinActive(win2).
also it's good to have While loop though it seems a bit slow compared to Loop.
i had bunch of suggestions for future ahk (any build here)
but i would not make suggestion here which might cause pressure on you. i'll just cheer it up Smile
Thanks for your contribution to community as always.
keep up your good work!
_________________
Easy WinAPI - Dive into Windows API World
Benchmark your AutoHotkey skills at PlayAHK.com
Back to top
View user's profile Send private message
Lexikos



Joined: 17 Oct 2006
Posts: 4820
Location: Australia

PostPosted: Sat Jul 26, 2008 12:37 pm    Post subject: Reply with quote

Quote:
Revision 7 - July 26, 2008
  • Added: IsFunc(FuncName) - Returns a non-zero number if FuncName exists in the script or as a built-in function.
Superfraggle wrote:
Also just out of interest, have you discussed with Chris regarding merging some of these into the original, or do you intend to keep yours seperate??
I'll get back to you on that...
heresy wrote:
also it's good to have While loop though it seems a bit slow compared to Loop.
In my brief tests, While (expression) performed marginally faster than Loop .. if (expression) .. else break. Were you comparing While expression to Loop count? Apples and oranges...

Btw, I use #if for hotkeys sensitive to:
  • the active control - to "fix" certain behaviours of Edit controls, and for a "toggle word-wrap" hotkey specific to Scintilla controls.
  • the window under the cursor - to exclude remote desktop and VMware from mouse hotkeys/gestures.
Back to top
View user's profile Send private message Visit poster's website
TheIrishThug



Joined: 19 Mar 2006
Posts: 421

PostPosted: Sat Jul 26, 2008 12:46 pm    Post subject: Reply with quote

Don't have time to check it out right now, but any day where modifications and improvements are made to AutoHotkey is a good day.
Back to top
View user's profile Send private message Visit poster's website AIM Address
heresy



Joined: 11 Mar 2008
Posts: 291

PostPosted: Sat Jul 26, 2008 2:13 pm    Post subject: Reply with quote

Lexikos wrote:
While (expression) performed marginally faster than Loop .. if (expression) .. else break.
You're right, there was a big mistake in my test. i could see that While (expression) is pretty optimized. Sorry
_________________
Easy WinAPI - Dive into Windows API World
Benchmark your AutoHotkey skills at PlayAHK.com
Back to top
View user's profile Send private message
Sean



Joined: 12 Feb 2007
Posts: 2298

PostPosted: Sat Jul 26, 2008 4:18 pm    Post subject: Reply with quote

I found While is very handy. Thanks.
BTW, I'd like to make sure one thing: entering (or exiting?) While, is A_Index initialized/refreshed to zero? It seemed so in my test:
Code:
While   A_Index=0
   MsgBox % "Loop1: " . A_Index
While   A_Index=0
   MsgBox % "Loop2: " . A_Index

However, the result was different in the nested While:
Code:
While   A_Index=0
{
   MsgBox % "Loop1: " . A_Index
   While   A_Index=0
      MsgBox % "Loop2: " . A_Index
}

Looks like when entering the second While, A_Index is not refreshed to zero.
Code:
While   A_Index=0
{
   MsgBox % "Loop1: " . A_Index
   While   A_Index=1
      MsgBox % "Loop2: " . A_Index
   MsgBox % "Loop1: " . A_Index
}
Back to top
View user's profile Send private message
ahklerner



Joined: 26 Jun 2006
Posts: 1318
Location: USA

PostPosted: Sat Jul 26, 2008 6:08 pm    Post subject: Reply with quote

hey thanks for this.
_________________

ʞɔпɟ əɥʇ ʇɐɥʍ
Back to top
View user's profile Send private message
Superfraggle



Joined: 02 Nov 2004
Posts: 1019
Location: London, UK

PostPosted: Sun Jul 27, 2008 1:14 am    Post subject: Reply with quote

Lexicos, I have been trying a few things out with the #IF directive, and I noticed it has a timeout where it will fail if the expression takes too long.

Is there a way to increase/decrease/remove this timeout. I am aware that removing the timeout and then calling an infinate loop could disable keyboard input.

The reason I asked was I was running some tests using imagesearch basically creating some image sensitive hotkeys, and the imagesearchs tend to take a bit too long.
_________________
Steve F AKA Superfraggle

http://r.yuwie.com/superfraggle
Back to top
View user's profile Send private message MSN Messenger
Lexikos



Joined: 17 Oct 2006
Posts: 4820
Location: Australia

PostPosted: Sun Jul 27, 2008 1:31 am    Post subject: Reply with quote

Sean wrote:
I'd like to make sure one thing: entering (or exiting?) While, is A_Index initialized/refreshed to zero?
No, the expression is evaluated before the next iteration begins. In the case of the first iteration, it is evaluated before A_Index is given any value. Do you think A_Index should reflect which iteration is about to begin?

Btw, A_Index is normally 0 outside of any loops.
Superfraggle wrote:
Is there a way to increase/decrease/remove this timeout.
Not at the moment. Do you really want hotkeys that tie up the keyboard for longer than a second?
Back to top
View user's profile Send private message Visit poster's website
Sean



Joined: 12 Feb 2007
Posts: 2298

PostPosted: Sun Jul 27, 2008 1:53 am    Post subject: Reply with quote

Lexikos wrote:
Do you think A_Index should reflect which iteration is about to begin?
That could be quite useful, IMO, as While can be also used as a simplified For then. In that case, A_Index may better be initialized to 1 than 0 inside AHK's current scheme, though.
Back to top
View user's profile Send private message
Lexikos



Joined: 17 Oct 2006
Posts: 4820
Location: Australia

PostPosted: Sun Jul 27, 2008 9:07 am    Post subject: Reply with quote

Quote:
Revision 8 - July 27, 2008
  • Added: #IfTimeout directive to set the timeout for evaluation of #If expressions, in milliseconds. Default is 1000.
  • Added: Assume-static mode for functions. "Static" must precede any local/global variable declarations.
  • Added: One-true-brace support for While.
  • Changed: While now sets A_Index to the iteration about to begin.

Superfraggle, note also that Windows implements its own time-out for low-level hooks. The default appears to be 5000ms.
MSDN wrote:
The hook procedure should process a message in less time than the data entry specified in the LowLevelHooksTimeout value in the following registry key:

HKEY_CURRENT_USER\Control Panel\Desktop

The value is in milliseconds. If the hook procedure does not return during this interval, the system will pass the message to the next hook.
Back to top
View user's profile Send private message Visit poster's website
Sean



Joined: 12 Feb 2007
Posts: 2298

PostPosted: Sun Jul 27, 2008 2:32 pm    Post subject: Reply with quote

Lexikos wrote:
Revision 8 - July 27, 2008
  • Added: #IfTimeout directive to set the timeout for evaluation of #If expressions, in milliseconds. Default is 1000.
  • Added: Assume-static mode for functions. "Static" must precede any local/global variable declarations.
  • Added: One-true-brace support for While.
  • Changed: While now sets A_Index to the iteration about to begin.

Assume-static and While with A_Index initialization work great. Thanks.
I realized I forgot to ask about this: Is there a particular reason that Break/Continue are forbidden inside While, or is it just an accidental omission?


Last edited by Sean on Sun Jul 27, 2008 2:38 pm; edited 1 time in total
Back to top
View user's profile Send private message
majkinetor!
Guest





PostPosted: Sun Jul 27, 2008 6:17 pm    Post subject: Reply with quote

Congratz on first version of your code branch.
To do list is really awesome.

Cheers and good luck with this.
Back to top
Superfraggle



Joined: 02 Nov 2004
Posts: 1019
Location: London, UK

PostPosted: Sun Jul 27, 2008 9:14 pm    Post subject: Reply with quote

Lexikos wrote:

Superfraggle, note also that Windows implements its own time-out for low-level hooks. The default appears to be 5000ms.
MSDN wrote:
The hook procedure should process a message in less time than the data entry specified in the LowLevelHooksTimeout value in the following registry key:

HKEY_CURRENT_USER\Control Panel\Desktop

The value is in milliseconds. If the hook procedure does not return during this interval, the system will pass the message to the next hook.


Excellent that works perfect, took me a while to get it working as desired, it appears at least on my XP system the default was 1000ms, the key didn't exist so I was unable to confirm that, but my tests seemed to confirm that. After creating the key, and setting it higher it worked with longer settings.

A point to any other users that may use this, If the IFtimeout is set higher than the windows default, this can resault in both the keys native function and your requested function being launched. Also if anyone does make changes to the key then you need to restart the computer for the changes to be picked up. (broadcasting a system setting change may help, but didnt have time to test.)
_________________
Steve F AKA Superfraggle

http://r.yuwie.com/superfraggle
Back to top
View user's profile Send private message MSN Messenger
Display posts from previous:   
Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions All times are GMT
Goto page 1, 2, 3 ... 52, 53, 54  Next
Page 1 of 54

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum


Powered by phpBB © 2001, 2005 phpBB Group