Benutzer mit den meisten Antworten
system() DOS-Konsole

Frage
-
Hallo,
ich will mit#include<cstdlib> ... private: System::Void button1_Click (System::Object^ sender, System::EventArgs^ e) { system("editor.dll"); }
einen Editor öffnen den ich mit Visual Studio geschrieben habe,
und die editor.exe Datei dann in editor.dll umbenannt habe.
Wenn ich den Button anklicke öffnet sich der Editor,
aber auch die DOS-Konsole(.../system32/cmd.exe)
Kann man eine .dll auch ausführen ohne dass sich die DOS-Konsole
mit öffnet?
Geht das mit system() oder auch mit anderen Befehlen?
Gruß
Neuer_user
Antworten
-
Du hast bei den Linker Optionen vergessen die entsprechende Library mit anzugeben.
shell32.lib
Diese Informationen findest Du immer in der MSDN unten bei den Angaben zur Kompatibilität und den Requierments.
http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert Martin Richter Dienstag, 25. August 2009 08:08
Alle Antworten
-
1. Eine DLL ist keine EXE! Und eine EXE wird nicht zur DLL weil Du sie so umbenennst.
2. Verwende ShellExecute(Ex) oder CreateProcess
Siehe auch http://blog.m-ri.de/index.php/2008/09/04/aufflackern-eines-konsolenfensters-bei-nutzung-system-und-_popen/
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin Richter Dienstag, 28. Juli 2009 20:25
-
Hallo,
1. Die Datei soll keine DLL sein, nur die Endung soll .dll sein. :)
2. Werde ich mal ausprobieren.- Bearbeitet Neuer_user Donnerstag, 30. Juli 2009 16:19
-
Was meinst Du mit welche DLL man benötigt?
Welche Rolle spielt das für Dich?
Beide Routinen gehören zum Grundinventar von Windows. Ansonsten schau in die MSDN Doku zu den Routinen, da steht wo diese implementiert sind:
CreateProcess -> Kernel32.dll
http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx
ShelleExecute -> Shell32.dll
http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Mit diesem Code
ShellExecute(NULL , L"open", L"editor.dll", NULL, NULL, SW_SHOWNORMAL);
kommen immer folgende Fehlermeldungen:
error LNK2028: Nicht aufgelöstes Token (0A00000F) ""extern "C" struct HINSTANCE__ * __stdcall ShellExecuteW(struct HWND__ *,wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *,int)" (?ShellExecuteW@@$$J224YGPAUHINSTANCE__@@PAUHWND__@@PB_W111H@Z)", auf das in Funktion ""private: void __clrcall appos::Form1::Form1_Load(class System::Object ^,class System::EventArgs ^)" (?Form1_Load@Form1@appos@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)" verwiesen wird. error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" struct HINSTANCE__ * __stdcall ShellExecuteW(struct HWND__ *,wchar_t const *,wchar_t const *,wchar_t const *,wchar_t const *,int)" (?ShellExecuteW@@$$J224YGPAUHINSTANCE__@@PAUHWND__@@PB_W111H@Z)" in Funktion ""private: void __clrcall appos::Form1::Form1_Load(class System::Object ^,class System::EventArgs ^)" (?Form1_Load@Form1@appos@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)". fatal error LNK1120: 2 nicht aufgelöste externe Verweise.
Was mache ich falsch? -
Du musst die Shell32.lib auch bei den Linker Optionen angeben.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Martin Richter Mittwoch, 5. August 2009 13:26
-
Hat sich erledigt.
Mit .exe als Dateiendung geht's.
Danke für die Hilfe!- Als Antwort markiert Neuer_user Mittwoch, 5. August 2009 18:50
- Tag als Antwort aufgehoben Neuer_user Montag, 24. August 2009 17:20
-
Wenn ich eine Datei mit einem String öffnen möchte und folgenden Code benutze
ShellExecuteA(NULL, "open", (char const *)Marshal::StringToHGlobalAnsi(datei).ToPointer(), "", NULL, SW_SHOWNORMAL);
gibt der Compiler folgende Fehler aus:
error LNK2001: Nicht aufgelöstes externes Symbol ""extern "C" struct HINSTANCE__ * __stdcall ShellExecuteA(struct HWND__ *,char const *,char const *,char const *,char const *,int)" (?ShellExecuteA@@$$J224YGPAUHINSTANCE__@@PAUHWND__@@PBD111H@Z)".
1>H:\projekte\Projects\BubbleBar\Release\BubbleBar.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise. -
Du hast bei den Linker Optionen vergessen die entsprechende Library mit anzugeben.
shell32.lib
Diese Informationen findest Du immer in der MSDN unten bei den Angaben zur Kompatibilität und den Requierments.
http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort markiert Martin Richter Dienstag, 25. August 2009 08:08