Español
Foro

Gefahr schlimmer Crashes ca. ProcAddr en Callbacks, Hilos

 
- Página 1 -


¡Hola IF...

Yo habs veces getestet y hoffe nichts falso gemacht a haben:
KompilierenMarcaSeparación
 $U thread.pcu = thread.
DEF @GetDlgCtrlID(1) !"USER32","GetDlgCtrlID"
DEF @ButtonClicked(1) @GetDlgCtrlID(@&(1))=-%MENUITEM
Testprogramm Timer
Profan Version 9
 $H Windows.ph
-Main----------------------------------------------------------------
Declare Timer_Busy%,Ende%
Declare TimerID&,Create%,T_Text&,Test#
WindowStyle 26
WindowTitle "Timertest PHU-60"
Window 100,100 - 370,200
cls
Let T_TEXT&=@CREATETEXT(%HWND,"",30,30,300,30)
-Menue---------------------------------------------------------------
PopUp "&Programm"
AppendMenu 108,"&Einstellungen"
AppendMenu 109,"&Ende"
Ende% = 0
Timer setzen (4x pro Sekunde, 250ms)
thread.start 1,1

WhileNot Ende%

    WaitInput

    If @MenuItem(108)

        Einstellungen

    Endif

    If @MenuItem(109)

        thread.stopall
        Ende% = 1

    Endif

Wend

End
-Proc Einstellungen

Proc Einstellungen

    Declare hD%, hA%, hB%, OK%, hTime%
    Declare hF1%, hT1%
    Clear OK%
    Dialogfenster erzeugen
    hD% = @Create("Dialog",%hWnd,"Einstellungen",%WinLeft+80,%WinTop+155,230,190)
    hF1% = @Create("Font","Arial",16,0,0,0,0)
    hT1% = @Create("Text",hD%,"Einstellungen...",10,10,220,20)
    SetFont hT1%,hF1%
    hTime% = @Create("TimeEdit", hD%, "00:00:00", 10, 35, 70, 24)
    hB% = @Create("Button",hD%,"&Nachstellen",10,120,100,28)
    hA% = @Create("Button",hD%,"&Abbrechen",120,120,100,28)

    WhileNot Ok%

        WaitInput

        If @ButtonClicked(hB%)  Nachstellen

            Ok% = 1
            Aktionen hier

        ElseIf @ButtonClicked(hA%) Abbrechen

            Ok% = 1

        ElseIf (%Key = 2) ALT+F4 bzw. schließen

            Ok% = 1

        EndIf

    EndWhile

    DeleteObject hF1%
    @DestroyWindow(hD%)

EndProc

-Prozedur die in bestimmten Zeitintervallen ausgefuehrt wird (4x pro Sekunde)

Proc thread.do

    parameters n&
    Dim Test#,1000000
    Inc Timer_Busy%
    Locate 5,5
    Print "Timer:" + @str$(Timer_Busy%) + " Durchläufe"
    Settext T_Text&,"Timer:" + @str$(Timer_Busy%) + " Durchläufe"
    ENDPROC


Auch hier se el Ventana no correcto adecuado!
Was bedeutet el? Werden en el Hauptprogramm während un hilo ausgeführt, überschreibt Profano intern gespeicherte Variables para Aufrufen de API. Je después de, welche Profanfunktionen en el Hauptprogramm verwendet voluntad, Es el Gefahr veces mehr y veces weniger gegeben, ellos es aber auch (laut Roland) beim direkten Aufrufen de APIs disponible. Wann y si una Fehler auftritt, hängt vom gewählten Zeitintervall, vom Rechner y de el Programmbedienung por el User de.
Was bedeutet el genau?

Ein Ejemplo:
Beim una Rechner bajo Windows2000 se beim Aufruf el API RegUnloadKey una solcher Crash verursacht y el API se deshalb no korrekt ausgeführt. Daraufhin se el Registryhive des User no como geplant entladen y es beim nächsten Start no mehr verfügbar => una ganzes Userprofile es unwiederbringlich perdido.

Ein anders Ejemplo:
Das Hauptprogramm schreibt während una Callback se ejecuta en el Registry. Como alles ungünstig zusammentrifft, se en una otro Schlüssel geschrieben y Datenj en el Registry ir perdido!

Weitere Fragen y Anmerkungen?
 
09.09.2006  
 



 
- Página 3 -


Und esta drei Fuente wären como bajo anderem auch todavía interessant:
KompilierenMarcaSeparación
DEF @GetDlgCtrlID(1) !"USER32","GetDlgCtrlID"
DEF @ButtonClicked(1) @GetDlgCtrlID(@&(1))=-%MENUITEM
DEF @GetProcAddress(2) !"KERNEL32","GetProcAddress"
Testprogramm Timer
Profan Version 9
 $H Windows.ph
-Main----------------------------------------------------------------
Declare Timer_Busy%,Ende%
Declare TimerID&,Create%,T_Text&,Test#,T_TEXT2&
Declare OldWndProc&,DLL&,P_A&
LET DLL&=@Usedll("Send.DLL")
WindowStyle 26+512
WindowTitle "Subclassingtest"
Window 100,100 - 370,200
Let T_TEXT&=@CREATEButton(%HWND,"",30,80,300,30)
Let T_TEXT2&=@CREATEButton(%HWND,"Ende",30,120,300,30)
Waitinput
Set("FastMode", 1)
OldWndProc& = ~GetWindowLong(%hWnd,~GWL_WNDPROC)
LET P_A&=@GetProcAddress(DLL&,"_timer@16")
~SetWindowLong(%hWnd,~GWL_WNDPROC,@ProcAddr("Sub",4))
Ende%=0
TimerID&=~SetTimer(%HWND,333,20,P_A&)
Print TimerID&

WhileNot Ende%

    WaitInput

    If @Buttonclicked(T_TEXT&)

        Einstellungen

    Endif

    If @Buttonclicked(T_TEXT2&)

        ~KillTimer(%HWND,333)
        Ende%=1
        Freedll DLL&

    Endif

Wend

End
-Proc Einstellungen

Proc Einstellungen

    Declare hD%, hA%, hB%, OK%, hTime%
    Declare hF1%, hT1%
    Clear OK%
    Dialogfenster erzeugen
    hD% = @Create("Dialog",%hWnd,"Einstellungen",%WinLeft+80,%WinTop+155,230,190)
    hD% = @Control("Dialog","Einstellungen",$14C80084,%WinLeft+80,%WinTop+155,230,190,%HWND,0,%HINSTANCE,$101)
    hF1% = @Create("Font","Arial",16,0,0,0,0)
    hT1% = @Create("Text",hD%,"Einstellungen...",10,10,220,20)
    SetFont hT1%,hF1%
    hTime% = @Create("TimeEdit", hD%, "00:00:00", 10, 35, 70, 24)
    hB% = @Create("Button",hD%,"&Nachstellen",10,120,100,28)
    hA% = @Create("Button",hD%,"&Abbrechen",120,120,100,28)

    WhileNot Ok%

        WaitInput

        If @ButtonClicked(hB%)  Nachstellen

            Ok% = 1
            Aktionen hier

        ElseIf @ButtonClicked(hA%) Abbrechen

            Ok% = 1

        ElseIf (%Key = 2) ALT+F4 bzw. schließen

            Ok% = 1

        EndIf

    EndWhile

    DeleteObject hF1%
    @DestroyWindow(hD%)

EndProc

Proc Sub

    Parameters hWnd&,Message&,wParam&,lParam&

    If Message&=$401

        Inc Timer_Busy%
        Settext T_Text&,"Timer: " + @str$(Timer_Busy%) + " Durchläufe"
        Return ~CallWindowProc(OldWndProc&,hWnd&,Message&,wParam&,lParam&)

    Else

        Return ~CallWindowProc(OldWndProc&,hWnd&,Message&,wParam&,lParam&)

    EndIf

ENDPROC


KompilierenMarcaSeparación
DEF @GetDlgCtrlID(1) !"USER32","GetDlgCtrlID"
DEF @ButtonClicked(1) @GetDlgCtrlID(@&(1))=-%MENUITEM
DEF @GetProcAddress(2) !"KERNEL32","GetProcAddress"
Testprogramm Temporizador
Profano Versión 9
 $H Windows.ph
-Main----------------------------------------------------------------
Declarar Timer_Busy%,Ende%
Declarar TimerID&,Crear%,T_Text&,Test#,T_TEXT2&
Declarar OldWndProc&,DLL&,P_A&
LET DLL&=@Usedll("Send.DLL")
Ventana de Estilo 26+512
Título de la ventana "Subclassingtest 2"
Ventana 100,100 - 370,200
Let T_TEXT&=@CREATEButton(%HWND,"",30,80,300,30)
Let T_TEXT2&=@CREATEButton(%HWND,"Ende",30,120,300,30)
Waitinput
Conjunto("FastMode", 1)
OldWndProc& = ~GetWindowLong(%hWnd,~GWL_WNDPROC)
LET P_A&=@GetProcAddress(DLL&,"_timer@16")
~SetWindowLong(%hWnd,~GWL_WNDPROC,@ProcAddr("Sub",4))
Ende%=0
TimerID&=~SetTimer(%HWND,333,25,@ProcAddr("Sub",4))
Imprimir TimerID&

Sinestar encargado Ende%

    WaitInput

    If @Buttonclicked(T_TEXT&)

        Einstellungen

    Endif

    If @Buttonclicked(T_TEXT2&)

        ~KillTimer(%HWND,333)
        Ende%=1
        Freedll DLL&

    Endif

Wend

End
-Proc Einstellungen

Proc Einstellungen

    Declarar hD%, hA%, hB%, OK%, hTime%
    Declarar hF1%, hT1%
    Claro OK%
    Dialogfenster erzeugen
    hD% = @Crear("Dialog",%hWnd,"Einstellungen",%WinLeft+80,%WinTop+155,230,190)
    hD% = @Control("Dialog","Einstellungen",$14C80084,%WinLeft+80,%WinTop+155,230,190,%HWND,0,%HINSTANCE,$101)
    hF1% = @Crear("Font",Arial,16,0,0,0,0)
    hT1% = @Crear("Text",hD%,"Einstellungen...",10,10,220,20)
    SetFont hT1%,hF1%
    hTime% = @Crear("TimeEdit", hD%, "00:00:00", 10, 35, 70, 24)
    hB% = @Crear("Button",hD%,"&Nachstellen",10,120,100,28)
    hA% = @Crear("Button",hD%,"&Abbrechen",120,120,100,28)

    Sinestar encargado Ok%

        WaitInput

        If @ButtonClicked(hB%)  Nachstellen

            Ok% = 1
            Aktionen hier

        ElseIf @ButtonClicked(hA%) Alto

            Ok% = 1

        ElseIf (%Key = 2) ALT+F4 o schließen

            Ok% = 1

        EndIf

    EndWhile

    DeleteObject hF1%
    @DestroyWindow(hD%)

ENDPROC

Proc Sub

    Parámetros hWnd&,Message&,wParam&,lParam&
    Inc Timer_Busy%
    Settext T_Text&,"Timer: " + @str$(Timer_Busy%) + " Durchläufe"

ENDPROC


KompilierenMarcaSeparación
 $DLL
-Procedimiento el en cierto Zeitintervallen ausgefuehrt se (4x pro Sekunde)
Declarar Timer_Busy%,WND&

dllproc Temporizador,4

    Parámetros P1&,P2&,P3&,P4&
    @SendMessage(@FindWindow("Subclassingtest"),$401,0,0)

ENDPROC


Der Fehler ha also wohl nichts con Subclassing a tun - oder qué media du genau?
 
10.09.2006  
 



 
- Página 4 -


[quote:19dfeaab2b=Frank Abbing][quote:19dfeaab2b]Como ya he dicho: Bitte Testen! Interessiert mich brennend. Bau veces el Callback en un DLL - dauert sí no largo...[/quote:19dfeaab2b]
Tuve el ya gemacht. Mi Dll ha un hilo producido y dieser ha una profansche Callbackroutine aufgerufen. Nach más Aufrufen brach Profano con el sonderlichsten Fehlermeldungen de. Je kürzer el Spanne el Aufrufe, desto más rápido kamen el Fehler.[/quote:19dfeaab2b]
¡Hola Franco...

Endlich versteht veces uno, Yo sage .
Hab deinen Contribución desafortunadamente sólo ahora gelesen.
Dieses Problema me está ebenfalls bekannt - el liegt aber bastante woanders y läßt se bastante simplemente umgehen (siehe Rolf).
 
10.09.2006  
 



So Andreas,

wer no hören kann muß fühlen.

Im Grunde ir unsere Meinungen sí dahingehend auseinander el Yo sage, el lo grundsätzlich a procaddr  liegt, porque dies el Schnittstelle es dazu el de aussen Prozeduraufrufe injiziert voluntad puede y ¿Quieres decir que el lo específicamente con WM_Timer a tun ha.

Also Yo todos sin Wm_timer gelöst, una Call se de uno DLL direkt aufgerufen, siempre y siempre otra vez.

Lo belegt el lo vokommen kann, el si una proc el por procaddr verfügbar gemacht wurde, extern aufgerufen se, XProfan se verhäddert. Ohne ProcAddr wäre dies sí no posible.

Hier el Code para Selbertesten, unten ne versaute Dll.

Lo ha demzufolge nichts con el Hilo-Unit a tun y nichts con wm_timer, por qué Yo, el Hilo auch de el Hilo-Unit-Zona lejos, y después de Programación geschoben habe.
KompilierenMarcaSeparación
Def @Getdlgctrlid(1) !"USER32","GetDlgCtrlID"
Def @Buttonclicked(1) @Getdlgctrlid(@&(1))=-%Menuitem
Testprogramm Timer
Profan Version 9
 $H Windows.ph
-Main----------------------------------------------------------------
Declare Timer_busy%,Ende%
Declare Timerid&,Create%,T_text&,Test#
Windowstyle 26
Windowtitle "Timertest PHU-60"
Window 100,100 - 370,200
Cls
Let T_TEXT&=@CREATETEXT(%HWND,"",30,30,300,30)
-Menue---------------------------------------------------------------
Popup "&Programm"
Appendmenu 108,"&Einstellungen"
Appendmenu 109,"&Ende"
Ende% = 0
Timer setzen (4x pro Sekunde, 250ms)
Thread.start 1,1
declare h&
h&:=usedll("thread2.dll")
h&:=external("kernel32","GetProcAddress",h&,"dodo")
external("thread2.dll","f",procaddr("thread.do",0),h&)

Whilenot Ende%

    Waitinput

    If @Menuitem(108)

        Einstellungen

    Endif

    If @Menuitem(109)

        Thread.stopall
        Ende% = 1

    Endif

Wend

End
-Proc Einstellungen

Proc Einstellungen

    Declare Hd%, Ha%, Hb%, Ok%, Htime%
    Declare Hf1%, Ht1%
    Clear Ok%
    Dialogfenster erzeugen
    Hd% = @Create("Dialog",%Hwnd,"Einstellungen",%Winleft+80,%Wintop+155,230,190)
    Hf1% = @Create("Font","Arial",16,0,0,0,0)
    Ht1% = @Create("Text",Hd%,"Einstellungen...",10,10,220,20)
    Setfont Ht1%,Hf1%
    Htime% = @Create("TimeEdit", Hd%, "00:00:00", 10, 35, 70, 24)
    Hb% = @Create("Button",Hd%,"&Nachstellen",10,120,100,28)
    Ha% = @Create("Button",Hd%,"&Abbrechen",120,120,100,28)

    Whilenot Ok%

        Waitinput

        If @Buttonclicked(Hb%) Nachstellen

            Ok% = 1
            Aktionen hier

        Elseif @Buttonclicked(Ha%)Abbrechen

            Ok% = 1

        Elseif (%Key = 2)ALT+F4 bzw. schließen

            Ok% = 1

        Endif

    Endwhile

    Deleteobject Hf1%
    @Destroywindow(Hd%)

Endproc

-Prozedur die in bestimmten Zeitintervallen ausgefuehrt wird (4x pro Sekunde)

Proc Thread.do

    Parameters N&
    Dim Test#,1000000
    Inc Timer_busy%
    Locate 5,5
    Print "Timer:" + @Str$(Timer_busy%) + " Durchläufe"
    Settext T_Text&,"Timer:" + @str$(Timer_Busy%) + " Durchläufe"
    ENDPROC


6 kB
Hochgeladen:12.09.2006
Ladeanzahl45
Descargar
 
12.09.2006  
 



¡Hola IF...

Im Yo el Eindruck, wir reden en el Principio de el selben Sache , denken aber beide no zuende . Hast du dir ya veces überlegt, por qué el Fehler beim Verwenden de Conjunto(FastMode, 1) no mehr auftritt ?
Si el wirklich cada Callback en una Profanfunktion vorkommt (el glaube Yo dir, auch sin el Ver código fuente el DLL a sehen), müßte uno necesariamente genau wissen, en welchen Profanfunktionen como Gefahr besteht. Yo habe hier Stundenlang con Writeini y Readini$ herumexperimentiert, sin (para Glück) una Fehler a erzeugen. Si el wirklich incluso (laut Roland) beim direkten Aufrufen de APIs passieren podría, hay eigentlich gar no Möglichkeit, el Messagehandling beizubehalten y de otra manera gleichzeitig ablaufen que se.

Das lo a el Häufigkeit des Aufrufens el Procedimiento liegt, kann Yo no bestätigen. Je weniger el Procedimiento aufgerufen se, umso geringer Es el Wahrscheinlichkeit, el una Fehler passiert - el Fehler passieren aber doch.
In TNT se ebenfalls una Callback verwendet - el Programa verwende Yo laufend, en irgendetwas en Windows a untersuche.
Am Anfang traten, egal como oft el Callback aufgerufen wurde, siempre irgendwelche Fehler en. Seit Yo hay algunos Profanfunktionen a una otro Punto se han trasladado (wo ellos no Problemas mehr hacer), es Ruhe.
 
13.09.2006  
 



[quote:3974012546]Hast du dir ya veces überlegt, por qué el Fehler beim Verwenden de Conjunto(FastMode, 1) no mehr auftritt ? [/quote:3974012546]
Es Unsinn Andreas, lo ha auch nichts con el Fastmode a tun.

Lo liegt simplemente a el Umsetzung de procaddr - Yo me mi Betrachtungsweise bestätigen dejar.

Im FastMode treten natürlich selbige Problemas en!
 
13.09.2006  
 



Apéndice: Gefahr besteht grundsätzlich en allen ProfanFunktionen, el Gefahr aumenta se - Yo sag veces plump - de desto mehr Aufrufen el Función intern besteht.

Diese Dinge de denen Usted berichtest - sagen wir lo son Neben/Folgeerscheinungen.
 
13.09.2006  
 



¡Hola IF...

Erst veces besten Dank para deine Bemühungen.
Si el así stimmen (y el heißt ahora no, el Yo dir el no glaube),
es el echt una Hiobsbotschaft - en el Klartext bedeutet el sí u.a. folgendes:
- Es en keiner Weise posible sólo Profano irgendetwas (gleichzeitig) fehlerfrei ablaufen que se.
- Es no posible, con Profano una vernünftigen Service a escribir.
- Un vielzahl a APIs puede ser con Profano no uso (SendMessageCallback, todos Temporizador con Callbacks, EnumThreadWindows, EnumWindows....)

Eignet se Profano überhaupt entonces para Programmieren?
Tiempo angenommen, muß en cierto Zeitabständen algo encima una Callback dokumentieren y mein Programa fummelt gleichzeitig con RegLoadKey / RegUnloadKey en el Registry rum (como RegEdt32 el tut), wer kommt entonces para el Schaden a fremden Rechnern oder Systemen en? Sollte uno con Profano programmierte Programas entonces überhaupt en Umlauf bringen? Das muß se schnellstens ändern!
 
13.09.2006  
 



Naja! El Excepción - en el lo keinerlei Problemas son - son sólo Características welche una ProcAddr benötigen aber se sólo final si la Arbeit geschehen es! Roland ha ProcAddr eigendlich auch sólo así pensamiento!

Hier z.B. dieses Ejemplo: [...] 

Also Probs gibts no, si la Función el Proc hinter el ProcAddr aufruft, dies auch sólo tut solange ellos incluso todavía se ejecuta.

Was el Gleichzeitigkeit así betrifft bedeutet dies para todos otro Fälle el el Función ProcAddr ungeeignet es. Leider!
 
13.09.2006  
 



[quote:0f571140cc=iF]Naja! El Excepción - en el lo keinerlei Problemas son - son sólo Características welche una ProcAddr benötigen aber se sólo final si la Arbeit geschehen es! Roland ha ProcAddr eigendlich auch sólo así pensamiento!
[/quote:0f571140cc]
Also todos Enum-Características hacer no Problemas.
[quote:0f571140cc=iF]
Also Probs gibts no, si la Función el Proc hinter el ProcAddr aufruft, dies auch sólo tut solange ellos incluso todavía se ejecuta.
[/quote:0f571140cc]
Also gibts u.a. con SendMessageCallback Problemas. Das Carta sämtlicher Services sería ebenfalls darunter fallen y Problemas hacer.
Un vernünftigen Taskmanager puede ser entonces ebenfalls no escribir.
[quote:0f571140cc=iF]
Was el Gleichzeitigkeit así betrifft bedeutet dies para todos otro Fälle el el Función ProcAddr ungeeignet es. Leider![/quote:0f571140cc]
Es muy schlimm. Überhaupt una Taskmanager a escribir, es also no posible. Den Speicherverbrauch mehrere Prozesse en el Auge a behalten, ebenfalls no. Vernünftige Registryeditoren fallen wohl auch flach - während uno Unterschlüssel auflistet, podría uno ser Programa sólo schwer bedienbar halten. Un Uhrzeit en mi Programa einzublenden - va no.
Wenn se el wirklich no con Conjunto(FastMode, 1) umgehen läßt, schmeiße Yo Profano más bien sólo veces en el Ecke.
Diese Problema muß necesariamente mejor dokumentiert oder al besten bastante beseitigt voluntad - como puede ser sí en Teufelsküche kommen.
 
13.09.2006  
 



Naja uno munkelt lo podría bald Abhilfe geben. ;)

Como restos wohl nichts más como el Erkenntnis - y algo warten...

Zumal - todos se eigendlich por Usted aufgebauscht - el muss Yo auch veces klar sagen!

Es tatsächlich nichtmal halb así wild!

Yo escribir muy viele Programas welche ProcAddrs nutzen - Yo hatte todavía kein solches Phänomen - muss aber auch dazu sagen - Yo bin natürlich geübt en él me muy bien vorzustellen como una Source el Yo escribir genau Abläuft - y verhindere así natürlich ya unbewusst así manch Komplikationen - especialmente me ProcAddrProblem como ya oft erwähnt no neu es.

Einfache verfügbare Beispiele - ya una derartigen Fehler en Konstantinopel oder Okrea herbeiführen puede? Yo glaube nein.

Das Carta de ganzen Hives oder grobe RegÄnderungen sería Yo - egal en welcher Lingua - eh no así simplemente draufzu abarbeiten dejar. Algo como sería Yo siempre en una Pool tun welcher abgearbeitet se si la Luft rein es. Machs Usted also no a ligeramente!

Usted sprichst sólo muy spezielle Sonderfälle a - como mag lo natürlich ser el el ProcAddr no safe es. Für esta Sonderfälle hast Usted aber como Programmierer genügend Ausweichmethoden a Hand.

Alles va nunmal en keiner Lingua - wohlbemerkt - una safe ProcAddr kann Yo vorstellen se lo en XProfan geben!
 
13.09.2006  
 




Sebastian
König
¡Hola Andreas,

[quote:afe202e11c](...) Es muy schlimm. Überhaupt una Taskmanager a escribir, es also no posible. Den Speicherverbrauch mehrere Prozesse en el Auge a behalten, ebenfalls no. Vernünftige Registryeditoren fallen wohl auch flach - während uno Unterschlüssel auflistet, podría uno ser Programa sólo schwer bedienbar halten. Un Uhrzeit en mi Programa einzublenden - va no.
Wenn se el wirklich no con Conjunto(FastMode, 1) umgehen läßt, schmeiße Yo Profano más bien sólo veces en el Ecke.[/quote:afe202e11c]
Als Workaround kannst Usted sí primero el aktuelle Profano2Cpp-Beta nehmen . Damit tritt el Problematik schließlich no en, como wir [...]  ya diskutiert haben...

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
13.09.2006  
 



Posesiones sowieso antes, me Profano2Cpp zuzulegen.
 
15.09.2006  
 




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.199 Views

Untitledvor 0 min.
H.Brill26.01.2023
Peter Max Müller13.11.2017
iF19.07.2015
Ernst02.03.2015

Themeninformationen



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