Entwickler-Ecke
Freeware Projekte - TitanBox
CodeWicht - Sa 28.06.03 13:21
Titel: TitanBox
Ein fröhliches "Hi" an die Delphi-Gemeinde.
Intro: Im Jahre 2002 kam mir die Idee, ein Programm zu entwickeln, das so aussieht wie das Windows-Programm cmd.exe. Nur sollte meins besser und flexibler sein. Anfang 2003 wurde mit den Konstruktionsarbeiten begonnen und ein neuer Stern am Freewarehimmel war geboren - die TitanBox.
Also, bei der TitanBox handelt es sich um ein Konsole-Programm, das auf der Basis von Dlls arbeitet. Es gibt das sogenannte Loader-Programm, das das Management der Dlls übernimmt. Die einzelnen Funktionen werden durch die Plugin-Dlls bereitgestellt. Ziel und Zweck ist es nun, die TitanBox mit sinnvollen Plugins auszustatten.
Derzeit gibt es 3 Zusatz-Plugins, die auf der unten genannten Webseite herunterzuladen sind:
tbsysinfo: Plugin für systeminformationen
tbnet: Plugin für Internet- und Netzwerkzwecke
tbfilesys: Plugin fürs Dateisystem
Diese Plugins befinden sich in einer ständigen Weiterentwicklung. Wenn ihr Interesse an der Entwicklung eigener Plugins habt, dann kreiert welche. In den nächsten Tagen stelle ich eine Muster-Dll zur Verfügung, nach der sich jeder TitanBox-Dll-Programmierer halten muss, um die Kompatibilität zu wahren. Weiterhin werdet ihr eine crt-Unit benötigen, um die Konsolenfunktionalitäten ausreizen zu können. Diese Unit folgt auch in den nächsten Tagen.
Zur Technik: Wie ja bekannt ist, gibt es zwei Möglichkeiten Dlls zu verwenden, die statische und die dynamische Einbindung. Die TitanBox erweitert diese Methoden um die dynamisch-dynamische Einbindung. Dabei muss die TitanBox vorher nicht wissen, welche Plugins zur Verfügung stehen und welche Funkionen bereitgestellt werden. Daraus resultiert, dass man zur Laufzeit neue Plugins einspielen kann und anschließend auch gleich benutzen (die Plugin-And-Run-Methode (PIAR-Methode)). Duch diese Konzept ist es weiterhin möglich, selbst Formulare in Dlls aus der TitanBox zu starten.
Die TitanBox liegt derzeit in der Version 0.4 vor und ist unter
http://www.mbprogramming.de/downloads/Rel-0.4.zip (203 KB)
zu bekommen. Version 0.5 erscheint demnächst mit erweiterten Funktionen in der Basis-Dll.
Weiterhin befinden sich auf
http://www.mbprogramming.de kleine Erklärungen zu den Funktionen der entsprechenden Plugins.
Für Kritiken und Vorschläge bin ich sehr dankbar.
Grüsse CodeWicht. :lol:
Popov - Sa 28.06.03 16:17
Nun ja, es ist noch etwas wenig um sich eine Meinung zu bilden, aber die Idee ist nicht schlecht. Das ganze erinert sehr an die Linux Konsolen. Ist das jetzt nur optisch so, oder erkennt das Programm auch wenn man Adminrechte hat? Weiterhin solltest du an den Editierfähigkeiten der Zeile was tun. Da bietet sogar die Command-Box bessere Möglichkeiten. Und die gelten allgemein als gering. Also etwas mehr Editierfähigkeiten.
Ansonsten ist das Besondere wahrscheinlich die Einbindung der Dll's und somit die Erweitbarkeit. Das kann man noch schwert testen.
CodeWicht - Sa 28.06.03 17:10
Wenn man als Admin eingeloggt ist, dann steht am Anfang der Zeile Admin oder Administrator. Angezeigt wird jeweils der aktuelle Benutzer.
Die angesprochenen Editierfähigkeiten beziehen sich immer auf die Fähigkeiten der Konsole des entsprechenden Betriebssystems. Was die Konsole editieren kann, kann auch die TitanBox. Was genau meinst Du mit besseren Editierfähigkeiten?
Richtig, die Erweiterbarkeit und somit die Individualisierung steht bei diesem Projekt im Vordergrund. Hast Du die Plugins schon ausprobiert?
Grüsse CodeWicht
Popov - Sa 28.06.03 20:34
| CodeWicht hat folgendes geschrieben: |
| Wenn man als Admin eingeloggt ist, dann steht am Anfang der Zeile Admin oder Administrator. Angezeigt wird jeweils der aktuelle Benutzer. |
Das meine ich eigentlich nicht. Soweit ich mich erinnern kann, wird bei Linux ein # angezeigt, wenn man Adminrechte hat oder ein $ bei normalen Benutzern. Das soll nicht heißen, daß es bei dir auch so ist, aber der Rest sieht eben wie in einer Linux-Konsole.
| CodeWicht hat folgendes geschrieben: |
| Die angesprochenen Editierfähigkeiten beziehen sich immer auf die Fähigkeiten der Konsole des entsprechenden Betriebssystems. Was die Konsole editieren kann, kann auch die TitanBox. Was genau meinst Du mit besseren Editierfähigkeiten? |
Es ist heute Standard, daß man sich mit den Cursotasten innerhalb der Zeile hin und her bewegen kann. Dann kann man mit den Cursortasten rauf und runter die letzten Zeilen aufrufen. Das meinte ich damit.
roller - So 29.06.03 10:49
| Zitat: |
Es ist heute Standard, daß man sich mit den Cursotasten innerhalb der Zeile hin und her bewegen kann. Dann kann man mit den Cursortasten rauf und runter die letzten Zeilen aufrufen. Das meinte ich damit. |
mhh also ich hab ja das prog getestet und das was du da beschrieben hast funzt bei mir einwandfrei....
btw: das idee ist echt gut, plugins dafür zu entwickeln möchte ich gerne mal ausprobieren ;)
CodeWicht - So 29.06.03 11:20
@ Popov: Wie schon geschrieben, kann die TitanBox alles das, was deine Windows-Konsole kann. Wenn Win98-Konsole nichts editieren kann, liegt das an der Win98-Konsole. Bei mir mit Windows XP funzt es sehr gut.
Nun die Links für die crt-Unit und die Muster-Dll:
http://www.mbprogramming.de/downloads/crt.zip
http://www.mbprogramming.de/downloads/tbmusterDll.zip
Hinweis zu den zu übergebenden Parametern:
Als Parameter wird ein ShortString übergeben.
In der Dll muss sich eigenständig um die Zerlegung dieses ShortStrings in die benötigten Bestandteile gekümmert werden.
Ich würde mich wirklich sehr freuen, wenn ich die von euch geschriebenen Plugins auf meiner Site veröffentlichen darf. Einfach das fertige Plugin an webmasterATmbprogramming.de schicken.
Danke und viel Erfolg. Und wie immer, bei Fragen an mich wenden!
Cu
Nachtrag: Das $-Zeichen wurde von mir frei und wirklich ohne Hintergrund gewählt. Vielleicht komme ich ja demnächst in die Verlegenheit den Administratorstatus mit einzubinden.
@Plugin-Programmierer: Ich habe ein Bug in der 0.4-Version entdeckt, der es nicht erlaubt, mehr als 1 Parameter zu übergeben. Dieser Bug wird in der Version 0.5, die ich vielleicht heute am Abend noch fertigstellen kann, behoben sein.
tommie-lie - So 29.06.03 12:12
| Popov hat folgendes geschrieben: |
| Es ist heute Standard, daß man sich mit den Cursotasten innerhalb der Zeile hin und her bewegen kann. Dann kann man mit den Cursortasten rauf und runter die letzten Zeilen aufrufen. Das meinte ich damit. |
Da scheint MS zumindest noch in der 9x-Schiene anderer Meinung zu sein.
Wie es bei der cmd.exe von NT aussieht, weiß ich natürlich nicht, aber die command.com-Versionen von DOS 1.0 bis DOS 7.1 (Win98) haben diese Fähigkeit nicht. Mit der Pfeiltaste nach oben bekommt man nicht den vorher eingetippten Befehl, mit den horizontalen Pfeiltasten kann man sich nicht im Befehl bewegen (übrigens wird bei Pfeil-Links rückwärts gelöscht, gleiche Funktion wie Backspace...).
Diese Funktion wird erst durch das Programm Doskey ermöglicht. Wenn das bei dir in der Autoexec geladen wird, schön und gut, dann kann er's, wenn nicht, klappt's eben nicht.
Aber Popov hat schon recht, eine eigene Version dieser Doskey-Erweiterung, die automatisch geladen wird, wäre nicht schlecht.
Popov - So 29.06.03 14:57
| CodeWicht hat folgendes geschrieben: |
| Wie schon geschrieben, kann die TitanBox alles das, was deine Windows-Konsole kann. |
Im Prinzip ist es mir natürlich egal. Nur finde ich, daß es heutzugage ein gewisses Maß am Komfort an einer Eingabeaufforderung geben sollte, unabhängig des OS. Ansonsten werden es viele nicht nutzen. Das ist kein MS DOS wo man es akzeptieren muß.
Als Referenz kan ich dir
4Dos [
ftp://jpsoft.com/4dos] vorschlagen. Ist auch ein Ersatz für die MS Dos Box und bietet, unabhängig des OS, die Editiermöglichkeiten.
mirage228 - So 29.06.03 16:27
Hi,
cooles Programm. Besonders die Plug-in Fähigkeit gefällt mir!
Hab auch gleich ein Plug-In gemacht ;-)
http://www.starwars.newbieboard.de/mirage228/home/dl/tbfilelistcreator.zip
mit diesem plugin-kann man schöne datei list erstellen.
leider funzen die ganze parameter wegen dem bug in der 0.4 net...
aber einfaches suchen geht trotzdem ;-)
mfG
mirage228
CodeWicht - So 29.06.03 18:25
Soooooooo, die Version 0.5 ist fertig.
Was ist neu?
- Parameter-Bug behoben
- neue Funktionen -> echo, batch
- autorun-Batchdatei für TB-Funktionen
Download Version 0.5:
http://www.mbprogramming.de/downloads/Rel-0.5.zip
@mirage228: Schön, freut mich sehr! Hab mir das Plugin mal reingefahren. Es fiel mir auf, dass folgender Befehl keine Ergebnisse liefert:
list_files //rec C:\Windows
Jedoch lieferte mir der Aufruf ohne //rec das Verzeichnis C:\Windows. Vielleicht schaust du nochmal bei der Option //rec nach.
Weiterhin funzte die Funktion datei_groesse nicht!!! :(
Wie sieht es mit der Veröffentlichung des Plugins aus. Darf ich es auf meiner Seite posten? Mit Link zu deinem Speicherort oder solls es ganz und gar auf meine Seite? Kannst Du mir vielleicht so ne kleine Erklärungsliste schreiben, so in der Art wie die Erklärungen auf meiner Seite zu meinen Plugins? Das wäre echt cool :D
@w3seek: Danke für den Beitrag. Vielleicht kann ich Teile davon sinnvoll implementieren, wenn meine crt-Unit an ihre Grenzen gestoßen ist.
@all zu der Editierfrage: Wenn ihr so auf die Editierfähigkeiten pocht, dann saugt euch die Muster-DLL, und schreibt ein DOS-Key-Plugin. Wenn es dann gut funzt, bin ich sehr gewillt, es in einer der nächsten Versionen fest zu verankern. An dieser Stelle zeigen sich hier wunderbar die Vorteile der Idee der TitanBox. Schreibt Plugins um euch das ganze Gerät zu individualisieren. Die TB ist schon so flexibel, warum nutzt ihr das nicht aus?
Grüsse CodeWicht
Alibi - So 29.06.03 19:19
Warum stürzt die Console ab, wenn diese DLL im Pluginordner ist?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| library tbtypefile;
uses SysUtils;
{$R *.res}
procedure typefile(ParamIn : ShortString); stdcall; begin writeln('Dieses Plugin ist nur ein Muster Plugin! Parameter: ' + ParamIn); end;
exports typefile;
begin end. |
CodeWicht - So 29.06.03 19:28
Hä? Also bei mir geht das mit dem Plugin tbtypefile.
Diese Library entspricht genau den Konventionen für die Plugins. Stürzt die Box nur bei diesem Plugin ab, oder bei allen?
Alibi - So 29.06.03 19:38
Wenn ich die fertige DLL in den Ordner Plugins kopiere und dann das Programm starte stürzt es ab. Sobald sie nicht mehr im Ordner ist läuft alles einwandfrei, alle Plugins deiner Seite.
CodeWicht - So 29.06.03 20:10
lad dir mal die 1:1-Kopie der tbtypefile runter und probier mal:
http://www.mbprogramming.de/downloads/tbtypefile.zip
Hört sich echt seltsam an! Welches OS benutzt du? Bislang kann ich mir dieses Phänomen nicht erklären.
OS ist Win2k, habe ich gerade gesehen.
Hast du mal das Plugin anders genannt? Liegt es vielleicht daran?
P.S.: Beim Start der TitanBox greift diese 3 mal auf die tbsystem.dll zu. Alle anderen Plugins bleiben unangetastet, es sei denn, es werden Funktionen aus anderen Plugins in der autorun.tbb aufgerufen.
Alibi - So 29.06.03 21:30
Nope, läuft nicht.
Mag das vielleicht damit zusammenhängen, dass die dll und die exe mit verschiedenen Delphiversionen kompiliert wurden?
CodeWicht - So 29.06.03 22:01
Du wirst lachen, wir haben beide die gleiche Version von Delphi. Also daran liegt es bestimmt nicht. Ausserdem habe ich ja die Beispiel-Dll (tbfiletype) auch kompiliert und die funzt bei dir ja auch nicht.
Das einzige, was ich mir noch vorstellen kann, ist, dass es an den Compiler-Optionen liegt. Danach ist mein Problemlösungspensum am Ende. Komischerweise funzt das Plugin von mirage! Vielleicht hat hier ja noch jemand das Problem und hat noch einen anderen Lösungsvorschlag.
Kannst du mir genau sagen, wie die Fehlermeldung aussieht? Hast du irgendwie ein Screenshot?
Alibi - So 29.06.03 22:37
Eine vernünftige Fehlermeldung kommt nicht. Nur "Die Anweisung in "0x77913acd" verweist auf Speicher in "0x00e70254", der Vorgang "read" konnte nicht auf dem Speicher durchgeführt werden.
CodeWicht - So 29.06.03 23:19
welche Version hast du benutzt? 0.4 oder 0.5?
Alibi - So 29.06.03 23:24
0.5.
0.4 hab ich nie ausprobiert.
CodeWicht - So 29.06.03 23:47
Probier dann mal die 0.4er Version.
BungeeBug - Mo 30.06.03 13:36
HI,
Cool gefällt mit gut ... ich werd auch mal nen paar Plugins Proggen ... darf ich auf meiner HP zu deiner Linken?
MfG BungeeBug
CodeWicht - Mo 30.06.03 16:25
Danke, ja du darfst linken, unter einer Bedingung:
Wenn du Plugins schreibst, schicke mir bitte eine Liste mit den Funktionen und ner Beschreibung dazu. Den Download entweder auf meiner Seite oder ein Link zu deiner. OK?
Grüsse.
BungeeBug - Mo 30.06.03 16:44
Wird gemacht Chef :)
kannst dich ja mal per ICQ bei mir melden!
MfG BungeeBug
CodeWicht - Mo 30.06.03 21:41
neueste Bug-Veröffentlichung:
Bug in der tbnet.dll, Funktion ipinfo:
Wenn nicht alle IP-Adressen initialisiert sind (z.B. ein Netzwerkkabel nicht angeschlossen) und man ruft ipinfo auf, dann stürzt die TB ab. Ich werde mich in den nächsten Tagen um ein Update kümmern.
@mirage228:
Bug in der tbfilelistcreator.dll, Funktion datei_groesse:
Ruft man datei_groesse ohne Parameter auf, dann segelt die TitanBox weg. Wenn du wieder da bist, dann nimm dir das nochmal vor.
maximus - Di 01.07.03 00:41
gefällt mir...hat potenzial :wink:
Was hälst du von ner autocomplete funktion für befehle (und verzeichnisse) in der eingabe?
Dieses prog schreit geradezu nach einem verzeichnis-zugriff via 'cd' und 'dir' etc..was meinste?
ich hätte noch ne menge ideen :D zb. könntest du eingabe-zeilen-plugIns zulassen, indem du vor dem schreiben, der zeile, den string durch eine dynamische procedure pipen lässt. Dann könnten wir zusatz-infos, wie aktuelles verzeichnis etc., anzeigen und verwalten.
mfg maximûs
kiwicht - Di 01.07.03 08:48
sehr schönes Programm CodeWicht, Respekt!
Wenn sich mir mal die Geheimnisse der DLL-Programmierung eröffnen, gibbet von mir auch einige PlugIn's! ;)
bis dahin
mfG
CodeWicht - Di 01.07.03 12:37
@kiwicht: Wäre nett, wenn was von dir kommen würde! Ist im Prinzip ziemlich einfach, zieh dir mal die musterdll und schau es dir an.
@maximus: Das mit den Eingabe-Zeilen-Plugins musst du mir noch mal genauer erklären, was du da speziell meinst! Genauso mit der autocomplete-Funktion. Ordne mal deine Gedanken und poste sie, damit ich dir sagen kann, ob das gehen wird.
Der Verzeichniszugriff ist sowieso vorgesehen. BungeeBug hat gesagt, er probiert was zu basteln, ich greife die Idee auch auf. Überrasche uns doch mal mit einem Plugin, das die ganze Geschichte handelt. Download der musterdll findest du weiter oben.
So muss jetzt weiter arbeiten. Bis heute Nachmittag.
tommie-lie - Di 01.07.03 14:27
| CodeWicht hat folgendes geschrieben: |
| @maximus: Genauso mit der autocomplete-Funktion. |
Unter Linux kann man, wenn man z.B. cd /m eingibt und dann Tab drückt, den Verzeichnisnamen vervollständigen. Wenn es mehrere Möglichkeiten gibt, wird eine Liste alle Verzeichnisse, die mit m anfangen ausgegeben und man muss weitere Buchstaben angeben.
Genauso mit Befehlen. Würde es nur einen Befehl geben, der mit l anfängt, würde l + Tab + <Enter> schon reichen, um ls zu haben, bringt natürlich nichts, weil man keine Taste spart, aber bei längeren Befehlsketten mache ich sowas auch ziemlich gerne, wenn ich dran denke die Funktion zu benutzen.
Da der Stress in der Schule nun vorbei ist, werde ich mir die Box auch mal genauer anschauen und mich an dem ein oder anderen Plug-In versuchen. Z.B. einen Tastaturwrapper (falls möglich), meine DOS-Box kotzt mich wegen Konflikten mit dem Joystick nämlich total an...
maximus - Di 01.07.03 15:16
@ Eingabe-Zeilen-Plugins: zB. wenn BungeeBug eine verzeichniss verwaltung-proggt, dann kann er jetzt nicht das aktuelle verzeichnis, in der Kommandozeile darstellen (wie bei jeder console), ohne das haupt-programm zu modifizieren! Das könnte man lösen, indem ein PlugIn eine, speziell benannte, funktion exportiert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure pipeCommandLine(var commandLine:string); begin commandLine := commandLine + ACT_win_dir; end;
... exports: pipeCommandLine; |
Wenn das plugIn jetzt registriert wird, sucht dein prog, in jedem, nach dieser routine und registriert sie gesondert.
Vor dem ausgeben der kommando-zeile wird diese dann durch alle registrierten 'pipeCommandLine' routinen gejagt, womit BungeeBug dann in lage wäre das aktuelle windows-arbeits-verzeichnis ranzuhängen :D ...wär das was?
vielleicht kann man was ähliches für die Tab-autoComplete-funktion machen?
Wär halt ne API erweiterung, die den vorteil hätte, das du nicht jedesmal neue sachen mit ins hauptprogramm compilieren musst.
mfg maximus
PS: :idea: wenn das mit Dlls geht, wären auch ein paar events nicht von schlechten eltern...quasi das selbe nur andersrum.
mimi - Di 01.07.03 15:37
nicht schlecht das programm, mir fälhen nur folgende befehle:
Alieas
Dir
// leitet unter dos die ausgaben in einer datei um
>> // fügt hinzu
> // legt eine neue datei an
Tab tasten funktion:
(wie unter linux)
Promt - damit kann man den Promt ändern
könntet ihr diese befehle wohl noch hinzufügen ?
maximus - Di 01.07.03 15:42
@mim: darüber reden wir doch die ganze zeit...und fehlende funcs kannst du ja auch selbst schreiben!...dafür is ja das PlugIn system da :wink:
mimi - Di 01.07.03 15:52
ich habe nicht alles gelsen:)
ich kenne mich mit der dll programierung leider nicht aus. und so ist es für micht unmöglich:)
wie wäres wenn du es wie linux bzw. dos machst:
baust dir ne einfache kleine comandozeilen scripsprache und fertig:)
unter dos war das ja die bat dateien.....
tommie-lie - Di 01.07.03 15:54
Hmm, ist es eigentlich Absicht, daß alle Plugins (auch das Beispielplugin und die "Originalplugins" von deiner Homepage) nicht laufen?
Sobald etwas anderes außer tbsystem.dll im Plugin-Verzeichnis ist, gibt's eine Zugriffsverletzung in einem unbekannten Modul.
TBVersion 0.5
Win98 SE
512MB RAM
Das dürfte doch eigentlich die Mindestanforderungen für DLLs decken, oder?
Aber ansonsten wäre eine Änderung des prompts wirklich nicht schlecht, das habe ich noch nicht gefunden.
Und Verzeichniszugriff wäre auch nicht schlecht, aber beides lässt sich ja mit Plugins nicht machen...
mimi - Di 01.07.03 15:59
warum nicht ?
das läst sich mit plungs regeln... würde ich mal sagen. nur die frage ist wie?
mal sehen ob das programm wirklich einmal so stack wird wie die cmd bzw. wie die linux comanozeile:)
tommie-lie - Di 01.07.03 17:18
Was heißt hier warum nicht?
Schau dir doch die Beispiel-DLL wenigstens mal an...
Man kann nur Befehle hinzufügen, aber nicht Funktionalität der Box selber ändern. Die Schnittstelle zu den Plugins erlaubt das einfach nicht (oder ich habe es selber noch nicht rausgefunden ;-) ).
Genauso wenig wie man zur Zeit den Verzeichniszugriff automatisieren kann. Wenn man zum Beipsiel den Befehl cd implementieren will, muss man immer als Parameter das Verzeichnis angeben, oder eben alles manuell machen, indem man das Windows-Verzeichnis ändert (mit eigenen Funktionen). Das hätte aber wiederum den Nachteil, daß bei gleichzeitigem Arbeiten mit Windows einige Programme ständig ihr Standardverzeichnis ändern, weil man in der Box grad' was anderes gemacht hat. Ob das in der normalen DOS-Box auch so ist, weiß ich im Moment nicht, aber das wäre auf jeden Fall ein Vorteil!
Wenn die Plugins funktionieren würden, hätte ich nämlich genau sowas gemacht. Die Standard-Befehle, die schon in der command.com implementiert sind (cd, dir, del...) in die Titanbox machen, mit entsprechenden Function-Aliases zu Linux-Funktionen, damit beide Anwendergruppen zufrieden sind. Da wäre eine Verzeichnisverfolgung nicht schlecht...
CodeWicht - Di 01.07.03 17:45
Moin,
@maximus: Dein pipcommandline ist im ansatz nicht schlecht. Es gibt eine noch viel einfachere variante, die ich schon mal geplant hatte. Ein Plugin beinhaltet sämtliche Verzeichnis- und Dateizugriffsroutinen. Mit der Funktion filemode versetzt man die TB quasi in den Dateimodus. Es wird einfach ein Plugin über die TB gelegt. Denn solange das Plugin aktiv ist, macht es nur das, was das Plugin will. Ist man fertig mit dem filemode, wird einfach noch ein filemode abgeschickt und beendet diesen und man kommt wieder zum prompt.
Damit gelangen wir auch gleich zu der Frage des Prompts. Sicher kann ich das so umstricken, das man den Prompt ändern kann. Aber ich fand/finde es lästig, wenn ich ne cmd aufmache und in einem sehr tiefen Dateipfad hänge, das dann das ganze zu unübersichtlich wird. In Linux ist es standardmäßig so, das man das aktuelle Verzeichnis nicht sieht. Aber das ist bestimmt einfach nur eine Geschmackssache. Wie soll denn eurer Meinung nach der Prompt aussehen?
Mit der autotab-funktion kann ich sicherlich was machen. Das geht aber nur direkt an der TB-Api, also im Loader-Programm.
Weiterhin kann man auch, wie in Linux, mit pwd das aktuelle Verzeichnis abrufen. Einfach ein Plugin gecodet und fertig.
@mimi: Seit der Version 0.5 kann man auch quasi TitanBoxBatch-Dateien ausführen.
@tommie-lie: Eigentlich ist es nicht Absicht, dass alle Plugins nicht funktionieren. Ich habe die TB mit Win98, NT4, Win2k und WinXP getestet und es lief. Nur ist mir aufgefallen, das Win98 nicht ganz mit der Textfarbe zurande kommt. Ich bezeichne es mal als Kollateralschaden!
Übrigens meldete Alibi, das es bei ihm auch nicht funzte. Warum weiss ich auch nicht.
Sollte die TB keine Plugins finden, läuft das Teil trotzdem. Daran kann es auch nicht liegen.
Probier mal die Testversion und berichte:
http://www.mbprogramming.de/downloads/Version0.5Test.zip
maximus - Di 01.07.03 17:49
//edit bezug auf eins höher^
GENAU...ich bin dafür, dass der source offengelegt wird :lol: nur für API erweiterungen :wink:
CodeWicht - Di 01.07.03 17:52
:eyecrazy:
maximus - Di 01.07.03 18:04
ÔK..ich geb ja zu, dass ich da ien bisschen viel verlange.
Aber...ein zwei standart routinen (die mit dem gleichen namen in allen Plugs) wären doch drinn oder? zB zum listen aller copy-rights oder hilfen zu den exports, eines plugIns. Dann könnte man > $ list plugIns sagen und schwups...gibt jeder programmierer seinen senf, anstatt es in jeder funktion zu tun!?
mimi - Di 01.07.03 18:14
wie wäres wenn es ein openSoruce projekt wird ?
CodeWicht - Di 01.07.03 18:23
Es ist möglich in jede DLL eine Standardroutine einzubinden (z.B. autor). Es werden dann alle Funktionen autor in allen DLLs ausgeführt. Das kommt dann einem Bildschirmspammen sehr nah. Am besten ist es, wie mirage228 es in seinem Plugin vorgeführt hat, einen entsprechenden Autor, Home und etc. Hinweis zu implementieren.
Schau dir mal den tbfilelistcreator von mirage228 an, ich denke so ist das ein guter weg.
CodeWicht - Di 01.07.03 18:30
Einem Open-Source-Projekt stehe ich ein wenig skeptisch gegenüber. Ich habe das Prog so konzipiert, das jeder die Möglichkeit hat, sich die TB zu individualisieren. Ich habe dafür die Schnittstellen preisgegeben, damit jeder davon was hat.
Ich bitte um Verständins, wenn ich derzeit den Quellcode, insbesondere den Loader-Engine-Source, nicht offenlege.
Wenn ihr mir Vorschläge zu Verbesserungen und/oder Anpassungen gebt, werde ich mich gerne daran setzen und diese umsetzen!
Grüsse CodeWicht.
tommie-lie - Di 01.07.03 18:46
Das ganze geht auch ohne veröffentlichung des Quellcodes.
Man müsste nur bestimmte Ereignisse registrieren können, die dann mit eigenen Funktionen bearbeitet werden. Z.B. "Pfeil nach oben". Damit kann man dann alles machen, ob man nun die Lautsärke regelt oder die Bildschirmhelligkeit ändert.
| CodeWicht hat folgendes geschrieben: |
| Mit der Funktion filemode versetzt man die TB quasi in den Dateimodus. Es wird einfach ein Plugin über die TB gelegt. Denn solange das Plugin aktiv ist, macht es nur das, was das Plugin will. Ist man fertig mit dem filemode, wird einfach noch ein filemode abgeschickt und beendet diesen und man kommt wieder zum prompt. |
Vielleicht einfacher zu implementieren, aber für mich als Anwender wäre das zu kompliziert.
Ich müsste mich, wenn ich damit arbeite, ja schon damit abfinden, daß ich ein @ vor Programme stellen muss, die ich ausführen will.
Wenn also ein automatisches Directory-Tracking dazukommt, bitte ich darum, nicht-registrierte Befehle automatisch als Dateinamen zu sehen und im aktuellen Verzeichnis nach etwas ausführbarem zu suchen ;-)
| Zitat: |
| Wie soll denn eurer Meinung nach der Prompt aussehen? |
Wie bei mir unter Linux:
Benutzername und dann das aktuelle verzeichnis, aber nur den letzten im Stamm.
Ist man im Verzeichnis C:\a\b\c\, wird nur c\ angezeigt, der Rest davor wird nicht beachtet.
| Zitat: |
| @tommie-lie: Eigentlich ist es nicht Absicht, dass alle Plugins nicht funktionieren. |
Gut, ich dachte schon ;-)
| Zitat: |
| Nur ist mir aufgefallen, das Win98 nicht ganz mit der Textfarbe zurande kommt. |
Ich weiß zwar nicht, wie es aussehen sollte, aber ich finde die Farbe so okay. Ist nämlich grau auf schwarz wie in der DOS-Box
Die Testversion werde ich gleich mal ausprobieren.
CodeWicht - Di 01.07.03 19:01
Mit dem Directory-Tracking und dem Prompt bin ich einverstanden und sehe es auch als sinnvoll an. Ich werde mich darum kümmern.
Mit der Textfarbe und Windows 98 meinte ich, wenn man die textfarbe ändert, könnte es zu Darstellungsfehlern kommen!
mimi - Di 01.07.03 20:18
promt $D$G war das glaube ich unter dos:)
ja, ok so wie linux, aber dann muss die consle auch die gleichen eingenschaften haben, also das mit den verzeichnis erweiterungen... und sowas halt.
und wie wäres mit ne eigenen kleinen scriptsprache ?
z.b. sowas wie die batch. das man auch als nicht delphi programmiere die funktioen erweiteren könnte.
CodeWicht - Di 01.07.03 20:31
So, ich habe den Bug in der tbnet.dll bereinigt und noch ein Wake On LAN hinzugefügt. Wäre cool, wenn das mal jemand testen könnte!
http://www.mbprogramming.de/downloads/tbnet-0.2.zip
@mimi: Es spricht nichts dagegen eine eigene Scriptsprache zu basteln. Ich muss mich erstmal um die grundlegenden Funktionalitäten kümmern. Deshalb bist du prädestiniert, solch eine Script-Engine zu schreiben. Bleibt nur noch die Frage, was sollen die Scripte machen (an was denkst du da?) und an welche Stelle muss ich die engine dann implementieren?!
tommie-lie - Di 01.07.03 20:36
Die Testversion geht auch nicht.
Zwar stürzt die Box jetzt nicht mehr beim starten ab, dafür aber wenn ein Befehl eingegeben wird. Der wird dann ausgführt (sofern möglich) und danach gibt's wieder 'ne AV und Ende Gelände.
Seltsam nur, daß das ganze nicht bei der tbsystem.dll auftritt. Ist die irgendwie anders eingebunden?
Eine Scriptengine halte ich persönlich für überflüssig. Es gibt das normale Batch-System. Und wer die funktionalität selbst erweitern will, muss sich dafür die Scriptsprache aneignen. Außerdem "programmiert man nicht mal eben so" etwas, wer eine Scriptsprache richtig beherrschen will, sollte sowieso programmieren können, bzw kann's danach.
CodeWicht - Di 01.07.03 20:47
HHHHHHMMMMMMMM, gut dann liegt es an der Loader-Engine. Hast du noch ein anderes OS zum Testen? Es muss irgendetwas mit den Einstellungen in deinem OS zu tun haben. Anders kann ich mir das nicht mehr erklären! Warst du als Administrator angemeldet? Wenn nicht, probier das mal. *letzteMöglichkeit*.
tommie-lie - Di 01.07.03 20:51
| CodeWicht hat folgendes geschrieben: |
| Hast du noch ein anderes OS zum Testen? |
Guckst du links unter meinen Namen.
Nur Linux Mdk8.1.
Aber das wird es wohl nicht bringen, denke ich *g*
| Zitat: |
| Es muss irgendetwas mit den Einstellungen in deinem OS zu tun haben. Anders kann ich mir das nicht mehr erklären! Warst du als Administrator angemeldet? Wenn nicht, probier das mal. *letzteMöglichkeit*. |
Administrator? Nö. Win9x hat keinen Admin ;-)
Aber praktisch bin ich Administrator, weil ich alle Rechte habe.
CodeWicht - Di 01.07.03 21:00
man datt is echt reudig!!! lad dir mal dllexports runter und jag die dlls mal dadurch, vielleicht kommen wir so der sache näher!
tommie-lie - Di 01.07.03 21:16
Das DLLExports, das ich gefunden habe (von Zabolav Max, vom 1.5.'99)sagt folgendes zur tbsysinfo.dll und tbsystem.dll:
| Zitat: |
File path: D:\Tools\TitanBox\plugins\tbsysinfo.dll
File Name: tbsysinfo.dll
Win32 Dll tbsysinfo.dll Loaded.
Adr Code...24482
Count...192
******** Export Table ********
cpuspeed
meminfo
File path: D:\Tools\TitanBox\plugins\tbsystem.dll
File Name: tbsystem.dll
Win32 Dll tbsystem.dll Loaded.
Adr Code...159993
Count...1251
******** Export Table ********
batch
cls
echo
exit
explorer
scrmode
tbversion
textbgc
textc
winversion |
Ich wüsste nicht, was das bringt...
Hätte ich den Quellcode, wüssten wir wenigstens wo der Fehler auftritt und könnten dann rauskriegen, warum der das so macht. Aber ich verstehe auch, daß du den Code nicht veräffentlichen willst.
mimi - Di 01.07.03 21:41
| Zitat: |
@mimi: Es spricht nichts dagegen eine eigene Scriptsprache zu basteln. Ich muss mich erstmal um die grundlegenden Funktionalitäten kümmern. Deshalb bist du prädestiniert, solch eine Script-Engine zu schreiben. Bleibt nur noch die Frage, was sollen die Scripte machen (an was denkst du da?) und an welche Stelle muss ich die engine dann implementieren?!
|
warum ich ? naja könnte ich machen, aber dann muss man mit der consle auch prima dateien erstellen können sonst bringt das nichts. und sowas wie "vi" sollte es auch geben, würde ich mal sagen.
nur die frage ist: wie schreibe ich sie ?
mit dlls kenne ich mich leider nicht aus. und eine scrip Sprache habe ich auch noch nie geschrieben :(
ich dachte an sowas wie batch bzw. "Profi Batch" kenn das jemmand ?
ist ein uraltes das programm von 1992 das kann richtig viel:)
und ist halt auf batch ausgelegt... sowas wollte ich wohl reinbringen.
für eine richtige scripsprache ist es jetzt noch zu frühe nach meiner meinung.
CodeWicht - Di 01.07.03 21:55
Aber seit Version 0.5 ist doch eine Batch-Funktion mit integriert!
CodeWicht - Di 01.07.03 22:09
Wenn es Probleme mit der Box gibt, zum Beispiel das sie gleich beim Start wieder abstürzt, dann liegt das an der imagehlp.dll. Eine neue besorgen und schon sollte es funzen!
Grüsse
maximus - Di 01.07.03 23:14
hab grad festgestellt, dass wenn man zwei plugins hat, mit der gleichen funktion drinn, dann werden beide funktionen hinternander ausgeführt. Ergo ist es für uns nur definitions sache, standard-funktionen zu bestimmen.
Ich fang mal an:
'ListPlugIns' = jedes plugIn gibt einfach nur sein namen mit kurzbeschreibung, in einer zeile, via writeLn , aus (nicht bunt) |tbSystem - System plugIn mit vielen tollen commandos ;)
'ListCommands name' = wenn der name zutrifft, oder kein parameter übergeben wurde, dann schreibt jedes PlugIn eine zeile header und darunter eine zeile pro befehl, mit kurzbeschreibung, in einer zeile, via writeLn!
'ListHeader name' = name wie oben! jeder darf einen header, 5 zeilen, bunt schreiben!
Was haltet ihr davon? ...so kann man sich leichter einen überblick, über die plugIns, verschaffen. Gerade wenn es mal mehr werden, könnte es von vorteil sein, wenn wir das am anfang einführen...bevor es zu spät ist :? ...und es vielleicht sogar in die muster dll schreiben.?
maximus - Mi 02.07.03 00:45
so stellte ich mir das vor:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure ListPlugIns(ParamIn : ShortString); stdcall; begin WriteLn('TitanMX - Service PlugIn by mâximüs'); end;
procedure ListCommands(ParamIn : ShortString); stdcall; begin if (ParamIn = '') or (pos('titanmx',LowerCase(ParamIn))>=1) then begin WriteLn('[-- TitanMX - Written by mâximüs --]'); WriteLn('time [run [color]] - DateTime output! Optional running and colored ;)'); end; end;
...
exports ListPlugIns, ListCommands, ...; |
können wir auch noch näher spezifizieren :D
CodeWicht - Mi 02.07.03 14:31
Einverstanden. Heute oder morgen werde ich dann ne final-musterdll posten und zum download zur verfügung stellen.
maximus - Mi 02.07.03 15:08
JUHUU :D
Was macht die implementierung der neuen features? *grinst ungeduldig*
PS: wenn ich mit writeXY was zeichne, dann zeichnet er immer ganz oben. Könntest du eine funktion einführen, mit der man die akktuelle position beim cursor bekommt? Hab das mit getConsoleScreenInfo probiert, die koords waren aber nicht korrekt :?
CodeWicht - Mi 02.07.03 18:17
Das ist so ne Sache mit den XY-Coord.. Ich probiers irgendwie herauszubekommen. Könnte aber unter Umständen etwas dauern.
Zu den neuen Features: Ich bin gerade in der Planungsphase. Bevor das aber gemacht werden kann, muss ich aus Kompatibilitätsgründen die Loader-Enigne umstricken. Und das dürfte etwas dauern!!! *leider*
CodeWicht - Do 03.07.03 13:22
Hab ich ganz vergessen: Schick einfach ein ClearScreen drüber, dann stimmen die Coordinaten wieder.
maximus - Do 03.07.03 13:54
| CodeWicht hat folgendes geschrieben: |
| Hab ich ganz vergessen: Schick einfach ein ClearScreen drüber, dann stimmen die Coordinaten wieder. |
^
du bist ja lustig...dann is ja alles wech :?
CodeWicht - Do 03.07.03 15:38
:autsch: .. gut, ich bitte um streichung des letzten eintrags aus dem protokoll.
mimi - Fr 04.07.03 19:08
und wie werst noch mit einem dir befehl ?
am besten so wie der von linux. also das verzeicnis rot angezeitg werden z.b. und dateien grün und sowas....
BungeeBug - Fr 04.07.03 19:47
Hi,
ich arbeite dran ... aber im mom hab ich echt nicht viel Zeit ... ausserdem warte ich auf die nächste Version des Loaders , nich das ich ne DLL schreibe die dann nicht mehr geht ... aussderm sind die Vorraussetztungen für den dir Befehl noch nicht gegeben.
MfG BungeeBug
mimi - Fr 04.07.03 21:35
ich finde solche standart befehle sollte die titanbox gleich mitbringen oder ?
so wie die command.com bzw. die cmd.
BungeeBug - Sa 05.07.03 14:08
ich arbeite dran :)
MfG BungeeBug
Anonymous - Mo 07.07.03 20:10
hoi!
ich habe auch ein "filetool" geschrieben. (ist nicht als konkurenz gedacht, ich wusste von deinem nichts)
ich habe folgende funktionen:
Quelltext
1: 2: 3: 4: 5: 6:
| dir: Wie "dir" in der Windows-Konsole, aber ohne Parameter. cd: Wie "cd" in der Windows-Konsole. pause [-c]: Wie "pause" in der Windows-Konsole. Parameter "-c" unterbindet Textausgabe. sleep x: Wartet x Millisekunden. del Datei: Löscht eine Datei (keine Dateimasken) start Datei: Startet Datei. |
kann man aber auch alles in der Readmedatei nachlesen.
[EDIT]
Ahrg, jetzt hab ioch den link vergessen: :roll:
http://mitglied.lycos.de/wheeeela/dl.html
mimi - Mo 07.07.03 20:22
ich finde wir sollte uns auf einen standart einigen, so das es nicht zu viele unterschiedliche dir behfel gibt, ich finde einer reicht oder nicht?
könntet ihr nicht zusammenarbeiten und euch absprechen ?
damit wir später dann nicht 1000 dir befehle haben und uns überlegen müssen welche wir nehmen....
Anonymous - Mo 07.07.03 20:56
Wie wärs damit:
ich benenne meinen befehl in dirms um und dann hat sichs. (ist doch eindeutig, oder?)
ich habe gerade mein zweites plugin fertig (ein Brainfuck interpreter)
http://mitglied.lycos.de/wheeeela/dl.html
ach ja:
ich finde alle Befehle sollten rückgabewerte haben und der rückgabewert des zuletzt aufgerufenen Befehls sollte dem Befehl ebenfalls übergeben werden. (sowas wie errorlevel)
BungeeBug - Mo 07.07.03 21:45
es macht ja keinen Unterschied ob die Befehle anders heissen oder nicht ... sie machen das gleicht .. und das ist unnütz ...
MfG BungeeBug
P.S.: Meine DLL hat nen Error Handling :=)
mimi - Mo 07.07.03 22:15
was ist ein "Brainfuck interpreter" ?
ne man könnte die befehle auch überladen, das programm sucht sich dann den befehl rauß den man mit den passenden paremetern aufgerufen hat, ist aber auch blöd. besser wäre ein dir und ein copy befehl mit vielen funktionen.
mimi - Di 08.07.03 13:49
beide dlls lösen fehler beim start auf.
CodeWicht - Di 08.07.03 13:54
@mimi: Eine Überladung ist nicht möglich, da man aus einer DLL auf normalem Weg die Parameter nicht herausfindet!
@BungeeBug: An den Aufrufkonventionen wird sich nichts ändern! Alle Plugins werden (wahrscheinlich) immer funzen!
@obbschtkuche: Was ist ein brainfuck interpreter?
CodeWicht - Di 08.07.03 13:55
welche dlls?
tommie-lie - Di 08.07.03 14:38
Was ein Interpreter ist, ist hoffentlich klar, und für den anderen Teil:
BRAINFUCK
mimi - Di 08.07.03 15:36
alle dlls die ich nehme sind schortt nur nicht die system.dll die funktioniert :roll:
CodeWicht - Di 08.07.03 15:41
Das liegt wahrscheinlich an der imagehlp.dll im windows-verzeichnis. besorg dir mal eine neuere version. dann müsste es funzen!
mimi - Di 08.07.03 16:03
könntes du mir die mal zu senden ?
weil ich weiß nicht wo ich suchen soll:)
O'rallY - Di 08.07.03 17:30
Ist recht interessant dein Projekt, doch ist das Problem bei solchen Projekten oft die Standardiesierung. Z.B. finde ich, dass jeder Befehl eine Hilfe haben sollte die z.B. mit /? oder --help oder sowas aufgrufen werden kann. Desweiteren sollte auch eine Vereinheitlichung der Parameter eingeführt werden, so dass Paramater z.B. nur mit /x oder -x o.ä. aufgerufen wird.
Aber sonst: Weiter so. Bin gespannt was aus dem Projekt wird (vielleicht helfe ich bei Gelegenheit auch mal ein bisschen mit).
CodeWicht - Di 08.07.03 17:49
Ja Du hast Recht. Ich bin gerade dabei alle quasi Standards zu formulieren.
@all: Ich arbeite gerade an der Veriosn 0.6. Die neueste Erneuerung :) wird wohl der Prompt sein. Man wird dann die Auswahl zwischen dem altbekannten Prompt "[Benutzername@System]$ ", einen langen Datei-Prompt z.B.: "[C:\Windows\bla\]$ " und einem kurzen Datei-Prompt wie z.B.: "[C:\..\system32\]$ " haben. Bei der Realisierung des Prompt stecke ich aber zur Zeit in einer Bredouille: Realisiere ich die Prompt-Funktionen im Loader oder stecke ich sie in die tbsystem.dll. Würde der Prompt im Loader stecken, könnte man die Funktionen nicht im Batch-Betrieb nutzen. Bei der DLL-Variante müsste ich aber eine Abhängigkeit zwischen dem Loader und der tbsystem.dll schaffen, d.h., dass wahrscheinlich die TitanBox ohne die tbsystem.dll überhaupt nicht mehr funzen würde (derzeit ist es ja möglich auch ohne Dlls mit der TB zu arbeiten). Aber das teste ich noch.
Könnt ihr das Problem mal erörtern?! Danke.
Ein weiteres neues Feature wird das Starten von Programmen in den entsprechenden Pfaden sein. D.h. es fallen wahrscheinlich die Optionen "@" und "explorer" weg.
mimi - Di 08.07.03 18:43
das sollte zu den standart funktionen gehören so wie dir in der cmd drin ist.
Anonymous - Di 08.07.03 19:03
| Zitat: |
| ich finde alle Befehle sollten rückgabewerte haben und der rückgabewert des zuletzt aufgerufenen Befehls sollte dem Befehl ebenfalls übergeben werden. (sowas wie errorlevel) |
Ich kann mich nur wiederholen.
Ich bastele gerade an einer Scriptsprache speziell für die Titanbox. Hat jemand interesse mitzumachen? Der Compiler für Bytecode ist schon relativ fortgeschritten.
@CodeWicht:
Es wäre gut wenn der prompt in einer Dllfunktion stecken würde, damit man sich auch selbst prompts bauen könnte.
Und, heißt das was du als letztes geschrieben hast, dass man in der lage sein wird, dos-programme direkt in der titanbox auszuführen? Wenn ja, würde es mich interessieren, wie du das machst :D
mimi - Di 08.07.03 21:03
die datei wird leider gerade von windows verwendet, kann man dlls irgenwie auf pause schaltet oder sowas, damit ich die neue dll drauf kopieren kann ?
oder wie habt ihr es angestellt ?
CodeWicht - Di 08.07.03 23:44
hhmm eine scriptsprache für die TB hört sich gut an!!!!
@obbschtkuche: Ja ich versuche mal dos-programme in der TB zu starten. es wird darauf hinauslaufen, das ein dos-prog gestartet wird und die ausgaben aufgezeichnet werden und diese dann in dem TB-Fenster erscheinen. Aber mal sehen, wie ich das am dümmsten mache kann.
Die Plugins werden keine rückgabewerte erhalten. es macht keinen sinn, da der DLL-Loader sich für die rückgabewerte nicht interessiert. alle fehlerabfragen und errorlevel müssen in den plugins selbst verarbeitet werden. wozu möchtest du die rückgabewerte verwenden? was soll damit bezweckt werden?
Grüsse
BungeeBug - Mi 09.07.03 06:55
Hi,
wie siehts nun mit na I-Net Kombo Sammlung aus? Is da schon was in planung / ausführung oder soll ich mal den Anfang machen?
MfG BungeeBug
CodeWicht - Mi 09.07.03 11:47
gut sieht es damit aus, die tbnet.dll hat schon ne ipinfo und ne wol funktion. es werden ping und tracert auf basis von threads folgen. ein packet-sniffer ist auch in planung. alles andere steht noch offen!!!
CodeWicht - Mi 09.07.03 12:42
Titel: Die Standards
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| library tbmuster;
uses SysUtils;
{$R *.res}
procedure listplugins(ParamIn : ShortString); stdcall; begin writeln('DLL-Name - kurze Erklärung - Autor'); end;
procedure listcommands(ParamIn : ShortString); stdcall; begin writeln('[-- Name des Plugins - Autor --]'); writeln('Kommando [Parameter] - kurze Kommando-Erklärung'); ... end;
procedure muster(ParamIn : ShortString); stdcall; begin writeln('Ein Muster!'); end;
exports listplugins, listcommands, muster;
begin end. |
auch als datei:
http://www.mbprogramming.de/downloads/tbmusterDll.zip
Die Funktionen listplugins und listcommands werden bei der Eingabe von help nicht in der TB erscheinen. Sie werden geblockt, sind trotzdem aufrufbar. Hintergrund: Wenn man 20 dll's hat und help absetzt, dann steht dann 20 mal listplugins etc. :( Das wollen wir aber nicht!
Weiterhin wird es eine man-Funktion geben, die die funktionen listplugins und listcommands einer angegebenen DLL ausführt.
BungeeBug - Mi 09.07.03 15:46
Hi,
so meine DLL ist auch zum neuen Standart kompatibel ...
MfG BungeeBug
P.S.: Link ist der gleich.
mimi - Mi 09.07.03 17:02
ich kann es leider noch nicht testen da ich das programm bei fremde dlls abstürtzt(mit einer fehlermeldung).
Anonymous - Mi 09.07.03 17:56
@Codewicht:
Rückgabewerte brauche ich für befehle wie choice.
meine Scriptsprache kann jetzt ein paar befehle: readln, inc, dec, print
aber bis jetzt gibt es nur integervariablen. Vielleicht setze ích mich heute abend noch mal dran.
Als nächstes sollen strings und dann sprungbefehle und/oder funktionen kommen.
Hat jemand interesse mitzumachen?
ich werde meine plugins auch demnächst an den standard anpassen.
maximus - Mi 09.07.03 18:28
Ist schon ein befehl in planung, mit dem man ein kommando an die konsole absetzen kann?
mimi - Mi 09.07.03 19:33
@obbschtkuche
ja ich, aber ich kenne mich noch nicht mit dlls progammierung aus, aber ich denke so schwer wird es auch nicht sein oder ?
Anonymous - Do 10.07.03 20:19
@mimi: das problem ist nicht das dll-programmieren. Im Moment ist das einfach ein Projekt, das mit library anfängt und zwei funktionen enthält, die hinter einem exports stehen.
Gib mir mal deine E-Mail-Adresse, dann kann ich dir das ding schicken und noch ein bissl informationen dazu. (Aufbau des bytecodes usw.)
mimi - Do 10.07.03 21:24
@obbschtkuche
habe dir ne pm gesendet mit meiner mail addresse.
möchte nämlich vermeiden das mich die spamer ausfindeg machen mal sehen ob es klappt:)
Anonymous - Fr 11.07.03 20:08
ok, ich hab es dir geschickt. Das kommentieren hat mich fast umgebracht, abr jetzt verstehe ich wenigstens meinen code :D
das in dem unterverzeichnis ist der compiler (das windowsprogramm), das andere der interpreter (oder wie das heißt). Die dll hab ich jetzt nicht drin.
mimi - Fr 11.07.03 20:31
@obbschtkuche
ich schaue es mir mal an.
vileicht sollten wir per PM weiter über die scrip sprache reden oder ?
bzw. per mail
Anonymous - Fr 11.07.03 22:35
per mail ist fürs erste gut. ich werde mir demnächst mal ICQ zulegen, dann kann man ein bissl schneller gedanken austauschen :D
CodeWicht - Fr 11.07.03 22:58
Titel: Statusbericht
Statusbericht:
So, dass Prompt-Plugin ist fertig und der Loader dementsprechend angepasst. Die help-Funktion wurde den Standards entsprechend angepasst. Die Funktion fürs Prompt-Setzen funzt auch in der autorun.tbb, jedoch nicht im normalen batch-Betrieb!!!
Noch zu erledigen:
- bei help seitenweise Anzeige der Liste
- man-Funktion
- ausführen von Programmen innerhalb der TB
- Kompatibelmachen zu den selten auftretenden, defekten imagehlp.dll-Dateien
Hab ich noch was vergessen?
@maximus: Wie meinst du das mit Kommando an die Konsole absetzen? Erkläre mir das mal.
@obbschtkuche: in der Version 0.7 oder 0.8 werde ich dazu übergehen, dass alle Plugins Rückgabewerte zurückliefern und als Parameter diesen an die nächste Funktion weitergeben.
Schönen Abend noch, CodeWicht.
maximus - Sa 12.07.03 01:16
Titel: Re: Statusbericht
| CodeWicht hat folgendes geschrieben: |
...
@maximus: Wie meinst du das mit Kommando an die Konsole absetzen? Erkläre mir das mal. |
Naja...ich fänds cool wenn es eine funktion geben würde mit der ich, aus einer dll, ein kommando ausführen könnte, als ob ichs in die konsole eingegeben hätte (am besten mit rückgabe)!
zB:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure muster(ParamIn : ShortString); stdcall; var res:cardinal; begin res := execTitanCommand('md muku -r -c="x-rawxr" '); ... writeln('Ein Muster!'); end; |
so hätte man die möglichkeit auch andere befehle zu nutzen, ohne die dlls, in seine, einzubinden.
macht das sinn?
mimi - Sa 12.07.03 12:28
@obbschtkuche
ICQ habe ich nicht und werde ich auch nicht installieren.
IRC währe ok:)
CodeWicht - Di 15.07.03 12:26
@maximus: Ja, Sinn würde es machen. Ich prüfe mal die Realisierbarkeit. Vielleicht funzt es ja.
CodeWicht - Mi 16.07.03 15:44
Statusbericht:
Nicht gefundene Befehle werden in der TitanBox V 0.6 erst als startbare Dos-Dateien eingestuft, dann beim Fehlschlagen als mit einem Programm assozierte Dateien eingestuft. Zu Beispiel kann man dann auch eine Textdatei mit zugehörigem Editor starten.
Wie sieht es eigentlich mit der Scriptsprache aus?
mimi - Mi 16.07.03 17:44
@CodeWicht
wird noch eine weile dauern :(
Anonymous - Mi 16.07.03 21:06
Wir haben strings und integer. Der Compiler erzeugt aus dem Quellcode bytecode. (der zur Zeit optimiert wird)
wir haben die befehle
inc, dec, readln, print
als nächstes kommen dll-aufrufe und procedures. (functions müssen noch was warten)
Ich habe sogar schon einen Addierer programmiret!!!
mimi - Mi 16.07.03 21:11
na das sind doch gute aussichten:)
Anonymous - Mi 16.07.03 21:15
die dll-aufrufe hab ich im prinzip schon fertig. wir müssen uns nur noch ausdenken wie wir die in den Quellcode reinpflanzen. Hast du ne idee?
CodeWicht - Do 17.07.03 15:56
hhhmmm, ich kann mir im mom noch nix unter bytecode vorstellen oder wie so was funzt. gibt es da eine möglichkeit, mir mal etwas quellcode oder für mich etwas verwertbares zuzusenden?
Anonymous - Do 17.07.03 17:57
was verstehst du unter verwendbar?
bytecode ist das was der compiler ausspuckt. Dadurch wird das programm später schneller ausgeführt. Ich bin jetzt zu 90% mit den dll-calls fertig. Ich muss das nur noch in der compiler und interpreter einbauen, dann gebe ich mal eine version 0.1 raus.
[/code]
CodeWicht - Do 17.07.03 20:37
Die mehrmals angesprochenen Inkompatibilitäten sind derzeit nur bei den Betriebssystemen Win98 SE und Win2k aufgetreten. Ich werde die TitanBox demnächst auf einem Win2k-system testen. Wenn dort kein Fehler auftaucht, dann wird es in dieser Richtung keine Weiterentwicklung der Kompatibilität geben, da ich dann die Ursache nicht lokalisieren kann. Ich bitte daher um Verständnis!
Grüsse.
CodeWicht - So 24.08.03 17:14
Mahlzeit!
Version 0.6 ist fertig und wird hiermit released.
Die Neuerungen:
- neues System-Plugin "tbprompt.dll" => 3 verschiedene Prompts einstellbar
- alle Plugins wurden standardisiert; siehe tbmuster.dll
- neue Funktionen: setprompt, listcommands, listplugins
- die help-Funktion wurde den Standards angepasst
- seitenweise Auflistung bei dem Kommando help
- neues TitanBox-Icon hinzugefügt
- Dateien und Programme können jetzt von der TitanBox aus gestartet werden
- DOS-Programme werden gecaptured und bei Erfolg wird die entsprechende Ausgabe ausgegeben
- Wegfall der Funktion "@" und "explorer"
- Erneuerung des Befehls tbversion
Direkt-Link [
http://www.mbprogramming.de/downloads/Rel-0.6.zip] (333 KB)
Das neue Icon entstand mit freundlicher Unterstützung von Kiwicht. Aus diesem Anlaß gibt es auch heute noch eine Wallpaper-Sektion auf meiner Homepage. Einfach mal reinschauen ....
Dann habe ich die crt-Unit mal den Wünschen einiger Herrschaften angepasst. Es gibt jetzt die Befehle GotoXY, WhereX und WhereY für die Cursorlenkung.
crt-Unit [
http://www.mbprogramming.de/downloads/crt.zip]
Die nächste Version befindet sich bereits in der Planung, erscheint aber leider erst Anfang des nächsten Jahres (aus beruflichen Gründen). Trotzdem bin ich für Vorschläge und Kritik immer offen.
Alles weitere wie immer auf meiner Homepage.
Grüsse, CodeWicht.
mimi - So 24.08.03 17:30
nicht schlecht:
1. SetPrompt geht nicht löst eine zugriefs verletztung aus, wenn ich /help
eingebe
2. Cd geht nicht, wenn ich cd... oder cd.. mache passiert nichts....
CodeWicht - So 24.08.03 18:13
sorry mimi, ich bin aber immer noch nicht hinter diesen win2k und win98se bug gekommen. es ist mir immer noch ein rätsel. das einzige was ich dir im mom empfehlen kann ist mal ein anderes os zu benutzen.
für den befehl cd habe ich noch kein plugin geschrieben. da kann ich auf obbschtkuche mit seinen KTools (die ich sehr gerne benutze) verweisen.
sorry mimi! :oops:
mimi - So 24.08.03 19:50
das ist kein fehler von win2000 sonder vom programm, der fehler kommt ja erst, wenn ich den befehl setPrommt /help machen will kommt der fehler....
ich werde es morgen mal unter 98 testen...
sonst ist das nicht schlecht *G*
CodeWicht - So 24.08.03 20:49
upsa, das heißt trotzdem setprompt --help, da ich weiss, dass du diesen thread mitverfolgt hast, solltest du das eigentlich wissen!
sorry, du hast recht - es stürzt ab - ich werde diesen bug bereinigen! sorry nochmal :)
edit: ich habe gerade mal den ganzen thread durchgelesen und mir ist aufgefallen, dass version 0.4 oder 0.5 bei dir nicht ging mimi. funzt es etwa jetzt? :lol:
mirage228 - Do 28.08.03 18:36
hi,
die neue 0.6 ist wirklich gut geworden. konnte persönlich auch noch keine fehler entdecken.
mfG
mirage228
P.S.: Arbeite gerade an einem Verschlüsselungs-PlugIn :)
mimi - Fr 29.08.03 09:39
| Zitat: |
edit: ich habe gerade mal den ganzen thread durchgelesen und mir ist aufgefallen, dass version 0.4 oder 0.5 bei dir nicht ging mimi. funzt es etwa jetzt
|
jetzt geht alles bis halt auf setpromt -help da hängt er sich einfach auf, was ich vermute ist einfach das du per schleife suchst und sobalt er was gefunden hat raus springt und wenn er nichts findet sucht er halt und sucht..... bis ich das programm über den taskmanger beende *G*
CodeWicht - Sa 30.08.03 10:09
@mimi: hä? ich bin etwas verwundert :?: ich habe nichts an dem vermeintlichen fehler in der plugin-loader-engine geändert. hast du irgendetwas an deinem os geschraubt? ein neues vielleicht aufgespielt? sehr sehr merkwürdig!
/Hinweis/ es heisst: setprompt --help
ich werde mich definitiv heute daran setzen einen bugfix zu schreiben. da hab ich wohl geschlampt *tztztztz*!
@mirage228: Danke für die positive Kritik!!!! :wink: Ein Verschlüsselungsplugin hört sich gut!!!!
mimi - Sa 30.08.03 15:22
| Zitat: |
@mimi: hä? ich bin etwas verwundert ich habe nichts an dem vermeintlichen fehler in der plugin-loader-engine geändert. hast du irgendetwas an deinem os geschraubt? ein neues vielleicht aufgespielt? sehr sehr merkwürdig
|
nein ich habe immer noch das "alte" das was ich beim erstenmal auch hatte, ich denke mal das liegt an der dll, die dabei sind. Ich habe jetzt keine femde dll dabei sonder nur die von dir. muss ich mal testen
CodeWicht - Sa 30.08.03 22:56
so ich habe ein paar bugfixes gemacht und hochgeladen. ladet euch die rel-0.6.zip nochmals herunter.
weiterhin gibt es jetzt ein shutdown-plugin (reboot, aus, logoff).
mimi - So 31.08.03 12:11
jetzt geht alles *G* nur das du den dir und cd behfel nicht selbst gemacht hast, merkt man *G*
nur mit den befel batchfile oder so änlich kan nich nichts anfagen was macht der genau ?
da steht nur füht eine datei aus,aber was für eine ?
CodeWicht - So 31.08.03 12:41
den filecontrols habe ich mich noch nicht gewidmet. kommt aber noch! *bestimmt* ausserdem was gibt es da zu lachen ;) ???
<batch [Datei]> arbeitet TitanBox-Befehle in einer Datei aus. Wie im Beispiel kannst du hintereinander z.B. folgendes ausführen:
<file.tb>
setprompt 3
echo Hallo mimi. Alles funzt gut.
meminfo
cpuspeed
ipinfo
<file.tb ende>
die befehle kann man auch in der autorun.tbb einfügen, so dass beim Start der TB dein Lieblingsprompt angezeigt wird und etc.
Für Verbesserungsvorschläge bin ich immer offen!
mimi - So 31.08.03 14:18
sowas wie die .bat dateien unter dos ?
dann mache doch auch einen if befehl und sowas rein, und das jede dll ein rückgabewert hat. einen errorlefel. und das man auch selbst promt schmeas machen kann mometan gibt es ja nur drei zur auswahl.
unter dos was das ja irngenwie so:
promt $G$P könntes du das nicht auch so machen ?
CodeWicht - So 31.08.03 19:22
ja das ist sowas ähnliches wie die bat-dateine unter dos, nur halt mit tb-befehlen!
mach dir doch einen eigenen prompt:
die dll dazu muss tbprompt.dll heissen
du brauchst 2 befehle dazu:
procedure prompt(ParamIn: ShortString); stdcall;
ParamIn bekommt einen numerischen Wert!!! Diese Prozedur ist für die Darstellung des Promptes verantwortlich.
function setprompt(ParamIn : ShortString): Integer; stdcall;
Die Werte für ParamIn kannst du selber bestimmen. Als result sollte setprompt einen numerischen Wert zurückliefern, den du in der prompt-procedure verarbeiten musst.
in der nächsten version werden wahrscheinlich alle plugins auf ein neues format umgestellt.
das könnte dann so aussehen:
function muster(LastErrorLevel: Integer; ParamIn : ShortString): Integer; stdcall;
aber das ist noch nicht raus!
für die if-befehle wäre eine TB-Scriptsprache sehr nützlich. Mal sehen was da zu machen ist.
mimi - So 31.08.03 21:41
und ein for befehl wärhe auch pratkisch, vileicht sogar sowas wie bei linux so ne shell scrip sprache
CodeWicht - So 31.08.03 22:33
si, absolute übereinstimmung!!! aber bis dahin ist es glaube ich ein langer weg ... aus zeittechnischen gründen. aber ich bleibe am ball und bin für fragen und anforderungen gerne offen! :wink:
Tino - Mo 01.09.03 10:17
| CodeWicht hat folgendes geschrieben: |
| ladet euch die rel-0.6.zip nochmals herunter. |
Wie lautet denn der Link?
Gruß
Tino
BungeeBug - Mo 01.09.03 20:38
Hi,
ich bekomm bei der Version immer ne Exeption .. gleich am Anfang :(
OS : Win 2k -> SP4
Könntest du da mal gucken?! Dann gibbet auch mein Time Plugin für euch :)
Zeit anzeigen und vom TimeServer holen und was mir noch so einfällt :)
mimi - Mo 01.09.03 21:03
dann muss es an der dll liegen, die neu hinzugekommen ist, weil ich kann es satrten und habe auch win2000 mit sp3
Andreas L. - Mo 01.09.03 21:11
Hi Leutz,
habe jetzt mal nen kleinen Editor für TitanBox Batch Files gemacht. natürlich mit Syntax-vorhebungen. In der Liste der Verfügbaren Code-Tags steht nur echo, weil ich nicht so wirklcih weiß welche Tags es gibt. Müsst ihr eben selber eintragen. Dies kann man machen indem man die Datei tags.lib bearbeitet. Hoffentlich gefällt er euch.
Hier die File:
http://www.gerhard-lauss.de/softprose/pub/tbbatchfilemaker.exe
PS: Man kann auch die PLug-ins auslesen lassen (zuvor aber programmeinstellungen machen)
Vile Spaß damit!
Andreas L. - Di 02.09.03 12:17
Hab nen Fehler in TitanBox entdeckt. Wenn man eingibt "make" komtm so ein Inprise-Text. Is das normal?
| Zitat: |
[Admin@XXXXXX]$ make
MAKE Version 5.2 Copyright (c) 1987, 1998 Inprise Corp.
Fatal: Unable to open makefile
[Admin@XXXXXX]$
|
CodeWicht - Di 02.09.03 12:54
Also:
@BungeeBug: Leider gibt es Probleme mit einigen Versionen der imagehlp.dll unter Win98SE und Win2k. mimi hat das Problem gelöst, in dem er eine andere imagehlp.dll eingespielt hat. Probiers mal unter WinXP, da sollte es garantiert funzen. An diesem Bug dürfte ich noch eine Weile knabbern. Also abwarten ...
@mimi: Es liegt nicht an der neuen Dll, sondern immernoch an der imagehlp.dll vom Windows!!!
@onlinehome: Danke für das Plugin. Ich werde es mal heute nachmittag unter die Lupe nehmen.
Zu deinem gefundenem Fehler: Es ist kein Fehler der TitanBox!!!!!!! Du hast irgendwo eine Datei namens make.exe in deinem System. Die Funktionsweise der TB ist so: Es werden erst alle Plugins nach einer entsprechenden Funktion durchsucht. Wenn nichts gefunden wird, dann wird der Aufruf an die cmd.exe weitergegeben und dort ausgeführt und die Ausgabe, egal welche, gecaptured und in der TB angezeigt. Deine Datei make.exe steht bestimmt in deinen Umgebungsvariablen. Wenn du mal die cmd.exe aufmachst und einfach make eintippst und abschickst, dann wirst du genau die gleiche Ausgabe erhalten.
Grüße.
BungeeBug - Di 02.09.03 13:56
Hi,
Kannst du die DLL nicht bei legen? ich hab im mom kein XP drauf und wollte auch im mom nicht wieder umsteigen. Wär also nett wenn mir wer die DLL geben könnte :)
CodeWicht - Di 02.09.03 14:34
ich habe keine ahnung, ob das irgendwelche rechtlichen konsequenzen hätte, wenn ich die datei dazulegen würde. deshalb unterlasse ich das mal. ich kann dir aber mal meine schicken, heute nachmittag!
die beilegung behebt aber leider das grundsätzliche problem nicht. ich habe den traum, das es mit jeder imagehlp.dll-version funzt. ;)
CodeWicht - Di 02.09.03 17:37
@onlinehome: Die Plugins einlesen lassen funzt irgendwie nicht. warum?
Andreas L. - Di 02.09.03 17:56
| CodeWicht hat folgendes geschrieben: |
| @onlinehome: Die Plugins einlesen lassen funzt irgendwie nicht. warum? |
Finde ich komisch. Ich habe ienfach eien ShellListView die den Ordner Plug-ins vom TitanBox-Pfad anzeigt. Haste in den Einstellunge (Bearbeiten > Einstellungen) den TitanBox-Pfad festgelegt?
CodeWicht - Di 02.09.03 18:54
jo, hab den pfad angegeben!
vielleicht solltest du mal genauer beschreiben, was diese funktion macht. wenn ich auf plugin einlesen mache, dann öffnet er ein fenster, wo alle plugins drinne stehen. dann klicke ich auf eins und drücke ok. aber es passiert nihcts. oder soll was passieren?
Andreas L. - Mi 03.09.03 12:00
Es sollen nur alle Plug-ins in den Fenster erscheinen. Sonst nix. Das OK ist zum Dialog schließen. :-) Aber wie findest du den Editor so?
CodeWicht - Mi 03.09.03 12:54
im Prinzip nicht schlecht. jedoch macht für mich so wie du das eben beschrieben hast, das plugin-einlesen keinen sinn. vielleicht solltest du den button auf "plugins auflisten" umstellen.
vom intuitiven instinkt her, dachte ich, dass das prog die plugins nach funktionen durchsucht und diese dann in dem linken fenster ausgibt, um damit dann zu arbeiten. wäre natürlich ne feine sache (aber auch mit hindernissen verbunden!).
Andreas L. - Mi 03.09.03 18:13
| CodeWicht hat folgendes geschrieben: |
im Prinzip nicht schlecht. jedoch macht für mich so wie du das eben beschrieben hast, das plugin-einlesen keinen sinn. vielleicht solltest du den button auf "plugins auflisten" umstellen.
vom intuitiven instinkt her, dachte ich, dass das prog die plugins nach funktionen durchsucht und diese dann in dem linken fenster ausgibt, um damit dann zu arbeiten. wäre natürlich ne feine sache (aber auch mit hindernissen verbunden!). |
Probieren kann ichs ja mal, wenn ich Zeit habe!
Andreas L. - Mi 03.09.03 20:20
Hi,
hab ne neue Version gemacht von tbBatchFileMaker.
Version: 0.2
Neue Features:
- mehr code-tags
- jetzt auch dos apps als code zum einfügen
- Code-Tags und DOS-App-tags lassen sich tooglen für das bessere arbeiten
Leider konte ich die von Codewicht geschilderte Meinung nicht realisieren, d.h. das wieder nur die Plug-ins angezeigt werden und nicht welceh Funktion/Eigenschaften diese haben.
Hier die File:
http://www.gerhard-lauss.de/softprose/pub/tbbatchfilemaker0.2.exe
Vile Spaß damit. Sagt mal euere Meinung
mimi - Mi 03.09.03 22:12
nicht schlecht, aber die toolbar icons sollten beschrieftet werden mit hints
Andreas L. - Do 04.09.03 12:04
| mimi hat folgendes geschrieben: |
| nicht schlecht, aber die toolbar icons sollten beschrieftet werden mit hints |
Kann ich noch machen. Das Design is ja nur mal nicht so wichtig. Kommt noch später.
mirage228 - Do 04.09.03 13:55
das programm ist nicht schlecht muss ich sagen ;-)
ich weiss aber, wie du die funktionsnamen einlesen kannst:
lade dir mal Luckies "DLLExports" runter, da ist in der Datei TDLLInfo.pas eine Klasse TDllInfo bei, wo alle Funktionsnamen der DLL aufgelistet werden. Da filterst du "listplugins" etc. raus und fügst die dann der code-tag liste hinzu.
mfG
mirage228
Andreas L. - Do 04.09.03 19:29
@Mirage: Werde ich bei gelegenheit mal machen.
Silas - So 15.07.07 10:28
Hallo zusammen!
Ich wollte fragen, ob noch irgendjemand das Programm hat... die Downloadlinks sind nämlich allesamt tot (oder hab ich da was übersehen?).
Grüße
Silas
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!