.exe mit WinExec bzw ShellExecute auf knopfdruck öffnen

sugarwarlock

Grünschnabel
hallo!

also ich will nur ein simplet cd menü mit visual c++ machen. sieht auch alles ganz gut aus nur das problem ist, dass ich die exe'n nicht mit einem button öffnen kann!

der code sieht im moment so aus

Code:
#pragma once


namespace DDRmenu {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Zusammenfassung für Form1
	///
	/// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch
	///          die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern,
	///          das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt.
	///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
	///          arbeiten, die diesem Formular zugewiesen sind.
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: Konstruktorcode hier hinzufügen.
			//
		}

	protected:
		/// <summary>
		/// Verwendete Ressourcen bereinigen.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Button^  button1;
	protected: 

	private:
		/// <summary>
		/// Erforderliche Designervariable.
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// Erforderliche Methode für die Designerunterstützung.
		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
		/// </summary>
		void InitializeComponent(void)
		{
			System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
			this->button1 = (gcnew System::Windows::Forms::Button());
			this->SuspendLayout();
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(439, 127);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(87, 24);
			this->button1->TabIndex = 0;
			this->button1->Text = L"DDR Spielen";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->BackgroundImage = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"$this.BackgroundImage")));
			this->ClientSize = System::Drawing::Size(592, 382);
			this->Controls->Add(this->button1);
			this->Icon = (cli::safe_cast<System::Drawing::Icon^  >(resources->GetObject(L"$this.Icon")));
			this->Name = L"Form1";
			this->Text = L"DDR";
			this->ResumeLayout(false);

		}
#pragma endregion
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				 ShellExecute(NULL,"Open","DRR.exe",NULL,NULL,SW_SHOW);
				 
			 }
	};
}

wenn ich kompelieren will kommen 3 fehler

1.) error C2065: 'NULL': nichtdeklarierter Bezeichner
2.) error C2065: 'SW_SHOW': das selbe wie oben
3.) error C3861: "ShellExecute": Bezeichner wurde nicht gefunden.

ich arbeite mit Visual C++ 2005 Express Edition
 
Hallo, da du mit .NET arbeitest, kannst du dafür eine Klasse der Klassenbibliothek verwenden:
C++:
using namespace System::Diagnostics;

// ...

private:
    System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
    {
        Process^ oProcess = gcnew Process;

        oProcess->StartInfo->FileName = "DRR.exe";
        oProcess->StartInfo->Verb     = "Open";
        oProcess->Start();
    }

// ...
Gruß
MCoder
 
jetzt hab ich 5 fehler...

syntexfehler: 'namespace' 2 mal ein mal in form1.h und in DDRmenu.cpp
unerwartete(s) Token vor ; auch 2 mal ein mal in form1.h und in DDRmenu.cpp

Code:
#pragma once


namespace DDRmenu {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Zusammenfassung für Form1
	///
	/// Warnung: Wenn Sie den Namen dieser Klasse ändern, müssen Sie auch
	///          die Ressourcendateiname-Eigenschaft für das Tool zur Kompilierung verwalteter Ressourcen ändern,
	///          das allen RESX-Dateien zugewiesen ist, von denen diese Klasse abhängt.
	///          Anderenfalls können die Designer nicht korrekt mit den lokalisierten Ressourcen
	///          arbeiten, die diesem Formular zugewiesen sind.
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: Konstruktorcode hier hinzufügen.
			//
		}

	protected:
		/// <summary>
		/// Verwendete Ressourcen bereinigen.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Button^  button1;
	protected: 

	private:
		/// <summary>
		/// Erforderliche Designervariable.
		/// </summary>
		System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
		/// <summary>
		/// Erforderliche Methode für die Designerunterstützung.
		/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
		/// </summary>
		void InitializeComponent(void)
		{
			System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
			this->button1 = (gcnew System::Windows::Forms::Button());
			this->SuspendLayout();
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(439, 127);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(87, 24);
			this->button1->TabIndex = 0;
			this->button1->Text = L"DDR Spielen";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->BackgroundImage = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"$this.BackgroundImage")));
			this->ClientSize = System::Drawing::Size(592, 382);
			this->Controls->Add(this->button1);
			this->Icon = (cli::safe_cast<System::Drawing::Icon^  >(resources->GetObject(L"$this.Icon")));
			this->Name = L"Form1";
			this->Text = L"DDR";
			this->ResumeLayout(false);

		}
#pragma endregion
   1.
      using namespace System::Diagnostics;
   
       
   
      // ...
   
       
   
      private:
   
          System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
   
          {
   
              Process^ oProcess = gcnew Process;
   
       
  
              oProcess->StartInfo->FileName = "DRR.exe";
  
              oProcess->StartInfo->Verb     = "Open";
  
              oProcess->Start();
  
          }
  .
       
  
      // ...
so sieht jetzt der code aus
 
Hallo,

also das "using namespace System::Diagnostics;" kannst du an der Stelle dazuschreiben, wo schon die anderen using-Anweisungen stehen.
Beim Einfügen meines Codes hast du die "1." und weiter unter noch ein "." mit erwischt, was zu Fehlern führt.
Die Kommentarzeilen "// ..." kannst du weglassen. Sie sollen nur symbolisieren, das an der Stelle dein anderer Code stehen (könnte).

Gruß
MCoder
 
1>.\DDRmenu.cpp(6) : error C2059: Syntaxfehler: 'namespace'
1>.\DDRmenu.cpp(6) : error C2238: Unerwartete(s) Token vor ';'
1>.\DDRmenu.cpp(19) : fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer "{" in "d:\dokumente und einstellungen\sugarwarlock\eigene dateien\visual studio 2005\projects\ddrmenu\ddrmenu\Form1.h(24)" gefunden wurde

kam raus als ichs kompilieren wollte...

Code:
// DDRmenu.cpp: Hauptprojektdatei.

#include "stdafx.h"
#include "Form1.h"

using namespace DDRmenu;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
	// Aktivieren visueller Effekte von Windows XP, bevor Steuerelemente erstellt werden
	Application::EnableVisualStyles();
	Application::SetCompatibleTextRenderingDefault(false); 

	// Hauptfenster erstellen und ausführen
	Application::Run(gcnew Form1());
	return 0;
}

das ist der code von DDRmenu.cpp
 
Zurück