ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > multiview starten | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
13.02.2012, 23:53 Uhr AGSzabo Posts: 1663 Nutzer |
Hi, habe mir schon seit einiger Zeit überlegt dass ich es in meinen Filebrowser einbaue, eine Datei mit Mutliview zu öffnen. Dabei soll natürlich KEINE Shell auf gehen. Soweit ich die docs verstanden habe, gibt es dafür mindestens diese Möglichkeiten: - Execute() - SystemTagList() - LoadSeg() -> CreateNewProc() Hier oder da muß man ein Outputfilehandle auf "NIL:" übergeben. welchen Weg würdet ihr wählen? ags -- Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system. [ - Antworten - Zitieren - Direktlink - ] |
14.02.2012, 08:21 Uhr RhoSigma Posts: 67 Nutzer |
@AGSzabo: success = Execute("MultiView Bild.jpg", NULL, NULL); if (IoErr() == 205) puts("MultiView not found"); Das Resultat vom Execute() Aufruf gibt nicht wirklich Auskunft ueber Erfolg od. Fehler, daher anschliessend sofort IoErr() verwenden. Ist dieses z.B. ERROR_OBJECT_NOT_FOUND (205), dann heisst das nicht, das das Bild nicht gefunden wurde, sondern dass MultiView selbst nicht gefunden wurde. Zu beachten ist noch, das Execute synchron arbeitet, d.h. es kehrt erst zurueck, wenn der Anwender MultiView wieder beendet hat. Da du aber immer darauf bedacht bist, deine Sachen asynchron zu handhaben, wuerde die Kombi LoadSeg() -> CreateProc() wahrscheinlich besser fuer deine Zwecke geeignet sein. [ - Antworten - Zitieren - Direktlink - ] |
14.02.2012, 10:06 Uhr Holger Posts: 8116 Nutzer |
Zitat:Auf keinen Fall NIL: benutzen. Es gibt doch extra dafür das tolle Auto-Open Feature der Konsole, das ein Fenster nur dann öffnet, wenn tatsächlich Ausgaben geschrieben werden. So wie bei der Workbench, wenn Du den Menüpunkt „Befehl ausführen“ verwendest. Du musst als Datei lediglich CON:x/y/breite/höhe/titel/AUTO/WAIT verwenden. Du kannst die Größenangaben und den Fenstertitel auch weglassen. Ich habe sie nur hingeschrieben, weil man sonst beim Abschreiben von CON://///AUTO/WAIT leicht Fehler macht. -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
14.02.2012, 10:59 Uhr p-OS Posts: 131 Nutzer |
Du könntest natürlich auch das im System integrierte "Multiview" benutzen. Befindet sich gut getarnt in der amigaguide.library. Bsp: E code:MODULE 'amigaguide','libraries/amigaguide' DEF guide PROC main() IF amigaguidebase:=OpenLibrary('amigaguide.library',39) IF guide:=OpenAmigaGuideA([0,'Bild.png',NIL,NIL,NIL,NIL,NIL,0/*flags*/,NIL,NIL,0,NIL,0]:newamigaguide,NIL) CloseAmigaGuide(guide) ENDIF CloseLibrary(amigaguidebase) ENDIF ENDPROC Hier synchroner Aufruf, gibt aber auch eine asynchrone Variante. [ - Antworten - Zitieren - Direktlink - ] |
14.02.2012, 13:08 Uhr AGSzabo Posts: 1663 Nutzer |
Ich habe mich erstmal für SystemTagList() entschieden. Funktioniert auch, bis auf das Async-Flag. Wenn ich das verwende, kommt es zu seltsamen Gurus mit der Bedeutung "Double Close" unter anderem. Natürlich schließe ich das Outputfenster dabei nicht selbst. Habe ich etwas vergessen? -- Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system. [ - Antworten - Zitieren - Direktlink - ] |
14.02.2012, 13:12 Uhr p-OS Posts: 131 Nutzer |
Kann dir zwar nicht sagen, warum das ASYNC nicht funktioniert. Aber kannst es dir auch einfach machen: SystemTagList('run <>NIL: multiview bild.png',...) [ - Antworten - Zitieren - Direktlink - ] |
14.02.2012, 13:16 Uhr thomas Posts: 7718 Nutzer |
Zitat: Weise Entscheidung. Zitat: Das Lesen der Autodocs vielleicht? code:WARNING If used with the SYS_Asynch flag, it WILL by default, close both its input and output filehandles after running the command (even if these were your Input() and Output()!) -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
14.02.2012, 13:20 Uhr AGSzabo Posts: 1663 Nutzer |
@p-OS: Das wiederum funktioniert. Ich bekomme aber keine Rückmeldung, wenn das Dateiformat nicht unterstützt wird. Hier mein Code von vorhin: code:.spawn move.l dosbase(pc),a6 move.l #.output,d1 move.l #MODE_NEWFILE,d2 jsr _LVOOpen(a6) tst.l d0 beq .no move.l #.command,d1 clr.l -(a7) move.l d0,-(a7) move.l #SYS_Output,-(a7) move.l #TRUE,-(a7) move.l #SYS_Asynch,-(a7) move.l a7,d2 jsr _LVOSystemTagList(a6) lea 4+8*2(a7),a7 .no rts .command dc.b 'sys:utilities/multiview s:startup-sequence',0 .output dc.b "CON:0/0/400/200/Modifyle View/AUTO/WAIT",0 even -- Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system. [ - Antworten - Zitieren - Direktlink - ] |
14.02.2012, 13:24 Uhr AGSzabo Posts: 1663 Nutzer |
@thomas: > Das Lesen der Autodocs vielleicht? Ne, das habe ich 3x 4x 5x gelesen, Darum schließe ich das Handle wie oben schon erwähnt NICHT selbst. Oder? -- Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system. [ - Antworten - Zitieren - Direktlink - ] |
14.02.2012, 13:47 Uhr thomas Posts: 7718 Nutzer |
@AGSzabo: Aber alles hast du nicht gelesen? code:By default the new process will use your current Input(), Output() and ErrorOutput() filehandles. Was ist mit Input? -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
14.02.2012, 14:37 Uhr AGSzabo Posts: 1663 Nutzer |
@thomas: Input hab ich garkeins angegeben. Versucht er dann meinen eigenen, der vererbt wurde, zu schließen? EDIT: Ok ich hab mal auf die Gefahr hin, dass etwas schief geht, ausprobiert, das Input explizit auf 0 zu setzen. Jetzt geht es! -- Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system. [ Dieser Beitrag wurde von AGSzabo am 14.02.2012 um 15:05 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > multiview starten | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |