Autor |
Beitrag |
abi
      
Beiträge: 121
Windows 2000
Delphi 5
|
Verfasst: Mi 05.05.04 16:29
Hi
da ich jetzt schon so oft diesen Begriff gelesen hab, würde ich doch gern wissen. Für was der da ist.
Mein Delphi kennt nicht, deshalb konnte ich des nicht testen.
Ich bräuchte des um eine Datei zu öffnen und wieder zuschliessen.
Vielleicht könnt ihr mir ja so helfen.
Mercy
abi
_________________ Die lansamste Schnecke kommt auch irgendwann an.
|
|
bms
      
Beiträge: 735
Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
|
Verfasst: Mi 05.05.04 16:34
ShellExecute ist eine API Funktion mit der du Programme und Dateien (z.b. .doc, .txt) mit dem korrektem Programm starten kannst.
Bevor du nochmal fragst: API ist eine Funktionssammlung die Windows zu verfügung stellt. Sie ist in keiner einzigen DLL versteckt, sondern in vielen.
_________________ VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 05.05.04 16:40
Die Suchfunktion hätte evtl. zu Ergebnissen geführt. Bei SHELLEXECUTE bin ich mir nicht sicher. Das wird nicht so oft gefragt. 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
maze2k
      
Beiträge: 252
WIN 95, WIN NT 4.0, WIN 98, WIN 98SE, WIN 2000, RedHat Linux 7.3, Mandrake Linux 9.2, Knoppix Linux 3.3
D6 Pers
|
Verfasst: Mi 05.05.04 16:43
Du musst 'shellapi' unter uses einfügen, dann funktioniert shellexecute auch bei dir 
_________________ Wer das Konzept der Unendlichkeit verstehen will, muss nur das Ausmaß menschlicher Dummheit betrachten. (Voltaire)
|
|
abi 
      
Beiträge: 121
Windows 2000
Delphi 5
|
Verfasst: Mi 05.05.04 16:49
Ok, des hab ich verstanden.
Kannst du mir jetzt noch sagen wo ich die Befehle dafür finde, damit ich damit arbeiten kann.
In meiner Hilfe gibt diesen Befehl  nicht, was wahrscheinlich daran liegt das es ja nicht unbedingt mit Delphi was tuchen haben muss, oder  .
Nehmen wir mal an ich habe ein Word dokument das ich öffen will und was hineinschreiben will.
Muss ich dann mein Word programm in Delphi sichtbar machen  .
Wenn ich jetzt eine Datei hab,z.B. text.txt wie öffne ich dann diese.
So vielleicht Shellexecute.open('c:\text.txt');
Wie du merkst hab ich keine Ahnung von dem ganzen Zeug. Aber ich hoffe trotzdem das du mir hilfst sonst wirds ja auch nicht besser.
Danke schon mal.
abi
_________________ Die lansamste Schnecke kommt auch irgendwann an.
|
|
maze2k
      
Beiträge: 252
WIN 95, WIN NT 4.0, WIN 98, WIN 98SE, WIN 2000, RedHat Linux 7.3, Mandrake Linux 9.2, Knoppix Linux 3.3
D6 Pers
|
Verfasst: Mi 05.05.04 17:02
Also, wenn du etwas mit ShellExecute öffnest, dann hat das nichts mehr mit Delphi zu tun.
Wenn du zum Beispiel mit
Delphi-Quelltext 1:
| ShellExecute(Handle, 'open', 'http://www.delphi-forum.de',nil,nil, SW_SHOWNORMAL); |
eine Webseite öffnest, dann öffnet sich dein Standardbrowser mit dieser Seite, genauso mit allen anderen Dateien (z.B: .doc wird mit Word geöffnet usw.)
Wenn du .doc Dateien in deinem Delphi-Programm öffnen willst, musst du dir eine Funktion programmieren, die dieses Format erkennt.
ShellExecute öffnet nur andere Programme.
Andere Beispiele:
Delphi-Quelltext 1: 2: 3:
| uses ShellApi; ... ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL); |
Delphi-Quelltext 1:
| ShellExecute(Handle,'open', 'c:\windows\notepad.exe','c:\SomeText.txt', nil, SW_SHOWNORMAL); |
Vergiss nicht immer ShellApi bei den USES mit einzubinden.
Ich hoffe das hilft dir... 
_________________ Wer das Konzept der Unendlichkeit verstehen will, muss nur das Ausmaß menschlicher Dummheit betrachten. (Voltaire)
|
|
abi 
      
Beiträge: 121
Windows 2000
Delphi 5
|
Verfasst: Mi 05.05.04 17:07
Ich glaub ich habs verstanden.
Aber da heute mal die Sonne einiger Massen scheint, werde ich des erst morgen testen.
Auf jedenfall vielen Dank.
Dann nur noch ne Frage, jetzt öffne ich zum Beispiel mein Word programm oder meine Datei.
Wie kann ich denn dann mit dieser arbeiten.
Noch mal danke ohne euch würd ich hier gar nichts kapieren.
Wünsch euch noch einen schönen Tag.
Ciao
abi
_________________ Die lansamste Schnecke kommt auch irgendwann an.
|
|
bms
      
Beiträge: 735
Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
|
Verfasst: Mi 05.05.04 17:45
Noch was. In der Delphi Hilfe wirst du die API Funktionen nicht finden, da sie von Microsoft zu verfügung gestellt werden.
Aber in der Hilfedatei "Win32.hlp" wirst du fündig. Die Datei ist auf englisch und im Delphi-Help Ordner.
_________________ VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >
|
|
maze2k
      
Beiträge: 252
WIN 95, WIN NT 4.0, WIN 98, WIN 98SE, WIN 2000, RedHat Linux 7.3, Mandrake Linux 9.2, Knoppix Linux 3.3
D6 Pers
|
Verfasst: Mi 05.05.04 17:47
Hmm, kann mich aber erinnern, dass ich in der Delphi-Hilfe (D6) mal ShellExecute gesucht und gefunden habe...
_________________ Wer das Konzept der Unendlichkeit verstehen will, muss nur das Ausmaß menschlicher Dummheit betrachten. (Voltaire)
|
|
bms
      
Beiträge: 735
Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
|
Verfasst: Mi 05.05.04 17:49
Und nochwas. Do kannst deine Textdatei auch so öffnen:
Delphi-Quelltext 1:
| ShellExecute(Handle,'open', 'c:\SomeText.txt', nil, nil, SW_SHOWNORMAL); |
Notepad wird automatisch geöffnet. Wenn du mit Variablen arbeitest, dann muß du deine Strings über PChar() übergeben.
Delphi-Quelltext 1: 2:
| Pfad := 'c:\SomeText.txt'; ShellExecute(Handle,'open', PChar(Pfad), nil, nil, SW_SHOWNORMAL); |
_________________ VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 05.05.04 18:22
bms hat folgendes geschrieben: | Aber in der Hilfedatei "Win32.hlp" wirst du fündig. Die Datei ist auf englisch und im Delphi-Help Ordner. |
Und total veraltet, was man an manchen falschen Infos erkennen kann ... Ich würde diese Hilfedatei löschen und das PSDK ( PLATFORM SDK) von Microsoft runterziehen. Okay, der Februar 2003 ist auch nicht mehr wirklich aktuell, aber es ist auf jeden Fall besser als diese uralte Hilfedatei. Wer Fehler suchen will, der schaut mal bitte in der HLP unter "SetSystemTime" und vergleicht die Infos mit denen aus dem PSDK - um nur ein Beispiel zu nennen ...
Zitat: | Und nochwas. Do kannst deine Textdatei auch so öffnen: [...] Notepad wird automatisch geöffnet. |
Die Erklärung von maze2k war besser. Nicht Notepad wird geöffnet, sondern das mit Textdateien verknüpfte Programm. Das kann Notepad sein, muss es aber nicht. 
|
|
abi 
      
Beiträge: 121
Windows 2000
Delphi 5
|
Verfasst: Do 06.05.04 10:20
Des klappt ja alles wunder bar, jetzt kann ich meine Datei öffen.
Jetzt habe ich eine Exel datei und möchte in diese was hinein schreiben, wie machen ich denn das.
z.b. in die Zelle B5.
Hab des irgendwie mit Ole  gemacht, aber da ich die Datei nicht richtig schliesse. Und mein Programm die Datei speichern will, bekomme ich zwar keinen Fehler. Aber wenn man denn Rechner runterfährt, beschwert er sich deshalb.
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: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| procedure TAutotest1.PrintClick(Sender: TObject); var j: Integer; begin
try Excel := CreateOleObject('Excel.Application'); except ShowMessage('Fehler beim Datei öffnen'); end; Excel.Workbooks.open('C:\autotestreport.xls');
Excel.Visible := True;
Excel.Cells(6,2) := BustypToStr(Bustyp); Excel.Cells(7,2) := FamilieToStr(CANopenTyp); Excel.Cells(8,2) := AufloesungTypToStr(CANopen_AufloesungTyp);
Excel.Cells(9,2) := '32'; Excel.Cells(10,2) := '20 kBaud';
if testauto.Autotest1.OfenCheck.Checked = True then begin Excel.Cells(11,2) := 'OK'; end else begin Excel.Cells(11,2) := 'failure'; end; Excel.Cells(12,2) := 'kommt noch'; Excel.Cells(13,2) := 'kommt noch';
for j := 1 to FehlerAnzahl do begin Excel.Cells(22 +j,1) := 'Position Error' + IntToStr(j); Excel.Cells(22 +j,2) := '1A1'; test := Memo15.Lines[j-1]; Excel.Cells(22+j,3) := test; end;
Excel.Cells(6,5) := Date; Excel.Cells(7,5) := TimeToStr(time);
Excel.Cells(9,5) := Edit1.Text;
end; |
Mir währe es am liebsten wenn des auch mit dem ShellExecute ginge, denn des geht wunder bar.
mercy
abi
Moderiert von Peter Lustig (19:51, 10.05.2004): Code- durch Delphi-Tags ersetzt
_________________ Die lansamste Schnecke kommt auch irgendwann an.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 06.05.04 10:35
Mit Shellexecute wirst du da nicht weit kommen. Shellexecute mach genau nur dasm was bms beschrieben hat.
|
|
abi 
      
Beiträge: 121
Windows 2000
Delphi 5
|
Verfasst: Do 06.05.04 10:54
Dann hab ich ja wirklich alles verstanden.
Also mit ShellExecute kann ich ein Programm oder eine Datei öffen.
Dann schreib ich jetzt ein neues thema.
trotzdem danke, kann ich bestimmt gebrauchen.
Ciao
abi
_________________ Die lansamste Schnecke kommt auch irgendwann an.
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Mo 10.05.04 17:12
Ich hab bei uses ShellApi eingetragen und beide ausprobiert:
Delphi-Quelltext 1:
| ShellExecute(Handle, 'open', 'http://www.delphi-forum.de',nil,nil, SW_SHOWNORMAL); |
Delphi-Quelltext 1:
| ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL); |
aber er gibt immer die Fehlermeldung "There is no overloaded version of 'ShellExecute' that can be called with these arguments" aus. liegt das vieleicht am .net?
|
|
bms
      
Beiträge: 735
Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
|
Verfasst: Mo 10.05.04 17:28
Hat sich erledigt.
_________________ VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >
|
|
Coder
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: Mo 10.05.04 17:45
Ich hab es mal mit einer WinForm ausprobiert dort zeigt er die gleiche fehlermeldung und "Undeclared identifier: 'SW_SHOWNORMAL'" an. es liegt also nicht am .net.
|
|
bms
      
Beiträge: 735
Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
|
Verfasst: Mo 10.05.04 18:53
Soviel ich weiß ist bei NET nix mit API. Das ist ja gerade der Sinn der Sache, daß es nicht Windowsabhängig sein soll 
_________________ VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 10.05.04 21:53
ShellExecute gibt´s aber auch bei .NET. Wenn auch durch die Hintertür.
Nr. 1
Delphi-Quelltext 1: 2:
| Process.Start('C:\Programm-Ordner\Programm.exe', '-parameter'); |
Nr. 2
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| ps := Process.Create; if(ps <> nil) then try ps.StartInfo.FileName := 'C:\Ordner\Textdatei.txt'; ps.StartInfo.Verb := 'print';
ps.StartInfo.UseShellExecute := true;
ps.Start; finally ps.Free; end; |
Gebraucht wird dazu
Delphi-Quelltext 1: 2:
| uses System.Diagnostics; |
Coder hat folgendes geschrieben: | Ich hab es mal mit einer WinForm ausprobiert dort zeigt er die gleiche fehlermeldung und "Undeclared identifier: 'SW_SHOWNORMAL'" an. es liegt also nicht am .net. |
Doch, liegt es. Du darfst API und .NET nicht durcheinander bringen.
|
|
bms
      
Beiträge: 735
Win XP
Delphi 3, Delphi 6 PE, Delphi 2005 PE
|
Verfasst: Di 11.05.04 10:51
Kannst du das mal als FAQ Tip schreiben. Ich schätze bald kommen mehr Fragesteller die wissen wollen wie man ein Programm unter Net startet.
_________________ VORSICHT: Ich behersche seit heute die Fünf-Finger-Handflächen-Herz-Explodier-Schlag-Kampf-Technik >
|
|