Snippets ( Windows Settings )
_ChangeWallpaper
Author: TheOnlyOne
_ChangeWallpaper("c:\Documents and Settings\lo\Skrivebord\gaza.bmp",1) ; only a simple cut & paste
Func _ChangeWallpaper($sFile,$iType)
; Changes the wallpaper to $sFilename using $iType as:
; 1 Tiled
; 2 Centered
; 3 Stretched
; any other value (usually 0) unchanged
;
; Returns
; 0 if everything is allright.
; -1 if $sFile does not exist. @error is set to 1
; -2 if £sFile is not a .bmp file. @error is set to 2
If Not FileExists($sFile) Then
SetError(1)
Return -1
EndIf
If StringTrimLeft($sFile,StringInStr($sFile,'.',0,-1)) <> 'bmp' Then
SetError(2)
Return -2
EndIf
Select
Case $iType = 1
RegWrite('HKCU\Control Panel\Desktop','TileWallpaper','reg_sz','1')
RegWrite('HKCU\Control Panel\Desktop','WallpaperStyle','reg_sz','0')
Case $iType = 2
RegWrite('HKCU\Control Panel\Desktop','TileWallpaper','reg_sz','0')
RegWrite('HKCU\Control Panel\Desktop','WallpaperStyle','reg_sz','0')
Case $iType = 3
RegWrite('HKCU\Control Panel\Desktop','TileWallpaper','reg_sz','0')
RegWrite('HKCU\Control Panel\Desktop','WallpaperStyle','reg_sz','2')
Case Else
EndSelect
RegWrite('HKCU\Control Panel\Desktop','Wallpaper','reg_sz',$sFile)
DllCall("User32.dll","int","SystemParametersInfo","int",20,"int",0,"str",$sFile,"int",0)
Return 0
EndFunc
_CheckProcess
Author: Valuater
; Notify and Name of any new process started
Global $aProcessList_1 = ProcessList()
AdlibRegister("_CheckProcess")
While 1
Sleep(20)
WEnd
Func _CheckProcess()
Local $aProcessList_2 = ProcessList()
If $aProcessList_2[0][0] > $aProcessList_1[0][0] Then
MsgBox(4096, '', 'New process: ' & $aProcessList_2[$aProcessList_2[0][0]][0])
$aProcessList_1[0][0] = $aProcessList_2[0][0]
Else
$aProcessList_1[0][0] = $aProcessList_2[0][0]
; If you close processes this resets the list.s
EndIf
EndFunc ;==>_CheckProcess
_Clipboard_GetHTML
Author: Mat
#include <ClipBoard.au3>
If (Not _ClipBoard_Open(0)) Then
ConsoleWriteError("_ClipBoard_Open failed" & @LF)
Else
Local $sData = _Clipboard_GetHTML()
Switch @error
Case 1
ConsoleWriteError("Could not register CF_HTML format" & @LF)
Case 2
ConsoleWriteError("Clipboard data not available in HTML format" & @LF)
Case 3
ConsoleWriteError("Invalid HTML format header (missing end or start fragment)" & @LF)
Case 0
ConsoleWrite($sData & @LF)
EndSwitch
EndIf
_ClipBoard_Close()
; #FUNCTION# ====================================================================================================================
; Name ..........: _Clipboard_GetHTML
; Description ...: Retrieves the data from the clipboard in HTML format
; Syntax ........: _Clipboard_GetHTML( )
; Parameters ....: None
; Return values .: Success: Returns the data from the clipbard as html.
; Failure: Returns an empty string and sets @error:
; | 1 - Could not register CF_HTML format
; | 2 - Clipboard data not available in HTML format
; | 3 - Invalid HTML format header (missing end or start fragment)
; Author ........: Matt Diesel (Mat)
; Modified ......:
; Remarks .......: This assumes that the clipboard is already open. The _Clipboard_Open function should be called first.
; Related .......:
; Link ..........:
; Example .......: Above.
; ===============================================================================================================================
Func _Clipboard_GetHTML()
Local $CF_HTML, $pHTML, $tHeader, $asHeader, $asLine, $iStartFragment = -1, $iEndFragment = -1
; Register the CF_HTML format
$CF_HTML = _ClipBoard_RegisterFormat("HTML Format")
If (Not $CF_HTML) Then Return SetError(1, 0, "") ; Could not register CF_HTML format
If (Not _ClipBoard_IsFormatAvailable($CF_HTML)) Then Return SetError(2, 0, "") ; Clipboard data not available in HTML format
$pHTML = _ClipBoard_GetDataEx($CF_HTML)
$tHeader = DllStructCreate("char t[104]", $pHTML)
$asHeader = StringSplit(DllStructGetData($tHeader, "t"), @CRLF, 1)
; Find start and end of fragment from header.
For $i = 1 To $asHeader[0]
$asLine = StringSplit($asHeader[$i], ":")
Switch $asLine[1]
Case "StartFragment"
$iStartFragment = Int($asLine[2])
Case "EndFragment"
$iEndFragment = Int($asLine[2])
EndSwitch
Next
If (($iEndFragment < 0) Or ($iStartFragment < 0)) Then Return SetError(3, 0, "") ; Invalid HTML format header (missing end or start fragment)
$tHeader = DllStructCreate("char t[" & $iEndFragment - $iStartFragment + 1 & "]", $pHTML + $iStartFragment)
Return DllStructGetData($tHeader, "t")
EndFunc ;==>_Clipboard_GetHTML
_CreateSystemRestorePoint
Author: Pakku
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$disable = True ;set True to disable system restore after creating a restore point and False to keep system restore enabled
Opt("TrayMenuMode",1)
$create = TrayCreateItem("Create")
TrayCreateItem("")
$exit = TrayCreateItem("Exit")
TraySetState()
$gui = GUICreate("Create System Restore Point",176,21,@DesktopWidth - 176,@DesktopHeight - 80,$WS_POPUP,$WS_EX_TOOLWINDOW + $WS_EX_TOPMOST)
$input = GUICtrlCreateInput("",0,0,150,21)
$send = GUICtrlCreateButton("OK",150,0,26,21)
GUISetState(@SW_HIDE,$gui)
While 1
$tray_msg = TrayGetMsg()
$gui_msg = GUIGetMsg()
Select
Case $tray_msg = $create
GUICtrlSetData($input,"RestorePoint " & @HOUR & ":" & @MIN & ":" & @SEC)
GUISetState(@SW_SHOW,$gui)
Case $tray_msg = $exit
Exit
Case $gui_msg = $send
If StringLen(GUICtrlRead($input)) > 0 Then
GUISetState(@SW_HIDE,$gui)
_CreateSystemRestorePoint(GUICtrlRead($input),$disable)
Else
GUISetState(@SW_HIDE,$gui)
EndIf
EndSelect
WEnd
Func _CreateSystemRestorePoint($discription,$disable = True)
#RequireAdmin
$obj = ObjGet("winmgmts:{impersonationLevel=impersonate}!root/default:SystemRestore")
$obj.Enable("")
$obj.CreateRestorePoint($discription, 12, 100)
If $disable Then
$obj.Disable("")
EndIf
EndFunc
Change the master volume setting on Windows Vista and 7
Author: BrewManNH
Additional Info32 bit bass dll available from: Bass dll
64 bit version of the Bass.dll that can be used on 64 bit machines: 64 Bit Bass dll
; change the master volume setting on Windows Vista and 7 using the Bass library and DLL.
#AutoIt3Wrapper_UseX64=n
#include <bass.au3> ; see above for download information
#include <guiconstantsex.au3>
_Bass_Startup()
_BASS_Init(0, -1, 44100, 0, "")
If @error Then Exit
Global $LastPass = 0
$GUI = GUICreate("Volume control demo")
$MasterVolume = GUICtrlCreateSlider(20, 20, 300, 30)
$Check = GUICtrlCreateCheckbox("Master Volume", 10, 120)
GUISetState()
While 1
$msg = GUIGetMsg()
If GUICtrlRead($Check) = $GUI_CHECKED Then
If GUICtrlRead($MasterVolume) <> $LastPass Then
$Test = _Bass_SetVolume((GUICtrlRead($MasterVolume)/ 100)) ; sets the MASTER volume control in Vista/7
$LastPass = GUICtrlRead($MasterVolume)
EndIf
Else
If GUICtrlRead($MasterVolume) <> $LastPass Then
SoundSetWaveVolume(GUICtrlRead($MasterVolume)) ; only affects the applications volume control under Vista/7
$LastPass = GUICtrlRead($MasterVolume)
EndIf
EndIf
Switch $msg
Case -3
_BASS_Free()
Exit
EndSwitch
WEnd
_IsDEPEnabled
Author: guinness
#include <Constants.au3>
Local $fIsDEPEnabled = _IsDEPEnabled()
Local $iDEPValue = @extended
ConsoleWrite('Is DEP enabled?: ' & $fIsDEPEnabled & ', ' & ' the DEP value is: ' & $iDEPValue & '.' & @CRLF)
; What is DEP?: http://windows.microsoft.com/en-US/windows-vista/What-is-Data-Execution-Prevention
; This checks if DEP is enabled on the system and returns the DEP value via the @extended macro.
; Description about the DEP value can be found at: http://msdn.microsoft.com/en-us/library/windows/desktop/bb736298(v=vs.85).aspx
Func _IsDEPEnabled() ; Idea by UEZ from Windows Screenshooter.
Local $iPID = Run(@ComSpec & ' /c wmic os get DataExecutionPrevention_SupportPolicy', @SystemDir, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sOutput = ''
While 1
$sOutput &= StdoutRead($iPID)
If @error Then
ExitLoop
EndIf
WEnd
Local $iDEPValue = Number(StringRight(StringStripWS($sOutput, 8), 1))
Return SetError(0, $iDEPValue, $iDEPValue > 0)
EndFunc ;==>_IsDEPEnabled
_KillWindow
Author: Valuater
; _KillWindow ( That you know is going to show up)
Func _KillWindow($title)
Local $Script = 'WinWait("' & $title & '", "")' & @CRLF & 'WinKill("' & $title & '", "")'
Local $file_loc = @ScriptDir & "\Killer.au3"
FileDelete($file_loc)
FileWrite($file_loc, $Script)
If @Compiled = 1 Then
$file_exe = FileGetShortName(@AutoItExe & ' /AutoIt3ExecuteScript "' & $file_loc & '"')
Run($file_exe)
Else
$file_au3 = FileGetShortName($file_loc)
Run(@AutoItExe & " " & $file_au3, "", @SW_HIDE)
EndIf
EndFunc ;==>_KillWindow
_ProcessKill
Author: guinness
Func _ProcessKill($iPID)
Local $iTimeOut = 5, $iTimer
$iTimeOut *= 1000
$iTimer = TimerInit()
While ProcessExists($iPID)
If TimerDiff($iTimer) > $iTimeOut Then
ExitLoop
EndIf
RunWait('TASKKILL /F /PID ' & $iPID, @SystemDir & "\", @SW_HIDE)
Sleep(20)
WEnd
Return Number(ProcessExists($iPID) > 0)
EndFunc ;==>_ProcessKill
_SetCurrentPath
Author: guinness
#include <WinAPI.au3>
ConsoleWrite(_WinAPI_PathFindOnPath(@ScriptName) & @LF)
_SetCurrentPath()
ConsoleWrite(_WinAPI_PathFindOnPath(@ScriptName) & @LF)
Func _SetCurrentPath()
Return EnvSet("PATH", EnvGet("PATH") & ";" & @ScriptDir & "\")
EndFunc ;==>_SetCurrentPath
_SetComputerName
Author: JScript
;Author: JScript - Snippet Version No. = 1.0
;Snippet was Created Using AutoIt Version = 3.3.8.1, Creation Date = 28/05/12.
#RequireAdmin
_SetComputerName("AutoIt")
Send("#{PAUSE}")
; Sets computer name without restart!
Func _SetComputerName($sCmpName)
Local $sLogonKey = "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogon"
Local $sCtrlKey = "HKLMSYSTEMCurrentControlSet"
Local $aRet
; RagsRevenge -> http://www.autoitscript.com/forum/index.php?showtopic=54091&view=findpost&p=821901
If StringRegExp($sCmpName, '|/|:|*|?|"|<|>|.|,|~|!|@|#|$|%|^|&|(|)|;|{|}|_|=|+|[|]|x60' & "|'", 0) = 1 Then Return 0
; 5 = ComputerNamePhysicalDnsHostname
$aRet = DllCall("Kernel32.dll", "BOOL", "SetComputerNameEx", "int", 5, "str", $sCmpName)
If $aRet[0] = 0 Then Return SetError(1, 0, 0)
RegWrite($sCtrlKey & "ControlComputernameActiveComputername", "ComputerName", "REG_SZ", $sCmpName)
RegWrite($sCtrlKey & "ControlComputernameComputername", "ComputerName", "REG_SZ", $sCmpName)
RegWrite($sCtrlKey & "ServicesTcpipParameters", "Hostname", "REG_SZ", $sCmpName)
RegWrite($sCtrlKey & "ServicesTcpipParameters", "NV Hostname", "REG_SZ", $sCmpName)
RegWrite($sLogonKey, "AltDefaultDomainName", "REG_SZ", $sCmpName)
RegWrite($sLogonKey, "DefaultDomainName", "REG_SZ", $sCmpName)
RegWrite("HKEY_USERS.DefaultSoftwareMicrosoftWindows MediaWMSDKGeneral", "Computername", "REG_SZ", $sCmpName)
; Set Global Environment Variable
RegWrite($sCtrlKey & "ControlSession ManagerEnvironment", "Computername", "REG_SZ", $sCmpName)
; http://msdn.microsoft.com/en-us/library/ms686206%28VS.85%29.aspx
$aRet = DllCall("Kernel32.dll", "BOOL", "SetEnvironmentVariable", "str", "Computername", "str", $sCmpName)
If $aRet[0] = 0 Then Return SetError(2, 0, 0)
; http://msdn.microsoft.com/en-us/library/ms644952%28VS.85%29.aspx
$iRet2 = DllCall("user32.dll", "lresult", "SendMessageTimeoutW", "hwnd", 0xffff, "dword", 0x001A, "ptr", 0, _
"wstr", "Environment", "dword", 0x0002, "dword", 5000, "dword_ptr*", 0)
If $iRet2[0] = 0 Then Return SetError(2, 0, 0)
Return 1
EndFunc ;==>_SetComputerName
_SetEnvironment
Author: MrCreatoR
Modified: guinness
_SetEnvironment("CUSTOM_PATH", @ScriptDir, 0)
; #FUNCTION# ====================================================================================================================
; Name ..........: _SetEnvironment
; Description ...: Set/update a system wide environment variable.
; Syntax ........: _SetEnvironment($sEnvironmentVar, $sData[, $iAllUsers = 0])
; Parameters ....: $sEnvironmentVar - Name of the environment variable to set/update.
; $sData - Value to set the environment variable to. If a value is not used the environment variable will be deleted.
; $iAllUsers - [optional] Add to Current Users (0) or All Users (1). Default is 0.
; Return values .: None
; Author ........: MrCreatoR
; Modified ......: guinness
; Link ..........: http://www.autoitscript.com/forum/topic/...can-i-create-a-new-environment
; Example .......: Yes
; ===============================================================================================================================
Func _SetEnvironment($sEnvironmentVar, $sData, $iAllUsers = 0)
Local $i64Bit = "", $sRegistryKey = ""
If StringStripWS($sEnvironmentVar, 8) = "" Then
Return SetError(1, 0, 0)
EndIf
If @OSArch = "X64" Then
$i64Bit = "64"
EndIf
If $iAllUsers Then
$sRegistryKey = "HKEY_LOCAL_MACHINE" & $i64Bit & "\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
Else
$sRegistryKey = "HKEY_CURRENT_USER" & $i64Bit & "\Environment"
EndIf
If StringStripWS($sData, 8) = "" Then
Return RegDelete($sRegistryKey, $sEnvironmentVar)
Else
Return RegWrite($sRegistryKey, $sEnvironmentVar, "REG_SZ", $sData)
EndIf
EndFunc ;==>_SetEnvironment
_UUIDCreate
Author: smashly
; Generate a Uuid (Unique user id), I use when I want to generate a dynamic unused CLSID
#include <WinAPI.au3>
Local $sCLSID = _UUIDCreate()
ConsoleWrite($sCLSID & @LF)
Func _UUIDCreate()
Local $tGUID, $pGUID
$tGUID = DllStructCreate($tagGUID)
$pGUID = DllStructGetPtr($tGUID)
DllCall("rpcrt4.dll", "int", "UuidCreate", "ptr", $pGUID)
If Not @error Then Return _WinAPI_StringFromGUID($pGUID)
EndFunc ;==>_UUIDCreate
UUID Generator
Author: GaryFrost
;UUID Generator
Const $ERROR_SUCCESS = 0
Const $RPC_S_OK = $ERROR_SUCCESS
Const $RPC_S_UUID_LOCAL_ONLY = 1824
Const $RPC_S_UUID_NO_ADDRESS = 1739
;~ typedef struct _GUID {
;~ unsigned long Data1;
;~ unsigned short Data2;
;~ unsigned short Data3;
;~ unsigned char Data4[8];
;~ } GUID, UUID;
;~ Data1
;~ Specifies the first 8 hexadecimal digits of the UUID.
;~ Data2
;~ Specifies the first group of 4 hexadecimal digits of the UUID.
;~ Data3
;~ Specifies the second group of 4 hexadecimal digits of the UUID.
;~ Data4
;~ Array of eight elements. The first two elements contain the third group of 4 hexadecimal digits of the UUID.
;~ The remaining six elements contain the final 12 hexadecimal digits of the UUID.
Local $_GUID = DllStructCreate("uint;ushort;ushort;ubyte[8]")
If @error Then Exit
;~ RPC_STATUS RPC_ENTRY UuidCreate(
;~ UUID __RPC_FAR* Uuid
;~ );
Local $ret = DllCall("Rpcrt4.dll", "ptr", "UuidCreate", "ptr", DllStructGetPtr($_GUID))
Local $uuid
If Not @error Then
If $ret[0] = $ERROR_SUCCESS Then
$uuid = Hex(DllStructGetData($_GUID, 1), 8) & "-" & _
Hex(DllStructGetData($_GUID, 2), 4) & "-" & _
Hex(DllStructGetData($_GUID, 3), 4) & "-" & _
Hex(DllStructGetData($_GUID, 4, 1), 2) & Hex(DllStructGetData($_GUID, 4, 2), 2) & "-"
For $x = 3 To 8
$uuid = $uuid & Hex(DllStructGetData($_GUID, 4, $x), 2)
Next
MsgBox(0,"UUID", $uuid & @LF & @LF & "Note:" & @LF & _
"In Windows NT 4.0, Windows Me/98, and Windows 95 DCOM release," & @LF & _
"UuidCreate returns RPC_S_UUID_LOCAL_ONLY when the originating computer" & @LF & _
"does not have an ethernet/token ring (IEEE 802.x) address." & @LF & _
"In this case, the generated UUID is a valid identifier, and is" & @LF & _
"guaranteed to be unique among all UUIDs generated on the computer." & @LF & @LF & _
"However, the possibility exists that another computer without an" & @LF & _
"ethernet/token ring address generated the identical UUID." & @LF & @LF & _
"Therefore you should never use this UUID to identify an object" & @LF & _
"that is not strictly local to your computer." & @LF & @LF & _
"Computers with ethernet/token ring addresses generate UUIDs that" & @LF & _
"are guaranteed to be globally unique.")
EndIf
EndIf
$_GUID = 0
_WinShowHide
Author: knightz93
Run("notepad.exe")
Global $hwnd = WinWait("[CLASS:Notepad]", "")
ConsoleWrite('!> HIDE SHOW NOTEPAD WINDOW : ')
ConsoleWrite(WinShowHide($hwnd) & @CRLF)
Sleep(2000)
ConsoleWrite('!> SHOW HIDE NOTEPAD WINDOW :')
ConsoleWrite(WinShowHide($hwnd) & @CRLF)
Sleep(2000)
WinKill("[CLASS:Notepad]", "")
Func WinShowHide($WindowTitle, $WindowText = '')
Local $Result = WinGetState($WindowTitle, $WindowText)
If BitAND($Result , 2) = 2 Then
WinSetState($WindowTitle, $WindowText, @SW_HIDE)
Return True
ElseIf BitAND($Result , 2) = 0 Then
If BitAND($Result , 1) = 0 Then
Return False
Else
WinSetState($WindowTitle, $WindowText, @SW_SHOW)
Return True
EndIf
EndIf
EndFunc
_WindowsUpdate
Author: guinness
ConsoleWrite('Windows Update PID: ' & _WindowsUpdate() & @CRLF)
; Version: 1.00. AutoIt: V3.3.8.1
; Start the Windows Update process and detect updates immediately.
Func _WindowsUpdate()
Return Run(@ComSpec & ' /c wuauclt /a /DetectNow', @SystemDir, @SW_HIDE)
EndFunc ;==>_WindowsUpdate