Leaderboard
Popular Content
Showing content with the highest reputation on 06/13/2019 in all areas
-
Peace Equalizer shows power of AutoIt
Zedna and 3 others reacted to PeterVerbeek for a topic
In this post I take the opportunity to show the awesome capabilities of AutoIt and its libraries. My open source project Peace is a long running AutoIt based app located on SourceForge. It provides users with a system-wide equalizer and effects machine. It's an interface using the power of Equalizer APO, an audio processing object software. Peace has been download over 2,600,000 times by various kind of users. Amongst others it gives them possibilities like these: Hearing impaired - Amplify the gain of frequencies which are impaired. Home Theatre - Create Equalizer presets for watching movies and listening to music. Music lovers & audiophiles - Create presets for listening to music on their high quality speakers and headphones. Gamers - Enhance frequencies to get an edge over other gamers. Headphones - Improve the sound quality of cheap headphones and get the max out of expensive ones. Bass lovers - Boost low frequencies for extra bass. Voice - Make a microphone sound better and improve the voice, for instance for YouTube usage. Low audio - Boost low audio of an input source to a comfortable level. This list covers the main needs of the Peace user. Many people have contacted me over the years asking for new features and telling me how they use Peace for their (sometimes specific) needs. I was able to use AutoIt and its libraries for all of their needs. So what are the main features of Peace? Equalize your computer audio by using up to 31 sliders. Support of equalizing 9 speakers : left/right, center, subwoofer, left/right rear, left/right side. Per slider a filter can be chosen such as peak, low/high pass, shelving. The graph windows shows your equalization so you see exactly what you're doing. Apply an effect such as crossfeed simple/Jan Meier/Chu Moy, stereo balance, bass/treble, upmix/downmix, channel routing. Save presets (called configurations) and activate by mouse click, hotkey, desktop shortcut or Peace system tray. Select a target device to equalize, microphone as input can also be equalized. Automate: you can let Peace automatically activate presets on a switch to another device and another process. Peace is available in these languages: English, Czech, Deutsch, Français, Italiano, Nederlands, Pусский, Українська So who am I? I'm a Dutch programmer who happens the stumble upon AutoIt 5 years ago and created a small Equalizer interface app of less than 400 program lines with it. Nowadays Peace has grown to more than 18,000 lines as many features were added. Although Peace is open source, the program code isn't of the best possible quality. The reason being that I didn't expect it to become so popular. It caught me by supprise. I've created a Library of functions called Pal (link to forum post) which quality is up to the AutoIt community standard as counterpart to the Peace program code. I want to state here that AutoIt is a mature program language as Peace obviously shows. I wish it to be used more extensively for professional or semi-professional apps. In my view AutoIt deserves a place amongst the major programming languages for Windows computers. Regards, Peter Verbeek4 points -
Peace Equalizer shows power of AutoIt
seadoggie01 and one other reacted to Jos for a topic
That's easy: We're cheap lazy bastards so we use the free great tools to get our stuff done for us. Seriously: I am was using it "ages" ago for automating repetitive tasks and some major global unattended software rollouts.... and somehow like the abuse I get around here. 🙂 Jos2 points -
^.{1,7}$\R? \R? = newline sequence , optional to match on a last line if no trailing newline Now it was clear2 points
-
Notify - New version 17 Mar 22
pixelsearch reacted to Melba23 for a topic
[NEW VERSION] - 17 Mar 22 Added: A new function _Notify_Size which allows you to adjust the size of the notification from its default 160x40. Please read the function header to see the max/min sizes that you can set for the width and height - the function returns informative @error/@extended values if these are not respected. Regardless of the size set, each notification will still display only 2 lines of text with the size of font used set automatically by the UDF. New UDF in the zip below. Previous changes: Changelog.txt A while ago I was asked to help port an AHK UDF to AutoIt. This was not too difficult and I found it useful myself (as a replacement for ConsoleWrite when debugging compiled scripts among other things). I have been polishing it for a while and thought I might release it in case it proves useful to anyone else. The notifications produced by Notify are small 2-line boxes that pop out of the edge of the display one above the other (you can select which side and in which direction they appear) - you can have as many as you want although only as many as can fit on your display will appear, the others will appear as soon as there is room. You can select whether they will retract after a certain time and/or when clicked. Colours and font are user-definable, and you can add an icon or image (bmp, jpg, gif or png) if you wish. When a notification retracts, the others move to leave space for more (you can select a smoooth slide or an instant move) - run the examples to see them in action. If you find the default sizing of the notifications is not to your liking you can change it by amending these values in the UDF (lines #354-356): ; Set default auto-sizing Notify dimensions Local $iNotify_Width_max = 300 Local $iNotify_Width_min = 150 Local $iNotify_Height = 40 A zip containing the UDF, example scripts and my StringSize UDF (which is also required): Notify.zip As usual happy for comments and/or compliments. M231 point -
Peace Equalizer shows power of AutoIt
argumentum reacted to PeterVerbeek for a topic
@argumentum This button shouldn't be hidden when Equalizer APO isn't installed yet. Many thanks for pointing to this bug. I've corrected it.1 point -
1 point
-
As @Jos mentioned, use the Autoit Customized SciTE Editor, if not done so far. With almost 100 postings I think you might have done that already? Many of the compiler options are accessible by the GUI that's showing, when you press CTRL+F7 in SciTE with the script open in the editor. That way you don't need to know that directive by heart:1 point
-
The easy way is to install the Full version of SciTE4AutoIt3 first and then add this at the top of your script: #AutoIt3Wrapper_UseX64=y .. and then simply hit Run (F5) again in SciTE. :-) Jos1 point
-
That's what @AdamUL has mentioned above. Either disable WOW redirection, or you also can compile your script for 64 bit environment Pls. have a look at the Autoit Helpfile Macro Reference, search for @AppDataCommonDir1 point
-
use the Autoit Macro @DesktopDir instead of "C:\Users\Blets\Desktop\"1 point
-
Try something like this: $aDetails = FileGetShortcut(@DesktopDir & "\config.lnk") ConsoleWrite("Path: " & $aDetails[0] & @CRLF & _ "Working directory: " & $aDetails[1] & @CRLF & _ "Arguments: " & $aDetails[2] & @CRLF & _ "Description: " & $aDetails[3] & @CRLF & _ "Icon filename: " & $aDetails[4] & @CRLF & _ "Icon index: " & $aDetails[5] & @CRLF & _ "Shortcut state: " & $aDetails[6] & @CRLF) ShellExecute($aDetails[0],$aDetails[2],$aDetails[1]) and run that form SciTE and tell us what the result is in the Outputpane. Jos1 point
-
1 point
-
you need this line at the very beginning of your script : #include <WinAPIFiles.au3>1 point
-
1 point
-
1 point
-
Peace Equalizer shows power of AutoIt
czardas reacted to PeterVerbeek for a topic
czardas, thanks for the compliment. Dank je.1 point -
You can use either the handle or the filename, however your code included FileClose() which is only for "filehandle", you shouldn't mix the two. According to the helpfile, using filehandle should be quicker parsing larger files than just using "filename". WIth regards to your statement about @error returning 0, this is correct behaviour, if you look at the return value for FileRead, a failure will return a non-zero. The -1 you're referring to is a failure reading a file where it has no content, so only returns the eof.1 point
-
s!mpL3 LAN Messenger
FrancescoDiMuro reacted to AoRaToS for a topic
s!mpL3 LAN Messenger version 2.9.9.0 - [13/06/2019] - s!mpL3 LAN Messenger.zip 1. This is your first chance to try the new LAN Update feature! Just update s!mpL3 LAN Messenger on one computer and when it connects, all other computers on the network that have the option enabled should prompt you to update! I have made some fixes to LAN Update in this version which will be visible next time. One of them is a custom GUI to inform you of an update which doesn't block the rest of the Messenger like the message box does in version 2.9.8.9. 2. Fixed "Unblock" button in Blocked Users List so that it's disabled when the list is empty and enabled when there are users in it. 3. Fixed an issue with some GUIs not hiding as they should when using the "Hide" option. (Blocked Users List, License) 4. Fixed an issue where if you would block someone, the chat window with them would remain open, now it closes. I might change this to the window remaining but becoming disabled. 5. Fixed a bug with resizing conversation windows and the buttons overlapping. The edits do not resize perfectly but I will work on that in a future version. 6. Added new icons for sending/receiving files. This icon will appear in the Tray for each file transfer that is underway and provides information about the file being sent/received and the progress of the transfer. 7. Updated all links to https. 8. Fixed multiple smaller bugs.1 point -
Give the following a try. This is based on what you give for the shortcut. Also, do you have 64-bit OS, and running you script as 32-bit? Using ShellExecute #include <WinAPIFiles.au3> ;Turn off redirection for a 32-bit script on 64-bit system. If @OSArch = "X64" And Not @AutoItX64 Then _WinAPI_Wow64EnableWow64FsRedirection(False) ShellExecute("C:\Program Files\Rainmeter\Rainmeter.exe", '!ToggleConfig "Black Screen" "BlackScreen.ini"', "C:\Program Files\Rainmeter") Using Run #include <WinAPIFiles.au3> ;Turn off redirection for a 32-bit script on 64-bit system. If @OSArch = "X64" And Not @AutoItX64 Then _WinAPI_Wow64EnableWow64FsRedirection(False) Run('"C:\Program Files\Rainmeter\Rainmeter.exe" !ToggleConfig "Black Screen" "BlackScreen.ini"', "C:\Program Files\Rainmeter") Adam1 point
-
Peace Equalizer shows power of AutoIt
PeterVerbeek reacted to czardas for a topic
This looks fantastic. I haven't time to test it right now, but I will do soon. Mooi!1 point -
Peace Equalizer shows power of AutoIt
PeterVerbeek reacted to FrancescoDiMuro for a topic
@PeterVerbeek Very interesting and nice work! Well done1 point -
1 point
-
Peace Equalizer shows power of AutoIt
PeterVerbeek reacted to mLipok for a topic
Is there support for multi lingual, GUI Internationalization / Translation ? btw. Thanks for this link ... and to the forum.1 point -
Hello to all.. Returning this project, submitted a new version of the GUIBUILDER. This is an open project and i hope your suggestion and collaboration. Sample of Look and Feel. 1) Motivations: When you return to the development of the guibuilder, i ask to myself because I make a new program when there are already other full already extensive use among programrs as for example ISNT Studio or the K.O.D.A. And I found myself with the necessity that this is easily extensible, independent of the programming language and in a future integrated into a larger suite that includes other components (e.g., automation in the program flows, modeling of data structure, programming by rules, distinction of tasks by users, integration with other applications using standards such as SOAP or REST, etc.). This is so understanding the state of the art of software development today, is no longer useful that the aid is only in GUI development's. 2) Rationalizations: My first impulse to resuming development was to follow the methodology applied up until that time. But to have to speak the message loop to add the editing of properties of the window, I found myself in a quagmire to locate the exact site where to insert the new code. Just at that moment I understood because in Guibuilder Ravamped withdrew all the code that did not belong to the basic structure. This experience led me to adopt a third alternative expressed in the following actions: Convert all pieces of possible codes in functions: to each of these new features, you added a description and document parameters of Estrada, output and global variables used or modified. Organization of code and functions in sections: I understood that it is easier to find, understand and modify a section of code, if this is grouped according to what it does, The separation into Sections also reached to code generated by the GuiBuilder. Use a Database: In reviewing the various codes to modify i found that many of them were very similar, being able to save labor and time, separating the data in the instructions themselves and placing the latter in a local database (see Modifying_db.txt and structure_db.txt) Edition of Properties: While many controls have similar properties, this is not the case for all of them. By this replaced the fields Edit, by a grid, then automated change of each one of them, placed in the Db information on editing mechanism, by default values and classes about which it applies. New main window: It seemed to me that the program should have a separate to the main window of the properties and is remade the menu by placing some of its functions in a toolbar 4) State of the art While the Guibuilder works and generates a correct code, there are many even the facilities that I would like to add to it a full form builder. The functions currently available are: Usable Controls: Button, Checkbox, Radio, Edit, Input, Label, List, combo, Date, TreeView (incomplete), Icon, Pic, Progress Bar, Slider Bar, Group (incomplete) y Choose Color (New). Properties availables: and dependent on the control class chosen, are: Name, Left, Top, Width, BKColor, Color, Image, Style, Tip, Text, State, Cursor, Font (Type, size, color, styles) , Caption, Height, Value Default, Nombre de Clase, Style_ex, Source. Windows Properties: (incomplete) Grid: Enabled / Disabled, automatic alignment, alignment of the current control or all controls. Menu features: with added, enabled, disabled fast (see Menu.txt) Toolbar features: with added, enabled, disabled fast (see Toolbar.txt) Properties: Quick Add (see properties.txt) Debug: In the execution of code compiled or interpreted in a separate window (Open Debugview.exe - included) Debugging Features: display of internal arrays of operation ($MCL[], $Type[], $Grippy[], $CursorInfo[]) Autoit code generation: using loop of messages Generation saved source: code at any time. Possibility to generate codes: in other programming languages In the header of Guibuilder.au3 are the incomplete list and the point’s detected errors not yet corrected. 5) To Next ?. There are many tasks that are still to be carried out, to get to the objective explained in paragraph motivations, even that this form creator is as useful as possible to the developer. I would like to start by modifying the following: Autoit code generation using events. Complete controls disabled Tab, Menu, Context Menu, file etc. Added child windows. Correction of known bugs. Import function of code: after the modifications to it, made by a programer. Complete mass Modification: (Maintenance menu in tools). Shrinking message loop and global variables: the ease of maintenance of the program is inversely proportional to this. Toolbar of Properties: converter of static (actual) to Dynamic. For easy add the new properties. Wanted Beta tester, developers and fresh ideas. Exampe of Independent Debug window. GuiBuilder v1.0.11.zip Regards Daniel1 point
-
This is not actually a UDF it is an idea to make HWID protection unable to be hacked if the user managed to Get HWIDs list and modified it to add his HWID the idea is that you modify the real hwid to make new hwid (fake hwid) and modify the (fake hwid) to make (shown hwid) by using StringReplace("","") the (real hwid) and (fake hwid) will not be shown to the user ,but (shown hwid ) will be shown ... when the user gives you his (shown hwid),you modify it back to (fake hwid) the (fake hwid) will be put on the online HWIDs list .. when the user who has bought licence , whose fake hwid was put on the online list , open the program , the program would get the user's fake hwid and compare it with the online list and if it was found, the program would work ... else, the program would ask the user to buy a licence so if the user put his/her ( shown hwid ) on the list, the program would not work as the program looks for the (fake hwid) not the (shown hwid) > i hope you like this idea...this idea can be used in all scripting languages here is the script ;~ By ÅÈÑÇåíã ÚÕÇã ÇáÏíä / ibrahem #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <String.au3> #include <Crypt.au3> #include <Array.au3> CheckForDebuggers() Global $FAKEhwid, $FAKEhwid, $REALhwid, $SHOWNhwid, $RealConvertedHwid, $SHOWNtext, $num, $CheckResult, $SAVEDfakeHWID $num = 0 $REALhwid = _GetHWID() ConvertRealHwidToFakeHwid() ConvertFakeHwidToShownHwid() $SAVEDfakeHWID = $FAKEhwid $SHOWNtext = $SHOWNhwid check() If $CheckResult <> 1 Then LicenceForm() ; If hwid was not found then ask to buy licence Func LicenceForm() MouseMove(MouseGetPos(0), MouseGetPos(1), 1) #Region ### START Koda GUI section ### $regester = GUICreate(" Subscribe Form ", 666, 51, -1, -1) $InputHWID = GUICtrlCreateInput($SHOWNhwid, 96, 8, 489, 32, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER, $ES_READONLY)) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") $buyLicence = GUICtrlCreateButton("Subscribe ", 8, 8, 73, 33) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $copyHWID = GUICtrlCreateButton("Copy", 600, 8, 57, 33) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $copyHWID ClipPut($SHOWNtext) Case $buyLicence ;How users can buy licence.. Ex:Shellexecute("your FB page")..or MsgBox(0,"my phone number", "phone number") ; buy licence action ....etc. EndSwitch WEnd EndFunc ;==>LicenceForm Func check() Do Call("SearchForHwid") If $FAKEhwid = $FAKEhwid[$num] Then MsgBox(0, "", "done") $num = $num + 1 If $FAKEhwid[$num] = "finish" Then ExitLoop If $SAVEDfakeHWID = $FAKEhwid[$num] Then ; What happens (after hwid is found / if th user has licence) $CheckResult = 1 ExitLoop EndIf Until $FAKEhwid = "finsh" EndFunc ;==>check Func SearchForHwid() $Source = BinaryToString(InetRead('link of raw online hwids list', 1));(((((((((((((((((((((((((((link of raw online hwids list))))))))))))))))))))))))) $reader = _StringBetween($Source, '{', '}') For $a In $reader $FAKEhwid = _StringBetween($Source, '{', '}') ConsoleWrite($FAKEhwid[$num] & @CRLF) Next EndFunc ;==>SearchForHwid Func _GetHWID() Local $aDrives = DriveGetDrive('FIXED'), $sOutput = '' If @error = 0 Then For $i = 1 To $aDrives[0] $sOutput &= DriveGetSerial($aDrives[$i]) Next EndIf $aDrives = DriveGetDrive('CDROM') If @error = 0 Then For $i = 1 To $aDrives[0] $sOutput &= DriveGetSerial($aDrives[$i]) Next EndIf Local $aMemory = MemGetStats() $sOutput &= @OSVersion & @OSBuild & @OSArch & @CPUArch & @KBLayout & $aMemory[1] $aMemory = 0 $sOutput = StringStripWS($sOutput, 8) Local $sHash = StringTrimLeft(_Crypt_HashData($sOutput, $CALG_MD5), 2) Return StringMid($sHash, 1, 8) & '-' & StringMid($sHash, 9, 4) & '-' & StringMid($sHash, 13, 4) & '-' & StringMid($sHash, 17, 4) & '-' & StringMid($sHash, 21, 12) EndFunc ;==>_GetHWID Func ConvertRealHwidToFakeHwid() $FAKEhwid = $REALhwid $FAKEhwid = StringReplace($FAKEhwid, "A", "Z") $FAKEhwid = StringReplace($FAKEhwid, "B", "1") $FAKEhwid = StringReplace($FAKEhwid, "C", "M") $FAKEhwid = StringReplace($FAKEhwid, "D", "C") $FAKEhwid = StringReplace($FAKEhwid, "E", "D") $FAKEhwid = StringReplace($FAKEhwid, "F", "H") $FAKEhwid = StringReplace($FAKEhwid, "G", "I") $FAKEhwid = StringReplace($FAKEhwid, "H", "L") $FAKEhwid = StringReplace($FAKEhwid, "I", "O") $FAKEhwid = StringReplace($FAKEhwid, "J", "V") $FAKEhwid = StringReplace($FAKEhwid, "K", "E") $FAKEhwid = StringReplace($FAKEhwid, "L", "Y") $FAKEhwid = StringReplace($FAKEhwid, "M", "U") $FAKEhwid = StringReplace($FAKEhwid, "N", "A") $FAKEhwid = StringReplace($FAKEhwid, "O", "7") $FAKEhwid = StringReplace($FAKEhwid, "P", "2") $FAKEhwid = StringReplace($FAKEhwid, "Q", "3") $FAKEhwid = StringReplace($FAKEhwid, "R", "4") $FAKEhwid = StringReplace($FAKEhwid, "S", "5") $FAKEhwid = StringReplace($FAKEhwid, "T", "P") $FAKEhwid = StringReplace($FAKEhwid, "U", "Q") $FAKEhwid = StringReplace($FAKEhwid, "V", "J") $FAKEhwid = StringReplace($FAKEhwid, "W", "K") $FAKEhwid = StringReplace($FAKEhwid, "X", "N") $FAKEhwid = StringReplace($FAKEhwid, "Y", "9") $FAKEhwid = StringReplace($FAKEhwid, "Z", "X") $FAKEhwid = StringReplace($FAKEhwid, "1", "8") $FAKEhwid = StringReplace($FAKEhwid, "2", "G") $FAKEhwid = StringReplace($FAKEhwid, "3", "W") $FAKEhwid = StringReplace($FAKEhwid, "4", "R") $FAKEhwid = StringReplace($FAKEhwid, "5", "0") $FAKEhwid = StringReplace($FAKEhwid, "6", "B") $FAKEhwid = StringReplace($FAKEhwid, "7", "F") $FAKEhwid = StringReplace($FAKEhwid, "8", "S") $FAKEhwid = StringReplace($FAKEhwid, "9", "6") $FAKEhwid = StringReplace($FAKEhwid, "0", "T") $FAKEhwid = StringReplace($FAKEhwid, "-", "-") EndFunc ;==>ConvertRealHwidToFakeHwid Func ConvertFakeHwidToShownHwid() $SHOWNhwid = $FAKEhwid $SHOWNhwid = StringReplace($SHOWNhwid, "A", "Z") $SHOWNhwid = StringReplace($SHOWNhwid, "B", "1") $SHOWNhwid = StringReplace($SHOWNhwid, "C", "M") $SHOWNhwid = StringReplace($SHOWNhwid, "D", "C") $SHOWNhwid = StringReplace($SHOWNhwid, "E", "D") $SHOWNhwid = StringReplace($SHOWNhwid, "F", "H") $SHOWNhwid = StringReplace($SHOWNhwid, "G", "I") $SHOWNhwid = StringReplace($SHOWNhwid, "H", "L") $SHOWNhwid = StringReplace($SHOWNhwid, "I", "O") $SHOWNhwid = StringReplace($SHOWNhwid, "J", "V") $SHOWNhwid = StringReplace($SHOWNhwid, "K", "E") $SHOWNhwid = StringReplace($SHOWNhwid, "L", "Y") $SHOWNhwid = StringReplace($SHOWNhwid, "M", "U") $SHOWNhwid = StringReplace($SHOWNhwid, "N", "A") $SHOWNhwid = StringReplace($SHOWNhwid, "O", "7") $SHOWNhwid = StringReplace($SHOWNhwid, "P", "2") $SHOWNhwid = StringReplace($SHOWNhwid, "Q", "3") $SHOWNhwid = StringReplace($SHOWNhwid, "R", "4") $SHOWNhwid = StringReplace($SHOWNhwid, "S", "5") $SHOWNhwid = StringReplace($SHOWNhwid, "T", "P") $SHOWNhwid = StringReplace($SHOWNhwid, "U", "Q") $SHOWNhwid = StringReplace($SHOWNhwid, "V", "J") $SHOWNhwid = StringReplace($SHOWNhwid, "W", "K") $SHOWNhwid = StringReplace($SHOWNhwid, "X", "N") $SHOWNhwid = StringReplace($SHOWNhwid, "Y", "9") $SHOWNhwid = StringReplace($SHOWNhwid, "Z", "X") $SHOWNhwid = StringReplace($SHOWNhwid, "1", "8") $SHOWNhwid = StringReplace($SHOWNhwid, "2", "G") $SHOWNhwid = StringReplace($SHOWNhwid, "3", "W") $SHOWNhwid = StringReplace($SHOWNhwid, "4", "R") $SHOWNhwid = StringReplace($SHOWNhwid, "5", "0") $SHOWNhwid = StringReplace($SHOWNhwid, "6", "B") $SHOWNhwid = StringReplace($SHOWNhwid, "7", "F") $SHOWNhwid = StringReplace($SHOWNhwid, "8", "S") $SHOWNhwid = StringReplace($SHOWNhwid, "9", "6") $SHOWNhwid = StringReplace($SHOWNhwid, "0", "T") $SHOWNhwid = StringReplace($SHOWNhwid, "-", "-") EndFunc ;==>ConvertFakeHwidToShownHwid Func CheckForDebuggers() ; this func closes some known proxy debuggers ; Charles If WinExists("Charles") Then WinClose("Charles") If ProcessExists("Charles.exe") Then ProcessClose("Charles") ; Fiddler If WinExists("Fiddler") Then WinClose("Fiddler") If ProcessExists("Fiddler.exe") Then ProcessClose("Fiddler.exe") ; Wireshark If ProcessExists("Wireshark.exe") Then ProcessClose("Wireshark.exe") If WinExists("Wireshark") Then WinClose("Wireshark") ; OllyDbg If WinExists("OllyDbg") Then WinClose("OllyDbg") If ProcessExists("OLLYDBG.EXE") Then ProcessClose("OLLYDBG.EXE") ; just expectation If WinExists("Developer") Then WinClose("Developer") If WinExists("debug") Then WinClose("debug") If WinExists("debugger") Then WinClose("debugger") If WinExists("debuger") Then WinClose("debuger") EndFunc ;==>CheckForDebuggers .. and here is the tool that modifies the ( shown hwid ) back to ( fake hwid ) ,which will be put on the online list warning !!!! : YOU Mustn't Give This Tool To the user ... it is only for you ..if you give it to the user , he/she will be able to put his (fake hwid) on the list #NoTrayIcon AutoItSetOption("trayiconhide", 1) Global $fakehwid, $num, $num1 $num = "" $num1 = "" #include <WindowsConstants.au3> #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <EditConstants.au3> MouseMove(MouseGetPos(0), MouseGetPos(1), 1) #Region ### START Koda GUI section ### Form= $form = GUICreate(" Convert $SHOWNhwid to $FAKEhwid", 490, 99, -1, -1) $inputhwid = GUICtrlCreateInput("", 8, 8, 473, 32, BitOR($gui_ss_default_input, $es_center, $es_readonly)) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") $paste = GUICtrlCreateButton("Paste", 336, 48, 137, 41) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") $convert = GUICtrlCreateButton("Convert", 176, 48, 137, 41) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") $copy = GUICtrlCreateButton("Copy", 16, 48, 137, 41) GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif") GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nmsg = GUIGetMsg() Switch $nmsg Case $gui_event_close Exit Case $paste GUICtrlSetData($inputhwid, ClipGet()) Case $convert convertshownhwidtofakehwid() GUICtrlSetData($inputhwid, $fakehwid) Case $copy ClipPut(GUICtrlRead($inputhwid)) EndSwitch WEnd Func convertshownhwidtofakehwid() $fakehwid = GUICtrlRead($inputhwid) Do $num = $num + 1 $fakehwid = StringReplace($fakehwid, "A", "Z") $fakehwid = StringReplace($fakehwid, "B", "1") $fakehwid = StringReplace($fakehwid, "C", "M") $fakehwid = StringReplace($fakehwid, "D", "C") $fakehwid = StringReplace($fakehwid, "E", "D") $fakehwid = StringReplace($fakehwid, "F", "H") $fakehwid = StringReplace($fakehwid, "G", "I") $fakehwid = StringReplace($fakehwid, "H", "L") $fakehwid = StringReplace($fakehwid, "I", "O") $fakehwid = StringReplace($fakehwid, "J", "V") $fakehwid = StringReplace($fakehwid, "K", "E") $fakehwid = StringReplace($fakehwid, "L", "Y") $fakehwid = StringReplace($fakehwid, "M", "U") $fakehwid = StringReplace($fakehwid, "N", "A") $fakehwid = StringReplace($fakehwid, "O", "7") $fakehwid = StringReplace($fakehwid, "P", "2") $fakehwid = StringReplace($fakehwid, "Q", "3") $fakehwid = StringReplace($fakehwid, "R", "4") $fakehwid = StringReplace($fakehwid, "S", "5") $fakehwid = StringReplace($fakehwid, "T", "P") $fakehwid = StringReplace($fakehwid, "U", "Q") $fakehwid = StringReplace($fakehwid, "V", "J") $fakehwid = StringReplace($fakehwid, "W", "K") $fakehwid = StringReplace($fakehwid, "X", "N") $fakehwid = StringReplace($fakehwid, "Y", "9") $fakehwid = StringReplace($fakehwid, "Z", "X") $fakehwid = StringReplace($fakehwid, "1", "8") $fakehwid = StringReplace($fakehwid, "2", "G") $fakehwid = StringReplace($fakehwid, "3", "W") $fakehwid = StringReplace($fakehwid, "4", "R") $fakehwid = StringReplace($fakehwid, "5", "0") $fakehwid = StringReplace($fakehwid, "6", "B") $fakehwid = StringReplace($fakehwid, "7", "F") $fakehwid = StringReplace($fakehwid, "8", "S") $fakehwid = StringReplace($fakehwid, "9", "6") $fakehwid = StringReplace($fakehwid, "0", "T") $fakehwid = StringReplace($fakehwid, "-", "-") Until $num = 209 $num = 0 EndFunc The online list of HWiDs must be written like this : {start} {(Fake HWiD 1)} {(Fake HWiD 2)} {(Fake HWiD 3)} {(...etc)} {finish} if you like it . give me a "like" 🙏 sorry for bad English1 point