Español
Foro

Fenstertitel en Editierfeld tomar

 
¡Hola todos zusammen...

Yo möchte en mi Programa el Möglichkeit haben, una beliebigen Fenstertitel uno laufenden Programmes en una mehrzeiliges Editierfeld aufzunehmen. Como würdet ihr a el Sache herangehen? ¿Cómo se puede al logisch realisieren? Was wäre el beste Möglichkeit?
Wäre para cada Vorschlag dankbar, Fuente son no necesariamente nötig.
 
16.07.2004  
 



¿Te ha algo como?
 {$cr}
declarar a#,x%,y%,wnd&,me&
dim a#,8
def WindowFromPoint(2) !"USER32", "WindowFromPoint"
def GetCursorPos(1) !"USER32","GetCursorPos"
windowstyle 536
windowtitle "WinTit"
window 0,0 - 400,350
cls rgb(196,196,196)
me&=createmultiedit(%hwnd,"",0,0,width(%hwnd),height(%hwnd))
settimer 250

repeat

    Waitinput

    ifnot %key

        GetCursorPos(a#)
        let x%=long(a#,0)
        let y%=long(a#,4)
        let Wnd&=WindowFromPoint(X%, y%)
        settext me&, gettext$(Wnd&)

    endif

until %key=2

killtimer
disponer a#
end
 
16.07.2004  
 



¡Hola IF...

Nein, eigentlich no. Como uno a el Fenstertitel kommt, weiß Yo - me fehlt una Concepto para una logische Umsetzung....
In mi Programa hay una mehrzeiliges Editierfeld, en el uno Fenstertitel eingeben kann, en deren Auftreten Windows automáticamente herunterfährt. Yo möchte nun el Anwender no bastante así viel escribir dejar - lo sino que debe para el Anwender auch nachvollziehbar ser, qué él como gerade tut.
Yo habe ya a una Möglichkeit mittels Trackmenü pensamiento:
Nach Rechtsklick en una Fenstertitelzeile öffnet se una Trackmenü con el Opción como verbotenes Programa definieren.
Jetzt beim Carta fällt me auch todavía qué para Drag and Drop una:
Durch el Drücken el rechten Botón del ratón puede ser (sólo) el Titelzeile la ventana a a mi Programa el Editierfeld ziehen y hay ablegen por el Suelte el botón del ratón ablegen.

Das wären ya veces zwei Sachen, el programmtechnisch bastante simplemente a lösen son. Gibt lo weitere Möglichkeiten? Was es einleuchtender y mejor a bedienen? Gibt lo irgendwelche Problemas con un Rechtsklick en el Titelzeile uno Fensters (otro Menüs, que abierto... etc.)?
 
16.07.2004  
 



Was hältst su, simplemente todos Ventana-Titles el sólo irgendwie auftauchen simplemente en un list a tun, y lo auswählbar a hacer. In el List podría una Titel, welcher Grade como Activewin es.

Quasi:

caso oldactivewindowtitle<>activewindowtitle : pushtolist activewindowtitle
 
16.07.2004  
 



¡Hola IF...

Wenn Yo dich como ahora correcto verstanden habe, quería ego eigentlich así simplemente auch no haben .
Tuve como más a así algo pensamiento:
WINDOWTITLE "Fenstertitel en Editbox ziehen"
Windowstyle 31
Ventana 0,0-640,400
Declarar Cursor#,Curx&,Cury&,Windowhandle&,Windowhandle2&
Declarar Fenstertitel$,EDIT&,EDITZähler&,TEST&,Test$
Declarar Drop&,Breite&,Windowhandle3&
Def @GetAsyncKeyState(1) !"User32","GetAsyncKeyState"
Def @WindowFromPoint(2) !"USER32", "WindowFromPoint"
Def @GetCursorPos(1) !"USER32","GetCursorPos"
DEF ChildWindowFromPoint(3) !"USER32","ChildWindowFromPoint"
Def ScreenToClient(2) !"USER32","ScreenToClient"
@GetAsyncKeyState(2)
LET EDIT&=@createmultiedit(%HWND,"",10,10,300,300)

Mientras que @equ(0,0)

    IF @GetAsyncKeyState(2)<>0

        Dim Cursor#,8
        @GetCursorPos(Cursor#)
        let Curx&=long(Cursor#,0)
        let Cury&=long(Cursor#,4)
        LET Windowhandle&=@WindowFromPoint(Curx&,Cury&)
        LET Fenstertitel$=@GetText $(Windowhandle&)
        LET Breite&=@Width(Windowhandle&)

        If Fenstertitel$<>""

            Windowstyle 16
            Let Drop&=@createwindow(%Desktop,Fenstertitel$,Curx&,Cury&,Breite&,0)
            SetWindowPos %HWND=0,0-640,400;-1

            Mientras que @GetAsyncKeyState(2)<>0

                @GetCursorPos(Cursor#)
                let Curx&=long(Cursor#,0)
                let Cury&=long(Cursor#,4)
                SetWindowPos Drop&=Curx&,Cury&-Breite&,0;-1
                @GetCursorPos(Cursor#)
                let Curx&=long(Cursor#,0)
                let Cury&=long(Cursor#,4)
                LET Windowhandle&=@WindowFromPoint(Curx&,Cury&)

                If Windowhandle&<>0

                    @ScreenToClient(Windowhandle&,Cursor#)
                    LET Curx&=Largo(Cursor#,0)
                    LET Cury&=Largo(Cursor#,4)
                    LET Windowhandle3&=@ChildWindowFromPoint(Windowhandle&,Curx&,Cury&)
                    Case Windowhandle3&<>0 : LET Windowhandle2&=Windowhandle3&

                EndIf

            wend

            @GetCursorPos(Cursor#)
            let Curx&=long(Cursor#,0)
            let Cury&=long(Cursor#,4)
            LET Windowhandle&=@WindowFromPoint(Curx&,Cury&)

            If Windowhandle&<>0

                @ScreenToClient(Windowhandle&,Cursor#)
                LET Curx&=Largo(Cursor#,0)
                LET Cury&=Largo(Cursor#,4)
                LET Windowhandle3&=@ChildWindowFromPoint(Windowhandle&,Curx&,Cury&)
                Case Windowhandle3&<>0 : LET Windowhandle2&=Windowhandle3&

            EndIf

            IF Windowhandle2&=Edit&

                Usecursor 2
                Let EDITZähler&=0
                Clearlist
                ADDSTRING Fenstertitel$

                Mientras que EDITZähler&<@GetLineCount(Edit&)

                    ADDSTRING @Getline$(EDIT&,Editzähler&)
                    Let EDITZähler&=Editzähler&+1

                wend

                @MoveListToEdit(Edit&)
                Usecursor 0
                setmenuitem 0
                @setfocus(%HWND)

            endif

            @destroywindow(Drop&)

        endif

        Disponer Cursor#
        SetWindowPos %HWND=0,0-640,400;1

    endif

wend


... oder auch así qué:
WINDOWTITLE "Erfassen des Fenstertitels con Trackmenü"
Windowstyle 31
Ventana 0,0-640,400
Declarar Cursor#,Curx%,Cury%,Windowhandle&
Declarar Fenstertitel$,EDIT&,EDITZähler&,TEST&,Test$
Def @GetAsyncKeyState(1) !"User32","GetAsyncKeyState"
Def @WindowFromPoint(2) !"USER32", "WindowFromPoint"
Def @GetCursorPos(1) !"USER32","GetCursorPos"
@GetAsyncKeyState(2)
LET EDIT&=@createmultiedit(%HWND,"",10,10,300,300)
CreateMenu
AppendMenu 433,"&Fenstertitel a Editbox senden"

Mientras que @equ(0,0)

    IF @GetAsyncKeyState(2)<>0

        Dim Cursor#,8
        @GetCursorPos(Cursor#)
        let Curx%=long(Cursor#,0)
        let Cury%=long(Cursor#,4)
        Disponer Cursor#
        LET Windowhandle&=@WindowFromPoint(Curx%,Cury%)
        LET Fenstertitel$=@GetText $(Windowhandle&)

        IF @neq$(Fenstertitel$,"")

            CreateMenu
            AppendMenu 433,"&Fenstertitel a Editbox senden"
            sleep 100
            TrackMenu Curx%-100,Cury%

            IF @MENUITEM(433)

                Usecursor 2
                Let EDITZähler&=0
                Clearlist
                ADDSTRING Fenstertitel$

                Mientras que EDITZähler&<@GetLineCount(Edit&)

                    ADDSTRING @Getline$(EDIT&,Editzähler&)
                    Let EDITZähler&=Editzähler&+1

                wend

                @MoveListToEdit(Edit&)
                Usecursor 0
                setmenuitem 0
                @setfocus(%HWND)
                @GetAsyncKeyState(2)

            endif

        endif

    endif

wend


... aber como du siehst, es el alles no tan completamente ideal. Kann uno como irgendwo todavía qué verbessern?
 
17.07.2004  
 



Nun, Yo finde folgende Variante wohl al ehrlichsten, verbraucht auch no 100%Rechenleistung, y habs veces rápidamente dahingepinselt:

 {$crq}
declarar winlist$,wintit$,owintit$,vlb&,mov&,edit&,tmps$
windowtitle "Erfassen des Fenstertitels con Trackmenü"
Windowstyle 31+512
Ventana 0,0-640,400
setwindowpos %hwnd=0,0 - 640,400;-1
EDIT&:=@createmultiedit(%HWND,"",10,10,300,300)
vlb&:=createsortedlistbox(%hwnd,"",350,10,sub(width(%hwnd),370),300)
mov&:=createbutton(%hwnd,"<",315,10,30,300)
winlist$:=""
owintit$:=""
wintit$:=""
settimer 333

repeat

    waitinput
    pushtolist gettext$(getactivewindow())

    if or(getfocus(vlb&),getfocus(mov&))

        tmps$:=getstring$(vlb&,getcursel(vlb&))

        if len(tmps$)

            enablewindow mov&,1

            if getfocus(mov&)

                settext edit&,gettext$(edit&)+tmps$+chr$(13)+chr$(10)
                setfocus(vlb&)

            endif

        más

            enablewindow mov&,0

        endif

    más

        enablewindow mov&,0

    endif

until %key=2

killtimer
end

proc pushtolist

    parámetros tx$
    wintit$=lower$(trim$(tx$))

    if len(wintit$)

        if owintit$<>wintit$

            owintit$:=wintit$

            ifnot instr("°"+wintit$,winlist$)

                winlist$:=winlist$+"°"+wintit$
                addstring(vlb&,wintit$)

            endif

        endif

    endif

ENDPROC

 
17.07.2004  
 



¡Hola IF...

Also doch correcto verstanden...
Das sieht en cada Fall una todo Ecke mejor de como mi Concepto con el Trackmenü. Como mein Ventana aber ya bastante vollgepackt es, Será mejor que te va como wohl para esta Solución algo a eng voluntad. Yo mich deshalb vorerst veces para el verschiebbaren Fenstertitel entschieden.
Como el Programa sowieso wohl sólo 2 Minuten al Stück se ejecuta, y dies sin el weitere aufwendige Programas laufen, Yo el Prozessorauslaustung sólo veces außer acht gelassen. Trotzdem vielen Dank para el Referencia - se tal vez todavía wichtig...
 
19.07.2004  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

4.036 Views

Untitledvor 0 min.
Ernst22.04.2016
Jochen Roxlau03.10.2014
Michaeal18.10.2012
Julian Schmidt07.06.2011

Themeninformationen

Dieses Thema ha 1 subscriber:

unbekannt (7x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie