anwendungen über dialogfeld öffnen
-
Hallo,
ich bin noch recht neu in der Programmierung und stehe gerade vor einem Problem.
Ich möchte eine Toolbox erstellen, mit der ich verschiedene kleine Programme öffnen kann.
Das heißt, ich habe ein Dialogfeld, mit 4 RadioButtons. Wenn ich davon einen auswähle, soll er das Programm starten, aber mir fehlt einfach der Ansatz wie ich da rangehe.
Bin für jeden Tipp dankbar.
Gruß Janinoe
-
-
ok, probier ich das mal. dankeschön

-
hmm, also, habe das:
void CToolboxDlg::OnBnClickedRadio1() { PROCESS_INFORMATION pi = {0}; STARTUPINFO si = {sizeof(si)}; si.wShowWindow = SW_NORMAL; CString CommandLine; CommandLine = "C:\Pfad\Programm.exe "; CreateProcess(NULL, CommandLine, "", NULL, FALSE, 0, NULL, NULL, &pi, &si); } }gemacht, aber funktionieren tut das leider nicht
error C2664: 'CreateProcessA': Konvertierung des Parameters 2 von 'CString' in 'LPSTR' nicht möglich
-
habs jetzt noch mal geändert:
void CToolboxDlg::OnBnClickedRadio1() { PROCESS_INFORMATION pi = {0}; STARTUPINFO si = {sizeof(si)}; si.wShowWindow = SW_NORMAL; CString CommandLine; CommandLine = "C:\Pfad\Programm.exe "; ::CreateProcess(NULL, CommandLine.GetBuffer(255), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); ::WaitForSingleObject( pi.hProcess, INFINITE); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); }Jetzt gibt es zwar keinen Fehler mehr, aber das Programm öffnet sich trotzdem nicht.
Vielleicht weiß da ja jemand weiter...
-
Siehe FAQ hier im Forum:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39084.htmlund da Findest du
::CreateProcess( _T("C:\\WinNT\\notepad.exe"), _T(""), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
also sollte das dann so aussehen:
::CreateProcess(CommandLine.GetBuffer(CommandLine.GetLength()),_T(""), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);Dann denk ich sollte es laufen.
Gruß Matthias
-
dankeschön! Habs so geändert, aber da hat sich dann direkt das nächste problem aufgetan.
Sobald ich den dialog starte führt er das Programm aus, und nicht erst wenn ich den entsprechenden RadioButton aktiviere und auf ok gehe und der dialog hängt sich auf ^^
-
(@estartu)
Warum wird immer das komplexere CreateProcess verwendet anstatt ShellExecute(Ex)?
-
Martin Richter schrieb:
(@estartu)
Warum wird immer das komplexere CreateProcess verwendet anstatt ShellExecute(Ex)?Weil wohl keiner was dazu in die FAQ geschrieben hat.

Wenn du das mal machst kann man den Beitrag ergänzen.
-
habs jetzt mit ShellExecute hingekriegt!!
Danke für eure Hilfe!!