Shell Execute



  • Ich versuche mit ShellExecute(); ein externes programmzu start
    aber visual c++ 2010 zeigt immer diesen Fehler an :

    error LNK2028: Nicht aufgelöstes Token (0A000011) ""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 Link::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@Link@@$$FAAAMXPAAMXPAAVObject@System@@P$AAVEventArgs@4@@Z)" verwiesen wird.

    Link.obj : 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 Link::Form1::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@Form1@Link@@$$FAAAMXPAAMXPAAVObject@System@@P$AAVEventArgs@4@@Z)".

    Mein Code :

    #pragma once
    #include<Windows.h>
    #include<ShellAPI.h>
    #include<stdarg.h>
    namespace Link {
    	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
    	/// </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)
    		{
    			this->button1 = (gcnew System::Windows::Forms::Button());
    			this->SuspendLayout();
    			// 
    			// button1
    			// 
    			this->button1->Location = System::Drawing::Point(112, 107);
    			this->button1->Name = L"button1";
    			this->button1->Size = System::Drawing::Size(75, 23);
    			this->button1->TabIndex = 0;
    			this->button1->Text = L"button1";
    			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->ClientSize = System::Drawing::Size(370, 262);
    			this->Controls->Add(this->button1);
    			this->Name = L"Form1";
    			this->Text = L"Form1";
    			this->ResumeLayout(false);
    
    		}
    #pragma endregion
    	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    
    				ShellExecuteW(NULL,LPCTSTR("open"),LPCTSTR("C:\\Windows\\explorer.exe"),NULL,NULL,SW_SHOW);
    
    			 }
    	};
    }
    

    Bitte helft mir 😞



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Du könntest dir einmal die Dokumentation der Funktion anschauen.
    Unten sind wie bei allen Funktionen die Voraussetzungen angegeben, u.A. Shell32.lib. Diese musst du also nur den Linkereinstellungen hinzufügen.



  • Soweit ich weiß, ist das nicht WinAPI, sondern .NET.



  • Oh, den Code habe ich mir gar nicht angeschaut...



  • Danke für die schnelle Antwort

    jetzt fuktioniert alles



  • Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum WinAPI in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten