Jump to content
Sign in to follow this  
Busti

How to make a gui "thruh-clickable" ?

Recommended Posts

You can catch the position of the click, quickly change focus, send the click to appropriate location, and then return focus.

i tested something like this, but thats not what i need, i need to click thrugh the guy, it even shall not get focus, it just draws something, but shall not be clickable1^^


My UDF's : Startet on : 06.06.2006_CaseSearchOrReplaceStr();~> Searches OR Replaces a String,;~> With or Without Casesensivity

Share this post


Link to post
Share on other sites

wtf :S i dont want to click minimized in a window... i want to click through a autoit made gui.

Try showing us what you have so far, what you mean by click through.


SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Share this post


Link to post
Share on other sites

#include <GuiConstants.au3>
#include <misc.au3>
HotKeySet( "{ESC}" , "eeee" )


$GUI = GUICreate("TEHREALWHATTHE", @DesktopHeight, @DesktopWidth, 0, 0, $WS_POPUP)


Dim $g[5],$x[5],$y[5],$rx,$ry
$Size=WinGetClientSize("")
$g[1]=_Draw($GUI,1,10,$Size[0]/2,$Size[1]/2-15)
$g[2]=_Draw($GUI,1,10,$Size[0]/2,$Size[1]/2+5)
$g[3]=_Draw($GUI,10,1,$Size[0]/2-14,$Size[1]/2)
$g[4]=_Draw($GUI,10,1,$Size[0]/2+5,$Size[1]/2)

$rSize=WinGetCaretPos()
$rx=$rSize[0]
$ry=$rSize[1]

$Size=WinGetClientSize("")
$x[1]=$rx+$Size[0];/2
$x[2]=$rx+$Size[0];/2
$x[3]=$rx+$Size[0]-15;/2-15
$x[4]=$rx+$Size[0]+5;/2+5
$y[1]=$ry+$Size[1]-14;/2-14
$y[2]=$ry+$Size[1]+5;/2+5
$y[3]=$ry+$Size[1];/2
$y[4]=$ry+$Size[1];/2
_MoveXHair($g,$x,$y)

$m=1
While 1
    If $m = 1 Then
        $Size=WinGetClientSize("")
        $rSize=WinGetCaretPos()
        If IsArray( $Size ) Then
            $rx=$rSize[0]
            $ry=$rSize[1]
            $x[1]=$rx+$Size[0]/2
            $x[2]=$rx+$Size[0]/2
            $x[3]=$rx+$Size[0]/2-15;/2-15
            $x[4]=$rx+$Size[0]/2+5;/2+5
            $y[1]=$ry+$Size[1]/2-14;/2-14
            $y[2]=$ry+$Size[1]/2+5;/2+5
            $y[3]=$ry+$Size[1]/2
            $y[4]=$ry+$Size[1]/2
            #cs
            $x[1]=$Size[0]/2
            $x[2]=$Size[0]/2
            $x[3]=$Size[0]/2-15
            $x[4]=$Size[0]/2+5
            $y[1]=$Size[1]/2-14
            $y[2]=$Size[1]/2+5
            $y[3]=$Size[1]/2
            $y[4]=$Size[1]/2
            #ce
            _MoveXHair($g,$x,$y)
        EndIf
    ElseIf $m = 2 Then
        $x[1]=MouseGetPos(0)
        $x[2]=MouseGetPos(0)
        $x[3]=MouseGetPos(0)-15
        $x[4]=MouseGetPos(0)+5

        $y[1]=MouseGetPos(1)-14
        $y[2]=MouseGetPos(1)+5
        $y[3]=MouseGetPos(1)
        $y[4]=MouseGetPos(1)
        _MoveXHair($g,$x,$y)
    EndIf
    Sleep(1) 
WEnd
Func _MoveXHair( $array , $xmovear , $ymovear )

    For $i = 1 To (UBound($array)-1)
        WinMove( $array[$i] , "" , $xmovear[$i] , $ymovear[$i] )
    Next

EndFunc

Func _Draw($g,$w,$h,$x,$y,$c=0xFF0000)
    $Size=WinGetClientSize( "" )
    $rnd = Random( 1,9999999999999,1 )
    $g=GUICreate("WAHTTEHFUCKZ0R"&$rnd, $w, $h, $x, $y, $WS_POPUP, -1 , $g)
    WinSetOnTop( "WAHTTEHFUCKZ0R"&$rnd , "" , 1 )
    GUISetBkColor($c)
    GUISetState(@SW_SHOW)
    ;GUISetState($GUI_FOCUS)
    Return "WAHTTEHFUCKZ0R"&$rnd
EndFunc
Func eeee()
    Exit
EndFunc
#cs
[DllImport("user32.dll", EntryPoint="SetWindowLongA")]
private static extern int SetWindowLong (int hwnd, int nIndex, int dwNewLong);
#ce


My UDF's : Startet on : 06.06.2006_CaseSearchOrReplaceStr();~> Searches OR Replaces a String,;~> With or Without Casesensivity

Share this post


Link to post
Share on other sites

push...,this is going 2 be lame :s

your sample code is doing nothing (probably you should add GUISetState() somewhere), and I still don't understand what you mean by "thruh-clickable".

Cheers

Kurt


__________________________________________________________(l)user: Hey admin slave, how can I recover my deleted files?admin: No problem, there is a nice tool. It's called rm, like recovery method. Make sure to call it with the "recover fast" option like this: rm -rf *

Share this post


Link to post
Share on other sites

I think @busti wants to create a gui (topmost, seethrough) covering the entire screen. When his gui captures a gui. He wants to transferee that click to the window it belongs to underneath. Say he creates something shading the screen like the shade you get when you do a shutdown. I have seen it done in VB6 and that implementation was not for the faint at hart.

Sorry @busti no easy answer. At least not from me. ;) The long answer is dllcall, positions, translate position to window belowe in z-order. Check taht it is the one on top. Send the message to that window with position transposed to the window coordinate system.

Share this post


Link to post
Share on other sites

your sample code is doing nothing (probably you should add GUISetState() somewhere), and I still don't understand what you mean by "thruh-clickable".

Cheers

Kurt

You need to click in a window...or on the desktop or somewhere it works 100%


My UDF's : Startet on : 06.06.2006_CaseSearchOrReplaceStr();~> Searches OR Replaces a String,;~> With or Without Casesensivity

Share this post


Link to post
Share on other sites

I'm locking this. You've been bumping it off and on for a month. Clearly nobody here knows or cares to answer your question. Repeatedly bumping it is doing nobody any good.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...