Deutsch
Forum

Interpreter MenuItem 254 Copyright

 

Jörg
Sellmeyer
Die Copyrightmeldung unter MenuItem 254 verhält sich etwas nervig.

Im Interpreter lässt sie sich ja nicht unterdrücken; im compilierten Programm schon.
Leider scheint die Meldung aber nicht mittels einer normalen Messagebox aufzupoppen.
Hier ist ein Code (ich glaub von Andreas Miethe), der das veranschaulicht.
Wenn man ihn im Interpreter ausführt und auf das CR-Zeichen klickt, wimmelt es bald von Messageboxen. Vor dem Testen also bitte entsprechende Vorsichtsmaßnahmen ergreifen. Das Programm lässt sich dann auch über den Taskmanager nicht einfach abschießen, da die Messageboxen die "Abschussfreigabe" überdecken!

Im compilierten Zustand wird dann die normale Massagebox aufgerufen und das Programm zeigt genau 1x die Messagebox an und auch der Timer läuft weiter.

Es ist vielleicht ein etwas spezieller Fall aber trozdem sollte das so nicht auftreten.
DEF SetATimer(4) !"USER32","SetTimer"
DEF KillATimer(2) !"USER32","KillTimer"
DEF GetTimeFormat(6) !"KERNEL32","GetTimeFormatA"

Proc timerproc

    Declare text$
    text$=Space$(20)
    GetTimeFormat(0,0,0,0,Addr(text$),20)
    text$="Uhrzeit: "+text$
    SetText %hwnd,text$

EndProc

Cls
SetATimer(%hwnd,1,200,ProcAddr("timerproc",0))

While 1

    WaitInput
    locate 1,1
    Print &Loop,Rnd(100000),"hier kann man beliebig klicken und die Uhr läuft weiter"

    If MenuItem(254)

        Case MessageBox("Wirklich?","Beenden?",4) = 6:Break

    EndIf

EndWhile

Print "\nDemo Ende."
Waitinput
KillATimer(%hwnd,1)
End
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
14.06.2018  
 




Georg
Teles
Ein ähnliches Problem habe ich schonmal in Verbindung mit Hotkeys gehabt (beim Auslösen wurde die Aktion endlos wiederholt), kann gerade kein Beispiel finden, es ist eine Weile her, bin nicht sicher aber das hatte ebenfalls mit ProcAddr zutun in Verbindung mit Profan internem Timer.
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

PC: i7-10700K | 32 Gb | 1x NVMe | 2x SSD | 1x HDD |
Srv: i9-9900K | 32 Gb | 2x SSD | 6x HDD |
Srv. 24/7: i5-8279U | 16 Gb | 1x NVMe | 1x SSD |
Testmachine: J1900 | 8 Gb | Variable Drives |
17.06.2018  
 



Ich kann nur (immer wieder) dazu raten, keine asynchronen Calls auf per procAddr-bezogene Funktionen "generieren" zu lassen etwa per setTimer o.Ä.

Dies geht mit nProcs wiederum absolut problemlos, procs jedoch sind dafür einfach nicht gemacht/ geeinet.
 
18.06.2018  
 




Jörg
Sellmeyer
Was ist bei diesen nProcs anders, dass es funktioniert? Würde es mit ASM-Funktionen unter X14 gehen?
 
XProfan X4
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
18.06.2018  
 



Jörg Sellmeyer (18.06.2018)
Was ist bei diesen nProcs anders, dass es funktioniert?


XProfan-Funktionen sind (im ggs. zu nProcs) keine gewöhnlichen Funktionen mit Funktionsadresse, die den für eine native Funktion üblichen Opcode besitzt.

XProfansche Prozeduradressen zeigen nicht auf Funktionen, die wegen der Art und Weise Rolands Implementation von ProcAddr asynchron zum XProfan-Programmablauf aufgerufen/ injiziert werden dürfen. Sie sind für programmablaufsynchrone Enumeration geeignet.

Dabei könnte Roland durchaus ProcAddr dahingehend mal verbessern und den Interpreter in einen eigenen Thread-Context verbringen sodass asynchrone Aufrufe im Hauptthread warten könnten bis der Interpreter "onidle" ist und ihn dann beschäftigen. Sicher viel Arbeit das Hauptprogramm in eine Proc zu stopfen aber dann wäre ProcAddr endlich "sicher".

Es enstehen besonders Probleme bei rekursiven Aufrufen, womit hierbei nur schon Aufrufe ausreichen die eben öfter/ schneller geschehen als der vorherige Aufruf an Zeit benötigt.

Deshalb z.B. die GWL_WNDPROC nicht auf eine XProfan-Prozeduradresse setzen, aber wiederum die EnumPrinters-Funktion.

Deshalb kannst Du auch mit CreateThread keinen Thread mit einer XProfan-Prozeduradresse erzeugen, aber mit einer nProc.

Jörg Sellmeyer (18.06.2018)
Würde es mit ASM-Funktionen unter X14 gehen?


Falls mit XProfan die Funktionsadresse in den Prozess als Opcode geladener Inline-ASM-Programmabschnitte ermittelbar ist, dann kann man an dieser Stelle den ASM "absturzsicher" formulieren und genau diese Adresse als Funktionsadresse verwenden/ angeben auch z.B. für CreateThread.

Habe die aktuelle Hilfe von XProfan X4  [...]  gesichtet:

Jörg Sellmeyer (18.06.2018)
Mit der neuen Funktion fAddr(Name) kann die Start-Adresse einer importierten Funktion, also auch einer Assemblerfunktion, ermittelt werden. Existiert diese Funktion nicht, ist da Ergebnis 0.


Danach dürfte es funktionieren!
 
20.06.2018  
 




Jörg
Sellmeyer
Danke!
 
XProfan X4
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
22.06.2018  
 




H.Brill
Ist zwar schon etwas länger her.
Habe aber trotzdem, weil ich es gerade brauchte,
heraus gefunden :
RemoveMenu 32767' Copyright entfernen

Wenn man im Reshacker mal unter Menu schaut, findet man
den Menüpunkt für das Copyright.

Geht sowohl im Interpreter als auch im fertigen Programm.
 
Benutze XPROFAN X3 + FREEPROFAN
vor 22 Tagen  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.357 Betrachtungen

Unbenanntvor 0 min.
Georg Teles vor 5 Tagen
Thomas Freier vor 10 Tagen
Michael W. vor 10 Tagen
Sven Bader vor 15 Tagen
Mehr...

Themeninformationen



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