- Create
- Explore
- Ideas
- About
Windows 2000 Crazy Error Maker » Remixes
-
Windows 2000 Crazy Error Maker remix
by red190yt
-
Windows 2000 Crazy Error Maker But Sounds are speed up
by leonardo8965
-
Windows 2000 Crazy Error Maker remix
by lando0818
-
Windows 96 Crazy Error Maker
by chubuga
-
Windows 2000 Crazy Error Maker remix
by alexRobokidz
-
Windows 2000 Crazy Error Maker remix
by Orangeerror123
-
Windows NT 5.0 Beta 2 Crazy Error Maker
by AndersandAngus2012
-
SerenityOS Crazy Error Maker with Windows 2K Sounds
by 2020Windows10X
-
Mastercard Crazy Error Maker
by jordandusenge
-
Windows ME Crazy Error
by WindowsXPdp
-
Windows 2000 Crazy Error Maker remix-3
by jordandusenge
-
Windows 2000.EXE Crazy Error Maker
by FixEyeTop666
-
Windows Whistler Crazy Error Maker
by pucijodzia
-
Windows 2000 Crazy Error Maker
by Kal_ILikeWindows10
-
Windows 2000 Crazy Error Maker with Windows 7 Sounds!
by CrazyErrorMaker2
-
Windows Error Spamer
by AFEDOROW
-
Windows 2000 Crazy Error Maker remix
by tomafelicia878—
-
Windows NT 5.0 Crazy Error Maker WIP
by SiroCzE
-
Windows 2000 Crazy Error Maker remix
by windows10_alike
Error message title:
Error message main text:
Error message secondary text:
icon:
Each button has 3 values: text, style, and secondary value
Style is a number which dictates the buttons look (the exact type of style is different for every os.)
The secondary value controls things that are independent of style, most os’s dont use it except a few (mac, 3.1, and the 9x).
button 1:
button 2:
button 3:
active:
secondary value (different behavior per os):
click the button only ONCE, and wait a while. the first generation takes a minute, but after that it should be faster
theme used from the amazing Skeuocord https://github.com/Marda33/SkeuoCord (link)
{
«packages»: [
«numpy»,
«Pillow»
]
}
from js import console, document, ImageData, Uint8ClampedArray, CanvasRenderingContext2D as Context2d, requestAnimationFrame, Image as jsImage
#import generate
from pyodide.ffi import to_js, create_proxy
from pyodide.http import pyfetch
from numpy import *
from PIL import Image, ImageFont, ImageDraw, ImageMath,ImageChops, ImageOps
from math import ceil,floor
import asyncio
import io
cache = {}
def blobbytes(x):
print(«the x»)
print(x)
return x.arrayBuffer()
async def imageopenGETBYTES(text):
text = text.replace(«\\»,»/»)
text = text.replace(«//»,»/»)
text = text.replace(«./»,»»)
if( not text.startswith(«http») ):
url = f»https://raw.githubusercontent.com/relt-1/WindowCreator/main/{text}»
response = await pyfetch(url)
if response.status == 200:
return await response.bytes()
else:
canvas = document.getElementById(«customiconcanvas»)
img = document.getElementById(«customiconimg»)
canvas.width = img.width
canvas.height = img.height
context = canvas.getContext(«2d»)
context.drawImage(img,0,0,img.width,img.height,0,0,img.width,img.height)
imagedatas = context.getImageData(0,0,img.width,img.height)
imagepil = Image.frombytes(«RGBA»,(img.width,img.height),bytes(imagedatas.data))
finalbytes = io.BytesIO()
imagepil.save(finalbytes, format=»PNG»)
return finalbytes.getvalue()
async def imageopenWEB(text):
global cache
if text in cache:
return cache[text]
else:
bytes_list = bytearray(await imageopenGETBYTES(text))
bytes = io.BytesIO(bytes_list)
image = Image.open(bytes).convert(«RGBA»)
cache[text] = image
return image
def put(canvas, image,a,b,alignment=»00″):
canvas.alpha_composite(image,(int(a)-( image.size[0] * int(alignment[0]) // 2 ),int(b)-( image.size[1] * int(alignment[1]) // 2) ) )
return canvas
def put7(canvas, image, a, b, alignment = «00»): #this is the same as put(), but using windows’s weird transparency algorithm. ImageRGB+(BackgroundRGB*ImageAlpha). this assumes that background alpha is 1(fully opaque), i haven’t figured out what it does on a transparent background
x = int(a)-( image.size[0] * int(alignment[0]) // 2 )
y = int(b)-( image.size[1] * int(alignment[1]) // 2 )
cr, cg, cb, ca = canvas.crop((x,y,x+w(image),y+h(image))).split()
ir, ig, ib, ia = image.split()
r = ImageMath.eval(«convert( c+(b*(255-a)/255) ,’L’)»,c=ir,b=cr,a=ia)
g = ImageMath.eval(«convert( c+(b*(255-a)/255) ,’L’)»,c=ig,b=cg,a=ia)
b = ImageMath.eval(«convert( c+(b*(255-a)/255) ,’L’)»,c=ib,b=cb,a=ia)
canvas.paste(Image.merge(«RGBA»,(r,g,b,ca)),(x,y))
return canvas
#async def ApplyRules(rules,width,height,
def h(img): #get the height
return img.size[1]
def w(img): #get the width
return img.size[0]
def cropx(img,a,b): #crop but only x
return img.crop((a,0,b,h(img)))
def cropy(img,a,b): #crop but only y
return img.crop((0,a,x(img),b))
def gradient(width,height,colora,colorb):
r = Image.frombytes(«L»,(width,1),uint8(linspace(colora[0],colorb[0],width)))
g = Image.frombytes(«L»,(width,1),uint8(linspace(colora[1],colorb[1],width)))
b = Image.frombytes(«L»,(width,1),uint8(linspace(colora[2],colorb[2],width)))
final = Image.merge(«RGB»,(r,g,b)).convert(«RGBA»)
return final.resize((width,height))
async def createtext(text,fontdirectory,color=(255,255,255,255), buffersize=(1000,1000),underline=False,underlineoffset=0,kerningadjust=0):
drawntext = Image.new(«RGBA»,buffersize,(255,127,127,0))
width = 0
height = 0
line = 0
cursorpos = 0
newlinesize = int(await imageopenGETBYTES(fontdirectory+»newlinesize.txt»))
if underline:
i = text[0]
if(i==»\n»):
height += newlinesize
line += newlinesize
cursorpos = 0
else:
char = await imageopenWEB(fontdirectory+str(ord(i))+».png»)
whitechar = await imageopenWEB(fontdirectory+»white»+str(ord(i))+».png»)
char = put(char, Image.new(«RGBA»,(w(char),1),(255,255,255,255)),0,h(char)-2+underlineoffset)
whitechar = put(whitechar, Image.new(«RGBA»,(w(char),1),(255,255,255,255)),0,h(char)-2+underlineoffset)
cred, cgreen, wcblue, calpha = char.split()
wcred, wcgreen, cblue, wcalpha = whitechar.split()
alpha2 = ImageMath.eval(«convert( int( (r1-r2+255+g1-g2+255+b1-b2+255)/3*alp/255 ), ‘L’)»,r1 = cred,r2 = wcred,b1 = cblue,b2 = wcblue,g1 = cgreen,g2 = wcgreen, alp = (color[3]))
r = Image.new(«L»,(w(char),h(char)),color[0])
g = Image.new(«L»,(w(char),h(char)),color[1])
b = Image.new(«L»,(w(char),h(char)),color[2])
char = Image.merge(«RGBA»,(r,g,b,alpha2))
drawntext.paste(char,(cursorpos,line))
cursorpos +=w(char)+kerningadjust
width = max(width,cursorpos)
height = max(height,h(char))
text = text[1:]
for i in text:
if(i==»\n»):
height += newlinesize
line += newlinesize
cursorpos = 0
continue
char = await imageopenWEB(fontdirectory+str(ord(i))+».png»)
whitechar = await imageopenWEB(fontdirectory+»white»+str(ord(i))+».png»)
cred, cgreen, wcblue, calpha = char.split()
wcred, wcgreen, cblue, wcalpha = whitechar.split()
alpha2 = ImageMath.eval(«convert( int( (r1-r2+255+g1-g2+255+b1-b2+255)/3*alp/255 ), ‘L’)»,r1 = cred,r2 = wcred,b1 = cblue,b2 = wcblue,g1 = cgreen,g2 = wcgreen, alp = (color[3]))
r = Image.new(«L»,(w(char),h(char)),color[0])
g = Image.new(«L»,(w(char),h(char)),color[1])
b = Image.new(«L»,(w(char),h(char)),color[2])
char = Image.merge(«RGBA»,(r,g,b,alpha2))
drawntext.paste(char,(cursorpos,line))
cursorpos +=w(char)+kerningadjust
width = max(width,cursorpos)
height = max(height,h(char))
return drawntext.crop((0,0,width,height))
async def createtextmac(text,fontdirectory,color=(0,0,0,255), buffersize=(1000,1000),underline=False, underlineoffset=0,kerningadjust=0):
drawntext = Image.new(«RGBA»,buffersize,(255,127,127,0))
width = 0
height = 0
line = 0
cursorpos = 0
newlinesize = int(await imageopenGETBYTES(fontdirectory+»newlinesize.txt»))
if(underline):
i = text[0]
if(i==»\n»):
height += newlinesize
line += newlinesize
cursorpos = 0
else:
char = await imageopenWEB(fontdirectory+str(ord(i))+».png»)
char = put(char, Image.new(«RGBA»,(w(char),1),(255,255,255,255)),0,h(char)-2+underlineoffset)
colorimg = Image.new(«RGBA»,(w(char),h(char)),(color[0],color[1],color[2],255))
char = ImageChops.multiply(char,colorimg)
drawntext.paste(char,(cursorpos,line))
cursorpos +=w(char)+kerningadjust
width = max(width,cursorpos)
height = max(height,h(char))
text = text[1:]
for i in text:
if(i==»\n»):
height += newlinesize
line += newlinesize
cursorpos = 0
continue
char = await imageopenWEB(fontdirectory+str(ord(i))+».png»)
colorimg = Image.new(«RGBA»,(w(char),h(char)),(color[0],color[1],color[2],255))
char = ImageChops.multiply(char,colorimg)
drawntext.paste(char,(cursorpos,line))
cursorpos +=w(char)+kerningadjust
width = max(width,cursorpos)
height = max(height,h(char))
return drawntext.crop((0,0,width,height))
async def createtext7(im,x,y,text,fontdirectory,color=(0,0,0,255), buffersize=(1000,1000),align=»00″, kerningadjust=0, fit=9999999):
drawntext = Image.new(«RGBA»,buffersize,(255,255,0,0))
whitedrawntext = Image.new(«RGBA»,buffersize,(0,0,255,0))
width = 0
height = 0
line = 0
cursorpos = 0
newlinesize = int(await imageopenGETBYTES(fontdirectory+»newlinesize.txt»))
for i in text:
if(i==»\n»):
height += newlinesize
line += newlinesize
cursorpos = 0
continue
char = await imageopenWEB(fontdirectory+str(ord(i))+».png»)
if(cursorpos+w(char)+kerningadjust > fit):
height += newlinesize
line += newlinesize
cursorpos = 0
continue
whitechar = await imageopenWEB(fontdirectory+»white»+str(ord(i))+».png»)
#colorimg = Image.new(«RGBA»,(w(char),h(char)),(color[0],color[1],color[2],255))
#char = ImageChops.multiply(char,colorimg)
drawntext.paste(char,(cursorpos,line))
whitedrawntext.paste(whitechar,(cursorpos,line))
cursorpos +=w(char)+kerningadjust
width = max(width,cursorpos)
height = max(height,h(char))
drawntext = drawntext.crop((0,0,width,height))
drawntext = put(Image.new(«RGBA»,(w(im),h(im)),(0,0,0,0)),drawntext,x,y,align)
whitedrawntext = whitedrawntext.crop((0,0,width,height))
whitedrawntext = put(Image.new(«RGBA»,(w(im),h(im)),(0,0,0,0)),whitedrawntext,x,y,align)
imgcolor = Image.new(«RGBA»,(w(im),h(im)),color)
c = imgcolor.split()
ir,ig,ib,ia = im.split()
r,g,b,a = drawntext.split()
wr,wg,wb,wa = whitedrawntext.split()
r = ImageMath.eval(«convert( b*c/255+(255-w)*(255-c)/255 ,’L’)»,w=r,b=wr,c=c[0])
g = ImageMath.eval(«convert( b*c/255+(255-w)*(255-c)/255 ,’L’)»,w=g,b=wg,c=c[1])
b = ImageMath.eval(«convert( b*c/255+(255-w)*(255-c)/255 ,’L’)»,w=wb,b=b,c=c[2])
#imgcolor.show()
#drawntext.show()
red = ImageMath.eval(«convert( int(((i*(255-t)/255+(c*t)/255)*a/255+i*(255-a)/255)*o/255+(i*(255-o))/255) , ‘L’)»,i=ir,t=r,c=c[0],a=a,o=c[3]) #i is the image RGB, t is the text RGB, c is the RGB color variable, a is the text alpha, o is the alpha color variable
#ImageMath.eval(«convert( int((255-t)*255/255),’L’)»,i=ir,t=r,c=c[0]).show()
green = ImageMath.eval(«convert( int(((i*(255-t)/255+(c*t)/255)*a/255+i*(255-a)/255)*o/255+(i*(255-o))/255) , ‘L’)»,i=ig,t=g,c=c[1],a=a,o=c[3])
blue = ImageMath.eval(«convert( int(((i*(255-t)/255+(c*t)/255)*a/255+i*(255-a)/255)*o/255+(i*(255-o))/255) , ‘L’)»,i=ib,t=b,c=c[2],a=a,o=c[3])
alpha = ImageMath.eval(«convert( int(((((r+g+b)/3+(255-(r+g+b)/3)*i/255))*t/255+(i*(255-t))/255)*o/255+(i*(255-o))/255) , ‘L’)»,i=ia,r=r,g=g,b=b,t=a,o=c[3]) #i is the image alpha, r,g,b are RGB values of the text, t is text alpha, o is color alpha
result = Image.merge(«RGBA»,(red,green,blue,alpha))
return result
async def measuretext7(text,fontdirectory, buffersize=(1000,1000), kerningadjust=0, fit=9999999): #this gives width and height of text using windows 7 rendering
#drawntext = Image.new(«RGBA»,buffersize,(255,127,127,0))
width = 0
height = 0
line = 0
cursorpos = 0
newlinesize = int(await imageopenGETBYTES(fontdirectory+»newlinesize.txt»))
for i in text:
if(i==»\n»):
height += newlinesize
line += newlinesize
cursorpos = 0
continue
char = await imageopenWEB(fontdirectory+str(ord(i))+».png»)
if(cursorpos+w(char)+kerningadjust > fit):
height += newlinesize
line += newlinesize
cursorpos = 0
continue
#colorimg = Image.new(«RGBA»,(w(char),h(char)),(color[0],color[1],color[2],255))
#char = ImageChops.multiply(char,colorimg)
#drawntext.paste(char,(cursorpos,line))
cursorpos +=w(char)+kerningadjust
width = max(width,cursorpos)
height = max(height,h(char))
return [width,height]
async def createtextubuntu(im,x,y,text,fontdirectory,color=(0,0,0,255), buffersize=(1000,1000),align=»00″):
drawntext = Image.new(«RGBA»,buffersize,(255,255,0,0))
width = 0
height = 0
line = 0
cursorpos = 0
newlinesize = int(await imageopenGETBYTES(fontdirectory+»newlinesize.txt»))
for i in text:
if(i==»\n»):
height += newlinesize
line += newlinesize
cursorpos = 0
continue
char = await imageopenWEB(fontdirectory+str(ord(i))+».png»)
#colorimg = Image.new(«RGBA»,(w(char),h(char)),(color[0],color[1],color[2],255))
#char = ImageChops.multiply(char,colorimg)
drawntext.paste(char,(cursorpos,line))
cursorpos +=w(char)
width = max(width,cursorpos)
height = max(height,h(char))
drawntext = drawntext.crop((0,0,width,height))
drawntext = put(Image.new(«RGBA»,(w(im),h(im)),(0,0,0,0)),drawntext,x,y,align)
imgcolor = Image.new(«RGBA»,(w(im),h(im)),color)
c = imgcolor.split()
ir,ig,ib,ia = im.split()
r,g,b,a = drawntext.split()
#imgcolor.show()
red = ImageMath.eval(«convert( int(((i*(255-t)/255+(c*t)/255)*a/255+i*(255-a)/255)*o/255+(i*(255-o))/255) , ‘L’)»,i=ir,t=r,c=c[0],a=a,o=c[3]) #i is the image RGB, t is the text RGB, c is the RGB color variable, a is the text alpha, o is the alpha color variable
#ImageMath.eval(«convert( int((255-t)*255/255),’L’)»,i=ir,t=r,c=c[0]).show()
green = ImageMath.eval(«convert( int(((i*(255-t)/255+(c*t)/255)*a/255+i*(255-a)/255)*o/255+(i*(255-o))/255) , ‘L’)»,i=ig,t=g,c=c[1],a=a,o=c[3])
blue = ImageMath.eval(«convert( int(((i*(255-t)/255+(c*t)/255)*a/255+i*(255-a)/255)*o/255+(i*(255-o))/255) , ‘L’)»,i=ib,t=b,c=c[2],a=a,o=c[3])
alpha = ImageMath.eval(«convert( int(((((r+g+b)/3+(255-(r+g+b)/3)*i/255))*t/255+(i*(255-t))/255)*o/255+(i*(255-o))/255) , ‘L’)»,i=ia,r=r,g=g,b=b,t=a,o=c[3]) #i is the image alpha, r,g,b are RGB values of the text, t is text alpha, o is color alpha
result = Image.merge(«RGBA»,(red,green,blue,alpha))
return result
def resize(im,width,height,left,right,up,down,scalingmethod=Image.NEAREST): #this resizes image but keeps margins intact. think of Unity GUI elements
if width < w(im):
im = im.resize((width,h(im)),scalingmethod)
left = 1
right = 1
if height < h(im):
im = im.resize((w(im),height),scalingmethod)
up = 1
down = 1
result = Image.new(«RGBA»,(width,height),(0,0,0,0))
tl = im.crop((0,0,left,up))
tm = im.crop((left,0,w(im)-right,up))
tr = im.crop((w(im)-right,0,w(im),up))
ml = im.crop((0,up,left,h(im)-down))
mm = im.crop((left,up,w(im)-right,h(im)-down))
mr = im.crop((w(im)-right,up,w(im),h(im)-down))
dl = im.crop((0,h(im)-down,left,h(im)))
dm = im.crop((left,h(im)-down,w(im)-right,h(im)))
dr = im.crop((w(im)-right,h(im)-down,w(im),h(im)))
result = put(result,tl,0,0)
result = put(result,tm.resize((width-left-right,h(tm)),scalingmethod),left,0)
result = put(result,tr,width,0,»20″)
result = put(result,ml.resize((w(ml),height-up-down),scalingmethod),0,up)
result = put(result,mm.resize((width-left-right,height-up-down),scalingmethod),left,up)
result = put(result,mr.resize((w(mr),height-up-down),scalingmethod),width,up,»20″)
result = put(result,dl,0,height,»02″)
result = put(result,dm.resize((width-left-right,h(dm)),scalingmethod),left,height,»02″)
result = put(result,dr,width,height,»22″)
return result
def resizeanchor(im,x1,y1,x2,y2,left,right,up,down,scalingmethod=Image.NEAREST): #this is resize, but you give it desired coordinates and it calculates the size the image should be
return resize(im,x2-x1,y2-y1,left,right,up,down,scalingmethod)
def tile(im,width,height): #this tiles an image
result = Image.new(«RGBA»,(width,height),(0,0,0,0))
for x in range(ceil(width/w(im))):
for y in range(ceil(height/h(im))):
result = put(result,im,x*w(im),y*h(im))
return result
#the button functions return an image of a button for the OS.
async def CreateXPButton(text,style=0):
styles = [«xp/Button.png»,»xp/Button Hovered.png»,»xp/Button Clicked.png»,»xp/Button Disabled.png»,»xp/Button Default.png»]
style = min(style,len(styles)-1)
Button = await imageopenWEB(styles[style])
col = (0,0,0,255)
if(style==3):
col = (161,161,146,255)
textgraphic = await createtext(text,».\\xp\\fonts\\text\\»,col)
Button = resize(Button,max(w(textgraphic)+16,75),max(23,h(textgraphic)+10),8,8,9,9,Image.NEAREST)
Button = put(Button,textgraphic,w(Button)//2-w(textgraphic)//2,5)
return Button
async def CreateMacButton(text,style=0):
styles = [«mac/Button.png»,»mac/Button Disabled.png»]
style = min(style,len(styles)-1)
Button = await imageopenWEB(styles[style])
col = (0,0,0,255)
if(style==1):
col = (161,161,146,255)
textgraphic = await createtextmac(text,».\\mac\\fonts\\caption\\»,col)
Button = resize(Button,max(w(textgraphic)+10,60),max(20,h(textgraphic)+4),2,2,2,2,Image.NEAREST)
else:
textgraphic = await createtextmac(text,».\\mac\\fonts\\caption\\»,col)
Button = resize(Button,max(w(textgraphic)+10,60),max(20,h(textgraphic)+4),4,4,4,4,Image.NEAREST)
Button = put(Button,textgraphic,floor(w(Button)/2-w(textgraphic)/2),2)
return Button
async def Create7Button(text,style=0):
styles = [«7/Button.png»,»7/Button.png»,»7/Button.png»,»7/Button Disabled.png»,»7/Button Defaulted.png»,»7/Button Defaulted Animation.png»]
Button = await imageopenWEB(styles[min(style,len(styles)-1)])
col = (0,0,0,255)
#if(style==3):
# col = (161,161,146,255)
#textgraphic = await createtext(text,».\\7\\fonts\\text\\»,col)
textsize = await measuretext7(text,»7\\fonts\\text\\»,kerningadjust=-1)
Button = resize(Button,max(textsize[0]+16,86),max(24,textsize[1]+9),3,3,3,3,Image.NEAREST)
Button = await createtext7(Button,w(Button)//2-textsize[0]//2,4,text,»7\\fonts\\text\\»,kerningadjust=-1)
return Button
async def Create7TaskDialogButton(text,style=0):
styles = [«7/Button.png»,»7/Button.png»,»7/Button.png»,»7/Button Disabled.png»,»7/Button Defaulted.png»,»7/Button Defaulted Animation.png»]
Button = await imageopenWEB(styles[min(style,len(styles)-1)])
col = (0,0,0,255)
#if(style==3):
# col = (161,161,146,255)
#textgraphic = await createtext(text,».\\7\\fonts\\text\\»,col)
textsize = await measuretext7(text,»7\\fonts\\text\\»,kerningadjust=-1)
Button = resize(Button,max(textsize[0]+30,66),max(21,textsize[1]+6),3,3,3,3,Image.NEAREST)
Button = await createtext7(Button,w(Button)//2-textsize[0]//2,3,text,»7\\fonts\\text\\»,kerningadjust=-1)
return Button
async def Create3_1Button(text,style=0,underline=False):
styles = [«3.1/Button.png»,»3.1/Button Default.png»]
style = min(style,len(styles)-1)
Button = await imageopenWEB(styles[style])
textgraphic = await createtextmac(text,»3.1//fonts//text//»,underline=underline)
if style == 1:
Button = resize(Button,max(58,w(textgraphic)+5+5),h(textgraphic)+6+6,4,4,4,4)
Border = await imageopenWEB(«3.1//Button Text Outline.png»)
BorderImg = tile(Border,max(58,w(textgraphic)+5+5),h(textgraphic)+6+6)
textx = floor(w(Button)/2-w(textgraphic)/2-1)
textendx = textx+w(textgraphic)
Button = put(Button,textgraphic,textx,6,»00″)
Button = put(Button,BorderImg.crop((textx-2, 6, textx-1, 7+h(textgraphic))), textx-2, 6)
Button = put(Button,BorderImg.crop((textx-1, 7+h(textgraphic), textendx, 7+h(textgraphic)+1)), textx-1, 7+h(textgraphic))
Button = put(Button,BorderImg.crop((textendx+1, 6, textendx+2, 7+h(textgraphic))), textendx+1, 6)
Button = put(Button,BorderImg.crop((textx-1, 5, textendx, 6)), textx-1, 5)
else:
Button = resize(Button,max(58,w(textgraphic)+6+6),h(textgraphic)+6+6,3,3,3,3)
Button = put(Button,textgraphic,floor(w(Button)/2-w(textgraphic)/2-1),6,»00″)
return Button
async def CreateUbuntuButton(text,style=0,predefinedsize=[]):
styles = [«ubuntu/Button.png»,»ubuntu/Button Default.png»]
Button = await imageopenWEB(styles[min(style,len(styles)-1)])
if predefinedsize:
size = predefinedsize
else:
size = await measuretext7(text,»ubuntu/fonts/text/»)
size[0] += 16
size[1] += 10
size[0] = max(85,size[0])
size[1] = max(29,size[1])
Button = resize(Button,size[0],size[1],5,5,5,5,scalingmethod=Image.BICUBIC)
Button = await createtextubuntu(Button, size[0]//2, size[1]//2, text, «ubuntu/fonts/text/»,(60,59,55,255),align=»11″)
return Button
async def Create95Button(text,style=0,underline=False):
styles = [«95/Button.png»,»95/Button Default.png»]
style = min(style,len(styles)-1)
Button = await imageopenWEB(styles[style])
textgraphic = await createtextmac(text,»95//fonts//text//»,underline=underline,underlineoffset=1)
if style == 1:
Button = resize(Button,max(75,w(textgraphic)+5+5),h(textgraphic)+6+4,3,3,3,3)
Border = await imageopenWEB(«95//Button Text Outline.png»)
BorderImg = tile(Border,max(75,w(textgraphic)+5+5),h(textgraphic)+6+4)
textx = floor(w(Button)/2-w(textgraphic)/2)
outx = 4
outendx = max(75,w(textgraphic)+5+5)-4
#BorderImg.show()
Button = put(Button,textgraphic,textx,4)
Button = put(Button,BorderImg.crop((outx, 4, outx+1, 6+h(textgraphic))), outx, 4)
Button = put(Button,BorderImg.crop((outx, 5+h(textgraphic), outendx, 5+h(textgraphic)+1)), outx, 5+h(textgraphic))
Button = put(Button,BorderImg.crop((outendx-1, 4, outendx, 6+h(textgraphic))), outendx-1, 4)
Button = put(Button,BorderImg.crop((outx, 4, outendx, 5)), outx, 4)
else:
Button = resize(Button,max(75,w(textgraphic)+5+5),h(textgraphic)+4+6,2,2,2,2)
Button = put(Button,textgraphic,floor(w(Button)/2-w(textgraphic)/2),4)
return Button
async def Create2000Button(text,style=0,underline=False):
styles = [«2000/Button.png»,»2000/Button Default.png»]
style = min(style,len(styles)-1)
Button = await imageopenWEB(styles[style])
textgraphic = await createtext(text,»xp//fonts//text//»,(0,0,0,255),underline=underline,underlineoffset=1)
if style == 1:
Button = resize(Button,max(75,w(textgraphic)+5+5),h(textgraphic)+6+4,3,3,3,3)
Border = await imageopenWEB(«95//Button Text Outline.png»)
BorderImg = tile(Border,max(75,w(textgraphic)+5+5),h(textgraphic)+6+4)
textx = floor(w(Button)/2-w(textgraphic)/2)
outx = 4
outendx = max(75,w(textgraphic)+5+5)-4
#BorderImg.show()
Button = put(Button,textgraphic,textx,4)
Button = put(Button,BorderImg.crop((outx, 4, outx+1, 6+h(textgraphic))), outx, 4)
Button = put(Button,BorderImg.crop((outx, 5+h(textgraphic), outendx, 5+h(textgraphic)+1)), outx, 5+h(textgraphic))
Button = put(Button,BorderImg.crop((outendx-1, 4, outendx, 6+h(textgraphic))), outendx-1, 4)
Button = put(Button,BorderImg.crop((outx, 4, outendx, 5)), outx, 4)
else:
Button = resize(Button,max(75,w(textgraphic)+5+5),h(textgraphic)+4+6,2,2,2,2)
Button = put(Button,textgraphic,floor(w(Button)/2-w(textgraphic)/2),4)
return Button
async def CreateXPWindow(width,height,captiontext=»»,active=True,insideimagepath = «»,erroriconpath=»»,errortext=»»,button1=»»,button2=»»,button3=»»,button1style=0,button2style=0,button3style=0):
#brug = open(«./brug.txt»)
#print(brug.read())
if active:
TopFrame = await imageopenWEB(«./xp/Frame Up Active.png»)
LeftFrame = await imageopenWEB(«./xp/Frame Left Active.png»)
RightFrame = await imageopenWEB(«./xp/Frame Right Active.png»)
BottomFrame = await imageopenWEB(«./xp/Frame Bottom Active.png»)
CloseButton = await imageopenWEB(«./xp/Close button.png»)
else:
TopFrame = await imageopenWEB(«./xp/Frame Up Inactive.png»)
LeftFrame = await imageopenWEB(«./xp/Frame Left Inactive.png»)
RightFrame = await imageopenWEB(«./xp/Frame Right Inactive.png»)
BottomFrame = await imageopenWEB(«./xp/Frame Bottom Inactive.png»)
CloseButton = await imageopenWEB(«./xp/Close button Inactive.png»)
button1style = button1style*(button1style != 4)
button2style = button2style*(button2style != 4)
button3style = button3style*(button3style != 4)
textposx = 15+3
textposy = 11+h(TopFrame)
captiontextwidth = w(await createtext(captiontext,».\\xp\\fonts\\caption\\»))
width = max(width,captiontextwidth+43)
createdtext = await createtext(errortext,».\\xp\\fonts\\text\\»,(0,0,0,255))
#textposy -= min(15,h(createdtext)//2)
width = max(width,w(createdtext)+textposx+8+3)
height = max(height,h(createdtext)+h(TopFrame)+3+25)
print(textposy)
if(insideimagepath != «»):
insideimage = await imageopenWEB(insideimagepath)
height = max(h(insideimage)+h(TopFrame)+3,height)
width = max(width,w(insideimage)+6)
if(erroriconpath != «»):
erroricon = await imageopenWEB(erroriconpath)
textposx += 15+w(erroricon)
textposy = max(textposy,11+floor(h(erroricon)/2-h(createdtext)/2)+h(TopFrame))
height = max(height,h(erroricon)+h(TopFrame)+3+11+11+3)
width += 14+w(erroricon)
buttonsimage = Image.new(«RGBA»,(0,0),(0,0,0,0))
buttonswidth = 0
buttonsheight = 0
if button1 != «»:
buttonswidth += 11
button1img = await CreateXPButton(button1,button1style)
#IMAGE = put(IMAGE,button1img,3+12,height-3-12,»02″)
buttonsheight = max(buttonsheight,h(button1img)+14)
temp = Image.new(«RGBA»,(buttonswidth+w(button1img),buttonsheight),(0,0,0,0))
temp = put(temp,buttonsimage,0,0)
temp = put(temp,button1img,buttonswidth,3)
buttonsimage = temp.copy()
buttonswidth += w(button1img)
if button2 != «»:
buttonswidth += 6
button2img = await CreateXPButton(button2,button2style)
#IMAGE = put(IMAGE,button2img,3+12,height-3-12,»02″)
buttonsheight = max(buttonsheight,h(button2img)+14)
temp = Image.new(«RGBA»,(buttonswidth+w(button2img),buttonsheight),(0,0,0,0))
temp = put(temp,buttonsimage,0,0)
temp = put(temp,button2img,buttonswidth,3)
buttonsimage = temp.copy()
buttonswidth += w(button2img)
if button3 != «»:
buttonswidth += 6
button3img = await CreateXPButton(button3,button3style)
#IMAGE = put(IMAGE,button2img,3+12,height-3-12,»02″)
buttonsheight = max(buttonsheight,h(button3img)+14)
temp = Image.new(«RGBA»,(buttonswidth+w(button3img),buttonsheight),(0,0,0,0))
temp = put(temp,buttonsimage,0,0)
temp = put(temp,button3img,buttonswidth,3)
buttonsimage = temp.copy()
buttonswidth += w(button3img)
width = max(width,buttonswidth+12)
height += buttonsheight
#buttonswidth.show()
width = max(66,width)
IMAGE = Image.new(«RGBA», (width,height), (236,233,216,0))
#IMAGE = put(IMAGE,cropx(TopFrame,0,27),0,0,»00″)
#IMAGE = put(IMAGE,cropx(TopFrame,28,31).resize((width-w(TopFrame)+4,h(TopFrame)),Image.NEAREST),27,0,»00″)
#IMAGE = put(IMAGE,cropx(TopFrame,31,w(TopFrame)),width,0,»20″)
IMAGE = put(IMAGE,resize(TopFrame,width,h(TopFrame),28,35,9,17,Image.NEAREST),0,0)
IMAGE = put(IMAGE,LeftFrame.resize((3,height-h(TopFrame)-3),Image.NEAREST),0,h(TopFrame),»00″)
IMAGE = put(IMAGE,RightFrame.resize((3,height-h(TopFrame)-3),Image.NEAREST),width,h(TopFrame),»20″)
IMAGE = put(IMAGE,cropx(BottomFrame,0,5).resize((5,3),Image.NEAREST),0,height,»02″)
IMAGE = put(IMAGE,cropx(BottomFrame,4,w(BottomFrame)-5).resize((width-10,3),Image.NEAREST),5,height,»02″)
IMAGE = put(IMAGE,cropx(BottomFrame,w(BottomFrame)-5,w(BottomFrame)).resize((5,3),Image.NEAREST),width,height,»22″)
IMAGE = put(IMAGE,Image.new(«RGBA», (width-6,height-3-h(TopFrame)), (236,233,216,255)),3,h(TopFrame),»00″)
IMAGE = put(IMAGE,CloseButton,width-5,5,»20″)
if active:
IMAGE = put(IMAGE,await createtext(captiontext,».\\xp\\fonts\\captionshadow\\»,(10,24,131,255)),8,8,»00″)
IMAGE = put(IMAGE,await createtext(captiontext,».\\xp\\fonts\\caption\\»),7,7,»00″)
else:
IMAGE = put(IMAGE,await createtext(captiontext,».\\xp\\fonts\\caption\\»,(216,228,248,255)),7,7,»00″)
if(insideimagepath != «»):
IMAGE = put(IMAGE,insideimage,3,h(TopFrame))
if(erroriconpath != «»):
IMAGE = put(IMAGE,erroricon,3+11,h(TopFrame)+11)
IMAGE = put(IMAGE,await createtext(errortext,».\\xp\\fonts\\text\\»,(0,0,0,255)),textposx,textposy)
IMAGE = put(IMAGE,buttonsimage,width//2-5,height-3,»12″)
return IMAGE
async def CreateMacAlertDialog(width,height,title=»»,bar=True,icon=»»,errortext=»»,subtext=»»,button1=»»,button2=»»,button3=»»,button1default=False,button2default=False,button3default=False,button1style=0,button2style=0,button3style=0):
WindowBar = await imageopenWEB(«mac/Error Window With bar.png»)
WindowNoBar = await imageopenWEB(«mac/Error Window No bar.png»)
Ridges = await imageopenWEB(«mac/Red Ridges.png»)
ButtonBorder = await imageopenWEB(«mac//Button Outline.png»)
TextHeight = 0
IconPadding = 0
Paddingwidth = 7
if(bar):
Paddingheight = 29+4
Barheight = 29
else:
Paddingheight = 3+4
Barheight = 0
if(errortext != «»):
ErrorTextImg = await createtextmac(errortext,»mac//fonts//caption//»)
width = max(width,w(ErrorTextImg)+79+90)
#height = max(height,h(ErrorTextImg)+Paddingheight+20)
TextHeight += h(ErrorTextImg)
if(subtext != «»):
SubTextImg = await createtextmac(subtext,»mac//fonts//text//»)
SubTextPos = TextHeight
width = max(width,w(SubTextImg)+79+90)
TextHeight += h(SubTextImg)
height += TextHeight + Paddingheight
if(icon != «»):
IconImg = await imageopenWEB(icon)
height = max(height,h(IconImg)+Paddingheight)
width += w(IconImg)
IconPadding = w(IconImg)
buttonswidth = 0
if(button1 != «»):
height += 60
button1img = await CreateMacButton(button1,button1style)
buttonswidth += w(button1img)
if(button2 != «»):
button2img = await CreateMacButton(button2,button2style)
buttonswidth += w(button2img)
if(button3 != «»):
button3img = await CreateMacButton(button3,button3style)
buttonswidth += w(button3img)
width = max(width,buttonswidth+79+90)
IMAGE = Image.new(«RGBA», (width,height), (236,233,216,0))
if(bar):
IMAGE = put(IMAGE,resize(WindowBar,width,height,3,4,24,4),0,0)
else:
IMAGE = put(IMAGE,resize(WindowNoBar,width,height,3,4,3,4),0,0)
if bar:
if(title == «»):
IMAGE = put(IMAGE,resizeanchor(Ridges,5,4,width-6,16,1,1,1,1),5,4)
else:
TitleImage = await createtextmac(title,»mac//fonts//caption//»)
IMAGE = put(IMAGE,TitleImage,width//2-w(TitleImage)//2,3)
IMAGE = put(IMAGE,resizeanchor(Ridges,5,4,width//2-w(TitleImage)//2-3,16,1,1,1,1),5,4)
IMAGE = put(IMAGE,resizeanchor(Ridges,width//2+w(TitleImage)//2+5,4,width-6,16,1,1,1,1),width//2+w(TitleImage)//2+5,4)
if(icon != «»):
IMAGE = put(IMAGE,IconImg,26,Barheight+15)
if(errortext != «»):
IMAGE = put(IMAGE,ErrorTextImg,47+IconPadding,Barheight+14)
if(subtext != «»):
IMAGE = put(IMAGE,SubTextImg,47+IconPadding,Barheight+SubTextPos+16)
if(button1 != «»):
button1img = await CreateMacButton(button1,button1style)
IMAGE = put(IMAGE,button1img,width-17,height-17,»22″)
if(button1default):
button1border = resize(ButtonBorder,w(button1img)+6,h(button1img)+6,5,5,5,5)
IMAGE = put(IMAGE,button1border,width-17+3,height-17+3,»22″)
if(button2 != «»):
button2img = await CreateMacButton(button2,button2style)
IMAGE = put(IMAGE,button2img,width-17-w(button1img)-22,height-17,»22″)
if(button2default):
button2border = resize(ButtonBorder,w(button2img)+6,h(button2img)+6,5,5,5,5)
IMAGE = put(IMAGE,button2border,width-17+3-w(button1img)-22,height-17+3,»22″)
if(button3 != «»):
button3img = await CreateMacButton(button3,button3style)
IMAGE = put(IMAGE,button3img,width-17-w(button2img)-22-w(button1img)-22,height-17,»22″)
if(button3default):
button3border = resize(ButtonBorder,w(button3img)+6,h(button3img)+6,5,5,5,5)
IMAGE = put(IMAGE,button3border,width-17+3-w(button2img)-22-w(button1img)-22,height-17+3,»22″)
return IMAGE
async def CreateMacWindow(width,height,title=»»,icon=»»,errortext=»»,button1=»»,button2=»»,button3=»»,button1default=False,button2default=False,button3default=False,button1style=0,button2style=0,button3style=0):
WindowBar = await imageopenWEB(«mac/Window With bar.png»)
Ridges = await imageopenWEB(«mac/Ridges.png»)
ButtonBorder = await imageopenWEB(«mac//Button Outline.png»)
Paddingheight = 29+4
TextHeight = 0
iconsize = 0
if(icon != «»):
IconImg = await imageopenWEB(icon)
iconsize = w(IconImg)+26
if(errortext != «»):
ErrorTextImg = await createtextmac(errortext,»mac//fonts//caption//»)
width = max(width,w(ErrorTextImg)+iconsize+20+20+100)
#height = max(height,h(ErrorTextImg)+Paddingheight+20)
TextHeight += h(ErrorTextImg)+36
#if(subtext != «»):
# SubTextImg = await createtextmac(subtext,»mac//fonts//text//»)
# width = max(width,w(SubTextImg)+79+90)
# TextHeight += h(SubTextImg)
height += TextHeight+24+4
if(button1 != «»):
height += 17+17
IMAGE = Image.new(«RGBA», (width,height), (236,233,216,0))
IMAGE = put(IMAGE,resize(WindowBar,width,height,3,4,24,4),0,0)
if(title == «»):
IMAGE = put(IMAGE,resizeanchor(Ridges,5,4,width-6,16,1,1,1,1),5,4)
else:
TitleImage = await createtextmac(title,»mac//fonts//caption//»)
IMAGE = put(IMAGE,TitleImage,width//2-w(TitleImage)//2,3)
IMAGE = put(IMAGE,resizeanchor(Ridges,5,4,width//2-w(TitleImage)//2-3,16,1,1,1,1),5,4)
IMAGE = put(IMAGE,resizeanchor(Ridges,width//2+w(TitleImage)//2+5,4,width-6,16,1,1,1,1),width//2+w(TitleImage)//2+5,4)
if(icon != «»):
IMAGE = put(IMAGE,IconImg,26,37)
if(errortext != «»):
IMAGE = put(IMAGE,ErrorTextImg,iconsize+20,36)
if(button1 != «»):
button1img = await CreateMacButton(button1,button1style)
IMAGE = put(IMAGE,button1img,width-17,height-17,»22″)
if(button1default):
button1border = resize(ButtonBorder,w(button1img)+6,h(button1img)+6,5,5,5,5)
IMAGE = put(IMAGE,button1border,width-17+3,height-17+3,»22″)
if(button2 != «»):
button2img = await CreateMacButton(button2,button2style)
IMAGE = put(IMAGE,button2img,width-17-w(button1img)-22,height-17,»22″)
if(button2default):
button2border = resize(ButtonBorder,w(button2img)+6,h(button2img)+6,5,5,5,5)
IMAGE = put(IMAGE,button2border,width-17+3-w(button1img)-22,height-17+3,»22″)
if(button3 != «»):
button3img = await CreateMacButton(button3,button3style)
IMAGE = put(IMAGE,button3img,width-17-w(button2img)-22-w(button1img)-22,height-17,»22″)
if(button3default):
button3border = resize(ButtonBorder,w(button3img)+6,h(button3img)+6,5,5,5,5)
IMAGE = put(IMAGE,button3border,width-17+3-w(button2img)-22-w(button1img)-22,height-17+3,»22″)
return IMAGE
async def CreateMacWindoid(icon=»»,text=»»,collapsed=False):
contentwidth = 0
contentheight = 0
textpos = 6
if(text != «»):
TextImg = await createtextmac(text,»mac//fonts//text//»)
contentwidth += w(TextImg)+7
contentheight += h(TextImg)+3
if(icon != «»):
IconImg = await imageopenWEB(icon)
contentwidth += w(IconImg) + 7
contentheight = max(contentheight,h(IconImg))
textpos += w(IconImg) + 7
contentwidth += 12
contentheight += 8
CONTENT = Image.new(«RGBA»,(contentwidth,contentheight),(255,255,198))
if(text != «»):
CONTENT = put(CONTENT,TextImg,textpos,5)
if(icon != «»):
CONTENT = put(CONTENT,IconImg,6,4)
Border = await imageopenWEB(«mac//Windoid.png»)
CollapsedBorder = await imageopenWEB(«mac//Windoid Hidden.png»)
Studs = await imageopenWEB(«mac//Studs.png»)
CloseButton = await imageopenWEB(«mac//Windoid Close Button.png»)
HideButton = await imageopenWEB(«mac//Windoid Hide Button.png»)
width = contentwidth + 19
height = contentheight + 9
IMAGE = Image.new(«RGBA»,(width,height),(0,0,0,0))
if not collapsed:
IMAGE = put(IMAGE,resize(Border,width,height,14,5,4,5),0,0)
IMAGE = put(IMAGE,CONTENT,14,4)
IMAGE = put(IMAGE,CloseButton,2,2)
IMAGE = put(IMAGE,HideButton,2,height-3,»02″)
IMAGE = put(IMAGE,tile(Studs,8,height-14-15),3,14)
else:
IMAGE = put(IMAGE,resize(CollapsedBorder,15,height,2,3,2,3),0,0)
IMAGE = put(IMAGE,CloseButton,2,2)
IMAGE = put(IMAGE,HideButton,2,height-3,»02″)
IMAGE = put(IMAGE,tile(Studs,8,height-14-15),3,14)
return IMAGE
async def mix(a,b,c): #smoothly mixes between two values.
c = min(1,max(0,c))
c = c**0.5
return a*(1-c)+b*c
#this function just takes a corner and squishes it based on width and the height of the image by some amount.
#amount of 3 will put it in the width/3,height/3 position
#amount of 7 will put it in the width/7,height/7 position and so on.
#c is there to animate the translation, from 0 — fully translated, to 1 — no translation
async def stretch(size,amount,c):
result = size-size*(size/(size-size/amount)) #this is needed because deform() does the opposite of what you would think it will do, it takes 4 points, and then squishes them into a rectangle.
return mix(result,0,c)
class Windows7Anim:
async def __init__(self,second):
self.second = second
async def getmesh(self, img):
return [((0,0,w(img),h(img)),(stretch(w(img),30,self.second*4),stretch(h(img),56,self.second*4),
stretch(w(img),18,self.second*4),h(img)-stretch(h(img),16,self.second*4),
w(img)-stretch(w(img),18,self.second*4),h(img)-stretch(h(img),16,self.second*4),
w(img)-stretch(w(img),30,self.second*4),stretch(h(img),56,self.second*4)))] #values arbitrary, somebody needs to look into dwm and find how it animates the window
async def Create7Window(icon=»»,text=»»,title=»»,pos=(0,0),screenres=(1920,1080),wallpaper=»»,buttons=[]):
#pos and screenres dictate the glass texture position and size on the window border
#if wallpaper is not empty, it will composite the error onto an image at pos’s coordinates, screenres should be the same size as the wallpaper
contentwidth = 106
contentheight = 53
textpos = 0
textposy = 25+13
print(«1»)
if(text != «»):
TextDim = await measuretext7(text,»7//fonts//text//»,kerningadjust=-1)
contentwidth = max(contentwidth,TextDim[0]+38+12)
contentheight += TextDim[1]
textposy = textposy-min(TextDim[1],21)
if(icon != «»):
IconImg = await imageopenWEB(icon)
contentwidth = max(contentwidth,w(IconImg)+25+25)
contentheight = max(contentheight,h(IconImg)+26+26)
textpos += w(IconImg)-4+25
textposy += h(IconImg)//2-7
if(text != «»):
contentwidth = max(contentwidth,w(IconImg)+25+TextDim[0]+38+9)
print(«2»)
if(title != «»):
TitleDim = await measuretext7(title,»7//fonts//text//»,kerningadjust=-1)
contentwidth = max(contentwidth,TitleDim[0]+49)
buttonswidth = 0
#len(buttons)*95
for i in buttons:
tempbuttontextsize = await measuretext7(i[0],»7\\fonts\\text\\»,kerningadjust=-1)
buttonswidth += max(tempbuttontextsize[0]+16,86) + 10
if(buttons):
contentheight += 49
contentwidth = max(contentwidth,buttonswidth+43)
print(«3»)
CONTENT = Image.new(«RGBA»,(contentwidth,contentheight),(255,255,255))
if(icon != «»):
CONTENT = put(CONTENT,IconImg,25,26)
if(text != «»):
CONTENT = await createtext7(CONTENT,textpos+12,textposy,text,»7//fonts//text//»,kerningadjust=-1)
if(buttons):
CONTENT = put(CONTENT, Image.new(«RGBA»,(contentwidth,49),(240,240,240)),0,contentheight,»02″)
buttonpos = 0
print(«4″)
for i in buttons:
buttonpos += 10
Button = await Create7Button(i[0],i[1])
CONTENT = put7(CONTENT, Button, contentwidth-buttonpos,contentheight-12,»22»)
buttonpos += w(Button)
Window = await imageopenWEB(«7//Window.png»)
CloseButton = await imageopenWEB(«7//Close Button Single.png»)
CloseSymbol = await imageopenWEB(«7//Close Symbol.png»)
GlassImg = await imageopenWEB(«7//Glass.png»)
GlassMask = await imageopenWEB(«7//Glass Mask.png»)
print(«5»)
TextGlow = await imageopenWEB(«7//Text Glow.png»)
SideGlowLeft = await imageopenWEB(«7//Sideglow 1 Left.png»)
SideGlowRight = await imageopenWEB(«7//Sideglow 1 Right.png»)
SideShine = await imageopenWEB(«7//Side Shine.png»)
print(«6»)
width = contentwidth+8+8
height = contentheight+8+30
GlassMask = resize(GlassMask,width,height,8,8,30,8)
#Glass = put(Image.new(«RGBA»,(800,602),(0,0,0,0)),GlassImg.resize(screenres),int((width/screenres[0])*50-50-pos[0]+pos[0]*0.12173472694),0)
Glass = put(Image.new(«RGBA»,(800,602),(0,0,0,0)),GlassImg.resize(screenres),int(-pos[0]+width/16-screenres[0]/16+pos[0]/8),-pos[1])
WithBorder = ImageChops.multiply(GlassMask,Glass)
WithBorder = put(WithBorder, SideGlowLeft, 0, 0)
WithBorder = put(WithBorder, SideGlowRight, width, 0, «20»)
WithBorder = put(WithBorder, SideShine.resize((w(SideShine),(height-29-8)//4)), 0, 29)
WithBorder = put(WithBorder, SideShine.resize((w(SideShine),(height-29-8)//4)), width, 29, «20»)
print(«7»)
#WithBorder.show()
if(title != «»):
WithBorder = put(WithBorder,resize(TextGlow,TitleDim[0]+7+14+10,h(TextGlow),23,23,1,1),-7,0)
WithBorder = await createtext7(WithBorder,8,7,title,»7//fonts//text//»,kerningadjust=-1)
WithBorder = put(WithBorder,resize(Window,width,height,8,8,30,8),0,0)
WithBorder = put(WithBorder,CONTENT,8,30)
WithBorder = put(WithBorder,CloseButton,width-6,1,»20″)
WithBorder = put(WithBorder,CloseSymbol,width-6-18,5,»20″)
print(«8»)
ShadowTop = await imageopenWEB(«7//Shadow Top.png»)
ShadowRight = await imageopenWEB(«7//Shadow Right.png»)
ShadowBottom = await imageopenWEB(«7//Shadow Bottom.png»)
ShadowLeft = await imageopenWEB(«7//Shadow Left.png»)
print(«9»)
IMAGE = Image.new(«RGBA»,(width+19+13,height+18+12),(0,0,0,0))
IMAGE = put(IMAGE, resize(ShadowTop,width+13+16,12,26,26,1,1),0,0)
IMAGE = put(IMAGE, resize(ShadowLeft,13,height,1,1,20,14),0,12)
IMAGE = put(IMAGE, resize(ShadowRight,19,height,1,1,20,14),width+13,12)
IMAGE = put(IMAGE, resize(ShadowBottom,width+13+17,18,28,27,1,1),0,height+12)
IMAGE = put(IMAGE,WithBorder,13,12)
print(«10»)
if(wallpaper != «»):
WallpaperImg = await imageopenWEB(wallpaper)
IMAGE = put(WallpaperImg, IMAGE, pos[0]-13, pos[1]-12)
return IMAGE
async def Create7ButtonPanel(buttons,windowwidth=360,screenres=(1920,1080)):
summedwidth = 11
summedheight = 20
curwidth = 0
curlevel = 0
cachedbuttons = []
for button in buttons:
button = await Create7Button(button[0],button[1])
cachedbuttons.append(button)
size = button.size
if(curwidth + size[0] > screenres[0]):
summedheight += curlevel+2
curwidth = 0
curlevel = 0
curwidth += size[0]
summedwidth= max(summedwidth,curwidth)
curlevel = max(curlevel,size[1])
summedheight += curlevel
for button in cachedbuttons:
size = button.size
async def Create7TaskDialog(icon=»»,textbig=»»,textsmall=»»,title=»»,buttons=[],closebutton=True,pos=(200,100),screenres=(1920,1080),wallpaper=»»):
width = 360
height = 0
iconsize = 0
if(title != «»):
TitleDim = await measuretext7(title,»7//fonts//text//»,kerningadjust=-1)
if(icon != «»):
IconImg = await imageopenWEB(icon)
iconsize = w(IconImg)+10
height += iconsize+10
textbigheight = 0
if(textbig != «»):
textbigheight = (await measuretext7(textbig,»7/fonts/bigtext/»,fit=width-iconsize-10-10))[1]+10
height = max(height,textbigheight+10+30)
if(textsmall != «»):
height = max(height,(await measuretext7(textsmall,»7/fonts/text/»,fit=width-iconsize-10-10))[1]+15+15)
if buttons:
height += 41
CONTENT = Image.new(«RGBA»,(width,height),(255,255,255,255))
if(icon != «»):
CONTENT = put(CONTENT,IconImg,10,10)
if(textbig != «»):
CONTENT = await createtext7(CONTENT,iconsize+10,10,textbig,»7/fonts/bigtext/»,(0,51,153,255),kerningadjust=-1,fit=width-iconsize-10-10)
if(textsmall != «»):
CONTENT = await createtext7(CONTENT,iconsize+10,textbigheight+15,textsmall,»7/fonts/text/»,kerningadjust=-1,fit=width-iconsize-10-10)
if buttons:
CONTENT = put(CONTENT, Image.new(«RGBA»,(width,40),(240,240,240,255)),0,height,»02″)
CONTENT = put(CONTENT, Image.new(«RGBA»,(width,1),(222,222,222,255)),0,height-41)
buttonpos = 12
for button in buttons:
ButtonImg = await Create7TaskDialogButton(button[0],button[1])
CONTENT = put(CONTENT, ButtonImg, width-buttonpos,height-11,»22″)
buttonpos += w(ButtonImg)+8
Window = await imageopenWEB(«7//Window.png»)
CloseButton = await imageopenWEB(«7//Close Button Single.png»)
CloseSymbol = await imageopenWEB(«7//Close Symbol.png»)
GlassImg = await imageopenWEB(«7//Glass.png»)
GlassMask = await imageopenWEB(«7//Glass Mask.png»)
TextGlow = await imageopenWEB(«7//Text Glow.png»)
SideGlowLeft = await imageopenWEB(«7//Sideglow 1 Left.png»)
SideGlowRight = await imageopenWEB(«7//Sideglow 1 Right.png»)
SideShine = await imageopenWEB(«7//Side Shine.png»)
width = width+8+8
height = height+8+30
GlassMask = resize(GlassMask,width,height,8,8,30,8)
#Glass = put(Image.new(«RGBA»,(800,602),(0,0,0,0)),GlassImg.resize(screenres),int((width/screenres[0])*50-50-pos[0]+pos[0]*0.12173472694),0)
Glass = put(Image.new(«RGBA»,(800,602),(0,0,0,0)),GlassImg.resize(screenres),int(-pos[0]+width/16-screenres[0]/16+pos[0]/8),-pos[1])
WithBorder = ImageChops.multiply(GlassMask,Glass)
WithBorder = put(WithBorder, SideGlowLeft, 0, 0)
WithBorder = put(WithBorder, SideGlowRight, width, 0, «20»)
WithBorder = put(WithBorder, SideShine.resize((w(SideShine),(height-29-8)//4)), 0, 29)
WithBorder = put(WithBorder, SideShine.resize((w(SideShine),(height-29-8)//4)), width, 29, «20»)
#WithBorder.show()
if(title != «»):
WithBorder = put(WithBorder,resize(TextGlow,TitleDim[0]+7+14+10,h(TextGlow),23,23,1,1),-7,0)
WithBorder = await createtext7(WithBorder,8,7,title,»7//fonts//text//»,kerningadjust=-1)
WithBorder = put(WithBorder,resize(Window,width,height,8,8,30,8),0,0)
WithBorder = put(WithBorder,CONTENT,8,30)
if closebutton:
WithBorder = put(WithBorder,CloseButton,width-6,1,»20″)
WithBorder = put(WithBorder,CloseSymbol,width-6-18,5,»20″)
ShadowTop = await imageopenWEB(«7//Shadow Top.png»)
ShadowRight = await imageopenWEB(«7//Shadow Right.png»)
ShadowBottom = await imageopenWEB(«7//Shadow Bottom.png»)
ShadowLeft = await imageopenWEB(«7//Shadow Left.png»)
IMAGE = Image.new(«RGBA»,(width+19+13,height+18+12),(0,0,0,0))
IMAGE = put(IMAGE, resize(ShadowTop,width+13+16,12,26,26,1,1),0,0)
IMAGE = put(IMAGE, resize(ShadowLeft,13,height,1,1,20,14),0,12)
IMAGE = put(IMAGE, resize(ShadowRight,19,height,1,1,20,14),width+13,12)
IMAGE = put(IMAGE, resize(ShadowBottom,width+13+17,18,28,27,1,1),0,height+12)
IMAGE = put(IMAGE,WithBorder,13,12)
if(wallpaper != «»):
WallpaperImg = await imageopenWEB(wallpaper)
IMAGE = put(WallpaperImg, IMAGE, pos[0]-13, pos[1]-12)
return IMAGE
def Export7Animation(img,savepath): #just put the generated window into img and set savepath to the folder you want it to save «7//animoutput//» is recommended
for i in range(16):
ImageChops.multiply(ImageOps.deform(img, Windows7Anim(i/60)),Image.new(«RGBA»,(w(img),h(img)),(255,255,255,int(max(0,min(1,(i+0.1)/15))**0.5*255)))).save(savepath+str(i)+».png»)
def even(a):
c = ceil(a/2)*2
dc = abs(c-a)
f = floor(a/2)*2
df = abs(f-a)
if(df <= dc):
return f
else:
return c
def buttoneven(a):
c = ceil(a/2)*2
dc = abs(c-a)
f = floor(a/2)*2
df = abs(f-a)
if(df < dc):
return f
else:
return c
def getsafe(a, i, fallback):
try:
return a[i]
except IndexError:
return fallback
async def Create3_1Window(icon=»»,text=»»,title=»»,buttons=[],active=True):
contentwidth = 0
contentheight = 0
textpos = 18
textposy = 16
iconposy = 17
if(text != «»):
TextImg = await createtextmac(text,»3.1//fonts//text//»)
contentwidth += w(TextImg)+18+17
contentheight += h(TextImg)+16+16
if(icon != «»):
IconImg = await imageopenWEB(icon)
textpos += w(IconImg)+19
contentwidth += w(IconImg)+18
contentwidth = max(contentwidth,w(IconImg)+19+19)
contentheight = max(contentheight,17+h(IconImg)+15)
if(text != «»):
textposy = max(16,h(IconImg)//2-h(TextImg)//2+17)
if(title != «»):
TitleImg = await createtextmac(text,»3.1//fonts//text//»)
contentwidth = max(contentwidth,w(TitleImg)+20+1)
if buttons:
contentheight += 44
buttonswidth = 0
for button in buttons:
CurrentButton = await Create3_1Button(button[0],button[1],getsafe(button,2,False))
buttonswidth += w(CurrentButton)+17
contentwidth = max(contentwidth,buttonswidth+17)
contentwidth = even(contentwidth)
if active:
Window = await imageopenWEB(«3.1//Window.png»)
else:
Window = await imageopenWEB(«3.1//Window Inactive.png»)
CloseButton = await imageopenWEB(«3.1//Close Button.png»)
CONTENT = Image.new(«RGBA»,(contentwidth,contentheight),(255,255,255,255))
if(text != «»):
CONTENT = put(CONTENT,TextImg,even(textpos),even(textposy))
if(icon != «»):
iconposy = even(textposy+h(TextImg)/2-h(IconImg)/2)
if(icon != «»):
CONTENT = put(CONTENT,IconImg,18,iconposy)
buttonpos = contentwidth/2-(58*len(buttons)+17*len(buttons)-17)/2
if active:
for i in range(len(buttons)):
CONTENT = put(CONTENT,await Create3_1Button(buttons[i][0],buttons[i][1],getsafe(buttons[i],2,False)),buttoneven(buttonpos),contentheight-10,»02″)
print(buttons[i][0]+»:»,buttonpos,»which is»,buttoneven(buttonpos))
buttonpos += 58+17
else:
for i in range(len(buttons)):
CONTENT = put(CONTENT,await Create3_1Button(buttons[i][0],0,getsafe(buttons[i],2,False)),buttoneven(buttonpos),contentheight-10,»02″)
print(buttons[i][0]+»:»,buttonpos,»which is»,buttoneven(buttonpos))
buttonpos += 58+17
print(contentwidth,contentheight)
width = contentwidth+5+5
height = contentheight+24+5
IMAGE = resize(Window,width,height,6,6,24,5)
IMAGE = put(IMAGE,CONTENT,5,24)
IMAGE = put(IMAGE, CloseButton,6,5)
if(title != «»):
if active:
TitleImg = await createtextmac(title,»3.1//fonts//text//»,(255,255,255,255))
else:
TitleImg = await createtextmac(title,»3.1//fonts//text//»)
IMAGE = put(IMAGE,TitleImg,floor((contentwidth-20-1)/2-w(TitleImg)/2)+19+6,6)
return IMAGE
#
async def CreateUbuntuWindow(icon=»»,bigtext=»»,text=»»,title=»»,buttons=[],active=True):
contentwidth = 12+12+12
contentheight = 12+16+24
textwidth = 0
textheight = 0
if(bigtext != «»):
bigtextsize = await measuretext7(bigtext,»ubuntu/fonts/bigtext/»)
textwidth += bigtextsize[0]
textheight += bigtextsize[1]+12
if(text != «»):
textsize = await measuretext7(text,»ubuntu/fonts/text/»)
textwidth = max(textwidth,textsize[0])
textheight += textsize[1]
else:
textheight += 17
contentwidth += textwidth
contentheight = max(contentheight,textheight+12+24+16)
if(icon != «»):
IconImg = await imageopenWEB(icon)
contentwidth += w(IconImg)
contentheight = max(contentheight,h(IconImg)+12+24+16)
maxbuttonwidth = 0
maxbuttonheight = 0
for button in buttons:
ButtonImg = await CreateUbuntuButton(button[0],button[1])
maxbuttonwidth = max(w(ButtonImg),maxbuttonwidth)
maxbuttonheight = max(h(ButtonImg),maxbuttonheight)
contentwidth = max(contentwidth, (maxbuttonwidth+4+4)*len(buttons)+8+8)
contentheight += maxbuttonheight
CONTENT = Image.new(«RGBA»,(contentwidth,contentheight),(240,235,226))
iconsize = 0
if(icon != «»):
CONTENT = put(CONTENT,IconImg,12,12)
iconsize = w(IconImg)
if(bigtext == «»):
if(text != «»):
CONTENT = await createtextubuntu(CONTENT,iconsize+24,12,text,»ubuntu/fonts/text/»,(60,59,55,255))
else:
CONTENT = await createtextubuntu(CONTENT,iconsize+24,12,bigtext,»ubuntu/fonts/bigtext/»,(60,59,55,255))
if(text != «»):
CONTENT = await createtextubuntu(CONTENT,iconsize+24,bigtextsize[1]+12+12,text,»ubuntu/fonts/text/»,(60,59,55,255))
buttonpos = contentwidth-12
for button in buttons:
CONTENT = put(CONTENT, await CreateUbuntuButton(button[0],active and button[1] or 0,[maxbuttonwidth,maxbuttonheight]),buttonpos,contentheight-16,»22″)
buttonpos -= maxbuttonwidth+8
Frame = await imageopenWEB(active and «ubuntu/Window.png» or (not active and «ubuntu/Window Inactive.png»))
CloseButton = await imageopenWEB(active and «ubuntu/Close Button.png» or (not active and «ubuntu/Close Button Inactive.png»))
Mask = await imageopenWEB(«ubuntu/Mask.png»)
Highlight = await imageopenWEB(«ubuntu/Highlight.png»)
Mask = resize(Mask,contentwidth,contentheight,5,5,1,4)
WINDOW = resize(Frame,contentwidth+1+1,contentheight+27+1,5,5,27,5)
WINDOW = put(WINDOW, ImageChops.multiply(Mask,CONTENT), 1, 27)
WINDOW = put(WINDOW, CloseButton, 10, 5)
WINDOW = put(WINDOW, Highlight,0,27)
WINDOW = put(WINDOW, Highlight,contentwidth+1,27)
if(title != «»):
WINDOW = await createtextubuntu(WINDOW, 42, 6, title, «ubuntu/fonts/caption/», (51,51,51,255))
WINDOW = await createtextubuntu(WINDOW, 42, 4, title, «ubuntu/fonts/caption/», (51,51,51,255))
WINDOW = await createtextubuntu(WINDOW, 41, 5, title, «ubuntu/fonts/caption/», (51,51,51,255))
WINDOW = await createtextubuntu(WINDOW, 43, 5, title, «ubuntu/fonts/caption/», (51,51,51,255))
WINDOW = await createtextubuntu(WINDOW, 42, 5, title, «ubuntu/fonts/caption/», (223,216,200,255))
Shadow = await imageopenWEB(«ubuntu/Shadow.png»)
IMAGE = resize(Shadow,contentwidth+1+1+8+10,contentheight+27+1+8+10,20,20,21,21)
IMAGE = put(IMAGE,WINDOW,8,8)
return IMAGE
async def Create95Window(icon=»»,text=»»,title=»»,buttons=[],active=True,closebutton=True):
buttons = buttons.copy()
width = 0
height = 0
textshift = 0
iconheight = 32
if(icon):
IconImg = await imageopenWEB(icon)
width += w(IconImg)+12+12
height = max(height,h(IconImg)+12+6)
textshift += w(IconImg)+10
iconheight = h(IconImg)
if(text):
TextImg = await createtextmac(text,»95/fonts/text/»)
print(w(TextImg))
print(w(TextImg)+textshift+18+12)
width = max(width,w(TextImg)+textshift+18+11)
height = max(height,h(TextImg)+12+6)
print(buttons)
if(buttons):
button = buttons[0]
ButtonsImg = Image.new(«RGBA»,(1,1),(0,0,0,0))
ButtonImg = await Create95Button(button[0],getsafe(button,1,0) if active else 0,getsafe(button,2,False))
ButtonsImg = put(Image.new(«RGBA»,(w(ButtonsImg)+w(ButtonImg),max(h(ButtonsImg),h(ButtonImg))),(0,0,0,0)),ButtonsImg,0,0)
ButtonsImg = put(ButtonsImg,ButtonImg,w(ButtonsImg),0,»20″)
buttons.pop(0)
for button in buttons:
ButtonImg = await Create95Button(button[0],getsafe(button,1,0) if active else 0,getsafe(button,2,False))
ButtonsImg = put(Image.new(«RGBA»,(w(ButtonsImg)+w(ButtonImg)+6,max(h(ButtonsImg),h(ButtonImg))),(0,0,0,0)),ButtonsImg,0,0)
ButtonsImg = put(ButtonsImg,ButtonImg,w(ButtonsImg),0,»20″)
width = max(width,w(ButtonsImg)+12+12)
height += h(ButtonsImg)+12+11
buttons.append(«good»)
#width = 262
#height = 96
IMAGE = Image.new(«RGBA»,(width,height),(192,192,192,255))
if(icon):
IMAGE = put(IMAGE,IconImg,12,12)
if(text):
IMAGE = put(IMAGE,TextImg,18+textshift,21 if h(TextImg) == 13 else 16 if h(TextImg) == 26 else 12 )
if(buttons):
print(width/2-w(ButtonsImg)/2+1)
print(floor(width/2-w(ButtonsImg)/2)+1)
IMAGE = put(IMAGE, ButtonsImg,floor(width/2-w(ButtonsImg)/2)+1,height-12,»02″)
if active:
Window = await imageopenWEB(«95/Window.png»)
else:
Window = await imageopenWEB(«95/Window Inactive.png»)
if closebutton:
CloseButton = await imageopenWEB(«95/Close Button.png»)
else:
CloseButton = await imageopenWEB(«95/Close Button Disabled.png»)
IMAGE = put(resize(Window,width+2+2,height+21+2,3,3,21,2),IMAGE,2,21)
if(title):
TitleImg = await createtextmac(title,»95/fonts/caption/»,(255,255,255) if active else (192,192,192))
IMAGE = put(IMAGE,TitleImg,5,5)
print(IMAGE.size)
IMAGE = put(IMAGE,CloseButton,width-1,5,»20″)
return IMAGE
async def Create98Window(icon=»»,text=»»,title=»»,buttons=[],active=True,closebutton=True):
buttons = buttons.copy()
width = 0
height = 0
textshift = 0
iconheight = 32
if(icon):
IconImg = await imageopenWEB(icon)
width += w(IconImg)+12+12
height = max(height,h(IconImg)+12+6)
textshift += w(IconImg)+10
iconheight = h(IconImg)
if(text):
TextImg = await createtextmac(text,»95/fonts/text/»)
print(w(TextImg))
print(w(TextImg)+textshift+18+12)
width = max(width,w(TextImg)+textshift+18+11)
height = max(height,h(TextImg)+12+6)
print(buttons)
if(buttons):
button = buttons[0]
ButtonsImg = Image.new(«RGBA»,(1,1),(0,0,0,0))
ButtonImg = await Create95Button(button[0],getsafe(button,1,0) if active else 0,getsafe(button,2,False))
ButtonsImg = put(Image.new(«RGBA»,(w(ButtonsImg)+w(ButtonImg),max(h(ButtonsImg),h(ButtonImg))),(0,0,0,0)),ButtonsImg,0,0)
ButtonsImg = put(ButtonsImg,ButtonImg,w(ButtonsImg),0,»20″)
buttons.pop(0)
for button in buttons:
ButtonImg = await Create95Button(button[0],getsafe(button,1,0) if active else 0,getsafe(button,2,False))
ButtonsImg = put(Image.new(«RGBA»,(w(ButtonsImg)+w(ButtonImg)+6,max(h(ButtonsImg),h(ButtonImg))),(0,0,0,0)),ButtonsImg,0,0)
ButtonsImg = put(ButtonsImg,ButtonImg,w(ButtonsImg),0,»20″)
width = max(width,w(ButtonsImg)+12+12)
height += h(ButtonsImg)+12+11
buttons.append(«good»)
#width = 262
#height = 96
IMAGE = Image.new(«RGBA»,(width,height),(192,192,192,255))
if(icon):
IMAGE = put(IMAGE,IconImg,12,12)
if(text):
IMAGE = put(IMAGE,TextImg,18+textshift,21 if h(TextImg) == 13 else 16 if h(TextImg) == 26 else 12 )
if(buttons):
print(width/2-w(ButtonsImg)/2+1)
print(floor(width/2-w(ButtonsImg)/2)+1)
IMAGE = put(IMAGE, ButtonsImg,floor(width/2-w(ButtonsImg)/2)+1,height-12,»02″)
if active:
Window = await imageopenWEB(«95/Window.png»)
else:
Window = await imageopenWEB(«95/Window Inactive.png»)
if closebutton:
CloseButton = await imageopenWEB(«95/Close Button.png»)
else:
CloseButton = await imageopenWEB(«95/Close Button Disabled.png»)
IMAGE = put(resize(Window,width+2+2,height+21+2,3,3,21,2),IMAGE,2,21)
if active:
IMAGE = put(IMAGE,Image.new(«RGBA»,(width-2,18),(16,132,208)),3,3)
IMAGE = put(IMAGE,gradient(width-2-19,18,(0,0,128),(16,132,208)),3,3)
else:
IMAGE = put(IMAGE,Image.new(«RGBA»,(width-2,18),(181,181,181)),3,3)
IMAGE = put(IMAGE,gradient(width-2-19,18,(128,128,128),(181,181,181)),3,3)
if(title):
TitleImg = await createtextmac(title,»95/fonts/caption/»,(255,255,255) if active else (192,192,192))
IMAGE = put(IMAGE,TitleImg,5,5)
print(IMAGE.size)
IMAGE = put(IMAGE,CloseButton,width-1,5,»20″)
return IMAGE
async def Create2000Window(icon=»»,text=»»,title=»»,buttons=[],active=True,closebutton=True):
buttons = buttons.copy()
width = 0
height = 0
textshift = 0
iconheight = 32
if(icon):
IconImg = await imageopenWEB(icon)
width += w(IconImg)+12+12
height = max(height,h(IconImg)+12+6)
textshift += w(IconImg)+10
iconheight = h(IconImg)
if(text):
TextImg = await createtext(text,»xp/fonts/text/»,(0,0,0,255))
print(w(TextImg))
print(w(TextImg)+textshift+18+12)
width = max(width,w(TextImg)+textshift+18+11)
height = max(height,h(TextImg)+12+6)
print(buttons)
if(buttons):
button = buttons[0]
ButtonsImg = Image.new(«RGBA»,(1,1),(0,0,0,0))
ButtonImg = await Create2000Button(button[0],getsafe(button,1,0) if active else 0,getsafe(button,2,False))
ButtonsImg = put(Image.new(«RGBA»,(w(ButtonsImg)+w(ButtonImg),max(h(ButtonsImg),h(ButtonImg))),(0,0,0,0)),ButtonsImg,0,0)
ButtonsImg = put(ButtonsImg,ButtonImg,w(ButtonsImg),0,»20″)
buttons.pop(0)
for button in buttons:
ButtonImg = await Create2000Button(button[0],getsafe(button,1,0) if active else 0,getsafe(button,2,False))
ButtonsImg = put(Image.new(«RGBA»,(w(ButtonsImg)+w(ButtonImg)+6,max(h(ButtonsImg),h(ButtonImg))),(0,0,0,0)),ButtonsImg,0,0)
ButtonsImg = put(ButtonsImg,ButtonImg,w(ButtonsImg),0,»20″)
width = max(width,w(ButtonsImg)+12+12)
height += h(ButtonsImg)+12+11
buttons.append(«good»)
#width = 262
#height = 96
IMAGE = Image.new(«RGBA»,(width,height),(212,208,200,255))
if(icon):
IMAGE = put(IMAGE,IconImg,12,12)
if(text):
IMAGE = put(IMAGE,TextImg,18+textshift,21 if h(TextImg) == 13 else 16 if h(TextImg) == 26 else 12 )
if(buttons):
print(width/2-w(ButtonsImg)/2+1)
print(floor(width/2-w(ButtonsImg)/2)+1)
IMAGE = put(IMAGE, ButtonsImg,floor(width/2-w(ButtonsImg)/2)+1,height-12,»02″)
if active:
Window = await imageopenWEB(«2000/Window.png»)
else:
Window = await imageopenWEB(«2000/Window Inactive.png»)
if closebutton:
CloseButton = await imageopenWEB(«2000/Close Button.png»)
else:
CloseButton = await imageopenWEB(«2000/Close Button Disabled.png»)
IMAGE = put(resize(Window,width+2+2,height+21+2,3,3,21,2),IMAGE,2,21)
if active:
IMAGE = put(IMAGE,Image.new(«RGBA»,(width-2,18),(166,202,240)),3,3)
IMAGE = put(IMAGE,gradient(width-2-19,18,(10,36,106),(166,202,240)),3,3)
else:
IMAGE = put(IMAGE,Image.new(«RGBA»,(width-2,18),(192,192,192)),3,3)
IMAGE = put(IMAGE,gradient(width-2-19,18,(128,128,128),(192,192,192)),3,3)
if(title):
TitleImg = await createtext(title,»xp/fonts/text/»,(255,255,255,255) if active else (212,208,200,255),kerningadjust=1)
IMAGE = put(IMAGE,TitleImg,5,5)
IMAGE = put(IMAGE,TitleImg,6,5)
print(IMAGE.size)
IMAGE = put(IMAGE,CloseButton,width-1,5,»20″)
return IMAGE
async def UpdateImagexp():
image = await CreateXPWindow(0,0,errortext=document.getElementById(«text»).value,
captiontext=document.getElementById(«title»).value,
active=document.getElementById(«active»).checked,
erroriconpath=document.querySelector(‘input[name=»icon»]:checked’).value,
button1=document.getElementById(«button1»).value,
button2=document.getElementById(«button2»).value,
button3=document.getElementById(«button3»).value,
button1style=int(document.getElementById(«button1style»).value),
button2style=int(document.getElementById(«button2style»).value),
button3style=int(document.getElementById(«button3style»).value))
canvas = document.getElementById(«xpoutput»)
ctx = canvas.getContext(«2d»)
width,height = image.size
canvas.style.width = f»{width}px»
canvas.style.height = f»{height}px»
canvas.width = width
canvas.height = height
ctx.clearRect(0, 0, width, height)
data = Uint8ClampedArray.new(to_js(image.tobytes()))
image_data = ImageData.new(data, width, height)
ctx.putImageData(image_data, 0, 0)
def createlist(b1,b2,b3,s1,s2,s3):
buttonlist = []
if(b1 != «»):
buttonlist.append([b1,s1])
if(b2 != «»):
buttonlist.append([b2,s2])
if(b3 != «»):
buttonlist.append([b3,s3])
return buttonlist
def createlist95(b1,b2,b3,s1,s2,s3,u1,u2,u3):
buttonlist = []
if(b1 != «»):
buttonlist.append([b1,s1,u1])
if(b2 != «»):
buttonlist.append([b2,s2,u2])
if(b3 != «»):
buttonlist.append([b3,s3,u3])
return buttonlist
async def UpdateImage7():
button1=document.getElementById(«button1»).value
button2=document.getElementById(«button2»).value
button3=document.getElementById(«button3»).value
button1style=int(document.getElementById(«button1style»).value)
button2style=int(document.getElementById(«button2style»).value)
button3style=int(document.getElementById(«button3style»).value)
image = await Create7Window(text=document.getElementById(«text»).value,
title=document.getElementById(«title»).value,
icon=document.querySelector(‘input[name=»icon»]:checked’).value,
buttons=createlist(button1,button2,button3,button1style,button2style,button3style))
canvas = document.getElementById(«7output»)
ctx = canvas.getContext(«2d»)
width,height = image.size
canvas.style.width = f»{width}px»
canvas.style.height = f»{height}px»
canvas.width = width
canvas.height = height
ctx.clearRect(0, 0, width, height)
data = Uint8ClampedArray.new(to_js(image.tobytes()))
image_data = ImageData.new(data, width, height)
ctx.putImageData(image_data, 0, 0)
async def UpdateImage3_1():
button1=document.getElementById(«button1»).value
button2=document.getElementById(«button2»).value
button3=document.getElementById(«button3»).value
button1style=int(document.getElementById(«button1style»).value)
button2style=int(document.getElementById(«button2style»).value)
button3style=int(document.getElementById(«button3style»).value)
button1underline=int(document.getElementById(«button1default»).checked)
button2underline=int(document.getElementById(«button2default»).checked)
button3underline=int(document.getElementById(«button3default»).checked)
image = await Create3_1Window(text=document.getElementById(«text»).value,
title=document.getElementById(«title»).value,
icon=document.querySelector(‘input[name=»icon»]:checked’).value,
buttons=createlist95(button1,button2,button3,button1style,button2style,button3style,button1underline,button2underline,button3underline),
active=document.getElementById(«active»).checked)
canvas = document.getElementById(«3_1output»)
ctx = canvas.getContext(«2d»)
width,height = image.size
canvas.style.width = f»{width}px»
canvas.style.height = f»{height}px»
canvas.width = width
canvas.height = height
ctx.clearRect(0, 0, width, height)
data = Uint8ClampedArray.new(to_js(image.tobytes()))
image_data = ImageData.new(data, width, height)
ctx.putImageData(image_data, 0, 0)
async def UpdateImageUbuntu():
button1=document.getElementById(«button1»).value
button2=document.getElementById(«button2»).value
button3=document.getElementById(«button3»).value
button1style=int(document.getElementById(«button1style»).value)
button2style=int(document.getElementById(«button2style»).value)
button3style=int(document.getElementById(«button3style»).value)
image = await CreateUbuntuWindow(bigtext=document.getElementById(«text»).value,
text=document.getElementById(«subtext»).value,
title=document.getElementById(«title»).value,
icon=document.querySelector(‘input[name=»icon»]:checked’).value,
buttons=createlist(button1,button2,button3,button1style,button2style,button3style),
active=document.getElementById(«active»).checked)
canvas = document.getElementById(«ubuntuoutput»)
ctx = canvas.getContext(«2d»)
width,height = image.size
canvas.style.width = f»{width}px»
canvas.style.height = f»{height}px»
canvas.width = width
canvas.height = height
ctx.clearRect(0, 0, width, height)
data = Uint8ClampedArray.new(to_js(image.tobytes()))
image_data = ImageData.new(data, width, height)
ctx.putImageData(image_data, 0, 0)
async def UpdateImageMac():
image = await CreateMacWindow(0,0,errortext=document.getElementById(«text»).value,
title=document.getElementById(«title»).value,
icon=document.querySelector(‘input[name=»icon»]:checked’).value,
button1=document.getElementById(«button1»).value,
button2=document.getElementById(«button2»).value,
button3=document.getElementById(«button3»).value,
button1style=int(document.getElementById(«button1style»).value),
button2style=int(document.getElementById(«button2style»).value),
button3style=int(document.getElementById(«button3style»).value),
button1default=int(document.getElementById(«button1default»).checked),
button2default=int(document.getElementById(«button2default»).checked),
button3default=int(document.getElementById(«button3default»).checked))
canvas = document.getElementById(«macoutput»)
ctx = canvas.getContext(«2d»)
width,height = image.size
canvas.style.width = f»{width}px»
canvas.style.height = f»{height}px»
canvas.width = width
canvas.height = height
ctx.clearRect(0, 0, width, height)
data = Uint8ClampedArray.new(to_js(image.tobytes()))
image_data = ImageData.new(data, width, height)
ctx.putImageData(image_data, 0, 0)
async def UpdateImageMacAlert():
image = await CreateMacAlertDialog(0,0,errortext=document.getElementById(«text»).value,
title=document.getElementById(«title»).value,
icon=document.querySelector(‘input[name=»icon»]:checked’).value,
bar=document.getElementById(«secondary»).checked,
button1=document.getElementById(«button1»).value,
button2=document.getElementById(«button2»).value,
button3=document.getElementById(«button3»).value,
button1style=int(document.getElementById(«button1style»).value),
button2style=int(document.getElementById(«button2style»).value),
button3style=int(document.getElementById(«button3style»).value),
button1default=int(document.getElementById(«button1default»).checked),
button2default=int(document.getElementById(«button2default»).checked),
button3default=int(document.getElementById(«button3default»).checked))
canvas = document.getElementById(«macalertoutput»)
ctx = canvas.getContext(«2d»)
width,height = image.size
canvas.style.width = f»{width}px»
canvas.style.height = f»{height}px»
canvas.width = width
canvas.height = height
ctx.clearRect(0, 0, width, height)
data = Uint8ClampedArray.new(to_js(image.tobytes()))
image_data = ImageData.new(data, width, height)
ctx.putImageData(image_data, 0, 0)
async def UpdateImageMacWindoid():
image = await CreateMacWindoid(text=document.getElementById(«text»).value,
icon=document.querySelector(‘input[name=»icon»]:checked’).value,
collapsed=not document.getElementById(«secondary»).checked)
canvas = document.getElementById(«macwindoidoutput»)
ctx = canvas.getContext(«2d»)
width,height = image.size
canvas.style.width = f»{width}px»
canvas.style.height = f»{height}px»
canvas.width = width
canvas.height = height
ctx.clearRect(0, 0, width, height)
data = Uint8ClampedArray.new(to_js(image.tobytes()))
image_data = ImageData.new(data, width, height)
ctx.putImageData(image_data, 0, 0)
async def UpdateImage7TaskDialog():
button1=document.getElementById(«button1»).value
button2=document.getElementById(«button2»).value
button3=document.getElementById(«button3»).value
button1style=int(document.getElementById(«button1style»).value)
button2style=int(document.getElementById(«button2style»).value)
button3style=int(document.getElementById(«button3style»).value)
image = await Create7TaskDialog(textbig=document.getElementById(«text»).value,
textsmall=document.getElementById(«subtext»).value,
closebutton=document.getElementById(«secondary»).checked,
title=document.getElementById(«title»).value,
icon=document.querySelector(‘input[name=»icon»]:checked’).value,
buttons=createlist(button1,button2,button3,button1style,button2style,button3style))
canvas = document.getElementById(«taskdialogoutput»)
ctx = canvas.getContext(«2d»)
width,height = image.size
canvas.style.width = f»{width}px»
canvas.style.height = f»{height}px»
canvas.width = width
canvas.height = height
ctx.clearRect(0, 0, width, height)
data = Uint8ClampedArray.new(to_js(image.tobytes()))
image_data = ImageData.new(data, width, height)
ctx.putImageData(image_data, 0, 0)
async def UpdateImage95():
button1=document.getElementById(«button1»).value
button2=document.getElementById(«button2»).value
button3=document.getElementById(«button3»).value
button1style=int(document.getElementById(«button1style»).value)
button2style=int(document.getElementById(«button2style»).value)
button3style=int(document.getElementById(«button3style»).value)
button1underline=int(document.getElementById(«button1default»).checked)
button2underline=int(document.getElementById(«button2default»).checked)
button3underline=int(document.getElementById(«button3default»).checked)
image = await Create95Window(text=document.getElementById(«text»).value,
title=document.getElementById(«title»).value,
icon=document.querySelector(‘input[name=»icon»]:checked’).value,
buttons=createlist95(button1,button2,button3,button1style,button2style,button3style,button1underline,button2underline,button3underline),
active=document.getElementById(«active»).checked,
closebutton=document.getElementById(«secondary»).checked)
canvas = document.getElementById(«95output»)
ctx = canvas.getContext(«2d»)
width,height = image.size
canvas.style.width = f»{width}px»
canvas.style.height = f»{height}px»
canvas.width = width
canvas.height = height
ctx.clearRect(0, 0, width, height)
data = Uint8ClampedArray.new(to_js(image.tobytes()))
image_data = ImageData.new(data, width, height)
ctx.putImageData(image_data, 0, 0)
async def UpdateImage98():
button1=document.getElementById(«button1»).value
button2=document.getElementById(«button2»).value
button3=document.getElementById(«button3»).value
button1style=int(document.getElementById(«button1style»).value)
button2style=int(document.getElementById(«button2style»).value)
button3style=int(document.getElementById(«button3style»).value)
button1underline=int(document.getElementById(«button1default»).checked)
button2underline=int(document.getElementById(«button2default»).checked)
button3underline=int(document.getElementById(«button3default»).checked)
image = await Create98Window(text=document.getElementById(«text»).value,
title=document.getElementById(«title»).value,
icon=document.querySelector(‘input[name=»icon»]:checked’).value,
buttons=createlist95(button1,button2,button3,button1style,button2style,button3style,button1underline,button2underline,button3underline),
active=document.getElementById(«active»).checked,
closebutton=document.getElementById(«secondary»).checked)
canvas = document.getElementById(«98output»)
ctx = canvas.getContext(«2d»)
width,height = image.size
canvas.style.width = f»{width}px»
canvas.style.height = f»{height}px»
canvas.width = width
canvas.height = height
ctx.clearRect(0, 0, width, height)
data = Uint8ClampedArray.new(to_js(image.tobytes()))
image_data = ImageData.new(data, width, height)
ctx.putImageData(image_data, 0, 0)
async def UpdateImage2000():
button1=document.getElementById(«button1»).value
button2=document.getElementById(«button2»).value
button3=document.getElementById(«button3»).value
button1style=int(document.getElementById(«button1style»).value)
button2style=int(document.getElementById(«button2style»).value)
button3style=int(document.getElementById(«button3style»).value)
button1underline=int(document.getElementById(«button1default»).checked)
button2underline=int(document.getElementById(«button2default»).checked)
button3underline=int(document.getElementById(«button3default»).checked)
image = await Create2000Window(text=document.getElementById(«text»).value,
title=document.getElementById(«title»).value,
icon=document.querySelector(‘input[name=»icon»]:checked’).value,
buttons=createlist95(button1,button2,button3,button1style,button2style,button3style,button1underline,button2underline,button3underline),
active=document.getElementById(«active»).checked,
closebutton=document.getElementById(«secondary»).checked)
canvas = document.getElementById(«2000output»)
ctx = canvas.getContext(«2d»)
width,height = image.size
canvas.style.width = f»{width}px»
canvas.style.height = f»{height}px»
canvas.width = width
canvas.height = height
ctx.clearRect(0, 0, width, height)
data = Uint8ClampedArray.new(to_js(image.tobytes()))
image_data = ImageData.new(data, width, height)
ctx.putImageData(image_data, 0, 0)
async def UpdateImage(e):
await asyncio.gather(
UpdateImagexp(),
UpdateImage7(),
UpdateImage3_1(),
UpdateImageUbuntu(),
UpdateImageMac(),
UpdateImageMacAlert(),
UpdateImageMacWindoid(),
UpdateImage7TaskDialog(),
UpdateImage95(),
UpdateImage98(),
UpdateImage2000()
)
def UpdateCustomIcon(e=None):
url = document.getElementById(«customicon»).value
document.getElementById(«customiconimg»).src = url
document.getElementById(«customiconradio»).value = url
Update = create_proxy(UpdateImage)
document.getElementById(«generate»).addEventListener(«click»,Update)
UpdateIcon = create_proxy(UpdateCustomIcon)
document.getElementById(«customicon»).addEventListener(«change»,UpdateIcon)
UpdateCustomIcon()
Чем более новой является версия и сборка Windows, тем больше вероятность появления какой-нибудь ошибки при запуске в ней устаревшего программного обеспечения. Примером может служить ошибка DirectDraw 16385 или с иным кодом при запуске устаревших игр вроде Diablo II или Age of Empires в Windows 10. Ошибка возникает далеко не у всех пользователей «десятки», но статистически вероятность с ней столкнуться в Windows 10 выше, чем в более ранних версиях системы.
Ошибка DirectDraw в Windows 10 может возникнуть из-за несовместимости, использования полноэкранного режима, отключенных компонентов Direct Play и .NET Framework, а также проблем с рендерингом, когда устаревшая игра не знает, как использовать современные технологии, например, Direct3D 11 и Direct3D 12. Когда-нибудь в будущем запуск игр начала 2000 годов будет возможен только в эмуляторах, а пока что столкнувшимся с ошибкой DirectDraw при запуске старых игр в Windows 10 можно дать такие рекомендации.
Использование оконного режима
Для начала можно попробовать запустить игру в обычном оконном режиме.
Для этого откройте свойства ярлыка игры.
И добавьте через пробел ключ -w в конец пути к исполняемому файлу игры.
Сам путь, как обычно, указывается в поле «Объект».
Сохраните изменения и запустите игру.
Если устранить таким способом ошибку DirectDraw не удалось, переходим к следующему варианту.
Запуск в режиме совместимости
Для устранения проблем совместимости в Windows 10 предусмотрена специальная функция, задачей которой является «убедить» запускаемую программу, что она работает в более ранней версии операционной системы.
Удается ей это не всегда, но в случае с той же Age of Empire вроде бы всё работает, по крайней мере, об этом сообщали многие пользователи, столкнувшиеся при запуске этой игры с ошибкой DirectDraw.
Откройте свойства исполняемого файла или ярлыка игры, переключитесь на вкладку «Совместимость», активируйте чекбокс «Запустить программу в режиме совместимости» и выберите в выпадающем списке Windows XP (пакет обновления 3).
Сохраните настройки и запустите игру.
Также вы можете попробовать опцию «Исправление проблем с совместимостью», но тогда Windows 10 будет пробовать сама определить наиболее подходящую версию системы.
Включите Direct Play и .NET 3.5
Достаточно распространенной причиной ошибки является также недоступность системных компонентов Direct Play и .NET 3.5, которые в последних сборках могут быть отключены по умолчанию.
Откройте командой optionalfeatures модуль управления компонентами и установите флажки для .NET Framework 3.5 (включает .NET 2.0 и 3.0).
И Компоненты прежних версий -> Direct Play.
Нажмите «OK».
Если потребуется перезагрузка компьютера, перезагрузитесь.
Использование оболочки dgVoodo Wrapper
Если ни один из способов не помог, весьма вероятно, что причиной ошибки являются проблемы с рендерингом.
В этом случае можно попробовать прибегнуть к врапперу dgVoodo — специальной программе, позволяющей автоматически преобразовывать старые графические API-интерфейсы в Direct3D 11 и выше.
Скачать инструмент можно с сайта разработчика http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2.
Распакуйте архив с враппером в любую папку и скопируйте файлы dgVoodooCpl.exe и dgVoodoo.conf, а также содержимое каталогов MS и Glide в папку с установленной игрой.
А еще лучше ничего не копировать, а нажать кнопку «Add» и просто указать путь к папке с игрой.
Далее включаем контроль dgVoodo нажатием кнопки «./» и запускаем игру.
Содержание
- Как разыграть друга, вызвав безопасный «BSOD» в любой версии Windows
- Fakebsod.com
- Screenprank
- Geekprank.com
- 12 самых смешных ошибок Windows всех времен
- 1. В Интернете больше пользователей, чем вы
- 2. Windows Error Reporting сообщит об ошибке
- 3. Это может занять некоторое время
- 4. Ложная тревога
- 5. Не указан потенциальный недостаток безопасности?
- 6. Не удается удалить файл, пожалуйста, удалите файлы
- 7. Нам понадобится более длинный пароль
- 8. Мы не можем открывать программы при выключении
- 9. Vista — это проблема
- 10. Что-то случилось
- 11. Здесь нет клавиатуры
- 12. Вставьте диск в Windows Phone
- Ошибка загрузки ошибок
- 12 самых смешных ошибок Windows всех времен
- 1. В Интернете больше пользователей, чем вы
- 2. Windows Error Reporting сообщит об ошибке
- 3. Это может занять некоторое время
- 4. Ложная тревога
- 5. Не указан потенциальный недостаток безопасности?
- 6. Не удается удалить файл, пожалуйста, удалите файлы
- 7. Нам понадобится более длинный пароль
- 8. Мы не можем открывать программы при закрытии
- 9. Vista — это проблема
- 10. Что-то случилось
- 11. Здесь нет клавиатуры
- 12. Вставьте диск в Windows Phone
- Ошибка загрузки ошибок
Как разыграть друга, вызвав безопасный «BSOD» в любой версии Windows
Появление BSOD всегда указывает на критический сбой в работе операционной системы, но это свидетельство об ошибке можно превратить в шутку, разыграв друга, коллегу или даже начальника. В ранних версиях Windows это можно было сделать, подправив один ключ в реестре, затем появилась утилита NotMyFault от самих же разработчиков Microsoft, вызывающая синий экран путем искусственного моделирования разных ошибок — сбоя драйверов ядра, переполнения буфера и тому подобное.
Называется она NotMyFault, скачать ее можно со страницы docs.microsoft.com/en-us/sysinternals/downloads/notmyfault, но дело в другом — похоже на то, что в последних сборках Windows 10 она перестала работать.
То есть она работает, но не так, как этого следовало бы ожидать.
Если в параметрах загрузки и восстановления системы у вас включена автоматическая перезагрузка, то после нажатия кнопки «Crash» система на несколько секунд зависнет, а затем уйдет на перезагрузку; если отключена, то перезагружать зависшую Windows придется вручную. Любопытно, что файл MEMORY.DMP в корневом каталоге Windows всё же создается, а значит его можно проанализировать. В свое время Microsoft предупреждала о рисках использования NotMyFault, а сейчас и вовсе прекратила его развитие. Возможно, это даже к лучшему, потому что существуют куда более безопасные, но ничуть не менее реалистичные способы подшутить над другом или коллегой, сымитировав BSOD с помощью обычного браузера.
Fakebsod.com
Screenprank
Шуточный ресурс, предлагающий несколько безобидных розыгрышей, в том числе и синий экран смерти Windows 8.1 и 10.
Как и в предыдущем розыгрыше, Screenprank моделирует реальный экран смерти с описанием HAL INSTALLATION FAILED, вызванный сбоем драйверов или аппаратными неполадками.
Geekprank.com
а вслед за ним еще ряд угрожающих сообщений вроде «загрузочное устройство не найдено» и прочее.
Как и в остальных случаях, избавляемся от беды нажатием F11 и закрытием страницы.
Источник
Конечно, компьютерные глюки раздражают. Зато какой чудесный источник смешных рассказов.
1. В интернете есть другие пользователи
Любой человек, просидевший в интернете дольше пяти минут, в курсе, что в онлайне с приватностью проблемы. Это не мешает Internet Explorer предупреждать об очевидном:
«Когда вы отправляете информацию в интернет, ее могут увидеть другие люди. Вы хотите продолжить?»
Эта ошибка появляется после установки новой версии Internet Explorer. Как правило, когда вы первый раз открываете поиск Google. Так она очень заботливо сообщает, если вы выложите что-то в сеть, кто-нибудь может случайно это увидеть. Представляете, какой ужас? К счастью, кнопка «не показывать это сообщение снова» избавляет от этой гиперопеки на будущее. В первые дни существования интернета эта ошибка имела смысл, но в наше-то время ее почему не удалили.
2. Система уведомлений об ошибках уведомляет вас
Когда программа вылетает, она обычно просит вас предоставить отчет об ошибке, чтобы вы могли сделать вид, будто верите, что кто-нибудь будет придумывать решение для вашей проблемы. Но иногда в отчете об ошибке происходит сбой, и тогда вы видите что-нибудь в этом духе:
«Система уведомлений об ошибках прекратила работу.
Возникла проблема, которая помешала ей работать корректно.
Windows закроет приложение и сообщит, если появится решение этой проблемы»
Программа, которая сообщает о багах, вылетела. Windows обещает сообщить, если найдет для этого решения, но как она будет его искать – загадка, ведь программа-то вылетела. Похоже, это рекурсия.
3. Кажется, потребуется время
Когда вы перемещаете файлы, Windows открывает специальное окно, в котором очень мило демонстрирует, сколько времени осталось до конца копирования. Иногда эта оценка не очень точная.
«Копирование 306 файлов (1.45Гб) Осталось примерно 46368 дней, 5 часов»
Не беспокойтесь, полтора гигабайта данных переместятся всего лишь за 127 лет. Если, конечно, раньше компьютер не скачает себе обновление и не уйдет в перезагрузку.
Обычно сообщения об ошибках говорят о том, что что-то сломалось, глючит или вылетело. Но некоторые просто любят пугать людей:
Ошибка. Операция успешно завершена.
Большинство людей видят заголовок «Ошибка», сопровождающийся выразительным значком «Х», и пугаются, что сейчас придется восстанавливать половину сделанного за день… но нет! «Винда» всего лишь решила, видимо, вылечить вас от икоты.
5. Невозможно удалить файл, пожалуйста, удалите файл
С ошибками при удалении сталкиваешься часто, но одна из них – это просто нечто! Если ваш жесткий диск забит до невозможности, и вы пытаетесь начать зачистку, Windows может порадовать вас таким сообщением:
«Ошибка при удалении файла.
Невозможно удалить: недостаточно дискового пространства.
Удалите один или несколько файлов, чтобы освободить место на диске, и попробуйте снова»
Пытаешься удалить файл, а тебе говорят, что для этого слишком мало места, и нужно сначала удалить какой-то другой файл! Почему мы не можем освободить место, удалив конкретно этот – загадка, достойная Шерлока.
6. Мы не можем открыть программу, потому что выключаемся.
Сторонние разработчики создавали настолько феерические сообщения об ошибках, что Microsoft пришлось создавать специальную инструкцию по созданию этих сообщений. Что сподвигло их на этот шаг? Гениальное сообщение:
«Невозможен запуск приложения. Приложение не может запуститься, так как компьютер выключается»
Это просто великолепная комбинация бесполезного и ненужного – если уж пользователь решил выключить компьютер, наверное его не интересует, что какая-то программа не может запуститься? К тому же это сообщение мешало завершению работы Windows, пока пользователь не нажмет на «ОК», так что компьютер мог подвиснуть в таком состоянии надолго.
7. Vista – это проблема!
Vista нельзя назвать самой адекватной сборкой. Пользователи подшучивали над ней аж до выхода «восьмерки». Но то, что Windows будет самокритична, никто не ожидал:
«Проблема вызвана приложением Windows Vista от Microsoft»
В этом окне Windows честно признается, что Vista вызвала проблему и обещает сообщить о решении, когда оно будет доступно. Но давайте честно: лучшее решение – перестать использовать Vista. Или вообще Windows.
Это один из самых новых багов. При обновлении до Windows 10, некоторые пользователи увидели весьма полезное сообщение:
«Установка Windows 10. Что-то случилось. Что-то случилось»
На случай, если пользователь с первого раза не поймет, ему повторили два раза. И ведь какое информативное сообщение! Оно, конечно, поможет найти и суть проблемы, и ее причины.
9. Клавиатура? Какая клавиатура?
Сообщение «нажмите любую клавишу, чтобы продолжить» появляется очень часто, и обычно это признак не проблемы, а, например, окончания загрузки игры. Но что будет, если Windows заметит, что клавиатура не работает?
«Ошибка клавиатуры. Клавиатура не отвечает. Нажмите любую клавишу»
Как и чем я должен нажимать клавишу, если клавиатура не работает целиком? И почему сразу вспоминается анекдот про наклейку Any Key на кнопке выключения?
Источник
Компьютеры и люди такие разные. Хотя компьютеры бесконечно быстрее обрабатывают информацию, они сталкиваются с проблемами, если пытаются отклониться от курса. Эти «быстрые идиоты» контраст с людьми, которые не могут думать так же быстро, как машины, но могут адаптироваться гораздо легче.
Эти отношения привели к некоторым веселым ситуациям, когда начинающие пользователи не смогли понять основы использования Windows. С другой стороны это сообщения об ошибках. Когда компьютер сталкивается с неожиданным сценарием, он обычно выдает окно сообщения для просмотра пользователем.
1. В Интернете больше пользователей, чем вы
Любой, кто пользовался интернетом более пяти минут, знает, что большая часть активности в Интернете не является частной. Это не мешает Internet Explorer (IE) указывать на очевидное:
Эта ошибка обычно появляется при новой установке IE. Обычно вы увидите это при первом поиске в Google или Bing. Как он любезно указывает, когда вы размещаете что-то в сети, какой-то другой пользователь где-то может увидеть это. Представь это! К счастью, вы можете установить флажок « Не показывать мне это сообщение», и IE избавит вас от напоминания в будущем.
Эта ошибка, возможно, была более уместной в первые дни Интернета, но в настоящее время она все еще скрывается в IE. По-прежнему важно оставаться в безопасности в Интернете, поэтому обязательно ознакомьтесь с руководством по предотвращению интернет-наблюдения.
2. Windows Error Reporting сообщит об ошибке
Всякий раз, когда происходит сбой программы в Windows, она обычно просит вас отправить отчет об ошибке, чтобы вы могли притворяться, что Microsoft ищет решение именно вашей проблемы. Однако что происходит, когда в отчете об ошибке встречается ошибка?
Итак, теперь программа, сообщающая об ошибке, обнаружила ошибку, но не волнуйтесь. Windows сообщит вам, если появится решение. Как оно достигнет этого решения, неизвестно, поскольку ошибка не позволяет ему найти это решение. Надеемся, что мы не другой ошибкой или, что еще хуже, BSOD, такой как SYSTEM_SERVICE_EXCEPTION
3. Это может занять некоторое время
Изображение предоставлено TechBlog
Не волнуйтесь, ваш гигабайт и половина данных будут перемещены всего за 127 лет. Надеемся, что вы назначили преемника для наблюдения за его завершением, хотя более вероятно, что операционная система просто перестанет работать до этого. Скорее всего, Windows прервет его с обновлением и перезагрузится.
4. Ложная тревога
В мире достаточно сообщений об ошибках, которые предоставляют информацию о реальных проблемах. Это конкретное сообщение не удовлетворено этим, однако, и вместо этого заставляет вас всех работать впустую:
Имиджевый кредит: советник через Flickr
5. Не указан потенциальный недостаток безопасности?
Нет ничего более похожего на сообщение об ошибке, настолько расплывчатое и бесполезное, что у пользователя нет другого выбора, кроме как игнорировать его. Вот одно из таких сообщений:
Изображение предоставлено Zusch
6. Не удается удалить файл, пожалуйста, удалите файлы
Изображение предоставлено TechV.com
7. Нам понадобится более длинный пароль
Некоторые пользователи Windows 2000 обнаружили, что ОС не принимает ничего, кроме пароля длиной 18 770 символов. Даже не пытайтесь украсть этот пароль из 18 760 символов в Windows.
Имиджевый кредит: TechChunks
Более того, Windows стремилась обеспечить безопасность, следя за тем, чтобы этот мега-пароль отличался от последних 30 689 паролей. Каковы шансы дублировать более 18 000 символов (около 9 300 слов!)? Может ли менеджер паролей хранить такой длинный пароль? Один пользователь Reddit подсчитал, что обычному машинисту потребуется около 45 минут, чтобы ввести столько символов.
Как объяснили в Microsoft, это произошло из-за ошибки аутентификации домена MIT Kerberos, которую они исправили в Windows 2000 с пакетом обновления 3. Microsoft также предупредительно указала, что «количество необходимых символов изменяется с 17 145 до 18 770 при установке SP1». Это дало столь необходимое объяснение людям, которые задавались вопросом, почему им вдруг пришлось добавить дополнительные 1625 символов в свои пароли.
8. Мы не можем открывать программы при выключении
Лучшим вариантом было бы вообще избежать сообщения об ошибке. Мы рады, что можем воспользоваться возможностью подшутить над этим.
9. Vista — это проблема
Windows Vista не была самой лучшей версией операционной системы Microsoft. Хотя это обычная шутка среди пользователей компьютеров, мы не ожидаем, что Microsoft скажет что-то слишком плохое о Vista.
Имиджевый кредит: Quora
10. Что-то случилось
Вот тот, который более свежий. При обновлении до Windows 10 вы могли встретить это полезное сообщение:
Изображение предоставлено: Reddit
На тот случай, если вы не были уверены, что что-то действительно произошло, это и заголовок, и текст сообщения. Мы не можем представить, как это сообщение было полезным для команды разработчиков, не говоря уже о пользователе. Было ли что-то, что наше имя было выбрано в раздаче?
11. Здесь нет клавиатуры
Изображение предоставлено: Голиаф
Э-э, если клавиатура не отвечает, как вы узнаете, что я нажал клавишу? Это тест, чтобы увидеть, доверчив ли я? Я не собираюсь ничего нажимать.
12. Вставьте диск в Windows Phone
Технически это не ошибка Windows, поскольку она произошла на телефоне с Windows, но все равно довольно забавно. В то время как обычные пользователи, вероятно, никогда не столкнутся с этой ошибкой, те, кто возится со своими устройствами Windows Mobile, иногда сталкивался с этой ошибкой:
Вы можете увидеть эту ошибку на настольной установке Windows с поврежденными файлами, но это забавная рекомендация. У моего телефона есть слот для дисков, или мне нужно купить адаптер для этого?
Ошибка загрузки ошибок
Забавно шутить о глупости компьютеров. Эти ошибки могут вызывать разочарование когда вы сталкиваетесь с ними, но когда вы уделяете время тому, чтобы подумать о том, что они (не могут) сказать вам, юмор проникает. Надеемся, что разработчики смогут извлечь уроки из этого и создать сообщения об ошибках, которые не столь загадочны или бесполезны.
Знаете ли вы, что вы можете обойти экран входа в Windows 98 через принтер? Ознакомьтесь с возвратом ошибок больше смеха.
Мы уверены, что в этот список можно добавить еще много ошибок. Каковы самые смешные ошибки, с которыми вы столкнулись в Windows?
Источник
12 самых смешных ошибок Windows всех времен
Компьютеры и люди такие разные. Хотя компьютеры бесконечно быстрее обрабатывают информацию, у них возникают проблемы, если они пытаются отклониться от курса. Эти «быстрые идиоты»
в отличие от людей, которые не могут мыслить так же быстро, как машины, но могут гораздо легче адаптироваться.
Эти отношения привели к некоторым веселым ситуациям, когда начинающие пользователи не смогли понять основы использования Windows. С другой стороны это сообщения об ошибках. Когда компьютер сталкивается с неожиданным сценарием, он обычно выдает окно сообщения для просмотра пользователем.
Хотя они могут предоставить информацию о реальных проблемах
Часто они парадоксальны, смешны или просто глупы. Давайте посмотрим на некоторые из самых глупых и глупых сообщений об ошибках, которые создала Windows.
1. В Интернете больше пользователей, чем вы
Любой, кто пользовался интернетом более пяти минут, знает, что большая часть онлайн-активности не является частной. Это не мешает Internet Explorer (IE) указывать на очевидное:
Эта ошибка обычно появляется при новой установке IE. Обычно вы увидите это при первом поиске в Google или Bing. Как он любезно указывает, когда вы размещаете что-то в сети, какой-то другой пользователь где-то может увидеть это. Представь это! К счастью, вы можете проверить Не показывать мне это сообщение коробка и IE сэкономит вам напоминание в будущем.
Эта ошибка, возможно, была более уместной в первые дни Интернета, но в настоящее время она все еще скрывается в IE. По-прежнему важно оставаться в безопасности в Интернете, поэтому обязательно ознакомьтесь с руководством по избежанию интернет-наблюдения
2. Windows Error Reporting сообщит об ошибке
Всякий раз, когда происходит сбой программы в Windows, она обычно просит вас представить отчет об ошибке, чтобы вы могли притвориться, что Microsoft ищет решение именно вашей проблемы. Однако что происходит, когда в отчете об ошибке встречается ошибка?
Имиджевый кредит: Gizmodo
Итак, теперь программа, сообщающая об ошибке, обнаружила ошибку, но не беспокойтесь. Windows сообщит вам, появится ли решение. Как оно достигнет этого решения, неизвестно, поскольку ошибка не позволяет ему найти это решение. Надеюсь, мы не увидим еще одну ошибку
или, что еще хуже, BSOD, такой как SYSTEM_SERVICE_EXCEPTION
3. Это может занять некоторое время
Всякий раз, когда вы перемещаете некоторые файлы
Windows предоставляет полезное диалоговое окно, чтобы оценить, сколько времени займет передача. Иногда это не совсем точно.
Изображение предоставлено TechBlog
Не волнуйтесь, ваш гигабайт и половина данных будут перемещены в течение 127 лет. Надеемся, что вы назначили преемника для наблюдения за его завершением, хотя более вероятно, что операционная система просто перестанет работать до этого. Скорее всего, Windows прервет его с обновлением и перезагрузится.
4. Ложная тревога
В мире достаточно сообщений об ошибках, которые предоставляют информацию о реальных проблемах. Это конкретное сообщение не удовлетворено этим, и вместо этого заставляет всех вас работать впустую:
Кредит изображения: E A через Flickr
Большинство людей увидят ошибка заголовок, сопровождаемый большим красным Икс, и предположим, что что-то пошло не так. Но не волнуйтесь! Мы просто хотели напугать вас — и дать вам знать, что все прошло успешно. Почему вообще есть сообщение об успехе?
5. Не указан потенциальный недостаток безопасности?
Нет ничего более похожего на сообщение об ошибке, настолько расплывчатое и бесполезное, что у пользователя нет другого выбора, кроме как игнорировать его. Вот одно из таких сообщений:
Изображение предоставлено: Zusch Войти
Что обычный человек собирается делать с этим? Не только недостаток безопасности не определен, но это только потенциальный недостаток. Означает ли это, нажав да Я кидаю кости на свою безопасность? Подобные сообщения приводят к тому, что люди нажимают да как можно быстрее, чтобы очистить надоедливую коробку и вернуться к тому, что они делали.
6. Не удается удалить файл, пожалуйста, удалите файлы
Нередко появляются ошибки при удалении файла
, но этот достаточно причудливый, чтобы поднять некоторые брови. Если вы попытаетесь удалить файл, Windows может заколдовать вас следующим образом:
Изображение предоставлено: TechV.com
Это забавно, Windows. Я пытался удалить файл, чтобы освободить место на диске
, но теперь вы говорите мне, что мне нужно освободить место на диске, удалив другие файлы. Почему мы не можем удалить этот конкретный файл, чтобы освободить это место — загадка, которую никто не знает.
7. Нам понадобится более длинный пароль
Мы знаем, что более длинный пароль более безопасен
, но это заходит слишком далеко.
Некоторые пользователи Windows 2000 обнаружили, что ОС не принимает пароль длиной менее 18 770 символов. Даже не пытайтесь украсть этот пароль из 18 760 символов в Windows.
Имиджевый кредит: TechChunks
Более того, Windows стремилась обеспечить безопасность, следя за тем, чтобы этот мега-пароль отличался от последних 30 689 паролей. Каковы шансы дублировать более 18 000 символов (около 9 300 слов!)? Может ли менеджер паролей хранить такой длинный пароль? Один пользователь Reddit подсчитал, что обычному машинисту потребуется около 45 минут для ввода такого количества символов.
Как объяснили в Microsoft, это произошло из-за ошибки аутентификации домена MIT Kerberos, которую они исправили в Windows 2000 с пакетом обновления 3. Microsoft также предупредительно указала, что «количество необходимых символов изменяется с 17 145 до 18 770 при установке SP1». Это дало столь необходимое объяснение людям, которые задавались вопросом, почему им вдруг пришлось добавить дополнительные 1625 символов в свои пароли.
8. Мы не можем открывать программы при закрытии
Разработчики программного обеспечения создавали сообщения об ошибках настолько ужасно, что Microsoft пришлось вмешаться и создать руководство по эффективным сообщениям об ошибках. Первое сообщение «Зала позора», которое они критикуют, таково:
Эта ошибка представляет собой идеальное сочетание ненужного и раздражающего. Это позволяет пользователю знать, что часть программного обеспечения не может быть запущена, потому что Windows закрывается
, Конечно, пользователь инициализировал завершение работы, поэтому ему все равно, что программа не может быть запущена. Хуже того, это сообщение не позволяет Windows завершать работу до тех пор, пока пользователь не закроет ее, поэтому, если вы уйдете, ваш компьютер может сидеть там и ждать выключения в течение нескольких часов.
Лучшим вариантом было бы вообще избежать сообщения об ошибке. Мы рады, что можем воспользоваться этой возможностью, чтобы подшутить над этим.
9. Vista — это проблема
Windows Vista не была самой лучшей версией операционной системы Microsoft. Хотя это обычная шутка среди пользователей компьютеров, мы не ожидаем, что Microsoft скажет что-то слишком плохое о Vista.
Имиджевый кредит: Quora
Но вот, вот Windows, сообщающая нам, что Microsoft Windows Vista вызвала проблему! Окно позволяет вам знать, что доступно решение, которое решит эту проблему, но лучшее решение было, вероятно, прекратить использовать Vista.
10. Что-то случилось
Вот тот, который более свежий. При обновлении до Windows 10 вы могли встретить это полезное сообщение:
Изображение предоставлено: Reddit
На тот случай, если вы не уверены, что что-то действительно произошло, это и заголовок, и текст сообщения. Мы не можем представить, как это сообщение было полезным для команды разработчиков, не говоря уже о пользователе. Было ли что-то, что наше имя было выбрано в раздаче?
К счастью, вы можете исправить эту проблему обновления
с относительной легкостью.
11. Здесь нет клавиатуры
Вы, вероятно, иногда видели сообщения «нажмите любую клавишу для продолжения». Обычно они не являются проблемой. Но что происходит, когда Windows распознает, что у вас нет работающей клавиатуры
, и дает вам рекомендации, чтобы это исправить?
Изображение предоставлено: Голиаф
Э-э, если клавиатура не отвечает, как вы узнаете, что я нажал клавишу? Это тест, чтобы узнать, доверчив ли я? Я не собираюсь ничего нажимать.
12. Вставьте диск в Windows Phone
Эта ошибка технически не является ошибкой Windows, поскольку она произошла на телефоне Windows, но она все еще довольно забавная. В то время как обычные пользователи, вероятно, никогда не столкнутся с этой ошибкой, те, кто возится со своими устройствами на Windows Mobile
иногда сталкивался с этой ошибкой:
«Не удалось загрузить Windows Phone. Пожалуйста, вставьте установочный диск Windows…»: pic.twitter.com/qQUibDXz#wontfit
— Микко Хиппонен (@mikko) 11 января 2013 г.
Вы можете увидеть эту ошибку на настольной установке Windows с поврежденными файлами, но это забавная рекомендация. Есть ли в моем телефоне слот для дисков, или мне нужно приобрести адаптер для этого?
Ошибка загрузки ошибок
Забавно шутить о глупости компьютеров. Эти ошибки могут расстраивать
когда вы сталкиваетесь с ними, но когда вы уделяете время тому, чтобы подумать о том, что они (не могут) вам сказать, юмор проникает. Надеемся, что разработчики смогут извлечь уроки из этого и создать сообщения об ошибках, которые не являются настолько загадочными или бесполезными.
Знаете ли вы, что вы можете обойти экран входа в Windows 98 через принтер? Проверьте возврат Windows 98 ошибок
для большего смеха.
Мы уверены, что в этот список можно добавить еще много ошибок. Каковы самые смешные ошибки, с которыми вы столкнулись в Windows?
Источник
Содержание
- Windows Error Message Creator – создать окно ошибки или синий экран
- #1 Скрытые приколы в ОС Windows
- Фокус с блокнотом!
- Фокус с word-ом
- Выигрываем косынку за 3 сек
- Запрещено создавать папки
- Torrent
- Играем в torrent
- Skype
- Mail.Ru Агент 4.6
- Paint
- Хочу избежать службу в армии
- Mozilla Firefox
- Приколы google
- 12 самых смешных ошибок Windows всех времен
- 1. В Интернете больше пользователей, чем вы
- 2. Windows Error Reporting сообщит об ошибке
- 3. Это может занять некоторое время
- 4. Ложная тревога
- 5. Не указан потенциальный недостаток безопасности?
- 6. Не удается удалить файл, пожалуйста, удалите файлы
- 7. Нам понадобится более длинный пароль
- 8. Мы не можем открывать программы при закрытии
- 9. Vista — это проблема
- 10. Что-то случилось
- 11. Здесь нет клавиатуры
- 12. Вставьте диск в Windows Phone
- Ошибка загрузки ошибок
Windows Error Message Creator – создать окно ошибки или синий экран
Windows Error Message Creator (WEMC)– портативная программа для создания поддельных сообщений об ошибках, «синий экран смерти» экраны, диалоги «форматирование» и многое другое.
Если близкий друг оставляет свой ноутбук или ПК без присмотра на некоторое время, запустите программу с USB-накопителя, и в течение нескольких секунд Вы можете иметь систему, отображающую фиктивный экран «синий экран смерти», диалоговое окно «форматирование C:» или какое-либо другое поддельное предупреждение с любым пользовательским текстом и значком, который вам нужен. Затем сидите и наблюдайте за их лицами, когда они возвращаются.
Текст, заголовок и три кнопки
Программа даёт вам значительный контроль над дизайном диалогового окна. На главном экране вы можете выбрать тип диалогового окна (вопрос / информация / восклицательный знак / критический / пользовательский), установить свой собственный заголовок и одну или две пользовательские строки текста, включить до трёх кнопок с вашим собственным текстом для каждого, а также выбрать подходящий предустановленный значок («заблокирован», «предупреждение», «низкий уровень заряда батареи» и т.д.) или определить свой собственный.
Но это ещё не все. Нажмите на меню «Create», и вы найдёте варианты, чтобы создать диалоговое окно «Форматирование», это выглядит как это форматирование выбранного диска.
Вызов синего экрана
Выбрав меню «BSOD» можно оставить систему, отображающую синий экран смерти, которая скрывает все остальное и не уходит, пока пользователь не нажимает «Enter».
Единственное неудобство, это невозможность сохранять созданные сообщения, и каждый раз нужно по новой вводить данные.
Вместо выводов: 😉 если вы хотите подшутить над кем то, то Windows Error Message Creator-отличный способ заставить пользователей понервничать! Но будьте осторожны, если пользователь подумает, что произошло что — то катастрофическое — например, настоящий BSOD — то, возможно, попытается перезагрузить систему кнопкой ресет, и из-за этого могут потеряться какие либо данные. Не используйте это, если вы не собираетесь быть рядом и внимательно наблюдать.
#1 Скрытые приколы в ОС Windows
Не для кого не секрет что разработчики различного программного обеспечения тоже являются обычными людьми, со своими «тараканами» в голове. Идеально написанная программа это та, которая выполняет свои функции в полном объеме, работает стабильно и без багов.
Бывают случаи когда программисты крупных компаний Microsoft, Google, Yandex внедряют «шуточный код» в свой софт. Тут не подразумевается вредоносный, а именно шуточный.
Про несколько таких шуток я вам расскажу:
Фокус с блокнотом!
1.Создаем блокнот
2.Пишем в блокнот Bush hid the facts
3.Сохраняем и закрываем блокнот
4.Откройте заново этот файл — и посмотрите что случилось
Фокус с word-ом
1.Откройте Microsoft Word
2.Сделайте шрифт крупнее ( напр. 50 )
3.Наберите Q33 NYC , и замените шрифт на Wingdings
4.Как вам результат?
Выигрываем косынку за 3 сек
1.Откройте косынку
2.Нажмите Alt+Shift+2
Запрещено создавать папки
В windows запрещено создавать папки с названиями CON , AUX , NUL , PRN , и подобные.
Torrent
1.Откройте программу µtorrent
2.Зайдите в «Help» — «About» (либо «Помощь» — «О Торренте»).
3.Кликните на логотип µtorrent и услышите забавный звук.
Играем в torrent
1.Запускаем програму торрент
2.Нажимаем help About uTorrent
3.Нажимаем англискую » T »
4.Что бы выйти с игры нажимаем опять английскую » Т »
Skype
1.Запустите Skype
2.Откройте чат
3.Наберите » /eggy prayer /eggy indrek@mare.ee » без кавычек
Mail.Ru Агент 4.6
1.Запустите Mail.Ru Агент 4.6
2.Зайдите в Меню — » О программе «
3.Щёлкните два раза по значку программы.
Paint
1.Откройте любую картинку
2.Выберите лупу
3.В выборе видно только 8х , но если нажать чуть-пониже где тонкая белая линия, картинка увеличится в 10 раз!
1.Создайте документ в Microsoft Word
2.Напечатайте =rand(200,99 )
3.Нажмите на Enter и удерживайте клавишу 3 секунды
Хочу избежать службу в армии
1.Напишите в Word фразу « хочу избежать службу в армии » )
2.Потом прочтите комментарий по выделенной ошибке
Mozilla Firefox
1.В адресную строку пишем
Приколы google
1) let it snow-идёт снег
2) Google Gravity-всё падает вниз
3) Google Loco-странный язык и прикольные буквы
4) Google Gothic-гугл в готском стиле
5) Google Cheese- в конце луны сыр
6) Ewmew Fudd
7) Gooooogle ГОП | Что найду — всё моё!
Если открыть на Youtube любое видео, остановить его, а затем одновременно нажать клавиши вверх и вправо, на экране появится игра в змейку.
9) do a barrel roll-трюк бочка
Если в поиске картинок Гугла набрать: 241543903.
12 самых смешных ошибок Windows всех времен
Компьютеры и люди такие разные. Хотя компьютеры бесконечно быстрее обрабатывают информацию, у них возникают проблемы, если они пытаются отклониться от курса. Эти «быстрые идиоты»
в отличие от людей, которые не могут мыслить так же быстро, как машины, но могут гораздо легче адаптироваться.
Эти отношения привели к некоторым веселым ситуациям, когда начинающие пользователи не смогли понять основы использования Windows. С другой стороны это сообщения об ошибках. Когда компьютер сталкивается с неожиданным сценарием, он обычно выдает окно сообщения для просмотра пользователем.
Хотя они могут предоставить информацию о реальных проблемах
Часто они парадоксальны, смешны или просто глупы. Давайте посмотрим на некоторые из самых глупых и глупых сообщений об ошибках, которые создала Windows.
1. В Интернете больше пользователей, чем вы
Любой, кто пользовался интернетом более пяти минут, знает, что большая часть онлайн-активности не является частной. Это не мешает Internet Explorer (IE) указывать на очевидное:
Эта ошибка обычно появляется при новой установке IE. Обычно вы увидите это при первом поиске в Google или Bing. Как он любезно указывает, когда вы размещаете что-то в сети, какой-то другой пользователь где-то может увидеть это. Представь это! К счастью, вы можете проверить Не показывать мне это сообщение коробка и IE сэкономит вам напоминание в будущем.
Эта ошибка, возможно, была более уместной в первые дни Интернета, но в настоящее время она все еще скрывается в IE. По-прежнему важно оставаться в безопасности в Интернете, поэтому обязательно ознакомьтесь с руководством по избежанию интернет-наблюдения
2. Windows Error Reporting сообщит об ошибке
Всякий раз, когда происходит сбой программы в Windows, она обычно просит вас представить отчет об ошибке, чтобы вы могли притвориться, что Microsoft ищет решение именно вашей проблемы. Однако что происходит, когда в отчете об ошибке встречается ошибка?
Имиджевый кредит: Gizmodo
Итак, теперь программа, сообщающая об ошибке, обнаружила ошибку, но не беспокойтесь. Windows сообщит вам, появится ли решение. Как оно достигнет этого решения, неизвестно, поскольку ошибка не позволяет ему найти это решение. Надеюсь, мы не увидим еще одну ошибку
или, что еще хуже, BSOD, такой как SYSTEM_SERVICE_EXCEPTION
3. Это может занять некоторое время
Всякий раз, когда вы перемещаете некоторые файлы
Windows предоставляет полезное диалоговое окно, чтобы оценить, сколько времени займет передача. Иногда это не совсем точно.
Изображение предоставлено TechBlog
Не волнуйтесь, ваш гигабайт и половина данных будут перемещены в течение 127 лет. Надеемся, что вы назначили преемника для наблюдения за его завершением, хотя более вероятно, что операционная система просто перестанет работать до этого. Скорее всего, Windows прервет его с обновлением и перезагрузится.
4. Ложная тревога
В мире достаточно сообщений об ошибках, которые предоставляют информацию о реальных проблемах. Это конкретное сообщение не удовлетворено этим, и вместо этого заставляет всех вас работать впустую:
Кредит изображения: E A через Flickr
Большинство людей увидят ошибка заголовок, сопровождаемый большим красным Икс, и предположим, что что-то пошло не так. Но не волнуйтесь! Мы просто хотели напугать вас — и дать вам знать, что все прошло успешно. Почему вообще есть сообщение об успехе?
5. Не указан потенциальный недостаток безопасности?
Нет ничего более похожего на сообщение об ошибке, настолько расплывчатое и бесполезное, что у пользователя нет другого выбора, кроме как игнорировать его. Вот одно из таких сообщений:
Изображение предоставлено: Zusch Войти
Что обычный человек собирается делать с этим? Не только недостаток безопасности не определен, но это только потенциальный недостаток. Означает ли это, нажав да Я кидаю кости на свою безопасность? Подобные сообщения приводят к тому, что люди нажимают да как можно быстрее, чтобы очистить надоедливую коробку и вернуться к тому, что они делали.
6. Не удается удалить файл, пожалуйста, удалите файлы
Нередко появляются ошибки при удалении файла
, но этот достаточно причудливый, чтобы поднять некоторые брови. Если вы попытаетесь удалить файл, Windows может заколдовать вас следующим образом:
Изображение предоставлено: TechV.com
Это забавно, Windows. Я пытался удалить файл, чтобы освободить место на диске
, но теперь вы говорите мне, что мне нужно освободить место на диске, удалив другие файлы. Почему мы не можем удалить этот конкретный файл, чтобы освободить это место — загадка, которую никто не знает.
7. Нам понадобится более длинный пароль
Мы знаем, что более длинный пароль более безопасен
, но это заходит слишком далеко.
Некоторые пользователи Windows 2000 обнаружили, что ОС не принимает пароль длиной менее 18 770 символов. Даже не пытайтесь украсть этот пароль из 18 760 символов в Windows.
Имиджевый кредит: TechChunks
Более того, Windows стремилась обеспечить безопасность, следя за тем, чтобы этот мега-пароль отличался от последних 30 689 паролей. Каковы шансы дублировать более 18 000 символов (около 9 300 слов!)? Может ли менеджер паролей хранить такой длинный пароль? Один пользователь Reddit подсчитал, что обычному машинисту потребуется около 45 минут для ввода такого количества символов.
Как объяснили в Microsoft, это произошло из-за ошибки аутентификации домена MIT Kerberos, которую они исправили в Windows 2000 с пакетом обновления 3. Microsoft также предупредительно указала, что «количество необходимых символов изменяется с 17 145 до 18 770 при установке SP1». Это дало столь необходимое объяснение людям, которые задавались вопросом, почему им вдруг пришлось добавить дополнительные 1625 символов в свои пароли.
8. Мы не можем открывать программы при закрытии
Разработчики программного обеспечения создавали сообщения об ошибках настолько ужасно, что Microsoft пришлось вмешаться и создать руководство по эффективным сообщениям об ошибках. Первое сообщение «Зала позора», которое они критикуют, таково:
Эта ошибка представляет собой идеальное сочетание ненужного и раздражающего. Это позволяет пользователю знать, что часть программного обеспечения не может быть запущена, потому что Windows закрывается
, Конечно, пользователь инициализировал завершение работы, поэтому ему все равно, что программа не может быть запущена. Хуже того, это сообщение не позволяет Windows завершать работу до тех пор, пока пользователь не закроет ее, поэтому, если вы уйдете, ваш компьютер может сидеть там и ждать выключения в течение нескольких часов.
Лучшим вариантом было бы вообще избежать сообщения об ошибке. Мы рады, что можем воспользоваться этой возможностью, чтобы подшутить над этим.
9. Vista — это проблема
Windows Vista не была самой лучшей версией операционной системы Microsoft. Хотя это обычная шутка среди пользователей компьютеров, мы не ожидаем, что Microsoft скажет что-то слишком плохое о Vista.
Имиджевый кредит: Quora
Но вот, вот Windows, сообщающая нам, что Microsoft Windows Vista вызвала проблему! Окно позволяет вам знать, что доступно решение, которое решит эту проблему, но лучшее решение было, вероятно, прекратить использовать Vista.
10. Что-то случилось
Вот тот, который более свежий. При обновлении до Windows 10 вы могли встретить это полезное сообщение:
Изображение предоставлено: Reddit
На тот случай, если вы не уверены, что что-то действительно произошло, это и заголовок, и текст сообщения. Мы не можем представить, как это сообщение было полезным для команды разработчиков, не говоря уже о пользователе. Было ли что-то, что наше имя было выбрано в раздаче?
К счастью, вы можете исправить эту проблему обновления
с относительной легкостью.
11. Здесь нет клавиатуры
Вы, вероятно, иногда видели сообщения «нажмите любую клавишу для продолжения». Обычно они не являются проблемой. Но что происходит, когда Windows распознает, что у вас нет работающей клавиатуры
, и дает вам рекомендации, чтобы это исправить?
Изображение предоставлено: Голиаф
Э-э, если клавиатура не отвечает, как вы узнаете, что я нажал клавишу? Это тест, чтобы узнать, доверчив ли я? Я не собираюсь ничего нажимать.
12. Вставьте диск в Windows Phone
Эта ошибка технически не является ошибкой Windows, поскольку она произошла на телефоне Windows, но она все еще довольно забавная. В то время как обычные пользователи, вероятно, никогда не столкнутся с этой ошибкой, те, кто возится со своими устройствами на Windows Mobile
иногда сталкивался с этой ошибкой:
«Не удалось загрузить Windows Phone. Пожалуйста, вставьте установочный диск Windows…»: pic.twitter.com/qQUibDXz#wontfit
— Микко Хиппонен (@mikko) 11 января 2013 г.
Вы можете увидеть эту ошибку на настольной установке Windows с поврежденными файлами, но это забавная рекомендация. Есть ли в моем телефоне слот для дисков, или мне нужно приобрести адаптер для этого?
Ошибка загрузки ошибок
Забавно шутить о глупости компьютеров. Эти ошибки могут расстраивать
когда вы сталкиваетесь с ними, но когда вы уделяете время тому, чтобы подумать о том, что они (не могут) вам сказать, юмор проникает. Надеемся, что разработчики смогут извлечь уроки из этого и создать сообщения об ошибках, которые не являются настолько загадочными или бесполезными.
Знаете ли вы, что вы можете обойти экран входа в Windows 98 через принтер? Проверьте возврат Windows 98 ошибок
для большего смеха.
Мы уверены, что в этот список можно добавить еще много ошибок. Каковы самые смешные ошибки, с которыми вы столкнулись в Windows?
You need Sign In to add your Favorite
We all know it – we all love it.
created out of nostalgic feeling from the time i used windows;)
Tags
This game’s description and thumbnail are both copyright by it’s owner site or author.
The Same Title Games
Similar Games
gamesonly — Everyone knows the annoying windows errors. sometimes there ..
escapegames24 — Flux family secrets: the ripple effect is an addicting and ..
kongregate — New version of error maker! new better design, graphics and ..
freeonlinegames — This is a fun little flash game which simulates the windows ..
kongregate — Make a journey through a mysterious city and visit ..
newgrounds — The windows errors are crazy! (and hilarious!)