Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 241308 (2744)
  Suchen
Seiten: 1 2Zurück zur Übersicht
 AutorThema: Lauffähiges Beispiel für .......
Florian May
Datum:07.10.02 17:39 Antwortenals Email verschicken  


ich habe mich nun nochmal daran gewagt, einen quelltext zu coden der eine für mich große erweiterung für mein projekt darstelle würde, wenn er geht :)

und zwar:

ich habe eine exe datei, der verschiedenene datei wie txt, bmp, avi usw angehängt sind. um nun auf diese datei zugreifen zu können, muss ich sie beim programmstart auf die festplatte schreiben. daher kopiere ich sie ins gleiche verzeichnis wie die exe, sobald jemand die exe startet. nachdem nun die exe wieder beendet wird, egal auf welchen weg, sollen alle vorher auf die platte geschriebenen dateien auch wieder gelöscht werden.........

das problem lag hier beim eigentlichen beenden. beendete der bentuzer das programm über strg+alt+entf, so wurden die dateien ja nicht gelöscht. jetzt habe ich eine hoffentlich lauffähiges beispiel dafür, das es doch geht, auf jeden fall auf meinen pc :)

ich würde mich wahnsinng freuen, wenn nur ein paar dieses wenige kb grosse prc datei mal testen würdet. ist es ein erfolg, kann ich endlich wieder ein altes projeklt aufnehmen, das bisher in der 3dgs community großen anklang gefunden hat aber leider nicht weiter entwickelt werden konnte, da kleinere probleme den weg versperrten.

hier die datei: http://mitglied.lycos.de/cnesm/test.zip

eine kleine anleitung findet ihr im programm selber.

bisher werden folgende personen im programm erwähntfalls es jemals fertig gestellt wird, die mir bei der entwicklung schon sehr oft geholfen haben und mir mit rat und tat zur seite gestanden haben:

Jörg Sellmeyer
Gerd Telzerow
Frank Abbing
Thorsten
Sven Schmidts
Rolf Koch
Uwe ''Pascal'' Niemeier

und natürlich noch:

Roland G. Hülsmann

:)

mfg

florian may


Hans-Jürgen Trog
Datum:07.10.02 18:00 Antwortenals Email verschicken (sumatra@dhjt.de) 


Hallo Florian,

habe sie runtergeladen, entpackt und die PRC zur EXE gelinkt und gestartet.

Ergebnis: nichts. Kein Programm, nichts zu sehen.

unter Win Me.

Gruß
Hans-Jürgen


Florian May
Datum:07.10.02 18:13 Antwortenals Email verschicken  


wie?

kein programm........sch***

ok machen wir es so:

Declare Hauptfenster%
Declare Ende%,Dll%

Hauptfenster%=@CreateWindow(%HWnd,"test",0,0,0,0)
SetWindowPos Hauptfenster%=0,0-%Maxx,%Maxy;-1

@CreateText(Hauptfenster%,"BEISPIE: Programmdateien nach Gebrauch bzw. Beenden des Programmes löschen.",10,10,%maxx,30)
@CreateText(Hauptfenster%,"- Zuerst sollten Sie eine Datei namens ''Demo.txt'' in diesen Verzeichnis anlegen",10,30,%maxx,30)
@CreateText(Hauptfenster%,"- Starten Sie dann das Programm und beenden Sie es über alle Ihnen bekannten Möglichkeiten [z.b. strg+alt+entf oder alt+f4 usw.]",10,45,%maxx,30)
@CreateText(Hauptfenster%,"- Schauen Sie bitte nach jedem beenden des programmes nach, ob die Datei ''Demo.txt'' auch wirklich gelöscht wurde",10,60,%maxx,30)
@CreateText(Hauptfenster%,"- Die Datei müsste eigentlich immer nach dem beenden des programmes automatisch gelöscht werden",10,75,%maxx,30)

LOOP:
Let ende%=0
Whilenot ende%
WaitInput
If @Equ(%Key,2)
GOTO "EXITPROGRAM"
EndIf
CONTINUE
Endwhile

EXITPROGRAM:
@createtext(Hauptfenster%,"Das Programm wird beendet, bitte haben Sie etwas Geduld.....",10,120,%maxx,100)
EnableWindow Hauptfenster%,0
ASSIGN #1,"demo.txt"
ERASE #1
'LEEREN @Add$(String$(TmpPath#,0),"rebdeneuz"),1,1 'Temp Ordner vor Benutzung leeren
SLEEP 2000
EnableWindow Hauptfenster%,1
End

ich vertraue euch da 100% :)

dankehans jürgen hoffe du testet es nochmal.....



Hans-Jürgen Trog
Datum:07.10.02 18:25 Antwortenals Email verschicken (sumatra@dhjt.de) 


so, das hat problemlos geklappt! :-)

Viel Spaß weiter

Hans-Jürgen


Florian May
Datum:07.10.02 18:27 Antwortenals Email verschicken  


> so, das hat problemlos geklappt! :-)

in der hinsicht, das die datei immer gelöscht wird oder das du nun das programm testen konntest?


Jörg Sellmeyer
Datum:07.10.02 18:47 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo Florian,
Das funktioniert soweit ganz gut. Allerdings habe ich mir mal
den Spass gemacht meinen Rechner einfach auszuschalten und
siehe da... die Datei war noch vorhanden. Dagegen kann man
natürlich mit Einträgen im Schlüssel RunOnce in der Registry
vorgehen (beim Windowsstart ein Programm aufrufen das die Datei
löscht).
Allerdings stellt sich die Frage, ob sich der Aufwand wirklich
lohnt.
Ich bin mir sicher, dass jede Datei die auf dem Computer existiert
auch untersucht und manipuliert werden kann.
Wenn es ein schlechtes Programm ist, ist es egal, weil sich eh
keine Sau dafür interessieren wird. Wenn es ein gutes Programm
ist - was soll's. Lieber noch einen guten Leveleditor dazulegen
und Kult daraus machen.

Außerdem soltest Du die GoTo - Befehle vermeiden. Lies mal was
in der Profanhilfe dazu steht.
Ganz abgesehen davon ist der Befehl Continue in diesem Fall
vollkommen überflüssig, da das EndWhile das Gleiche (und schneller)
erledigt.
Folgender Code dürfte auch in Profan 8 noch seine Gültigkeit
behalten:

Proc EXITPROGRAM
...Code...
EndProc

Let ende%=0
Whilenot ende%
WaitInput
If @Equ(%Key,2)
EXITPROGRAM
EndIf
Endwhile

Und um sicherzustellen, dass Deine Programme auch auf ME, XP, USW
laufen, solltest Du die Fensterhandles immer in LongInt-Variablen
speichern:
Hauptfenster&=Create...
Schönen Gruß
Jörg


Hans-Jürgen Trog
Datum:07.10.02 18:51 Antwortenals Email verschicken (sumatra@dhjt.de) 


wurde gelöscht.

Bei mir war sie auch nach Neustart weg.

Gruß
Hans-Jürgen


Rolf Koch
Datum:07.10.02 19:09 Antwortenals Email verschicken (webmaster@rokosoft.de) 


Hi,
bei mir alles in Ordnung:
Über X beendet und über Strg,Alt und Entf. - Demo.txt ist gelöscht!
Die Sache wäre halt die, wenn der Rechner hoffnungslos mal abstürtzt.
Wie wäre die Sache, falls es Deine Struktur erlaubt, am Anfang des Programms zusätzlich auf die Existenz der Dateien abzufragen und ggf. dann zu löschen? So mach ich das immer.
Rolf


Florian May
Datum:07.10.02 19:53 Antwortenals Email verschicken  


super, wohl der erste code der mal sofort geht :)

das mit dem neustart ist so:

ich werde zu jedem starten des programmes das programm selber ins autostart schreiben............

dann werde ich es einfach wie schon jörg meinte mit der registry machen. zu beginn schreibe ich einen schlüssel mit den inhalt 0, wennn nun die dateien nacher erfolgreich gelöscht wurden, überschreibe ich ihn mit 1

startet nun jemand den pc neu, wird autotmatisch das programm durch den eintrag ins autostart gestaret, doch was ich nun mache ist etwas anders, ist der eintrag 0, wurde der pc also neu gestartet, so werden nur die dateien gelöscht nicht aber das programm gestaret, ist der schlüssel hingegen 1 so wird das programm auch gestartet.

ich danke euch für das testen ud hoffe das auch weiterhin leute das ding auf herz udn nieren testen.......

gibt es sonst noch dinge die ihr verbessern würdet ?

mfg

ich danke euch !!!!!!!!!!!!!!


Martin Pohl
Datum:07.10.02 20:41 Antwortenals Email verschicken (martin_pohl@msn.com) 


Florian, warum machst du BMP, AVI usw. nicht in eine DLL? Das geht doch viel einfacher und du brauchst sie nicht unbedingt zu schreiben und später zu löschen.


Florian May
Datum:07.10.02 21:35 Antwortenals Email verschicken  


gute idee, wenn die files für mein Programm wären, doch der zugriff geschieht durch ein profan unabhängiges programm und daher müssen die files immer im verzeichnis liegen.das laden von avis usw. mit einen profan programm sollte kein rpoblem darstellen, sofern die files nicht gearde so extrem gross sind, doch hier ist leider ein fremdes programm...

meines wissen ist es doch auch nicht möglich eine avi direkt aus einer dll zu starten oder? nur wenn sie glaube ich 16 fabren und hat in einen gewissen format gespeichert wurde.......


Florian May
Datum:07.10.02 22:36 Antwortenals Email verschicken  


bin gerade dabie das ganze mal für das Hauptfnster umzu auen, den somit wäre es für mich günstiger doch, so wie es scheint, reagiert das ganze nicht so wie ich will, was mache ich denn nun wieder falsch?


Jörg Sellmeyer
Datum:07.10.02 23:24 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo Florian,
Probier's mal damit:
Proc EXITPROGRAM
  @createtext(%hwnd,"Das Programm wird beendet, bitte haben Sie etwas Geduld.....",10,120,%maxx,100)
  EnableWindow %hwnd,0
  ASSIGN #1,"demo.txt"
  ERASE #1
  'LEEREN @Add$(String$(TmpPath#,0),"rebdeneuz"),1,1 'Temp Ordner vor Benutzung leeren
  SLEEP 2000
  EnableWindow %hwnd,1
EndProc


Declare Ende%,Dll%
UserMessages 16
WindowStyle $298
Window 0,0-100,100
'Hauptfenster%=@CreateWindow(%HWnd,"test",0,0,0,0)
'SetWindowPos Hauptfenster%=0,0-%Maxx,%Maxy;-1
ShowMax
@CreateText(%hwnd,"BEISPIE: Programmdateien nach Gebrauch bzw. Beenden des Programmes löschen.",10,10,%maxx,30)
@CreateText(%hwnd,"- Zuerst sollten Sie eine Datei namens ''Demo.txt'' in diesen Verzeichnis anlegen",10,30,%maxx,30)
@CreateText(%hwnd,"- Starten Sie dann das Programm und beenden Sie es über alle Ihnen bekannten Möglichkeiten [z.b. strg+alt+entf oder alt+f4 usw.]",10,45,%maxx,30)
@CreateText(%hwnd,"- Schauen Sie bitte nach jedem beenden des programmes nach, ob die Datei ''Demo.txt'' auch wirklich gelöscht wurde",10,60,%maxx,30)
@CreateText(%hwnd,"- Die Datei müsste eigentlich immer nach dem beenden des programmes automatisch gelöscht werden",10,75,%maxx,30)


Let ende%=0
Whilenot ende%
  WaitInput
  If @Equ(%Key,2)
    EXITPROGRAM
		ende%=1
  ElseIf %umessage = 16
    EXITPROGRAM
		ende%=1
  EndIf
Endwhile


Gruß
Jörg


Horst Horn
Datum:08.10.02 03:43 Antwortenals Email verschicken (info@web-treffpunkt.de) 


an alle
frage nur so:
(ich will nicht hetzen)...aber seit ihr jetzt grade dabei, das rad neu zu erfinden ?
gruss an alle
horst


Florian May
Datum:08.10.02 09:47 Antwortenals Email verschicken  


wer hat gesagt das wir ein rad neu erfinden......

wenn überhaupt dann erfinden wir bereits das auto :)


Jörg Sellmeyer
Datum:08.10.02 10:32 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo Horst,
>)...aber seit ihr jetzt grade dabei, das rad neu zu erfinden ?
Das verstehe ich nicht.
Was ich von Florians Ansatz halte habe ich schon weiter oben geschrieben.
Aber hier geht es meines Wissens nicht darum andere Programme zu beurteilen,
sondern dem Programmierer bei Problemen weiterzuhelfen.
Gruß
Jörg


Horst Horn
Datum:08.10.02 13:32 Antwortenals Email verschicken (info@web-treffpunkt.de) 


....nun ja
keine Sau dafür interessieren wird. Wenn es ein gutes Programm
ist - was soll's. Lieber noch einen guten Leveleditor dazulegen

es gibt keine "guten" Programme in der WINDOWS-Welt und Schweine ... ? :o)


Florian May
Datum:08.10.02 16:21 Antwortenals Email verschicken  


ok, dann sag mir bitte was ich entwickel?

wenn du schon äußerungegn machst würde ich auch gerne deine begründugn wissen.......

das ich kein profi bin, weis ich selber, das meine idee nicht immer anklang finden weiss ich auch, aber ich programmiere auch aus leidenschaft und nicht weil es mir darum geht geld damit zu verdienen...........




Thorsten
Datum:09.10.02 12:10 Antwortenals Email verschicken (galaxy@mrk-soft.de) 


>das ich kein profi bin, weis ich selber, das meine idee nicht
>immer anklang finden weiss ich auch, aber ich programmiere
>auch aus leidenschaft und nicht weil es mir darum geht geld
>damit zu verdienen...........

Hi Flory,

Wenn du wirklich "Euros" verdienen willtst, dann konzentriere
dich einfach auf das Wesentliche, und verkaufe deine Ideee
als Umsetzung im Programm.
Zum anderem Farg ich mich, schreibst du selber oder nutzt du
nur andere Programme, packst die Zusammen und startest dann
das eine und andere an, dann wieder löschen ... !!!!

Nur das mit dem Programm beenden-Abfragen,Temp Files usw.
bringt einfach nichts.

Zum einem immer noch: Wenn du glaubst, ein Programm wirklich
100 % Sicher gegen "spionage" zu machen, dann ist das einfach
verlorene Zeit. Glaub mir, innerhalb von maximal 10 Min.
läst sich fast jedes Programm durchschauen.
Dazu wird nur der "Windows Commander", ein Hex Editor
(Ultra Edit) und "Ultra Task" benötigt.

Bilder usw. in einer DLL auszulagern, ist ein guter ansatz,
mit einem Resourcen Editor jedoch sehr leicht wieder
zurückzuhohlen.

Wenn schon unbedingt, dann:

Ein bisher noch recht sicherer Schutz ist, alle Ext. Teile
wie Bilder und Sounds (Wav Files) alle verschlüsselt in eine
Datei zu hinterlegen. Das Hauptprogramm kann dann direkt
aus dieser Datei die Daten hohlen, entschlüsseln und anzeigen,
Bilder z.b mit ProSpeed, Wav Files lassen sich recht einfach
direkt aus dem Speicher abspielen.

Also bitte, glaub einfach, das JEDES Programm immer "zwangs"
beendet werden kann, da kanste noch so viel Tricksen.
Anfänger lassen sich so vieleicht noch beeindrucken, der
Profi lächelt nur darüber und denkt sich sein Teil.




Florian May
Datum:09.10.02 12:50 Antwortenals Email verschicken  


< Hi Flory,

< Wenn du wirklich "Euros" verdienen willtst, dann konzentriere
< dich einfach auf das Wesentliche, und verkaufe deine Ideee
< als Umsetzung im Programm.
< Zum anderem Farg ich mich, schreibst du selber oder nutzt du
< nur andere Programme, packst die Zusammen und startest dann
< das eine und andere an, dann wieder löschen ... !!!!

zum einen möchte ich keine "Euros" verdienen, wie ich auch schon oben erwähnte, zum anderen packe ich kein programme zusammen, sonder baue ein zusatzprogramm für eine 3d engine...........

mein programm greift nicht in die engine ein sondern erweiter die fetaures dieser.......

mein programm fasst alle dateien des spiels [60 Dateien] zu einer exe zusammen, verschlüsselt und packt sie. das hat den vorteil, das zum einen das programmpaket schrumpft, zum anderen aber auch die größe der gesamten dateien sich verringert [Beispiel: 60 Dateien mit einer Gesamtgröße von 3,51 mb werden zu 1 Datei mit 1,25 MB]

Weiterhin hat die verschlüsselung den vorteil, das sie nicht vorher entschlüsselt werden musss ondern einfach eine art schalter genutzt wird, der beim zugriff sich öftnet und nachdem zugriff auch sofort wieder schließt, das hat den vorteil, das die dateien auch nach einen neustart in keinsterweise unschaubar sind. den zugriff habe ich schon kit einein hex-editoren, ressorucen werkzeugen, filecompilern und dos programm versucht. oft war es so das die programme durch ausnahmefehlern abgestürzt sind. nur ein programm hat es geschafft eine einzige datei herauszufilter, doch diese war nacher nur unvollständig und somit nicht einsetzbar...........

das problem lag bisher an dem beenden des programmes über den taskmanager...........

es wäre zwar keine schwierigkeite die dateien mittels speicher verfügbar zu machen und der engine mittels sdk zu sagen wo sie sind, doch leider habe ich die entsprechenden erfahrungen in profan/cpp nicht........

--------------------------------------------------------------

themawecksel:

ich habe wieder mal prffellow auf meine pc installiert und dabei einen interessanten quelltext gefunden:

.............
If Neq(result&,%desktop)
' nur Fenster mit Stilbit WS_VISIBLE kommen in Frage
If Neq(IsWindowVisible(result&),0)
' Taskbar und Desktop selbst sollen nicht erscheinen
GetClassName(result&,cname#,64)
Let cn$=Upper$(String$(cname#,0))
If Equ(Instr(cn$,Excluded_Classnames$),0)
' Nur Fenster ohne Elternfenster werden angezeigt
..............

dabei bitte ich vorallen auf die kommentare des autors zu achten. er deutet hier darauf hin, das einige fensterstyles nicht angezeigt werden sollen........

nun habe ich mich gefragt, ob dies auch der taskmanager astrg+alt+ent macht.......wenn ja würde es doch sehr viel sinn machen einfach das profan programm der engien als eine art elterfenster unterzuordnen und somit die engien also das spiel und mein porgramm unter einen eintrag im taskmanager laufen lassen.........

das ganze müsste doch mittels sendmessage funken......:

@Setparent(Handel der Engine, mein Profan Programm)

doch nix da, die engine mag nicht so recht............wichtig ist nur das windows mein profan programm als kinderfenster ansieht und der engine unterordnet.............

werde derweil mal ein wenig nachforschen.............

mfg


Seiten: 1 2Zurück zur Übersicht