EXE Datei schließen über C++ Programm
-
sry aus versehen doppelpost
-> siehe einen post weiter unten!
-
also WM_CLOSE wird so verwendet:
SendMessage(handle_deiner_anwendung, WM_CLOSE, 0, 0);das handle deiner anwendung kriegst du folgendermaßen raus:
HWND handle_deiner_anwendung=FindWindow(0, TEXT(/*Fenstertitel deiner Anwendung*/));was die Parameter bei Shell Execute betrifft:
http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspxdas sollte als erklärung ausführlich genug sein

falls nicht:
1.parameter: handle des besitzer-fensters, für fehlermeldungen, interfaces usw. wichtig, hier null weil es ein unabhängiges fenster werden soll.
2.parameter: anweisung was mit der angegeben datei passieren soll(open=öffnen).
3.parameter:pfad deiner anwendung
4.parameter:evenuelle parameter die an die anwendung übergeben werden sollen, hier keine ->NULL
5.parameter: arbeitsverzeichnis der anwendung(für log-files etc.), brauchen wir hier nicht->NULL
6.parameter: wie soll das fenster angezeigt werden? SW_SHOWNORMAL -> normale größeweitere:
msdn schrieb:
SW_HIDE
Hides the window and activates another window.
SW_MAXIMIZE
Maximizes the specified window.
SW_MINIMIZE
Minimizes the specified window and activates the next top-level window in the z-order.
SW_RESTORE
Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.
SW_SHOW
Activates the window and displays it in its current size and position.
SW_SHOWDEFAULT
Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application. An application should call ShowWindow with this flag to set the initial show state of its main window.
SW_SHOWMAXIMIZED
Activates the window and displays it as a maximized window.
SW_SHOWMINIMIZED
Activates the window and displays it as a minimized window.
SW_SHOWMINNOACTIVE
Displays the window as a minimized window. The active window remains active.
SW_SHOWNA
Displays the window in its current state. The active window remains active.
SW_SHOWNOACTIVATE
Displays a window in its most recent size and position. The active window remains active.
SW_SHOWNORMAL
Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.mfg,
andi01.
-
Klasse ihr seid alle echt super ich werd das jetzt mal alles ausprobieren und dann meld ich mich wieder!!
-
Mit dem Handle verstehe ich nicht so ganz.
Also wenn ich meinen Button betätige dann suche ich zuerst wo die Datei verwendet wird??und dann gebe ich die hier rein ---> SendMessage(handle_deiner_anwendung, WM_CLOSE, 0, 0);weil mich bei dem beispiel für das ; am ende stutzig macht? --->
HWND handle_deiner_anwendung=FindWindow(0, TEXT(/*Fenstertitel deiner Anwendung*/));
Also mit ShellExecute hats geklappt so siehts jetzt aus:
ShellExecute(NULL,"open","c:\\Programme\\RealVNC\\VNC4\\VNCViewer",NULL,NULL,SW_SHOWNORMAL);
-
Hey hat alles geklappt hab jetzt alles mögliche3 probiert bis es geklappt hat!!!super Danke!!!!!!!!
Mal eine kleine Frage wenn ich z.B bei fertigen Programmen wie DynDns Updater auf einige Programmelemente zugreifen will wie z.B (Start Updater welches sich im Menü von dem Prog befindet) wie bekomme ich solche bestimmten Adressen her??oder Befehle allgemien gefragt damit ich mich in Zukunft wenn ich was machen will nicht direkt im Forum durchfrage.
Der link von dir ist schon echt klasse das wird mir in Zukunft bestimmt auch weiterhelfen.
//Allgemein habe ich vor einem älteren bekannten der seine ersten Schritte im Umgang mit PCs macht das leben vereinfachen.Hab im jetzt VNC Viewer und alles andre aufgespielt damit ich ihm auch aus Amerika helfen kann bloß es gibt schon probleme wenn er einige Programme starten soll somit möchte ich ihm über eine C++ EXE das leben in Programme öffnen vereinfachen
das zu meinem Hintergrung der Fragen 
-
So sieht das jetzt aus die Deklaration meines Handles hat mir den Kopf zerbrochen

#include <vcl.h>
#pragma hdrstop
#include <windows.h>
#include "UEXETest.h"
#pragma package(smart_init)
#pragma resource "*.dfm"TForm1 *Form1;
HANDLE HWND_VNC_VIEWER;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShellExecute(NULL,"open","c:\\Programme\\RealVNC\\VNC4\\VNCViewer",NULL,NULL,SW_SHOWNORMAL);
}void __fastcall TForm1::Button2Click(TObject *Sender)
{
HWND_VNC_VIEWER=FindWindow(NULL,"VNC Viewer : Connection Details");SendMessage(HWND_VNC_VIEWER, WM_CLOSE,NULL,NULL);
}
-
Warum deklarierst du Funktionen explizit als Fastcall?
-
Hi naja weil ichs so gelernt habe es handelt sich um eine Button Funktion.Aber was meinst du wie sollte ichs am besten machen?
Gruß
-
Das __fastcall ist da beim BCB schon richtig, die VCL ist ja intern eine Pascal Library.
-
Also ist das dann richtig?es hat ja funktioniert nur vielleicht habe ich ja evtl ne regel verletzt oder unsichere stelle gewählt?
Jeder Tip ist Goldwert.