Deutsch
Quelltexte/ 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
Ladeanzahl0
Herunterladen
5 kB
Hochgeladen:03.09.2012
Ladeanzahl0
Herunterladen
1.385 kB
Hochgeladen:03.09.2012
Ladeanzahl9
Herunterladen
 
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 natürlich 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


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

10.042 Betrachtungen

Unbenanntvor 0 min.
Gast.081503.10.2024
Frank Reibold25.11.2022
RudiB.03.09.2022
H.Brill21.01.2022
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

iF (4x)
Julian Schmidt (3x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


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