Program for Win NO Close

Jerry Crespi jcrespi at alliedhr.com
Tue Feb 24 15:31:22 PST 2015


The following program will prevent closing a Window. It uses 
"autohotkey" a free program which you must get and install.  The NO 
CLOSE code follows:
Complile this code with AutohotKey  AHK to exe.


;NoClose.ahk
; Disable the Close button (X) of selected windows
; To run, save to BlockInput.ahk and install AutoHotkey from www.autohotkey.com
;Skrommel @2006

#SingleInstance,Force
SetTitleMatchMode,2

applicationname=NoClose

ids=
oldids=

Gosub,INIREAD
Gosub,TRAYMENU
Gosub,STARTUP
OnExit,EXIT
Hotkey,%add%,ADD
Hotkey,%swap%,SWAP

Loop
{
   Sleep,500
   allids=
   activeids=
   WinGet,id_,List,,,Program Manager
   Loop,%id_%
   {
     Sleep,0
     id:=id_%A_Index%
     allids=%allids%%id%`,
     IfInString,ids,%id%`,
       activeids=%activeids%%id%`,
     If autodisable=0
       Continue
     IfInString,oldids,%id%`,
       Continue
     WinGetTitle,title,ahk_id %id%
     WinGetClass,class,ahk_id %id%
     rule=%title% ahk_class %class%|||
     IfInString,rules,%rule%
     {
       DISABLE(id)
       activeids=%activeids%%id%`,
     }
   }
   oldids:=allids
   ids:=activeids
}
Return


STARTUP:
allids=
WinGet,id_,List,,,Program Manager
Loop,%id_%
{
   id:=id_%A_Index%
   allids=%allids%%id%`,
   If disableonstartup=0
     Continue
   WinGetTitle,title,ahk_id %id%
   WinGetClass,class,ahk_id %id%
   rule=%title% ahk_class %class%|||
   IfInString,rules,%rule%
   {
     DISABLE(id)
     ids=%ids%%id%`,
   }
}
oldids:=allids
Return


EXIT:
If enableonexit=0
   ExitApp
WinGet,id_,List,,,Program Manager
Loop,%id_%
{
   id:=id_%A_Index%
   IfInString,ids,%id%`,
   {
     ENABLE(id)
     StringReplace,ids,ids,%id%`,,
   }
}
ExitApp


ADD:
WinGet,id,ID,A
WinGetTitle,title,ahk_id %id%
WinGetClass,class,ahk_id %id%
rule=%title% ahk_class %class%|||
IfInString,rules,%rule%
   Return
Else
{
   DISABLE(id)
   rules=%rules%%rule%
   ids=%ids%%id%`,
   IniWrite,%rules%,%applicationname%.ini,Settings,rules
}
Return


SWAP:
WinGet,id,ID,A
WinGetTitle,title,ahk_id %id%
WinGetClass,class,ahk_id %id%
IfInString,ids,%id%`,
{
   ENABLE(id)
   StringReplace,ids,ids,%id%`,,
   Return
}
DISABLE(id)
ids=%ids%%id%`,
Return


DISABLE(id) ;By RealityRipple at 
http://www.xtremevbtalk.com/archive/index.php/t-258725.html
{
   menu:=DllCall("user32\GetSystemMenu","UInt",id,"UInt",0)
   DllCall("user32\DeleteMenu","UInt",menu,"UInt",0xF060,"UInt",0x0)
   WinGetPos,x,y,w,h,ahk_id %id%
   WinMove,ahk_id %id%,,%x%,%y%,%w%,% h-1
   WinMove,ahk_id %id%,,%x%,%y%,%w%,% h+1
}


ENABLE(id) ;By Mosaic1 at 
http://www.xtremevbtalk.com/archive/index.php/t-258725.html
{
   menu:=DllCall("user32\GetSystemMenu","UInt",id,"UInt",1)
   DllCall("user32\DrawMenuBar","UInt",id)
}


TRAYMENU:
Menu,Tray,NoStandard
Menu,Tray,DeleteAll
Menu,Tray,Add,%applicationname%,ABOUT
Menu,Tray,Add,
Menu,Tray,Add,&Settings...,SETTINGS
Menu,Tray,Add,&About...,ABOUT
Menu,Tray,Add,E&xit,EXIT
Menu,Tray,Default,%applicationname%
Menu,Tray,Tip,%applicationname%
Return


INIREAD:
IfNotExist,%applicationname%.ini
{
   disableonstartup=1
   autodisable=1
   enableonexit=1
   swap=^1
   add=^2
   rules=
   Gosub,INIWRITE
   Gosub,ABOUT
}
IniRead,disableonstartup,%applicationname%.ini,Settings,disableonstartup
IniRead,autodisable,%applicationname%.ini,Settings,autodisable
IniRead,enableonexit,%applicationname%.ini,Settings,enableonexit
IniRead,swap,%applicationname%.ini,Settings,swap
IniRead,add,%applicationname%.ini,Settings,add
IniRead,rules,%applicationname%.ini,Settings,rules
Return


INIWRITE:
IniWrite,%disableonstartup%,%applicationname%.ini,Settings,disableonstartup
IniWrite,%autodisable%,%applicationname%.ini,Settings,autodisable
IniWrite,%enableonexit%,%applicationname%.ini,Settings,enableonexit
IniWrite,%swap%,%applicationname%.ini,Settings,swap
IniWrite,%add%,%applicationname%.ini,Settings,add
IniWrite,%rules%,%applicationname%.ini,Settings,rules
Return


SETTINGS:
HotKey,%swap%,Off
HotKey,%add%,Off
Gui,Destroy
Gui,Add,Tab,W340 H330 xm,Options|Rules
Gui,Tab,1
Gui,Add,GroupBox,xm+10 ym+40 w320 h70,&Hotkey to Enable/Disable the 
active windows' close button
Gui,Add,Hotkey,xp+10 yp+20 w300 vsswap
StringReplace,current,swap,+,Shift +%A_Space%
StringReplace,current,current,^,Ctrl +%A_Space%
StringReplace,current,current,!,Alt +%A_Space%
Gui,Add,Text,xm+20 y+5,Current hotkey: %current%

Gui,Add,GroupBox,xm+10 y+30 w320 h70,Hotkey to &Add a new rule
Gui,Add,Hotkey,xm+20 yp+20 w300 vsadd
StringReplace,current,add,+,Shift +%A_Space%
StringReplace,current,current,^,Ctrl +%A_Space%
StringReplace,current,current,!,Alt +%A_Space%
Gui,Add,Text,xm+20 y+5,Current hotkey: %current%

Gui,Add,GroupBox,xm+10 y+30 w320 h80,Automatic rule execution
Gui,Add,CheckBox,xm+20 yp+20 Checked%disableonstartup% 
vsdisableonstartup,Disable close buttons on NoClose &Startup
Gui,Add,CheckBox,xm+20 y+5 Checked%autodisable% vsautodisable,Disable 
close buttons on &Window Creation
Gui,Add,CheckBox,xm+20 y+5 Checked%enableonexit% 
vsenableonexit,Enable close buttons on NoClose &Exit

Gui,Tab,2
StringReplace,rules,rules,|||,`n,All
Gui,Add,GroupBox,w320 h280 xm+10 y+10,&Windows Titles and Classes
Gui,Add,Edit,xm+20 yp+20 w300 h180 Multi -Wrap vsrules,%rules%
Gui,Add,Text,xm+20 y+5,Syntax: <Part of a Window Title> <ahk_class Class Name>
Gui,Add,Text,xm+20 y+5,Example: Calculator ahk_class SciCalc
Gui,Add,Text,xm+30 y+5,will disable all Calculator close buttons.
Gui,Add,Text,xm+20 y+5,Either part is optional.

Gui,Tab
Gui,Add,Button,xm+10 y+30 w75 GSETTINGSOK,&OK
Gui,Add,Button,x+5 w75 GSETTINGSCANCEL,&Cancel
Gui,Show,,%applicationname% Settings
Return

SETTINGSOK:
Gui,Submit
If sswap<>
{
   swap:=sswap
   HotKey,%swap%,SWAP
}
HotKey,%swap%,On
If sadd<>
{
   add:=sadd
   HotKey,%add%,ADD
}
HotKey,%add%,On
If sdelay<>
   delay:=sdelay
StringReplace,rules,srules,`n,|||,All
rules=%rules%|||
Loop
{
   StringReplace,rules,rules,||||||,|||,All
   StringGetPos,pos,rules,||||||
   If pos<0
     Break
}
StringLeft,start,rules,3
If start=|||
   StringTrimLeft,rules,rules,3
disableonstartup:=sdisableonstartup
autodisable:=sautodisable
enableonexit:=senableonexit
Gosub,INIWRITE
Return

SETTINGSCANCEL:
HotKey,%swap%,SWAP
HotKey,%swap%,On
HotKey,%add%,ADD
HotKey,%add%,On
Gui,Destroy
Return


ABOUT:
Gui,99:Destroy
Gui,99:Margin,20,20
Gui,99:Add,Picture,xm Icon1,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,%applicationname% v1.1
Gui,99:Font
Gui,99:Add,Text,y+10,Disable the Close button (X) of selected windows.
Gui,99:Add,Text,y+10,- Press Ctrl+1 to Enable or Disable a close button.
Gui,99:Add,Text,y+5 ,- Press Ctrl+2 to Add a rule.
Gui,99:Add,Text,y+10,- To change the settings, choose Settings in the 
tray menu.

Gui,99:Add,Picture,xm y+20 Icon5,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,1 Hour Software by Skrommel
Gui,99:Font
Gui,99:Add,Text,y+10,For more tools, information and donations, please visit
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 G1HOURSOFTWARE,www.1HourSoftware.com
Gui,99:Font

Gui,99:Add,Picture,xm y+20 Icon7,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,DonationCoder
Gui,99:Font
Gui,99:Add,Text,y+10,Please support the contributors at
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 GDONATIONCODER,www.DonationCoder.com
Gui,99:Font

Gui,99:Add,Picture,xm y+20 Icon6,%applicationname%.exe
Gui,99:Font,Bold
Gui,99:Add,Text,x+10 yp+10,AutoHotkey
Gui,99:Font
Gui,99:Add,Text,y+10,This tool was made using the powerful
Gui,99:Font,CBlue Underline
Gui,99:Add,Text,y+5 GAUTOHOTKEY,www.AutoHotkey.com
Gui,99:Font

Gui,99:Show,,%applicationname% About
hCurs:=DllCall("LoadCursor","UInt",NULL,"Int",32649,"UInt") ;IDC_HAND
OnMessage(0x200,"WM_MOUSEMOVE")
Return

1HOURSOFTWARE:
   Run,http://www.1hoursoftware.com,,UseErrorLevel
Return

DONATIONCODER:
   Run,http://www.donationcoder.com,,UseErrorLevel
Return

AUTOHOTKEY:
   Run,http://www.autohotkey.com,,UseErrorLevel
Return

99GuiClose:
   Gui,99:Destroy
   OnMessage(0x200,"")
   DllCall("DestroyCursor","Uint",hCur)
Return

WM_MOUSEMOVE(wParam,lParam)
{
   Global hCurs
   MouseGetPos,,,,ctrl
   If ctrl in Static10,Static14,Static18
     DllCall("SetCursor","UInt",hCurs)
   Return
}
Return

Jerry Crespi, Ph.D.
President
Allied Business Systems Inc.
V. (714) 963-5554
F. (714) 964-0061  


-----
No virus found in this message.
Checked by AVG - www.avg.com
Version: 2015.0.5646 / Virus Database: 4299/9174 - Release Date: 02/24/15
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.celestial.com/pipermail/filepro-list/attachments/20150224/45198503/attachment.html>


More information about the Filepro-list mailing list