ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > WB Start vs. CLI Start | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
18.07.2003, 17:47 Uhr Mad_Dog Posts: 1944 Nutzer |
Hallo, Ich hab gerade das Problem, daß ein Programm, das ich geschrieben habe zwar problemlos von der Shell oder mittels IconX und Shellscript läuft, aber wenn ich es über die WB Starte (eigenes Icon erzeugt, mit "Starten von Shell"), wirft es machmal nicht reproduzierbare Gurus. Die Frage: Muß ich beim Programmieren von WB gestarteten Programmen irgendwas spezielles beachten? Das genannte Programm öffnet EasyRequester und ASL-Requester. Außerdem werden diverse DOS und File IO Funktionen ausgeführt und libraries geöffnet und geschlossen. Die Hauptschleife ist nach ANSI C: code:int main(void) { ...hier das Programm return(0) } Ich habe in Beispielsources vom RKM und NDK schon andere Sachen bei WB gestarteten Programmen gesehen, deshalb frag ich. Kann es sein, daß beim WB Start irgendwelche Parameter übergeben werden? -- http://www.norman-interactive.com [ - Antworten - Zitieren - Direktlink - ] |
18.07.2003, 18:16 Uhr Micha1701 Posts: 938 Nutzer |
Hi! Hier der Code, den ich immer benutze um ein Prog von der WB und der Shell zu starten... code:--//includes #include <workbench/startup.h> #include <clib/dos_protos.h> #include <wbstartup.h> //Variabeln BPTR olddir; void wbmain(struct WBStartup * argmsg) { if(argmsg) olddir = CurrentDir(argmsg->sm_ArgList->wa_Lock); else olddir = NULL; Ende: if(olddir) CurrentDir(olddir); } void main(void) { wbmain(NULL); } Micha Look at my HPs: http://www.lanser-online.de.vu http://www.RealmsofPower.de.vu [ - Antworten - Zitieren - Direktlink - ] |
18.07.2003, 18:45 Uhr Mad_Dog Posts: 1944 Nutzer |
Zitat: Wobei bei StormC 3.0 in <Storm/wbstartup.h> schon folgender Funktionsprototyp definiert ist: code:void wbmain(struct WBStartup *); Und wo wir schonmal dabei sind: Irgendwo gabs mal die Handbücher zu StormC 3.0 als pdf zum runterladen. Auf der Amiga OS 3.5 Developer CD 2.1 sind im Verzeichnis "Handbücher" selbige leider nicht enthalten, sondern nur ein Guide zu den Neuerungen. -- http://www.norman-interactive.com [ - Antworten - Zitieren - Direktlink - ] |
19.07.2003, 08:42 Uhr thomas Posts: 7718 Nutzer |
Der WB-Start wird von Compiler zu Compiler unterschiedlich gehandhabt. Zunächst mal ist der Standard-Code wie folgt: int main(int argc,char **argv) { ...hier das Programm return(0) } Wenn man vom CLI startet, steht in argc die Anzahl der Parameter. Wobei dieser immer größer oder gleich 1 ist, denn in argv[0] steht der Programmname. Bei einigen Compilern (z.B. Aztec C, VBCC) wird der WB-Start nun so signalisiert, daß argc auf 0 steht und argv ein Pointer auf die WB-Message ist. Bei anderen Compilern (z.B. Dice C) gibt es einen eigenen Einsprungspunkt, dem nur die WB-Message übergeben wird: void wbmain(struct WBStartup *wbmsg) { ...hier das Programm, wenn es von der Workbench gestartet wird. } Man könnte es universell etwa so lösen: int main(int argc,char **argv) { BPTR olddir = NULL; if (argc == 0) { olddir = CurrentDir(((struct WBStartup *)argv)->sm_ArgList->wa_Lock); ...hier die Tooltypes auswerten } else { ...hier die CLI-Parameter auswerten } ...hier das Programm if (olddir) CurrentDir (olddir); return(0) } #if defined(__DCC) || defined(__STORM__) void wbmain (struct WBStartup *msg) { main (0,(char **)msg); } #endif Wobei ich nicht sicher bin, wie StormC das macht. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ Dieser Beitrag wurde von thomas am 19.07.2003 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
19.07.2003, 12:47 Uhr Mad_Dog Posts: 1944 Nutzer |
Danke! @thomas: So ähnlich wie Du hab ichs dann auch gemacht... -- http://www.norman-interactive.com [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > WB Start vs. CLI Start | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |