Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Notepad aufrufen (https://www.delphipraxis.net/56161-notepad-aufrufen.html)

hsbc 1. Nov 2005 16:46


Notepad aufrufen
 
Hallo allerseits,

wie kann ich notepad.exe mit einer Textdatei aus meiner Delphi-Application heraus so aufrufen, dass

o dies mit jeder Windows-Version funktioniert
o mein Hauptprogramm erst nach Beendigung von notepad weiterläuft
o ich ev. eine Information von notepad bekomme, ob die damit aufgerufene Textdatei geändert wurde

mfg
Herbert

3_of_8 1. Nov 2005 16:54

Re: Notepad aufrufen
 
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', PChar('notepad '+filename), Nil, Nil, SW_NORMAL);
filename ist der Name der aufzurufenden Datei. Bevor du das machst, kannst du den Inhalt der Datei in einer Variable abspeichern. Nach dem das Notepad geschlossen ist, kannst du den Inhalt nochmal überprüfen und dann nachschauen, ob der neue Inhalt sich vom gespeicherten unterscheidet. Das heißt, es wurde geändert.

Das mit dem Hauptprogramm, das erst nach Beendigung des Notepads weitergeht müsste man irgendwie mit Handles hinkriegen, aber da kenne ich mich nicht so aus.

robinWie 1. Nov 2005 17:00

Re: Notepad aufrufen
 
Du musst noch in die Uses liste "ShellApi" eintragen! Sonst funzt das nicht!

Robin

scp 1. Nov 2005 17:02

Re: Notepad aufrufen
 
Und die Parameter (hier der Dateiname) werden vom Programm getrennt:
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open', PChar('notepad.exe'), PChar(filename), Nil, SW_NORMAL);

Khabarakh 1. Nov 2005 17:05

Re: Notepad aufrufen
 
Zum Warten gibt es ShellExecuteAndWaitShellExecuteAndWait.

Zitat:

ich ev. eine Information von notepad bekomme, ob die damit aufgerufene Textdatei geändert wurde
Ich würde einfach den Hash der Datei vor ShellExecute und danach vergleichen.

Zitat:

dies mit jeder Windows-Version funktioniert
Ich hoffe, Alles ab NT 4.0 reicht dir :wink: .

PS: Für Aufzählungen gibt es die List-Tags :wink: .

hsbc 1. Nov 2005 17:40

Re: Notepad aufrufen
 
Danke für eure Hilfe,

habe jetzt ShellExecuteAndWait genommen - funktioniert einwandfrei.

mfg
Herbert

cruso 1. Nov 2005 17:51

Re: Notepad aufrufen
 
Zitat:

Zitat von hsbc
o mein Hauptprogramm erst nach Beendigung von notepad weiterläuft

Da musst du einfach überprüfen, ob notepad.exe aktiv ist! Also du musst prüfen ob notepad einer der laufenden prozesse ist und wenn, dann sorgst du dafür, dass keine eingabe bei deinem Proggi möglich ist!
Problem hierbei: Das Programm ist auch lahmgelegt, wenn man ganz normal notepad startet (aber da fällt dir bestimmt noch was ein)!

mz23 25. Mär 2012 13:07

AW: Notepad aufrufen
 
Sind die Dateien mit Erweiterung *.txt mit dem NotePad.exe
verknüpft, dann genügt auch folgender Aufruf, um NotePad
mit der Datei zu öffnen.

ShellExecute(Application.Handle,
PChar(''),
PChar('C:\Users\Documents\Beispiel.txt'),
nil,
nil,
SW_SHOWNORMAL);

Schöne Grüße aus Nürnberg,
Manfred

mkinzler 25. Mär 2012 13:13

AW: Notepad aufrufen
 
Oder halt ein anderes mit der Endung verknüpftes Programm. Soll es Notepad sein, ist diese Lösung dann nicht geeignet

himitsu 25. Mär 2012 14:07

AW: Notepad aufrufen
 
Besser
Delphi-Quellcode:
nil
statt
Delphi-Quellcode:
PChar('')
, denn das ist nicht das Selbe und nur nil ist als "nicht verwendet" deklariert, bei dieser Funktion.

Oder
Delphi-Quellcode:
'open'
, bzw.
Delphi-Quellcode:
PChar('open')
, denn das ist ja die gewünschte Aktion, aber (meistns) reicht auch nil, denn "open" ist standardmäßig die Standardaktion.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz