[Archive] Collection of lost AHK Scripts & Libraries

Post your working scripts, libraries and tools for AHK v1.1 and older
burque505
Posts: 1731
Joined: 22 Jan 2017, 19:37

Re: [Archive] Collection of lost AHK Scripts & Libraries

25 Jan 2019, 17:38

I'd like to resurrect this script by Serenity from 2008: "ShellHook Messages". It still works great with AHK_L 1.1.30.01 64-bit, no mods.
Spoiler
ShellHook Messages.gif
ShellHook Messages.gif (42.27 KiB) Viewed 17277 times
SOTE
Posts: 1426
Joined: 15 Jun 2015, 06:21

Re: [Archive] Collection of lost AHK Scripts & Libraries

25 Jan 2019, 22:31

LOL! I had downloaded the script the other day. Excellent script and good idea to reintroduce it. There are many gems in the old forums.
User avatar
Drugwash
Posts: 850
Joined: 29 May 2014, 21:07
Location: Ploieşti, Romania
Contact:

Re: [Archive] Collection of lost AHK Scripts & Libraries

26 Jan 2019, 06:23

burque505 wrote:
25 Jan 2019, 17:38
It still works great with AHK_L 1.1.30.01 64-bit, no mods.
Yeah, but I felt like modding it anyway. :D
20190126125846.png
20190126125846.png (721.28 KiB) Viewed 17234 times
Show/hide the code
==================================================================
off-topic: The 'very large attachment size' issue popped up again. As you can see below, real image filesize is ~37kB, yet the attachment process made it 721kB! Same with the file properties screenshot: real size is ~30kB but it got uploaded as 728kB. Both took minutes to complete, when even with my lousy bandwidth a 5-6 seconds each would've been more than enough.
20190126131401.png
20190126131401.png (728.59 KiB) Viewed 17234 times
Part of my AHK work can be found here.
burque505
Posts: 1731
Joined: 22 Jan 2017, 19:37

Re: [Archive] Collection of lost AHK Scripts & Libraries

26 Jan 2019, 08:39

@drugwash, nice mods! I like it. The addition of the Class column turns it from "nice to have" into a must. Great job.
Regards,
burque 505
off-topic: That's strange about that PNG file.
burque505
Posts: 1731
Joined: 22 Jan 2017, 19:37

Re: [Archive] Collection of lost AHK Scripts & Libraries

26 Jan 2019, 13:40

I was wondering why HSHELL_RUDEAPPACTIVATED wasn't showing up. Here's why, I think.

Code: Select all

Global  HSHELL_WINDOWCREATED = 1
Global  HSHELL_WINDOWDESTROYED = 2
Global  HSHELL_ACTIVATESHELLWINDOW = 3
Global  HSHELL_WINDOWACTIVATED = 4
Global  HSHELL_GETMINRECT = 5
Global  HSHELL_REDRAW = 6
Global  HSHELL_TASKMAN = 7
Global  HSHELL_LANGUAGE = 8
Global  HSHELL_SYSMENU = 9
Global  HSHELL_ENDTASK = 10
Global  HSHELL_ACCESSIBILITYSTATE = 11
Global  HSHELL_APPCOMMAND = 12
Global  HSHELL_WINDOWREPLACED = 13
Global  HSHELL_WINDOWREPLACING = 14
Global  HSHELL_MONITORCHANGED = 16
Global  HSHELL_HIGHBIT = 0x8000 ; 32768
Global  HSHELL_RUDEAPPACTIVATED = 32772
Global  HSHELL_FLASH = 32774
The last four won't show up because they aren't sequentially numbered like the first 14 (script doesn't have HSHELL_MONITORCHANGED, so the last three won't show up in our case), except as "HSHELL_ ". It'll take a rewrite to fix that, I think; I'll give it a try when I wake up.
Last edited by burque505 on 26 Jan 2019, 15:48, edited 1 time in total.
Aenfa
Posts: 13
Joined: 15 May 2016, 18:06

Re: [Archive] Collection of lost AHK Scripts & Libraries

26 Jan 2019, 13:45

Is it possible to make it catch the wm_command messages or is that too complicated?
burque505
Posts: 1731
Joined: 22 Jan 2017, 19:37

Re: [Archive] Collection of lost AHK Scripts & Libraries

26 Jan 2019, 15:48

Sounds like a good idea :)
In the meantime, here's another Serenity script that I think is worth resurrecting also:
Spoiler
WinEvents.GIF
WinEvents.GIF (86.55 KiB) Viewed 17155 times
User avatar
Drugwash
Posts: 850
Joined: 29 May 2014, 21:07
Location: Ploieşti, Romania
Contact:

Re: [Archive] Collection of lost AHK Scripts & Libraries

27 Jan 2019, 17:49

burque505 wrote:
26 Jan 2019, 13:40
The last four won't show up because they aren't sequentially numbered like the first 14 (script doesn't have HSHELL_MONITORCHANGED, so the last three won't show up in our case), except as "HSHELL_ ". It'll take a rewrite to fix that, I think; I'll give it a try when I wake up.
Yeah, I never checked if all messages were present in the original script, I'm not even sure the missing ones are available in XP, otherwise I might've noticed the issue. Unfortunately my change won't be able to accomodate the extra ones, it would need an associative array for that but I'm not quite familiar with those.

The event script looks good, dunno if there's any room for improvement other than maybe adding a column autoresize ("AutoHdr" option).
Part of my AHK work can be found here.
User avatar
Tigerlily
Posts: 377
Joined: 04 Oct 2018, 22:31

Re: [Archive] Collection of lost AHK Scripts & Libraries

26 Mar 2019, 05:40

Drugwash wrote:
27 Jan 2019, 17:49
burque505 wrote:
26 Jan 2019, 13:40
These are really awesome - thanks so much for sharing!!! If you just add an elapsed time column, you will also know how long you are spending time on each window/program and where :D
-TL
User avatar
lmstearn
Posts: 688
Joined: 11 Aug 2016, 02:32
Contact:

Re: [Archive] Collection of lost AHK Scripts & Libraries

12 May 2019, 08:06

Anyone saved a copy of Oldman's Multi-Monitor management? Looks to be very interesting, but for the lost D/L link.
Thanks
Edit: His Skynet repo is back online. Great! :)
:arrow: itros "ylbbub eht tuO kaerB" a ni kcuts m'I pleH
User avatar
Uberi
Posts: 2
Joined: 07 Oct 2013, 12:05

Re: [Archive] Collection of lost AHK Scripts & Libraries

23 Apr 2021, 21:27

Hey everyone,

Just posted my archives on GitHub here: https://github.com/Uberi/AHK-Scripts

All of the stuff I've saved off the forums are here: https://github.com/Uberi/AHK-Scripts/tree/master/%40Saved

It contains a backup of AutoHotkey.net as well! https://github.com/Uberi/AHK-Scripts/tree/master/%40Saved/AHK.net%20Archive

Hope this helps :)
User avatar
joedf
Posts: 8940
Joined: 29 Sep 2013, 17:08
Location: Canada
Contact:

Re: [Archive] Collection of lost AHK Scripts & Libraries

26 Apr 2021, 14:16

Great stuff, thanks @Uberi ! :+1:
Long time no see, big fan.
Image Image Image Image Image
Windows 10 x64 Professional, Intel i5-8500, NVIDIA GTX 1060 6GB, 2x16GB Kingston FURY Beast - DDR4 3200 MHz | [About Me] | [About the AHK Foundation] | [Courses on AutoHotkey]
[ASPDM - StdLib Distribution] | [Qonsole - Quake-like console emulator] | [LibCon - Autohotkey Console Library]
User avatar
Uberi
Posts: 2
Joined: 07 Oct 2013, 12:05

Re: [Archive] Collection of lost AHK Scripts & Libraries

22 May 2021, 02:50

@joedf likewise, big fan! I'm very happy to see AHK thriving thanks to you and the rest of the admin team's hard work :)

Quick heads up btw, one of the links in the first post is broken :D

Code: Select all

http://ge.tt/8zMaRUW1
AHKStudent
Posts: 1472
Joined: 05 May 2018, 12:23

Re: [Archive] Collection of lost AHK Scripts & Libraries

09 Jun 2021, 05:30

Hi

I am looking for registry.ahk

https://autohotkey.com/board/topic/69713-com-registry-class-both-32-and-64-bit-access/

edit found it

Code: Select all

/*
  COM registry class for AutoHotkey >=1.1.00.00
  Last updated 7/31/2011
  Copyright (C) 2011 Bryan Perry <ih57452[AT]gmail.com>

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

class Registry {
  ;ErrorLevel will be set to an error code if there is an error, or 0 if it succeeded.
  ;Use an empty string to get and set Default values.
  
  static trees := {HKEY_LOCAL_MACHINE:  0x80000002, HKLM: 0x80000002
                  ,HKEY_USERS:          0x80000003, HKU:  0x80000003
                  ,HKEY_CURRENT_USER:   0x80000001, HKCU: 0x80000001
                  ,HKEY_CLASSES_ROOT:   0x80000000, HKCR: 0x80000000
                  ,HKEY_CURRENT_CONFIG: 0x80000005, HKCC: 0x80000005}

  static permissions := {KEY_QUERY_VALUE:        0x1      ;Required to query the values of a registry key.
                        ,KEY_SET_VALUE:          0x2      ;Required to create, delete, or set a registry value.
                        ,KEY_CREATE_SUB_KEY:     0x4      ;Required to create a subkey of a registry key.
                        ,KEY_ENUMERATE_SUB_KEYS: 0x8      ;Required to enumerate the subkeys of a registry key.
                        ,KEY_NOTIFY:             0x10     ;Required to request change notifications for a registry key or for subkeys of a registry key.
                        ,KEY_CREATE:             0x20     ;Required to create a registry key.
                        ,DELETE:                 0x10000  ;Required to delete a registry key.
                        ,READ_CONTROL:           0x20000  ;Combines the STANDARD_RIGHTS_READ, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, and KEY_NOTIFY values.
                        ,WRITE_DAC:              0x40000  ;Required to modify the DACL in the object's security descriptor.
                        ,WRITE_OWNER:            0x80000} ;Required to change the owner in the object's security descriptor.
                                                          ;You can add these values together to verify more than one access permission.

  static types := {REG_SZ:        1
                  ,REG_EXPAND_SZ: 2
                  ,REG_BINARY:    3
                  ,REG_DWORD:     4
                  ,REG_MULTI_SZ:  7
                  ,REG_QWORD:    11}

  __New(mode = 64, tree = "") {
    this.SetMode(mode)
    if (tree = "")
      tree := this.trees.HKLM
    this.tree := tree
  }
  
  __Set(key, value) {
    if (key = "mode")
      this.SetMode(value)
  }
  
  SetMode(mode) {
    if mode not in 32,64
    {
      MsgBox, 16, Error, Mode must be either 32 or 64.
      return
    }
    this.objCtx := ComObjCreate("WbemScripting.SWbemNamedValueSet")
    this.objCtx.Add("__ProviderArchitecture", mode)
    this.objCtx.Add("__RequiredArchitecture", ComObjParameter(0xB, -1))
    this.objLocator := ComObjCreate("Wbemscripting.SWbemLocator")
    this.objServices := this.objLocator.ConnectServer(ComObjMissing(), "root\default", ComObjMissing(), ComObjMissing(), ComObjMissing(), ComObjMissing(), ComObjMissing(), this.objCtx)
    this.objStdRegProv := this.objServices.Get("StdRegProv")
  }
  
  CheckAccess(PermissionsRequired, SubKey = "") {
    ;returns 1 if access granted or 0 if access denied
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("CheckAccess").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.uRequired := PermissionsRequired
    Outparams := this.objStdRegProv.ExecMethod_("CheckAccess", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    if (Outparams.bGranted = -1)
      return, 1
    return, 0
  }
  
  CreateKey(SubKey = "") {
    ;returns 0 if successful or an error code if failed
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("CreateKey").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Outparams := this.objStdRegProv.ExecMethod_("CreateKey", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.ReturnValue
  }
  
  DeleteKey(SubKey = "") {
    ;returns 0 if successful or an error code if failed
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("DeleteKey").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Outparams := this.objStdRegProv.ExecMethod_("DeleteKey", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.ReturnValue
  }
  
  DeleteValue(ValueName, SubKey = "") {
    ;returns 0 if successful or an error code if failed
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("DeleteValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    Outparams := this.objStdRegProv.ExecMethod_("DeleteValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.ReturnValue
  }
  
  EnumKey(SubKey = "") {
    ;returns an array of subkey names
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("EnumKey").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Outparams := this.objStdRegProv.ExecMethod_("EnumKey", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    returnObj := []
    for name in Outparams.sNames
      returnObj.Insert(name)
    return, returnObj
  }
  
  EnumValues(SubKey = "") {
    ;returns an associative array of values in the form of {ValueName: ValueType}
    ;ValueType is one of the values in Registry.types
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("EnumValues").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Outparams := this.objStdRegProv.ExecMethod_("EnumValues", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    names := []
    for name in Outparams.sNames
      names.Insert(name)
    types := []
    for type in Outparams.Types
      types.Insert(type)
    returnObj := {}
    for k, name in names
      returnObj[name] := types[A_Index]
    return, returnObj
  }
  
  GetBinaryValue(ValueName, SubKey = "") {
    ;returns a REG_BINARY value as an array of bytes
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("GetBinaryValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    Outparams := this.objStdRegProv.ExecMethod_("GetBinaryValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    returnObj := []
    for value in Outparams.uValue
      returnObj.Insert(value)
    return, returnObj
  }
  
  GetDWORDValue(ValueName, SubKey = "") {
    ;returns a REG_DWORD value
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("GetDWORDValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    Outparams := this.objStdRegProv.ExecMethod_("GetDWORDValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.uValue
  }
  
  GetExpandedStringValue(ValueName, SubKey = "") {
    ;returns a REG_EXPAND_SZ value
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("GetExpandedStringValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    Outparams := this.objStdRegProv.ExecMethod_("GetExpandedStringValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.sValue
  }
  
  GetMultiStringValue(ValueName, SubKey = "") {
    ;returns a REG_MULTI_SZ value as an array of strings
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("GetMultiStringValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    Outparams := this.objStdRegProv.ExecMethod_("GetMultiStringValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    returnObj := []
    for value in Outparams.sValue
      returnObj.Insert(value)
    return, returnObj
  }
  
  GetQWORDValue(ValueName, SubKey = "") {
    ;returns a REG_QWORD value
    ;Windows Server 2003, Windows XP, Windows 2000, Windows NT 4.0, and Windows Me/98/95: This method is not available.
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("GetQWORDValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    Outparams := this.objStdRegProv.ExecMethod_("GetQWORDValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.uValue
  }
  
  GetStringValue(ValueName, SubKey = "") {
    ;returns a REG_SZ value
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("GetStringValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    Outparams := this.objStdRegProv.ExecMethod_("GetStringValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.sValue
  }
  
  SetBinaryValue(ValueName, Value, SubKey = "") {
    ;sets a REG_BINARY value to an array of bytes
    ;returns 0 if successful or an error code if failed
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("SetBinaryValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    for k, v in Value
      Inparams.uValue[k-1] := v
    Outparams := this.objStdRegProv.ExecMethod_("SetBinaryValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.ReturnValue
  }
  
  SetDWORDValue(ValueName, Value, SubKey = "") {
    ;sets a REG_DWORD value
    ;returns 0 if successful or an error code if failed
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("SetDWORDValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    Inparams.uValue := Value
    Outparams := this.objStdRegProv.ExecMethod_("SetDWORDValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.ReturnValue
  }
  
  SetExpandedStringValue(ValueName, Value, SubKey = "") {
    ;sets a REG_EXPAND_SZ value
    ;returns 0 if successful or an error code if failed
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("SetExpandedStringValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    Inparams.sValue := Value
    Outparams := this.objStdRegProv.ExecMethod_("SetExpandedStringValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.ReturnValue
  }
  
  SetMultiStringValue(ValueName, Value, SubKey = "") {
    ;sets a REG_MULTI_SZ value to an array of strings
    ;returns 0 if successful or an error code if failed
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("SetMultiStringValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    for k, v in Value
      Inparams.sValue[k-1] := v
    Outparams := this.objStdRegProv.ExecMethod_("SetMultiStringValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.ReturnValue
  }
  
  SetQWORDValue(ValueName, Value, SubKey = "") {
    ;sets a REG_QWORD value
    ;returns 0 if successful or an error code if failed
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("SetQWORDValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    Inparams.uValue := Value
    Outparams := this.objStdRegProv.ExecMethod_("SetQWORDValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.ReturnValue
  }
  
  SetStringValue(ValueName, Value, SubKey = "") {
    ;sets a REG_SZ value
    ;returns 0 if successful or an error code if failed
    if (SubKey = "") {
      SubKey := this.SubKey
      if (SubKey = "") {
        MsgBox, 16, Error, SubKey is not defined.
        return
      }
    }
    Inparams := this.objStdRegProv.Methods_("SetStringValue").Inparameters
    Inparams.hDefKey := this.tree
    Inparams.sSubKeyName := SubKey
    Inparams.sValueName := ValueName
    Inparams.sValue := Value
    Outparams := this.objStdRegProv.ExecMethod_("SetStringValue", Inparams, ComObjMissing(), this.objCtx)
    ErrorLevel := Outparams.ReturnValue
    return, Outparams.ReturnValue
  }
}
ztoddw
Posts: 5
Joined: 31 Jan 2015, 23:47

Re: [Archive] Collection of lost AHK Scripts & Libraries

26 Aug 2021, 17:50

Anyone have a script that does something like this? Looking for one to mark spots on the screen for me which I can assign hot keys to, to produce a click on that spot.
g00dhum0r
Posts: 3
Joined: 04 Jan 2022, 13:40

Re: [Archive] Collection of lost AHK Scripts & Libraries

06 Jan 2022, 04:07

ztoddw wrote:
26 Aug 2021, 17:50
Anyone have a script that does something like this? Looking for one to mark spots on the screen for me which I can assign hot keys to, to produce a click on that spot.
Does something like what? Mark X,Y screen coordinates on a CSV file, and have your mouse hovers there and click it? However, if you want to click a specific spot, you want to assign a special "hot key" to click manually aswell? You have to elaborate, and possible put this request in it's own thread somewhere. Not here BUT, yes, completely possible.
ztoddw
Posts: 5
Joined: 31 Jan 2015, 23:47

Re: [Archive] Collection of lost AHK Scripts & Libraries

06 Jan 2022, 04:35

g00dhum0r wrote:
06 Jan 2022, 04:07
ztoddw wrote:
26 Aug 2021, 17:50
Anyone have a script that does something like this? Looking for one to mark spots on the screen for me which I can assign hot keys to, to produce a click on that spot.
Does something like what? Mark X,Y screen coordinates on a CSV file, and have your mouse hovers there and click it? However, if you want to click a specific spot, you want to assign a special "hot key" to click manually aswell? You have to elaborate, and possible put this request in it's own thread somewhere. Not here BUT, yes, completely possible.
Yep, something like what you just described. I think.

Let me try to describe it this way: I want to be able to assign certain spots on my screen to be able to have a click simulated on that spot when I press a certain hot key. I imagine I will click a button to tell the script I'm ready to assign a new spot, then I'll click on that new spot, then press the key or key combination I want to use as the trigger for it. Then every time I press that key combination after that, it will generate a click on that spot.
User avatar
joedf
Posts: 8940
Joined: 29 Sep 2013, 17:08
Location: Canada
Contact:

Re: [Archive] Collection of lost AHK Scripts & Libraries

06 Jan 2022, 10:09

@ztoddw Have you given Pulover’s Macro Creator a try?
https://www.macrocreator.com/
Image Image Image Image Image
Windows 10 x64 Professional, Intel i5-8500, NVIDIA GTX 1060 6GB, 2x16GB Kingston FURY Beast - DDR4 3200 MHz | [About Me] | [About the AHK Foundation] | [Courses on AutoHotkey]
[ASPDM - StdLib Distribution] | [Qonsole - Quake-like console emulator] | [LibCon - Autohotkey Console Library]

Return to “Scripts and Functions (v1)”

Who is online

Users browsing this forum: Descolada and 124 guests