Entwickler-Ecke
Windows API - ShellExe funktioniert nicht
STF1982 - Di 26.12.06 18:57
Titel: ShellExe funktioniert nicht
Hallo,
versuche einfach nur ein externes Programm mit
Delphi-Quelltext
1:
| ShellExecute(handle,PChar('open'),PChar('notepad.exe'),PChar('C:\Windows\win.ini'),PChar('C:\Windows'),SW_SHOW); |
zu startet, die ShellAPI ist eingebunden - folgede Fehlermeldung erscheint:
E2089 - Ungültige Typumwandlung
Hat jemand Vorschläge??? Besten Dank und Frohe Weihnachten.
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt
Michael Stenzel - Di 26.12.06 19:50
Hi STF1982!
Ich habe deinen Befehl kopiert und direkt probiert. Es hat bei mir ohne Änderung funktioniert. Vieleicht liegt es an der Procedur wo Du die Funktion aufrufst. Wenn Du z.B. die Variable Handle in deiner Procedur mal so einsetzen würdes:
Delphi-Quelltext
1:
| ShellExecute(Form1.handle,PChar('open'),PChar('notepad.exe'),PChar('C:\Windows\win.ini'),PChar('C:\Windows'),SW_SHOW); |
Wobei Du deinen Formularnamen verwenden mußt.
Gruß
Michael
jaenicke - Di 26.12.06 20:22
Erstmal :welcome: hier im Forum!
Die ganzen PChar( brauchst du gar nicht, wenn du nur einen direkt eingegebenen String hinschreibst (also direkt in Anführungszeichen), das brauchst du nur, wenn du da Variablen nutzen willst.
Aber poste doch bitte mal deine ganze Prozedur, nicht nur die eine Zeile!
DelphiNoobCoder - Di 26.12.06 20:23
Oder vielleicht hast du die Uses vergessen wenn ja
ShellApi
Sry wenns falsch is
Sorry steht schon da
Raffo - Di 26.12.06 20:37
Versuch doch mal, ob diese .exe hier geht
Delphi-Quelltext
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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, shellapi, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin ShellExecute(handle,PChar('open'),PChar('notepad.exe'),PChar('C:\Windows\win.ini'),PChar('C:\Windows'),SW_SHOW); end;
end. |
DragonHeart25 - Mi 27.12.06 02:21
also wenn ich den von dir angegebenen quellcode benutze und in delpie einfüge, kommt diese fehlermeldung:
[Fehler] Unit1.pas(33): '.' erwartet, aber Dateiende gefunden
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
könnte mir bitte jemand helfen?
achja nochwas
wie kann man den quelltext als extra fenster einblenden (im forum)?
DragonHeart25 - Mi 27.12.06 02:27
welche unit?
sry bin neu
jaenicke - Mi 27.12.06 02:29
Einfach den kompletten Inhalt des Quelltextfensters.
Solch ein Teil des Projektes nennt sich Unit. Zu jedem Formular gehört solch eine Unit, aber es gibt auch einzelne Units, die Quelltext ohne Formular enthalten.
DragonHeart25 - Mi 27.12.06 02:35
also mein kompletter quelltext lautet:
Delphi-Quelltext
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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, shellapi, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin ShellExecute(handle,PChar('open'),PChar('notepad.exe'),PChar('C:\Windows\win.ini'),PChar('C:\Windows'),SW_SHOW); end;
end |
mein fehler:
Delphi-Quelltext
1: 2:
| [Fehler] Unit1.pas(33): '.' erwartet, aber Dateiende gefunden [Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden |
und ich habe noch einen button eingefügt (graphische ebene)
jaenicke - Mi 27.12.06 02:37
:lol: Vergleich mal deinen Quelltext mit dem von
Raffo...
Du hast den Punkt in der letzten Zeile am Ende nicht mitkopiert...
DragonHeart25 - Mi 27.12.06 02:40
das is mir jetzt schon ein bischen peinlich ^^
ok ich kanns zwar starten aber wenn ich auf den button klick, passiert nix
jaenicke - Mi 27.12.06 02:42
Ja, klick mal im Formulardesigner doppelt drauf. Sonst wird nämlich die Ereignisbehandlungsroutine (der Klick ist ein Ereignis, auf das du mit Button1Click reagieren willst) nicht dem OnClick des Buttons zugeordnet.
DragonHeart25 - Mi 27.12.06 02:43
ja es geht!!
vielen dank
DragonHeart25 - Mi 27.12.06 05:46
ich will in diesr zeile:
Delphi-Quelltext
1:
| ShellExecute(handle,PChar('open'),PChar('notepad.exe'),PChar('C:\Windows\win.ini'),PChar('C:\Windows'),SW_SHOW); |
den pfad der datei als variable benutzen. doch wenn ich eine variale reinschreibe, dann sucht er nicht nach dem verzeichniss sondern nach der variablen.
kann ich festlegen, dass der pc die variable übernimmt?
jaenicke - Mi 27.12.06 05:47
Ich seh keine Variable? :gruebel:
DragonHeart25 - Mi 27.12.06 05:52
hat sich erledigt^^
mkinzler - Mi 27.12.06 07:50
An was lag es?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!