Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Zugriff mit shellexecute klappt nicht mehr
D. Annies - Mo 03.05.10 07:22
Titel: Zugriff mit shellexecute klappt nicht mehr
Hi, Delpher,
ich habe jetzt von XP auf Win7 gewechselt. Natürlich klappt dann der folgende Aufruf
nicht mehr:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TBuchMain.to_do(Sender: TObject); begin ShellExecute(Handle, nil, PChar('C:\WINXP\notepad.exe'), PChar(label30.caption+ 'to_do.txt'), nil, SW_Show); end; |
Gibt es eine Möglichkeit, den Ort, wo das Programm jetzt liegt, per Code herauszufinden,
und dann mit shellexecute darauf zuzugreifen?
Danke, Detlef
zuma - Mo 03.05.10 07:36
versuchs mal so
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TBuchMain.to_do(Sender: TObject); begin ShellExecute(Handle, nil, PChar('notepad.exe'), PChar(label30.caption+ 'to_do.txt'), nil, SW_Show); end; |
D. Annies - Mo 03.05.10 08:16
Klappt leider nicht!
Gruß, Detlef
elundril - Mo 03.05.10 08:23
Vielleicht sollte man auch eine Operation wie
PChar('open') verwenden, damit Windows auch weiß was es tun soll. ;) In diesem Fall hätte dir MSDN oder Google oder die Forensuche sicher weitergeholfen!!
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TBuchMain.to_do(Sender: TObject); begin ShellExecute(Handle, PChar('open'), PChar('notepad.exe'), PChar(label30.caption+ 'to_do.txt'), nil, SW_Show); end; |
lg elundril
D. Annies - Mo 03.05.10 08:43
Das klappt leider immer noch nicht!
thepaine91 - Mo 03.05.10 09:08
GETSYSTEMDIRECTORY so kannst du zuverlässig den Pfad in dem Notepad liegt ansteuern.
Dann sollte es theoretisch funktionieren wenn nicht kannst du ja mal ShellexecuteEX probieren.
delfiphan - Mo 03.05.10 09:35
Was ist die Fehlermeldung? Mach mal:
Delphi-Quelltext
1: 2:
| if ShellExecute(...) <= 32 then RaiseLastOSError; |
D. Annies - Mo 03.05.10 10:07
Ich taste mich da jetzt ran, aber es geht noch nicht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function SystemDir: string; var dir: array [0..MAX_PATH] of Char; begin GetSystemDirectory(dir, MAX_PATH); Result := StrPas(dir); end;
procedure TBuchMain.to_do(Sender: TObject); begin showmessage(systemdir); ShellExecute(Handle, PChar('open'), PChar('notepad.exe'), PChar(label30.caption+ 'to_do.txt'), nil, SW_Show); end; |
Keine Fehlermeldung, aber es tut sich auch nichts. Wie ist es richtig?
Detlef
D. Annies - Mo 03.05.10 10:47
elundril, du hattest recht.
Bei mir war allerdings noch etwas anderes verstellt durch den
Systemwechsel - jetzt klappt es bestens, auch ohne GetSystemDir oder so.
Danke, Detlef
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!