Öffnen mit...



  • Einfach im OnClick-Event des Menüs oder Buttons LoadFromFile ausführen!? Das ist doch nicht wirklich dein Problem, oder? Wenn ja, dann solltest du dir dringend mal das Texteditor-Tutorial in der Hilfe ansehen!



  • nein, ich meine wenn jmd. im OS auf eine .txt drückt und dort auf "Öffnen mit..." Klickt und dann die .txt öffnen und in meinem Programm dastellen so wie bei Word oder beim Editor.



  • @Mosta

    Du musst folgendes machen:

    1. Tip von ranger81@work oder <Alexander Sulfrian> befolgen
    2. In deinem Programm beim Start die Commandine- Parameter auswerten:--
    -- Paramstr(1) ist der Dateiname der angeklickten Datei! (Dazu gab's viele
    -- Beitraege!)

    Der Tip von ranger81@work oder <Alexander Sulfrian> bewirkt im OS, dass der Dateiname einer doppeltgeklickten Datei als Parameter an Dein Programm beim Start uebergeben wird!!! Den liest Du in Deinem Prog mit Paramstr(1) aus.

    PS: Wenn Du mehrere Daeien im OS (Explorer) auf das Symbol Deines Programmes fallen laesst, werden die Namen aller Dateien uebergeben in ParamStr(1), ParamStr(2) ...
    Die Summe aller Parameterlaengen darf aber nicht mehr als 128 (oder 256???) betragen. D.h., das klappt nur mit begrenzter Anzahl.



  • Also ich glaube mosta will hier einen Eintrag erzeugen:

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList

    Gruß WoWe



  • Steht trotzdem alles in der FAQ!



  • also ich hab mitlerweile es hinbekommen, wenn ich eine Textdatei auf die .exe "fallen" lasse sie in meinem Prog. geöffnet wird das soll aber auch passieren wenn man auf "Öffnen mit..." (im auswahl menu mein Prog wählt) das dann die Textdatei in meinem Programm in der RichEdit erscheint.



  • Original erstellt von mosta:
    also ich hab mitlerweile es hinbekommen, wenn ich eine Textdatei auf die .exe "fallen" lasse ...

    Im Explorer?

    [ Dieser Beitrag wurde am 17.04.2003 um 01:30 Uhr von WebFritzi editiert. ]



  • Hi,

    der ganze Thread ist schon verwirrend! Doch ich glaube das Problem wurde eigentlich schon richtig gelöst!

    @mosta

    Wie schon von DerAltenburger beschrieben funktioniert dieses per Kommandozeilen. Wenn Du jetzt im Explorer auf die Text Datei (hilfe.txt oder wie auch immer sie heißt) mit der Rechten Maustaste klickst und dort das Popupmenü kommt und Du "Öffnen mit... " auswählst und dann Dein Programm (mostaEditor.exe) macht das OS in DOS sprache eigentlich nix anderes als hilfe.txt an mostaEditor.exe zu übergeben. Dies wurde bei DOS so gehändelt: "mostaEditor.exe hilfe.txt"

    Dies wird aber auch noch heute in Windows so gemacht. Daher mußt Du hierfür ParamStr und ParamCount benutzen.

    ParamCount = Anzahl der insgesamten Parameter (Du kannst ja auch mehrere makieren und dann "Öffnen mit... " wählen)
    ParamStr = Ist der Paramter für sich (Also in dem Beispiel jetzt als hilfe.txt gesehen)

    Damit sollte eigentlich Dein Problem zu lösen sein. Genaueres zu ParamCount und ParamStr findest in der Online Hilfe.



  • Original erstellt von mosta:
    also ich hab mitlerweile es hinbekommen, wenn ich eine Textdatei auf die .exe "fallen" lasse ...

    Hi,
    meinst du damit, dass wenn du die *.txt auf deine *.exe ziehst, sie sich dann öffnet!
    Wenn ja, dann hast dus ja schon fast geschafft! Dann musst du nur noch einen Eintrag in der Reg erzeugen!

    MFG

    Alexander Sulfrian



  • @Alexander Sulfrian wieso brauch ich den Registry Eintrag(Der Sinn fehlt um weiter logisch zu denken).



  • Damit bei einem Doppelklick auf eine Textdatei deren Dateiname und -pfad an dein Programm übergeben wird. Dieser Name erscheint dann in den Parameterstrings und kann von dir dazu benutzt werden, die Datei in dein Programm zu laden.



  • und wie sieht das in Code aus



  • Willst du uns ver*****en?



  • ... oder @mosta fühlt sich vom vielen Text erschlagen - es kommt mir fast so vor.

    @mosta, wenn du einen File im Explorer wirksam auf deine .exe ziehen kannst, hast du bereits alles, was du brauchst, implementiert.

    Markiere nun einen File-Eintrag, ruf das Kontextmenü (Rechtsklick darauf) auf.

    Zeile: "öffnen mit..." wählen - also draufklicken.

    Im erscheinenden Dialog ganz unten auf "andere" klicken.

    Im erscheinenden Dialog dein App-Verzeichnis suchen. Darin die app.exe wählen.

    Alles bestätigen, ein letztes "OK", und... kein Dialog mehr, dafür öffnet deine App und öffnet auch den File - genau so, wie du es wolltest.

    -Es gelang: Poste ruhig dein "Hosianna", alle freuen sich mit dir. 😉

    -Es mißlang: Poste den Inhalt der Message + deinen Code.

    Vorher:

    Suchfunction --> GetCommandLine() --> fertigen Code ins FormShow übernehmen, danach deine Öffnen-Routine aufrufen...

    oder Suchfunction --> ParamStr() --> fertigen Code ins FormShow übernehmen/je nach Thread auch etwas ergänzen, deine Öffnen-Routine aufrufen...

    ...also als Abschluß einfach ein open(Sender); oder welche Function du auch immer benutzt (benötigt keinen!!! OpenDialog mehr).

    HTH :p



  • Hallo zusammen,

    ich glaube was Alexander Sulfrian meint, ist das sich das Programm von mosta selbst in die Registry reinschreibt und somit das Autostarten von Notpad oder UltraEdit verhindert. Doch dazu müsste sich mosta ja noch mit der Registry beschäftigen. Ich denke das würde hier zu weit führen.



  • Der Regystrieintrag kann sich auch selbst regeln, indem man "...immer mit diesem Programm öffnen" aktiviert. Das wär also das geringste Problem.

    Im Fall Notepad hat es sich bestens bewährt, die eigene App zu testen, dann das Original umbenennen und den eigenen an die Stelle setzen. Dann ist automatisch alles geregelt, auch ua. das Queltextöffnen im IE.

    -Deswegen steh ich auch so auf GetCommandLine(). 😉 Das nutzt '?' im ParamString nicht als Parametertrenner. ParamStr() hat aber große vorteile, wenn man via MultiSelect mehrere Files auf einmal öffnen will. -- Man hat also die Quaal der Waal *grins*.



  • So jetzt ein anderes Problem spät erkannt aber lieber früh als nie. So reden wir nicht drum hier.

    Es soll ja ein HTML, PHP Editor werden, nur wenn ich eine RichEdit benutze setzt er mir noch die Fontinformationen voran und im Browser wird es nicht richtig dagestellt und wenn ich ein Memo benutze kann ich die RichEdit Messages nicht mehr benutzen oder geht das doch?(kein Plan)

    also kennt ihr mein "Dilema" was kann ich da machen. Ich will ja die anderen Funktion die schon implementiert habe weiter nutzen;-).

    [ Dieser Beitrag wurde am 18.04.2003 um 00:57 Uhr von mosta editiert. ]



  • Schau dir mal TRichEdit::PlainText an.



  • danke


Anmelden zum Antworten