Italia
Fonte/ Codesnippets

Controls Controlsmap Desktop Fenster Listen

 
ControlsMap Controls Desktop Fenster Listen

Erzeugt ein hPic sowie 6 Listen die eine Momentaufnahme aller sichtbaren Fenster

sowie aller auf den sichtbaren Fenstern enthaltenen Controls samt Koordinaten

und Ausmaße repräsentieren.

Das hPic ist nützlich damit man einfach per getPixel die Listen-Eintragsnummer

eines Controls an einer bestimmten Bildschirmposition zurückerhält unter Beachtung

der Z-Achse.

Download

Macht aus:



dies:


KompilierenMarkierenSeparieren
 {$cleq}
windowstyle 80
window maxx,maxy
long hPicControlsMap=create("hNewPic",maxx,maxy,$FFFFFF)
long ControlsMapLists=paintControlsMap(hPicControlsMap)//gibt einen speicher mit 6 listenhandles zurück.
drawpic hPicControlsMap,,0;0
print getcount(long(ControlsMapLists,)),"Elemente gefunden."
destroyWindow(long(ControlsMapLists,))//enthält die handles
destroyWindow(long(ControlsMapLists,4))//die x position
destroyWindow(long(ControlsMapLists,8))//die y position
destroyWindow(long(ControlsMapLists,12))//die xx position
destroyWindow(long(ControlsMapLists,16))//die yy position
destroyWindow(long(ControlsMapLists,20))//den typ, 1=fenster 2=control
waitinput
end

nProc paintControlsMap(long hPic){

    long 	\
    lst=createLongsList(),lst2=createLongsList(),\
    hsh=createLongsList(),hsx=createLongsList(),hsy=createLongsList(),hsxx=createLongsList(),hsyy=createLongsList(),hstyp=createLongsList(),\
    rc=globalAlloc(gPTR,16),rc2=globalAlloc(gPTR,16),\
    x,y,xx,yy,cnt,wnd,cnt2
    enumWindows(procAddr(paintControlsMap.enumProc),lst)
    cnt=getcount(lst)

    whileloop cnt-1,,-1 {

        wnd=SendMessage(lst,lb_getitemdata,loop,)
        getWindowRect(wnd,rc)
        sendMessage(hstyp,lb_addstring,,1)
        sendMessage(hsh,lb_addstring,,wnd)
        sendMessage(hsx,lb_addstring,,long(rc,))
        sendMessage(hsy,lb_addstring,,long(rc,4))
        sendMessage(hsxx,lb_addstring,,long(rc,8))
        sendMessage(hsyy,lb_addstring,,long(rc,12))
        sendmessage(lst2,lb_resetContent,,)
        enumChildWindows(wnd,procAddr(paintControlsMap.enumProc),lst2)
        cnt2=getcount(lst2)

        if cnt2 {

            whileloop 0,cnt2-1 {

                wnd=SendMessage(lst2,lb_getitemdata,loop,)
                getWindowRect(wnd,rc2)
                case long(rc2,)<long(rc,) : long rc2&,0=long(rc,)
                case long(rc2,4)<long(rc,4) : long rc2&,4=long(rc,4)
                case long(rc2,8)>long(rc,8) : long rc2&,8=long(rc,8)
                case long(rc2,12)>long(rc,12) : long rc2&,12=long(rc,12)
                case long(rc2,)>long(rc,8) : long rc2&,0=long(rc,8)
                case long(rc2,4)>long(rc,12) : long rc2&,4=long(rc,12)
                case long(rc2,8)<long(rc,) : long rc2&,8=long(rc,)
                case long(rc2,12)<long(rc,4) : long rc2&,12=long(rc,4)
                sendMessage(hstyp,lb_addstring,,2)
                sendMessage(hsh,lb_addstring,,wnd)
                sendMessage(hsx,lb_addstring,,long(rc2,))
                sendMessage(hsy,lb_addstring,,long(rc2,4))
                sendMessage(hsxx,lb_addstring,,long(rc2,8))
                sendMessage(hsyy,lb_addstring,,long(rc2,12))

            }

        }

    }

    globalFree(rc)
    globalFree(rc2)
    destroyWindow(lst2)
    destroyWindow(lst)
    cnt=getcount(hsh)

    if cnt {

        long dc=createCompatibleDC(hDC)
        selectObject(dc, hPic)
        selectobject(dc,getStockObject(NULL_PEN))
        selectobject(dc,getStockObject(DC_BRUSH))

        whileloop 0,cnt-1 {

            SetDCBrushColor(dc,loop)
            rectangle(dc,SendMessage(hsx,lb_getitemdata,loop,),SendMessage(hsy,lb_getitemdata,loop,),SendMessage(hsxx,lb_getitemdata,loop,)+1,SendMessage(hsyy,lb_getitemdata,loop,)+1)

        }

        deleteDC(dc)

    }

    long rt=dim(24)
    long rt&,0=hsh,hsx,hsy,hsxx,hsyy,hstyp
    return rt

}

nProc paintControlsMap.enumProc(long wnd,lst){

    PushAll
    case IsWindowVisible(wnd) and (wnd<>hwnd) : sendMessage(lst,lb_addstring,,wnd)
    PopAll
    return true

}

nproc createLongsList(){

    return Control("LISTBOX","",WS_CHILD | LBS_OWNERDRAWFIXED,,,,,hWnd,999,hInstance,)

}


79 kB
Hochgeladen:03.09.2012
Downloadcounter0
Download
5 kB
Hochgeladen:03.09.2012
Downloadcounter0
Download
1.385 kB
Hochgeladen:03.09.2012
Downloadcounter9
Download
 
03.09.2012  
 



Nachtrag: Quelltext nochmal fix angepasst -

kleine BugFixes.
 
03.09.2012  
 




Julian
Schmidt
Scheint, super zu funktionieren.
Jetzt musst du es nur noch fix in dein Lineal-Tool reinhauen.
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
03.09.2012  
 



jaja!
 
03.09.2012  
 




Julian
Schmidt
Könnte man fix nen Ego-Shooter draus schreiben, indem man Controls killen muss. xD
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
04.09.2012  
 



Entweder damit:  [...] 

ooooder naturalmente damit:  [...] 

oder damit:  [...] 

durchaus machbar!

Aaber vielleicht auch damit:  [...] 
 
04.09.2012  
 




Julian
Schmidt
Spiel-Ziel: Wer schafft es als erstes Windows abstürzen zu lassen. xD
 
XProfan X2
Win7 Home Premium, SP1, AMD Athlon(tm) II Neo K125 Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
04.09.2012  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

10.062 Views

Untitledvor 0 min.
Gast.081503.10.2024
Frank Reibold25.11.2022
RudiB.03.09.2022
H.Brill21.01.2022
Di più...

Themeninformationen

Dieses Thema hat 2 subscriber:

iF (4x)
Julian Schmidt (3x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie