Autor Beitrag
Jogi2005
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 04.08.05 12:11 
Hi

Im Windowsexplorer kann ich eine Datei ja über "Öffnen" bzw. "Öffnen mit" von einem anderen Programm öffnen lassen. Gibt es in Delphi einen Befehl wie ich eine Datei von einem anderen Programm wie im Explorer öffnen lassen kann und danach auch noch merke wenn die Datei wieder (von dem Programm) geschlossen wird.Bin für jede Hilfe dankbar.

mfg
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Do 04.08.05 12:36 
ausblenden Delphi-Quelltext
1:
2:
uses
  ShellAPI;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
function ExecuteFile(const FileName: String): Boolean;
var
  AppName: array[0..MAX_PATH-1] of Char;
  SI: TStartupInfo;
  PI: TProcessInformation;
begin

  Result := False;
  if FindExecutable(PChar(FileName), nil, AppName) > 32 then
  begin
    FillChar(SI, SizeOf(TStartupInfo), 0);
    SI.cb := SizeOf(TStartupInfo);
    if CreateProcess(AppName, PChar(FileName), nil, nil, False, 0, nil, nil, SI, PI) then
    begin
      WaitForSingleObject(PI.hProcess, INFINITE);
      CloseHandle(PI.hProcess);
      CloseHandle(PI.hThread);
      Result := True;
    end;
  end;

end;

_________________
Ciao, Sprint.
Jogi2005 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 04.08.05 12:50 
Titel: Funktioniert nicht so richtig??
Hi

hab den Quelltext in mein Programm eingebaut. Das entsprechende Programm zu einem Document wurde auch geöffnet leider jedoch ohne das Document mitzuöffnen??? Wie kann man den erreichen das der "Öffnen mit..." Dialog von Windows erscheint und ich das Programm mit dem das Document geöffnet werden soll sich auswählen lässt?

mfg
Jogi2005 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 04.08.05 13:44 
Titel: Erste Lösung gefunden Problem falls Datei wieder geschlossen
Hi

hab Lösung für "Öffnen" bzw. "Öffnen mit..."

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure OpenWith(FileName: string);
begin
  ShellExecute(Application.Handle, 'open', PChar('rundll32.exe'),
    PChar('shell32.dll,OpenAs_RunDLL ' + FileName), nil, SW_SHOWNORMAL);
end;

procedure OpenNormal(FileName: string);
begin
  ShellExecute(Application.Handle, 'open', PCHAR(FileName), nil, nil, SW_SHOWNORMAL);
end;


Wie kann ich jedoch mit meinem Programm erkennen ab wann die geöffneten Dateien wieder geschlossen werden???

mfg

Moderiert von user profile iconAXMD: Delphi-Tags hinzugefügt.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Do 04.08.05 21:04 
Indem du deinen Code mit dem von Sprint kombinierst, was nicht so schwierig sein sollte und durchaus in maximal zehn Minuten machbar ist ;)

Gruß,
maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Jogi2005 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 05.08.05 13:22 
Titel: Kannst du mir sagen wie das mit dem kombinieren geht???
Hi

Vielen Dank schonmal für eure Hilfe. Kannst du mir sagen wie das mit dem kombinieren geht. Bin nämlich mit dem Umwang der Win32 Funktionen nicht so erfahren und weiss nicht wie man z.B. die Funktion WaitForSingleObject auf die ShellExecute anwendet, dass es für "Öffnen" und "Öffnen mit..." klappt.

mfg
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Sa 06.08.05 00:49 
Geht nicht mit ShellExecute. Aber mit ShellExecuteEx und CreateProcess.

_________________
Ciao, Sprint.