Foro | | | | - Página 1 - |
| Julian Schmidt | ¡Hola,
por esta Hilo möchte Yo, el WinXP-Bug de Screencapture[...] beheben.
Lo es se esta en una Anzeige-Fehler welcher bajo WinXP auftritt. Bajo Ventana 7 & Co sieht uno una schwarz eingefärbten Hintergrund y una weißes Steuerkreuz welches el Cursor verfolgt. Bajo WinXP es Nichts a sehen.
Def SetLayeredWindowAttributes(4) !"USER32","SetLayeredWindowAttributes"
def SetWindowRgn(3) !"USER32","SetWindowRgn"
def RectRgn(4) !"GDI32","CreateRectRgn"
Declarar fenster&[], x&, posx&, posy&
Ventana de Estilo 240+1024
Ventana %MaxX,%MaxY,0,0
Whileloop 2
fenster&[&bucle]=Crear("Window",%hwnd,"",%MaxX,%MaxY,0,0)'fenster&[1] - Schwarze Blende
SetTransparent(fenster&[&bucle],IF(&bucle=1,55,20))'fenster&[2] - Durchsichtiger Klickschutz
SetWindowPos fenster&[&bucle]=0,0 - %MaxX, %MaxY;-1
EndWhile
ShowCursor 0
Sinestar encargado iskey(27)
Waitinput 10
posx&=CursorPos("X1")
posy&=CursorPos("Y1")
StartPaint fenster&[1]
CLS 0
EndPaint
CutRgnDLG(fenster&[1],RectRgn(0,posy&,posx&,posy&+1),RectRgn(posx&+1,posy&,%MaxX,posy&+1),RectRgn(posx&,0,posx&+1,posy&),RectRgn(posx&,posy&+1,posx&+1,%MaxY))
CutRgnDLG(fenster&[2],RectRgn(0, 0, posx&, posy&),RectRgn(posx&+1, 0, %MaxX, posy&),RectRgn(0, posy&+1, posx&, %MaxY),RectRgn(posx&+1, posy&+1, %MaxX, %MaxY))
Endwhile
end
Proc SetTransparent
Parámetros Hwnd%, Perc%
Externo("USER32","SetWindowLongA",Hwnd%, -20, Externo("USER32","GetWindowLongA",Hwnd%,-20) | $80000)
SetLayeredWindowAttributes(Hwnd%, 0, (255 * Perc%) / 100, $2)
ENDPROC
Proc CutRgnDLG
Parámetros hdl&
Declarar region&,wRgn&
wRgn&=RectRgn(0,0,width(hdl&)+100,height(hdl&)+100)
whileloop 2,%PCount
region&=@&(&bucle)
Externo("GDI32","CombineRgn",wRgn&,region&,wrgn&,3)
DeleteObject region&
EndWhile
SetWindowRgn(hdl&, wRgn&, 1)
Volver wRgn&
ENDPROC
Proc WindowRect
Parámetros hdl&,Modus$
Modus$=Lower$(Modus$)
Declarar x%, b#
Dim b#,16
Externo("USER32", "GetWindowRect",hdl&,b#)
Case @&(3)<>0 : Externo("USER32","ScreenToClient",@&(3),b#) : Externo("USER32","ScreenToClient",@&(3),b#+8)
Case Modus$="breite" : x%=Largo(b#,8)-Largo(b#,0)
Case Modus$="höhe" : x%=Largo(b#,12)-Largo(b#,4)
Case Modus$="x1" : x%=Largo(b#,0)
Case Modus$="y1" : x%=Largo(b#,4)
Case Modus$="x2" : x%=Largo(b#,8)
Case Modus$="y2" : x%=Largo(b#,12)
Disponer b#
Volver x%
ENDPROC
Proc CursorPos
Parámetros Modus$
Modus$=Lower$(Modus$)
Declarar x%, mpos#
Dim mpos#,8
Externo("user32","GetCursorPos",mpos#)
Case @&(2)<>0 : Externo("USER32","ScreenToClient",@&(2),mpos#)
Case Modus$="x1" : x%=long(mpos#,0)
Case Modus$="y1" : x%=long(mpos#,4)
Case Modus$="x2" : x%=IF(@&(2)<>0,WindowRect(@&(2),"Breite"),%maxx)-long(mpos#,0)
Case Modus$="y2" : x%=IF(@&(2)<>02,WindowRect(@&(2),"Höhe"),%maxy)-long(mpos#,4)
Disponer mpos#
Volver x%
ENDPROC
LG
Julian |
| | | | |
| | | | | - Página 1 - |
| Julian Schmidt | | | | | |
| | | Daran liegts no,
el Cuestión es sólo a allgemein gestellt o. el Code dazu zeigt Aunque un Problema aber beschreibt kein konkretes Problema o. es vlt. incluso a umfangreich como el erkenntlich es el lo en una bestimmtes Problema va.
Por ejemplo weiß Yo después de Andreas Miethes Hinweisen garnicht mehr en welchem Stand el Texto es.
Mach doch veces a la Dreizeiler de los Problema aufzeigt y benenne el konkrete Problema nochmals. |
| | | | |
| | Julian Schmidt | No necesariamente una 3. Zeiler debería aber ok ser. Yo möchte el no Titelleiste y Rahmen eingeblendet voluntad. Windowstyle scheint irgendwie no a trabajo.
Def SetLayeredWindowAttributes(4) !"USER32","SetLayeredWindowAttributes"
def SetWindowRgn(3) !"USER32","SetWindowRgn"
def RectRgn(4) !"GDI32","CreateRectRgn"
cls
Var dlg&=Crear("Window",%hwnd,"",0,0,%MaxX,%MaxY)
SetTransparent(dlg&,50)
Showwindow(dlg&,1)
CutRgnDLG(dlg&,RectRgn(0,0,0,0))
Sinestar encargado iskey(27)
Endwhile
end
Proc SetTransparent
Parámetros Hwnd%, Perc%
Externo("USER32","SetWindowLongA",Hwnd%, -20, Externo("USER32","GetWindowLongA",Hwnd%,-20) | $80000)
SetLayeredWindowAttributes(Hwnd%, 0, (255 * Perc%) / 100, $2)
ENDPROC
Proc CutRgnDLG
Parámetros hdl&
Declarar region&,wRgn&
wRgn&=RectRgn(0,0,width(hdl&)+100,height(hdl&)+100)
whileloop 2,%PCount
region&=@&(&bucle)
Externo("GDI32","CombineRgn",wRgn&,region&,wrgn&,3)
DeleteObject region&
EndWhile
SetWindowRgn(hdl&, wRgn&, 1)
Volver wRgn&
ENDPROC
|
| | | | |
| | | | - Página 2 - |
| | | Yo schätze dass el qué Usted möchtest así no funktioniert como Usted einerseits una Diálogo necesidad (así Transluzenz en allen OS funktioniert) y andererseits vom Aussehen her una Static.
Maximal va wohl sólo: KompilierenMarcaSeparaciónDef SetLayeredWindowAttributes(4) !"USER32","SetLayeredWindowAttributes"
def SetWindowRgn(3) !"USER32","SetWindowRgn"
def RectRgn(4) !"GDI32","CreateRectRgn"
cls
Var dlg&=Create("Dialog",%hwnd,"",100,100,300,300)
SetTransparent(dlg&,50)
setstyle dlg&,(getstyle(dlg&) | ws_caption) - ws_caption
'Showwindow(dlg&,1)
'CutRgnDLG(dlg&,RectRgn(0,0,0,0))
waitinput
end
Proc SetTransparent
Parameters Hwnd%, Perc%
External("USER32","SetWindowLongA",Hwnd%, -20, External("USER32","GetWindowLongA",Hwnd%,-20) | $80000)
SetLayeredWindowAttributes(Hwnd%, 0, (255 * Perc%) / 100, $2)
EndProc
Proc CutRgnDLG
Parameters hdl&
Declare region&,wRgn&
wRgn&=RectRgn(0,0,width(hdl&)+100,height(hdl&)+100)
whileloop 2,%PCount
region&=@&(&loop)
External("GDI32","CombineRgn",wRgn&,region&,wrgn&,3)
DeleteObject region&
EndWhile
SetWindowRgn(hdl&, wRgn&, 1)
Return wRgn&
ENDPROC
con minimalem Rahmen.
Den könntest aber ggf. incluso abschneiden con Region. |
| | | | |
| | Andreas Miethe
| Wenn el Fensterstil en $F0 gesetzt es, entonces debería lo trabajo, como oben ya geschrieben.
Aunque fürchte Yo Usted bist como en uno Sackgasse. Lo voluntad así no todos Elemente eingefangen o. adecuado. Yo z.B. unos pocos "Minianwendungen" al laufen, el voluntad así no adecuado.
KompilierenMarcaSeparación $H windows.ph
Def SetLayeredWindowAttributes(4) !"USER32","SetLayeredWindowAttributes"
def SetWindowRgn(3) !"USER32","SetWindowRgn"
def RectRgn(4) !"GDI32","CreateRectRgn"
Declare fenster&[], x&, posx&, posy&
WindowStyle $F0
Window %MaxX,%MaxY,0,0
Whileloop 2
fenster&[&loop]=Create("Dialog",%hwnd,"",%MaxX,%MaxY,0,0)'fenster&[1] - Schwarze Blende
SetStyle fenster&[&loop],GetStyle(%hwnd)
SetTransparent(fenster&[&loop],IF(&loop=1,55,20))'fenster&[2] - Durchsichtiger Klickschutz
SetWindowPos fenster&[&loop]=0,0 - %MaxX, %MaxY;-1
EndWhile
ShowCursor 0
WhileNot iskey(27)
Waitinput 10
posx&=CursorPos("X1")
posy&=CursorPos("Y1")
StartPaint fenster&[1]
CLS 0
EndPaint
CutRgnDLG(fenster&[1],RectRgn(0,posy&,posx&,posy&+1),RectRgn(posx&+1,posy&,%MaxX,posy&+1),RectRgn(posx&,0,posx&+1,posy&),RectRgn(posx&,posy&+1,posx&+1,%MaxY))
CutRgnDLG(fenster&[2],RectRgn(0, 0, posx&, posy&),RectRgn(posx&+1, 0, %MaxX, posy&),RectRgn(0, posy&+1, posx&, %MaxY),RectRgn(posx&+1, posy&+1, %MaxX, %MaxY))
Endwhile
end
Proc SetTransparent
Parameters Hwnd%, Perc%
External("USER32","SetWindowLongA",Hwnd%, -20, External("USER32","GetWindowLongA",Hwnd%,-20) | $80000)
SetLayeredWindowAttributes(Hwnd%, 0, (255 * Perc%) / 100, $2)
EndProc
Proc CutRgnDLG
Parameters hdl&
Declare region&,wRgn&
wRgn&=RectRgn(0,0,width(hdl&)+100,height(hdl&)+100)
whileloop 2,%PCount
region&=@&(&loop)
External("GDI32","CombineRgn",wRgn&,region&,wrgn&,3)
DeleteObject region&
EndWhile
SetWindowRgn(hdl&, wRgn&, 1)
Return wRgn&
EndProc
Proc WindowRect
Parameters hdl&,Modus$
Modus$=Lower$(Modus$)
Declare x%, b#
Dim b#,16
External("USER32", "GetWindowRect",hdl&,b#)
Case @&(3)<>0 : External("USER32","ScreenToClient",@&(3),b#) : External("USER32","ScreenToClient",@&(3),b#+8)
Case Modus$="breite" : x%=Long(b#,8)-Long(b#,0)
Case Modus$="höhe" : x%=Long(b#,12)-Long(b#,4)
Case Modus$="x1" : x%=Long(b#,0)
Case Modus$="y1" : x%=Long(b#,4)
Case Modus$="x2" : x%=Long(b#,8)
Case Modus$="y2" : x%=Long(b#,12)
Dispose b#
Return x%
EndProc
Proc CursorPos
Parameters Modus$
Modus$=Lower$(Modus$)
Declare x%, mpos#
Dim mpos#,8
External("user32","GetCursorPos",mpos#)
Case @&(2)<>0 : External("USER32","ScreenToClient",@&(2),mpos#)
Case Modus$="x1" : x%=long(mpos#,0)
Case Modus$="y1" : x%=long(mpos#,4)
Case Modus$="x2" : x%=IF(@&(2)<>0,WindowRect(@&(2),"Breite"),%maxx)-long(mpos#,0)
Case Modus$="y2" : x%=IF(@&(2)<>02,WindowRect(@&(2),"Höhe"),%maxy)-long(mpos#,4)
Dispose mpos#
ENDPROC
|
| | | XProfan X2Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 29.01.2013 ▲ |
| |
| | Julian Schmidt | IF (29.01.13)
Yo schätze dass el qué Usted möchtest así no funktioniert como Usted einerseits una Diálogo necesidad (así Transluzenz en allen OS funktioniert) y andererseits vom Aussehen her una Static.
Stimmt, Yo muss Diálogo nehmen. Sombrero en efecto Andreas hier geschrieben.[...] Funktioniert soweit con el Wegschneiden el Titelleiste.
IF (29.01.13)
Den könntest aber ggf. incluso abschneiden con Region.
Dann debería Yo aber alles así umprogrammieren, el el Rahmen ausßerhalb des Bildschirms mentira, el uno kein Loch entsteht. Oder va el irgendwie anders?
Andreas Miethe (29.01.13)
Wenn el Fensterstil en $F0 gesetzt es, entonces debería lo trabajo, como oben ya geschrieben.
Hab Yo damals ya getestet y ha con media bastante oben geposteten Ver código fuente con el Fenstern como Diálogo no funktioniert!
Andreas Miethe (29.01.13)
Aunque fürchte Yo Usted bist como en uno Sackgasse. Lo voluntad así no todos Elemente eingefangen o. adecuado. Yo z.B. unos pocos "Minianwendungen" al laufen, el voluntad así no adecuado.
Meinst du así el mein Ventana no siempre el Fokus bekommt, y deine Minianwendungen dieses überlappen oder como? KompilierenMarcaSeparaciónDef SetLayeredWindowAttributes(4) !"USER32","SetLayeredWindowAttributes"
def SetWindowRgn(3) !"USER32","SetWindowRgn"
def RectRgn(4) !"GDI32","CreateRectRgn"
Declare fenster&[], x&, posx&, posy&
WindowStyle $F0
Window %MaxX,%MaxY,0,0
Whileloop 2
fenster&[&loop]=Create("Dialog",%hwnd,"",%MaxX,%MaxY,0,0)'fenster&[1] - Schwarze Blende
SetTransparent(fenster&[&loop],IF(&loop=1,55,20))'fenster&[2] - Durchsichtiger Klickschutz
SetWindowPos fenster&[&loop]=0,0 - %MaxX, %MaxY;-1
setstyle fenster&[&loop],(getstyle(fenster&[&loop]) | 12582912) - 12582912
EndWhile
ShowCursor 0
WhileNot iskey(27)
Waitinput 10
posx&=CursorPos("X1")
posy&=CursorPos("Y1")
StartPaint fenster&[1]
CLS 0
EndPaint
CutRgnDLG(fenster&[1],RectRgn(0,posy&,posx&,posy&+1),RectRgn(posx&+1,posy&,%MaxX,posy&+1),RectRgn(posx&,0,posx&+1,posy&),RectRgn(posx&,posy&+1,posx&+1,%MaxY))
CutRgnDLG(fenster&[2],RectRgn(0, 0, posx&, posy&),RectRgn(posx&+1, 0, %MaxX, posy&),RectRgn(0, posy&+1, posx&, %MaxY),RectRgn(posx&+1, posy&+1, %MaxX, %MaxY))
Endwhile
end
Proc SetTransparent
Parameters Hwnd%, Perc%
External("USER32","SetWindowLongA",Hwnd%, -20, External("USER32","GetWindowLongA",Hwnd%,-20) | $80000)
SetLayeredWindowAttributes(Hwnd%, 0, (255 * Perc%) / 100, $2)
EndProc
Proc CutRgnDLG
Parameters hdl&
Declare region&,wRgn&
wRgn&=RectRgn(0,0,width(hdl&)+100,height(hdl&)+100)
whileloop 2,%PCount
region&=@&(&loop)
External("GDI32","CombineRgn",wRgn&,region&,wrgn&,3)
DeleteObject region&
EndWhile
SetWindowRgn(hdl&, wRgn&, 1)
Return wRgn&
EndProc
Proc WindowRect
Parameters hdl&,Modus$
Modus$=Lower$(Modus$)
Declare x%, b#
Dim b#,16
External("USER32", "GetWindowRect",hdl&,b#)
Case @&(3)<>0 : External("USER32","ScreenToClient",@&(3),b#) : External("USER32","ScreenToClient",@&(3),b#+8)
Case Modus$="breite" : x%=Long(b#,8)-Long(b#,0)
Case Modus$="höhe" : x%=Long(b#,12)-Long(b#,4)
Case Modus$="x1" : x%=Long(b#,0)
Case Modus$="y1" : x%=Long(b#,4)
Case Modus$="x2" : x%=Long(b#,8)
Case Modus$="y2" : x%=Long(b#,12)
Dispose b#
Return x%
EndProc
Proc CursorPos
Parameters Modus$
Modus$=Lower$(Modus$)
Declare x%, mpos#
Dim mpos#,8
External("user32","GetCursorPos",mpos#)
Case @&(2)<>0 : External("USER32","ScreenToClient",@&(2),mpos#)
Case Modus$="x1" : x%=long(mpos#,0)
Case Modus$="y1" : x%=long(mpos#,4)
Case Modus$="x2" : x%=IF(@&(2)<>0,WindowRect(@&(2),"Breite"),%maxx)-long(mpos#,0)
Case Modus$="y2" : x%=IF(@&(2)<>02,WindowRect(@&(2),"Höhe"),%maxy)-long(mpos#,4)
Dispose mpos#
ENDPROC
KompilierenMarcaSeparaciónDef SetLayeredWindowAttributes(4) !"USER32","SetLayeredWindowAttributes"
def SetWindowRgn(3) !"USER32","SetWindowRgn"
def RectRgn(4) !"GDI32","CreateRectRgn"
Windowstyle $F0
cls
Var dlg&=Crear("Dialog",%hwnd,"",0,0,%MaxX,%MaxY)
setstyle dlg&,(getstyle(dlg&) | 12582912) - 12582912
SetTransparent(dlg&,50)
Showwindow(dlg&,1)
CutRgnDLG(dlg&,RectRgn(0,0,0,0))
Sinestar encargado iskey(27)
Endwhile
end
Proc SetTransparent
Parámetros Hwnd%, Perc%
Externo("USER32","SetWindowLongA",Hwnd%, -20, Externo("USER32","GetWindowLongA",Hwnd%,-20) | $80000)
SetLayeredWindowAttributes(Hwnd%, 0, (255 * Perc%) / 100, $2)
ENDPROC
Proc CutRgnDLG
Parámetros hdl&
Declarar region&,wRgn&
wRgn&=RectRgn(0,0,width(hdl&)+100,height(hdl&)+100)
whileloop 2,%PCount
region&=@&(&bucle)
Externo("GDI32","CombineRgn",wRgn&,region&,wrgn&,3)
DeleteObject region&
EndWhile
SetWindowRgn(hdl&, wRgn&, 1)
Volver wRgn&
ENDPROC
|
| | | | |
| | Andreas Miethe
| Julian Schmidt (29.01.13)
Meinst du así el mein Ventana no siempre el Fokus bekommt, y deine Minianwendungen dieses überlappen oder como?
Das ha con el Foco nichts a tun. El Minianwendungen voluntad simplemente no adecuado y puede así auch no por Screenshot eingefangen voluntad.
Hier veces 2 Bilder
original
Su overlay
|
| | | XProfan X2Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 30.01.2013 ▲ |
| |
| | Julian Schmidt | hmmmm....ok Beim me fueron ellos erkannt. War aber sólo bastante blöd en el Vordergrund, porque Yo, el Diálogo no en Alway-On-Top gesetzt habe. Was hast du como para una OS. Werd Yo en ner VM veces anschauen.
Julian Schmidt (29.01.13)
IF (29.01.13) Den könntest aber ggf. incluso abschneiden con Region.
Dann debería Yo aber alles así umprogrammieren, el el Rahmen ausßerhalb des Bildschirms mentira, el kein Loch entsteht. Oder va el irgendwie anders?
[OFFTOPIC]Letzter Aktueller Ver código fuente siehe [...] [/OFFTOPIC] |
| | | | |
| | Andreas Miethe
| | | | XProfan X2Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 30.01.2013 ▲ |
| |
| | Julian Schmidt | Benutz Yo auch, qué para una Versión Home Premium, Ultimate? Liegt evtl. daran el du kein Areo aktiviert hast. Geh en Systemsteuerung\Darstellung y Anpassung\Anpassung. Was para una (Base-)Design hast du eingestellt? |
| | | | |
| | Andreas Miethe
| Win7 32 / 64 Bit Home Premium.
Kein Aero Für optimale Leistung adaptado.
Das voluntad Yo auch no ändern !
Como muss se ya Su Programa adaptar |
| | | XProfan X2Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 30.01.2013 ▲ |
| |
| | Julian Schmidt | Andreas Miethe (30.01.13)
El Minianwendungen voluntad simplemente no adecuado y puede así auch no por Screenshot eingefangen voluntad.
Habs me gerade otra vez el problema angeschaut. Mein Quellcode [...] scheint el Minianwendungen wirklich no a erfassen. Zumindest solange el Areo ausgeschaltet es.
Mir fehlt gerade el zünde Concepto en dieses Problema de el Welt a schaffen. El einzige Möglichkeit el me einfällt, es en una otro Technik a setzten. IF hatte dazu en efecto irgendwo qué vorgestellt.... |
| | | | |
|
RespuestaTema opciones | 23.509 Views |
ThemeninformationenDieses Thema ha 3 subscriber: |