Programme verknüpfen



  • Hey Leute, weiß vllt jemand, wie ich in einem Programm andere verlinken kann?
    Möchte alle meine Programme auf einem per Button starten können.
    Benutze den Borland Builder.
    Dankö^^

    MfG
    DeGehrmann



  • ShellExecute() aus der WinAPI sollte dir weiterhelfen.



  • aber damit kann ich doch nur Ordner öffnen, oder?!
    also ich hab das mal soweit mit ner einfachen MessageBox, statt nem anderen programm gemacht (als test, wie es aussehen sollte)
    Ich habe einen Loginbereich und der soll dann quasi das andere öffnen:

    //---------------------------------------------------------------------------
    #include <vcl\vcl.h>
    #pragma hdrstop

    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma resource "*.dfm"
    TForm1 Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent
    Owner)
    : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::LoginClick(TObject *Sender)
    {
    String Password;

    Password = Edit1->Text;

    if (Password == "Informatik")
    {
    MessageBox(0, "ok" , "ok" ,0 );
    }
    }
    //---------------------------------------------------------------------------

    wie mach ich das denn?
    hiermit:

    ShellExecute(handle, "open", <fully_qualified_path_to_folder>, NULL, NULL, SW_SHOWNORMAL);

    ???



  • und wo muss der syntax hin?



  • also, so gehts iwie nicht:

    //---------------------------------------------------------------------------
    #include <vcl\vcl.h>
    #pragma hdrstop

    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma resource "*.dfm"
    TForm1 *Form1;

    HINSTANCE ShellExecute(
    HWND hwnd,
    LPCTSTR lpOperation,
    LPCTSTR lpFile,
    LPCTSTR lpParameters,
    LPCTSTR lpDirectory,
    INT nShowCmd
    );

    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::LoginClick(TObject *Sender)
    {
    String Password;

    Password = Edit1->Text;

    if (Password == "Informatik")
    {
    ShellExecute (handle, "open", "D:\\Program Files\\UltraISO\\UltraISO.exe", NULL, NULL, SW_SHOWNORMAL);
    }
    }
    //---------------------------------------------------------------------------



  • DeGehrmann schrieb:

    aber damit kann ich doch nur Ordner öffnen, oder?!

    Wie kommst du auf Ordner? O.o

    So sollte das auf jeden Fall funktionieren:

    ShellExecute(NULL, "open", "C:\\myapp.exe", NULL, NULL, SW_SHOW);
    


  • Der Builder sagt folgendes:

    [Linker Error] Undefined symbol ShellExecute(void*,const char*,const char*,const char*,const char*,const char*,int) reference from D:\USERS\TOBI\DESKTOP\LOGIN\UNIT1.OBJ.



  • Also in meinem Beispiel kommt nirgend's ein "handle" vor.

    Demnach musst du entweder mein Beispiel so übernehmen wie es ist, oder aber dein "handle" definieren.



  • hab deins verwendet und den letzten beitrag editiert, jetzt sagt er das^^



  • Naja du musst halt noch den entsprechenden Header includen, also entweder gleich <windows.h> oder aber speziell nur den <shellapi.h>.

    Und dann eventuell noch die shell32.lib mitlinken, falls der Linker dann immernoch meckert.



  • Jop, klappt jetzt, dankeschön!


Log in to reply